diff --git a/README.md b/README.md index 42a873bd43..38803645b5 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ Microsoft.AspNetCore | [![][metapackage-myget-badge]][metapackage-m [linux-x64-tar]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/aspnetcore-runtime-latest-linux-x64.tar.gz [osx-x64-tar]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/aspnetcore-runtime-latest-osx-x64.tar.gz [debian-x64-deb]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/aspnetcore-runtime-latest-x64.deb -[redhat-x64-rpm]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/aspnetcore-runtime-latest-rhel.7-x64.rpm +[redhat-x64-rpm]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/master/aspnetcore-runtime-latest-x64.rpm [badge-rel-21]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.1/aspnetcore-runtime-win-x64-version-badge.svg [win-x64-zip-rel-21]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.1/aspnetcore-runtime-latest-win-x64.zip @@ -67,7 +67,7 @@ Microsoft.AspNetCore | [![][metapackage-myget-badge]][metapackage-m [linux-x64-tar-rel-21]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.1/aspnetcore-runtime-latest-linux-x64.tar.gz [osx-x64-tar-rel-21]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.1/aspnetcore-runtime-latest-osx-x64.tar.gz [debian-x64-deb-rel-21]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.1/aspnetcore-runtime-latest-x64.deb -[redhat-x64-rpm-rel-21]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.1/aspnetcore-runtime-latest-rhel.7-x64.rpm +[redhat-x64-rpm-rel-21]: https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.1/aspnetcore-runtime-latest-x64.rpm Platform | Latest (dev branch)
![][badge-master] | release/2.1
![][badge-rel-21] :---------------------|:----------------------------------------------------------------|:------------------------------------------------------------------------- diff --git a/build/AzureIntegration.targets b/build/AzureIntegration.targets index 35b11a7ceb..7cf8a507fb 100644 --- a/build/AzureIntegration.targets +++ b/build/AzureIntegration.targets @@ -3,9 +3,10 @@ $(MSBuildThisFileDirectory)..\modules\AzureIntegration\ - + + AspNetUniverseBuildOffline=true; RepositoryRoot=$(AzureIntegrationProjectRoot); DotNetRestoreSourcePropsPath=$(GeneratedRestoreSourcesPropsPath); DotNetPackageVersionPropsPath=$(GeneratedPackageVersionPropsPath); diff --git a/build/Publish.targets b/build/Publish.targets index ad3286a212..f810dade57 100644 --- a/build/Publish.targets +++ b/build/Publish.targets @@ -64,17 +64,10 @@ nuGetPackagesArchive-$(PackageVersion).lzma aspnetcore-runtime-$(PackageVersion) aspnetcore-runtime-latest - aspnetcore-runtime-symbols-$(PackageVersion) aspnetcore-runtime-internal-$(PackageVersion) - - - $(BlobBasePath)$(SymbolsArchiveBaseFileName)-%(RuntimeSymbolsArchive.Identity)%(RuntimeSymbolsArchive.FileExt) - ShipInstaller=dotnetcli - - $(BlobBasePath)$(PackageArchiveFileName) diff --git a/build/SharedFx.props b/build/SharedFx.props index 2f35fd7778..2c49353da7 100644 --- a/build/SharedFx.props +++ b/build/SharedFx.props @@ -11,6 +11,7 @@ <_DebToolDir>$(MSBuildThisFileDirectory)tools\dotnet-deb-tool-consumer\ <_SharedFxSourceDir>$(RepositoryRoot).deps\Signed\SharedFx\ <_InstallerSourceDir>$(RepositoryRoot).deps\Installers\ + <_SymbolsSourceDir>$(RepositoryRoot).deps\symbols\ <_DockerRootDir>/opt/code/ <_InstallersOutputDir>$(ArtifactsDir)installers\ diff --git a/build/SharedFx.targets b/build/SharedFx.targets index 3c1502a019..326558dcb3 100644 --- a/build/SharedFx.targets +++ b/build/SharedFx.targets @@ -284,9 +284,27 @@ + <_AppRuntimeAssemblies Include="@(AppPublishAssemblies)" Condition="'%(AssetType)' == 'runtime'"> + %(PackageName).%(PackageVersion).symbols.nupkg + %(RootDir)%(Directory)%(Filename).pdb + + <_AllRuntimeAssemblies Include="@(AllPublishAssemblies)" Exclude="@(_AppRuntimeAssemblies)" Condition="'%(AssetType)' == 'runtime'"> + %(PackageName).%(PackageVersion).symbols.nupkg + %(RootDir)%(Directory)%(Filename).pdb + + <_AssembliesToCrossgen Include="$(SharedFxIntermediateOutputPath)**\*.dll" /> + + + + + + + + + @@ -303,6 +321,14 @@ + + + + + + + + - + + + runtime.$(SharedFxRID).$(SymbolsNuspecIdSuffix) + + - - + <_SymbolFiles Include="$(SymbolsWorkDir)**\*.pdb;$(SymbolsWorkDir)**\*.map;$(SymbolsWorkDir)**\*.dll" /> + + %(RecursiveDir)%(Filename)%(Extension) + - - + + + + + PackageFiles="@(SymbolFiles)" + BasePath="$(SymbolsWorkDir)" /> + + + + + $(SharedFxCrossGenDirectory)shared\Microsoft.AspNetCore.App\$(PackageVersion)\ + $(SharedFxCrossGenDirectory)shared\Microsoft.AspNetCore.All\$(PackageVersion)\ + $(_WorkRoot)Symbols\Microsoft.AspNetCore.App\ + $(_WorkRoot)Symbols\Microsoft.AspNetCore.All\ + + + + + + + + + + + + + + + + + + + + + + + + + + SymbolsWorkDir=$(AppSharedFxSymbolsDirectory) + $(AppSymbolsArguments);SymbolsNuspecIdSuffix=Microsoft.AspNetCore.App.symbols + $(AppSymbolsArguments);Description=Symbol packages for Microsoft.AspNetCore.App shared framework + SymbolsWorkDir=$(AllSharedFxSymbolsDirectory) + $(AllSymbolsArguments);SymbolsNuspecIdSuffix=Microsoft.AspNetCore.All.symbols + $(AllSymbolsArguments);Description=Symbol packages for Microsoft.AspNetCore.All shared framework + + + + + @@ -383,4 +502,5 @@ + diff --git a/build/SharedFxInstaller.targets b/build/SharedFxInstaller.targets index 4e57e789a7..f65716b19a 100644 --- a/build/SharedFxInstaller.targets +++ b/build/SharedFxInstaller.targets @@ -159,7 +159,7 @@ $(RpmCommonArguments);RpmLicense=$(LicenseType) $(RpmCommonArguments);RpmInstallerPrefix=$(SharedFxInstallerName);SharedFxArchive=$(SharedFxIntermediateArchiveFilePrefix)-linux-x64.tar.gz $(RpmCommonArguments);RpmMSummary=$(SharedFxSummary);RpmDescription=$(SharedFxDescription) - RpmFileSuffix=rhel.7-x64.rpm;RpmInstallRoot=$(InstallRoot) + RpmFileSuffix=x64.rpm;RpmInstallRoot=$(InstallRoot) RpmFileSuffix=rh.rhel.7-x64.rpm;RpmInstallRoot=$(RHInstallRoot) $(RpmCommonArguments);$(RpmCommonGenericArguments);RpmArguments=$(RpmGenericSharedFxArguments) diff --git a/build/artifacts.props b/build/artifacts.props index db577f8932..7a4758a1e6 100644 --- a/build/artifacts.props +++ b/build/artifacts.props @@ -48,8 +48,8 @@ - - + + @@ -71,8 +71,8 @@ - - + + @@ -89,14 +89,14 @@ - - - - - - - - + + + + + + + + @@ -118,7 +118,7 @@ - + @@ -150,21 +150,23 @@ - - - - - - - - + + + + + + + - + + + + + + - - @@ -239,8 +241,8 @@ - - + + diff --git a/build/dependencies.props b/build/dependencies.props index 0c738b654e..ba6f56af5d 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -21,11 +21,11 @@ 2.3.2 1.1.3 1.1.0-preview - 15.3.409 - 15.3.409 - 15.3.409 - 15.3.409 - 15.3.409 + 15.7.0-preview-000010-1365343 + 15.7.0-preview-000010-1365343 + 15.7.0-preview-000010-1365343 + 15.7.0-preview-000010-1365343 + 15.7.0-preview-000010-1365343 2.6.1 2.6.1 2.6.1 @@ -47,7 +47,8 @@ 1.0.5 1.1.2 2.0.0 - 2.1.0-preview2-26130-04 + + 2.1.0-preview2-26130-04 2.6.0-beta2-62211-02 2.1.0-preview2-26130-04 2.1.0-preview2-26130-04 @@ -87,11 +88,10 @@ 4.7.49 0.9.0-beta2 1.6.1 - 2.0.1 - 2.0.0 + 2.0.1 1.0.1 10.0.1 - 4.3.0 + 4.7.0-preview1-4939 12.2.1100 2.2.0 2.1.0-preview2-26130-04 @@ -131,7 +131,6 @@ 0.1.0-preview2-180130-1 4.5.0-preview2-26130-01 1.5.0-preview2-26126-03 - 0.1.0-preview2-180130-1 4.5.0-preview2-26130-01 1.2.0-preview2-26126-03 1.2.0-preview2-26126-03 @@ -147,10 +146,8 @@ 3.1.1 4.5.0-preview2-26130-01 4.5.0-preview2-26130-01 - 0.1.0-preview2-180130-1 0.1.0-preview2-180130-1 0.1.0-preview2-180130-1 - 0.1.0-preview2-180130-1 4.5.0-preview2-26130-01 4.5.0-preview2-26130-01 4.5.0-preview2-26130-01 @@ -212,7 +209,7 @@ - + $(MicrosoftNETCoreAppPackageVersion) \ No newline at end of file diff --git a/build/external-dependencies.props b/build/external-dependencies.props index bf137e836e..15111d42de 100644 --- a/build/external-dependencies.props +++ b/build/external-dependencies.props @@ -18,7 +18,7 @@ - https://dotnet.myget.org/F/dotnet-core/api/v3/index.json + https://dotnet.myget.org/F/dotnet-core/api/v3/index.json;https://dotnetfeed.blob.core.windows.net/orchestrated-release-2-1/20180208-05/final/index.json @@ -101,6 +101,12 @@ + + + + + + @@ -108,9 +114,6 @@ - - - @@ -238,11 +241,6 @@ - - - - - KRB2004 @@ -326,15 +324,10 @@ KRB2004 NETStandard16PackageVersion - + KRB2004 - NETStandard20PackageVersion - - - - KRB2004 - NETStandard201PackageVersion + NETStandardLibrary20PackageVersion @@ -347,7 +340,6 @@ VisualStudio_NewtonsoftJsonPackageVersion - diff --git a/build/repo.props b/build/repo.props index 42bc8d2b2f..4a773a8f0a 100644 --- a/build/repo.props +++ b/build/repo.props @@ -25,10 +25,6 @@ - - - - @@ -36,7 +32,7 @@ - + diff --git a/build/repo.targets b/build/repo.targets index 64b63fc490..73a131152e 100644 --- a/build/repo.targets +++ b/build/repo.targets @@ -26,7 +26,7 @@ - + @@ -100,7 +100,7 @@ - + <_LineupPackages Include="@(ExternalDependency)" /> <_LineupPackages Include="%(ArtifactInfo.PackageId)" Version="%(ArtifactInfo.Version)" Condition=" '%(ArtifactInfo.ArtifactType)' == 'NuGetPackage' " /> @@ -201,9 +201,6 @@ - - diff --git a/build/tasks/ProjectModel/ProjectInfoFactory.cs b/build/tasks/ProjectModel/ProjectInfoFactory.cs index 5c739f1784..2acf90be1c 100644 --- a/build/tasks/ProjectModel/ProjectInfoFactory.cs +++ b/build/tasks/ProjectModel/ProjectInfoFactory.cs @@ -88,6 +88,7 @@ namespace RepoTasks.ProjectModel var globalProps = new Dictionary() { ["DesignTimeBuild"] = "true", + ["ExcludeRestorePackageImports"] = "true", }; var project = new Project(xml, diff --git a/build/tasks/RepoTasks.tasks b/build/tasks/RepoTasks.tasks index 389a0f71f2..e291aa5b66 100644 --- a/build/tasks/RepoTasks.tasks +++ b/build/tasks/RepoTasks.tasks @@ -21,6 +21,7 @@ + diff --git a/build/tasks/ResolveSymbolsRecursivePath.cs b/build/tasks/ResolveSymbolsRecursivePath.cs new file mode 100644 index 0000000000..21dd795fcd --- /dev/null +++ b/build/tasks/ResolveSymbolsRecursivePath.cs @@ -0,0 +1,29 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.IO; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; +using RepoTasks.Utilities; + +namespace RepoTasks +{ + public class ResolveSymbolsRecursivePath : Task + { + [Required] + [Output] + public ITaskItem[] Symbols { get; set; } + + public override bool Execute() + { + foreach (var symbol in Symbols) + { + var fullPath = symbol.GetMetadata("PortablePDB"); + symbol.SetMetadata("SymbolsRecursivePath", fullPath.Substring(fullPath.IndexOf($"{Path.DirectorySeparatorChar}lib{Path.DirectorySeparatorChar}"))); + } + + return true; + } + } +} diff --git a/build/tools/templates/SharedFxSymbols/SharedFrameworkSymbols.nuspec b/build/tools/templates/SharedFxSymbols/SharedFrameworkSymbols.nuspec new file mode 100644 index 0000000000..18c0b0e657 --- /dev/null +++ b/build/tools/templates/SharedFxSymbols/SharedFrameworkSymbols.nuspec @@ -0,0 +1,22 @@ + + + + $ID$ + $VERSION$ + $DESCRIPTION$ + Microsoft + Microsoft + Copyright © Microsoft Corporation + https://raw.githubusercontent.com/aspnet/Home/2.0.0/LICENSE.txt + https://go.microsoft.com/fwlink/?LinkID=288859 + https://asp.net + true + true + aspnetcore + + + + + + + diff --git a/scripts/UpdateDependencies.ps1 b/scripts/UpdateDependencies.ps1 new file mode 100644 index 0000000000..92b9737a6f --- /dev/null +++ b/scripts/UpdateDependencies.ps1 @@ -0,0 +1,68 @@ +#!/usr/bin/env pwsh -c +<# +.PARAMETER BuildXml + The URL or file path to a build.xml file that defines package versions to be used +#> +[CmdletBinding()] +param( + [Parameter(Mandatory = $true)] + $BuildXml +) + +$ErrorActionPreference = 'Stop' +Import-Module -Scope Local -Force "$PSScriptRoot/common.psm1" +Set-StrictMode -Version 1 + +$depsPath = Resolve-Path "$PSScriptRoot/../build/dependencies.props" +[xml] $dependencies = LoadXml $depsPath + +if ($BuildXml -like 'http*') { + $url = $BuildXml + New-Item -Type Directory "$PSScriptRoot/../obj/" -ErrorAction Ignore + $BuildXml = "$PSScriptRoot/../obj/build.xml" + Write-Verbose "Downloading from $url to $BuildXml" + Invoke-WebRequest -OutFile $BuildXml $url +} + +[xml] $remoteDeps = LoadXml $BuildXml +$count = 0 + +$variables = @{} + +foreach ($package in $remoteDeps.SelectNodes('//Package')) { + $packageId = $package.Id + $packageVersion = $package.Version + $varName = PackageIdVarName $packageId + Write-Verbose "Found {id: $packageId, version: $packageVersion, varName: $varName }" + + if ($variables[$varName]) { + $variables[$varName] += $packageVersion + } else { + $variables[$varName] = @($packageVersion) + } +} + +foreach ($varName in ($variables.Keys | sort)) { + $packageVersions = $variables[$varName] + if ($packageVersions.Length -gt 1){ + Write-Warning "Skipped $varName. Multiple version found. { $($packageVersions -join ', ') }." + continue + } + + $packageVersion = $packageVersions | Select-Object -First 1 + + $depVarNode = $dependencies.SelectSingleNode("//PropertyGroup/$varName") + if ($depVarNode -and $depVarNode.InnerText -ne $packageVersion) { + $depVarNode.InnerText = $packageVersion + $count++ + Write-Host -f DarkGray " Updating $varName to $packageVersion" + } +} + +if ($count -gt 0) { + Write-Host -f Cyan "Updating $count version variables in $depsPath" + SaveXml $dependencies $depsPath +} +else { + Write-Host -f Green "No changes found" +} diff --git a/scripts/common.psm1 b/scripts/common.psm1 index 51952b3431..d1d493eaf0 100644 --- a/scripts/common.psm1 +++ b/scripts/common.psm1 @@ -21,25 +21,38 @@ function Invoke-Block([scriptblock]$cmd) { function Get-Submodules { param( [Parameter(Mandatory = $true)] - [string]$RepoRoot + [string]$RepoRoot, + [switch]$Shipping ) - Invoke-Block { & git submodule update --init } | Out-Null - $moduleConfigFile = Join-Path $RepoRoot ".gitmodules" $submodules = @() - Get-ChildItem "$RepoRoot/modules/*" -Directory | % { + [xml] $submoduleConfig = Get-Content "$RepoRoot/build/submodules.props" + $repos = $submoduleConfig.Project.ItemGroup.Repository | % { $_.Include } + + Get-ChildItem "$RepoRoot/modules/*" -Directory ` + | ? { (-not $Shipping) -or $($repos -contains $($_.Name)) -or $_.Name -eq 'Templating' } ` + | % { Push-Location $_ | Out-Null Write-Verbose "Attempting to get submodule info for $_" + + if (Test-Path 'version.props') { + [xml] $versionXml = Get-Content 'version.props' + $versionPrefix = $versionXml.Project.PropertyGroup.VersionPrefix + } else { + $versionPrefix = '' + } + try { - $data = @{ + $data = [PSCustomObject] @{ path = $_ module = $_.Name commit = $(git rev-parse HEAD) newCommit = $null changed = $false branch = $(git config -f $moduleConfigFile --get submodule.modules/$($_.Name).branch ) + versionPrefix = $versionPrefix } $submodules += $data @@ -51,3 +64,44 @@ function Get-Submodules { return $submodules } + +function SaveXml([xml]$xml, [string]$path) { + Write-Verbose "Saving to $path" + $ErrorActionPreference = 'stop' + + $settings = New-Object System.XML.XmlWriterSettings + $settings.OmitXmlDeclaration = $true + $settings.Encoding = New-Object System.Text.UTF8Encoding( $true ) + $writer = [System.XML.XMLTextWriter]::Create($path, $settings) + $xml.Save($writer) + $writer.Close() +} + +function LoadXml([string]$path) { + Write-Verbose "Reading from $path" + + $ErrorActionPreference = 'stop' + $obj = new-object xml + $obj.PreserveWhitespace = $true + $obj.Load($path) + return $obj +} + +function PackageIdVarName([string]$packageId) { + $canonicalVarName = '' + $upperCaseNext = $true + for ($i = 0; $i -lt $packageId.Length; $i++) { + $ch = $packageId[$i] + if (-not [System.Char]::IsLetterOrDigit(($ch))) { + $upperCaseNext = $true + continue + } + if ($upperCaseNext) { + $ch = [System.Char]::ToUpperInvariant($ch) + $upperCaseNext = $false + } + $canonicalVarName += $ch + } + $canonicalVarName += "PackageVersion" + return $canonicalVarName +}