Procházet zdrojové kódy

Update dependencies to prodcon build 20180208-05-1367307 (#867)

* Updates packages to 20180208-05-1367307 prodcon output
* Updates corefxlab packages to 0.1.0-preview1-180208-1
* Add script to automate updates from prodcon build manifest
Nate McMaster před 8 roky
rodič
revize
f76d2f8d92

+ 11 - 15
build/dependencies.props

@@ -21,11 +21,11 @@
     <MicrosoftAzureKeyVaultPackageVersion>2.3.2</MicrosoftAzureKeyVaultPackageVersion>
     <MicrosoftAzureManagementFluentPackageVersion>1.1.3</MicrosoftAzureManagementFluentPackageVersion>
     <MicrosoftAzureServicesAppAuthenticationPackageVersion>1.1.0-preview</MicrosoftAzureServicesAppAuthenticationPackageVersion>
-    <MicrosoftBuildFrameworkPackageVersion>15.3.409</MicrosoftBuildFrameworkPackageVersion>
-    <MicrosoftBuildPackageVersion>15.3.409</MicrosoftBuildPackageVersion>
-    <MicrosoftBuildRuntimePackageVersion>15.3.409</MicrosoftBuildRuntimePackageVersion>
-    <MicrosoftBuildTasksCorePackageVersion>15.3.409</MicrosoftBuildTasksCorePackageVersion>
-    <MicrosoftBuildUtilitiesCorePackageVersion>15.3.409</MicrosoftBuildUtilitiesCorePackageVersion>
+    <MicrosoftBuildFrameworkPackageVersion>15.7.0-preview-000010-1365343</MicrosoftBuildFrameworkPackageVersion>
+    <MicrosoftBuildPackageVersion>15.7.0-preview-000010-1365343</MicrosoftBuildPackageVersion>
+    <MicrosoftBuildRuntimePackageVersion>15.7.0-preview-000010-1365343</MicrosoftBuildRuntimePackageVersion>
+    <MicrosoftBuildTasksCorePackageVersion>15.7.0-preview-000010-1365343</MicrosoftBuildTasksCorePackageVersion>
+    <MicrosoftBuildUtilitiesCorePackageVersion>15.7.0-preview-000010-1365343</MicrosoftBuildUtilitiesCorePackageVersion>
     <MicrosoftCodeAnalysisCommonPackageVersion>2.6.1</MicrosoftCodeAnalysisCommonPackageVersion>
     <MicrosoftCodeAnalysisCSharpPackageVersion>2.6.1</MicrosoftCodeAnalysisCSharpPackageVersion>
     <MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>2.6.1</MicrosoftCodeAnalysisCSharpWorkspacesPackageVersion>
@@ -39,7 +39,7 @@
     <MicrosoftCSharpPackageVersion>4.5.0-preview2-26130-01</MicrosoftCSharpPackageVersion>
     <MicrosoftDotNetPlatformAbstractionsPackageVersion>2.1.0-preview2-25711-01</MicrosoftDotNetPlatformAbstractionsPackageVersion>
     <MicrosoftDotNetProjectModelPackageVersion>1.0.0-rc3-003121</MicrosoftDotNetProjectModelPackageVersion>
-    <MicrosoftExtensionsDependencyModelPackageVersion>2.1.0-preview2-25711-01</MicrosoftExtensionsDependencyModelPackageVersion>
+    <MicrosoftExtensionsDependencyModelPackageVersion>2.1.0-preview1-26208-06</MicrosoftExtensionsDependencyModelPackageVersion>
     <MicrosoftExtensionsPlatformAbstractionsPackageVersion>1.1.0</MicrosoftExtensionsPlatformAbstractionsPackageVersion>
     <MicrosoftIdentityModelClientsActiveDirectoryPackageVersion>3.14.2</MicrosoftIdentityModelClientsActiveDirectoryPackageVersion>
     <MicrosoftIdentityModelProtocolsOpenIdConnectPackageVersion>5.2.0</MicrosoftIdentityModelProtocolsOpenIdConnectPackageVersion>
@@ -47,7 +47,8 @@
     <MicrosoftNETCoreApp10PackageVersion>1.0.5</MicrosoftNETCoreApp10PackageVersion>
     <MicrosoftNETCoreApp11PackageVersion>1.1.2</MicrosoftNETCoreApp11PackageVersion>
     <MicrosoftNETCoreApp20PackageVersion>2.0.0</MicrosoftNETCoreApp20PackageVersion>
-    <MicrosoftNETCoreApp21PackageVersion>2.1.0-preview2-26130-04</MicrosoftNETCoreApp21PackageVersion>
+    <!-- MicrosoftNETCoreApp21PackageVersion is assigned at the bottom -->
+    <MicrosoftNETCoreAppPackageVersion>2.1.0-preview2-26130-04</MicrosoftNETCoreAppPackageVersion>
     <MicrosoftNETCoreCompilersPackageVersion>2.6.0-beta2-62211-02</MicrosoftNETCoreCompilersPackageVersion>
     <MicrosoftNETCoreDotNetAppHostPackageVersion>2.1.0-preview2-26130-04</MicrosoftNETCoreDotNetAppHostPackageVersion>
     <MicrosoftNETCoreDotNetHostPolicyPackageVersion>2.1.0-preview2-26130-04</MicrosoftNETCoreDotNetHostPolicyPackageVersion>
@@ -87,11 +88,10 @@
     <MoqPackageVersion>4.7.49</MoqPackageVersion>
     <MsgPackCliPackageVersion>0.9.0-beta2</MsgPackCliPackageVersion>
     <NETStandard16PackageVersion>1.6.1</NETStandard16PackageVersion>
-    <NETStandard201PackageVersion>2.0.1</NETStandard201PackageVersion>
-    <NETStandard20PackageVersion>2.0.0</NETStandard20PackageVersion>
+    <NETStandardLibrary20PackageVersion>2.0.1</NETStandardLibrary20PackageVersion>
     <NewtonsoftJsonBsonPackageVersion>1.0.1</NewtonsoftJsonBsonPackageVersion>
     <NewtonsoftJsonPackageVersion>10.0.1</NewtonsoftJsonPackageVersion>
-    <NuGetFrameworksPackageVersion>4.3.0</NuGetFrameworksPackageVersion>
+    <NuGetFrameworksPackageVersion>4.7.0-preview1-4939</NuGetFrameworksPackageVersion>
     <OracleManagedDataAccessPackageVersion>12.2.1100</OracleManagedDataAccessPackageVersion>
     <RemotionLinqPackageVersion>2.2.0</RemotionLinqPackageVersion>
     <RuntimeLinuxArmMicrosoftNETCoreAppPackageVersion>2.1.0-preview2-26130-04</RuntimeLinuxArmMicrosoftNETCoreAppPackageVersion>
@@ -131,7 +131,6 @@
     <SystemBuffersPrimitivesPackageVersion>0.1.0-preview2-180130-1</SystemBuffersPrimitivesPackageVersion>
     <SystemCodeDomPackageVersion>4.5.0-preview2-26130-01</SystemCodeDomPackageVersion>
     <SystemCollectionsImmutablePackageVersion>1.5.0-preview2-26126-03</SystemCollectionsImmutablePackageVersion>
-    <SystemCollectionsSequencesPackageVersion>0.1.0-preview2-180130-1</SystemCollectionsSequencesPackageVersion>
     <SystemComponentModelAnnotationsPackageVersion>4.5.0-preview2-26130-01</SystemComponentModelAnnotationsPackageVersion>
     <SystemCompositionAttributedModelPackageVersion>1.2.0-preview2-26126-03</SystemCompositionAttributedModelPackageVersion>
     <SystemCompositionConventionPackageVersion>1.2.0-preview2-26126-03</SystemCompositionConventionPackageVersion>
@@ -143,14 +142,11 @@
     <SystemDataSqlClientPackageVersion>4.5.0-preview2-26130-01</SystemDataSqlClientPackageVersion>
     <SystemDiagnosticsDiagnosticSourcePackageVersion>4.5.0-preview2-26130-01</SystemDiagnosticsDiagnosticSourcePackageVersion>
     <SystemDiagnosticsEventLogPackageVersion>4.5.0-preview2-26130-01</SystemDiagnosticsEventLogPackageVersion>
-    <SystemIdentityModelTokensJwtPackageVersion>5.2.0</SystemIdentityModelTokensJwtPackageVersion>
     <SystemInteractiveAsyncPackageVersion>3.1.1</SystemInteractiveAsyncPackageVersion>
     <SystemIOFileSystemAccessControlPackageVersion>4.5.0-preview2-26130-01</SystemIOFileSystemAccessControlPackageVersion>
     <SystemIOPackagingPackageVersion>4.5.0-preview2-26130-01</SystemIOPackagingPackageVersion>
-    <SystemIOPipelinesExtensionsPackageVersion>0.1.0-preview2-180130-1</SystemIOPipelinesExtensionsPackageVersion>
     <SystemIOPipelinesPackageVersion>0.1.0-preview2-180130-1</SystemIOPipelinesPackageVersion>
     <SystemIOPipelinesTestingPackageVersion>0.1.0-preview2-180130-1</SystemIOPipelinesTestingPackageVersion>
-    <SystemIOPipelinesTextPrimitivesPackageVersion>0.1.0-preview2-180130-1</SystemIOPipelinesTextPrimitivesPackageVersion>
     <SystemIOPipesAccessControlPackageVersion>4.5.0-preview2-26130-01</SystemIOPipesAccessControlPackageVersion>
     <SystemIOPortsPackageVersion>4.5.0-preview2-26130-01</SystemIOPortsPackageVersion>
     <SystemJsonPackageVersion>4.5.0-preview2-26130-01</SystemJsonPackageVersion>
@@ -212,7 +208,7 @@
   </PropertyGroup>
   <Import Project="$(DotNetPackageVersionPropsPath)" Condition="'$(DotNetPackageVersionPropsPath)' != ''" />
   <PropertyGroup>
-    <!-- We don't set MicrosoftNETCoreAppPackageVersion anywhere in code. However, this may be included in DotNetPackageVersionPropsPath. -->
+    <!-- Assign this variable last because it may be updated from DotNetPackageVersionPropsPath as MicrosoftNETCoreAppPackageVersion. -->
     <MicrosoftNETCoreApp21PackageVersion Condition="'$(MicrosoftNETCoreAppPackageVersion)' != ''">$(MicrosoftNETCoreAppPackageVersion)</MicrosoftNETCoreApp21PackageVersion>
   </PropertyGroup>
 </Project>

+ 9 - 17
build/external-dependencies.props

@@ -18,7 +18,7 @@
 
   <!-- .NET Core feed -->
   <PropertyGroup>
-    <DotNetCoreFeed>https://dotnet.myget.org/F/dotnet-core/api/v3/index.json</DotNetCoreFeed>
+    <DotNetCoreFeed>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</DotNetCoreFeed>
   </PropertyGroup>
   <ItemGroup>
     <ExternalDependency Include="Microsoft.CSharp" Version="$(MicrosoftCSharpPackageVersion)" Source="$(DotNetCoreFeed)" Mirror="true" />
@@ -101,6 +101,12 @@
     <ExternalDependency Include="System.Threading.Tasks.Dataflow" Version="$(SystemThreadingTasksDataflowPackageVersion)" Source="$(DotNetCoreFeed)" Mirror="true" />
     <ExternalDependency Include="System.Threading.Tasks.Extensions" Version="$(SystemThreadingTasksExtensionsPackageVersion)" Source="$(DotNetCoreFeed)" Mirror="true" />
     <ExternalDependency Include="System.ValueTuple" Version="$(SystemValueTuplePackageVersion)" Source="$(DotNetCoreFeed)" Mirror="true" />
+    <ExternalDependency Include="Microsoft.Build.Framework" Version="$(MicrosoftBuildFrameworkPackageVersion)" Source="$(DotNetCoreFeed)" Mirror="true" />
+    <ExternalDependency Include="Microsoft.Build.Runtime" Version="$(MicrosoftBuildRuntimePackageVersion)" Source="$(DotNetCoreFeed)" Mirror="true" />
+    <ExternalDependency Include="Microsoft.Build.Tasks.Core" Version="$(MicrosoftBuildTasksCorePackageVersion)" Source="$(DotNetCoreFeed)" Mirror="true" />
+    <ExternalDependency Include="Microsoft.Build.Utilities.Core" Version="$(MicrosoftBuildUtilitiesCorePackageVersion)" Source="$(DotNetCoreFeed)" Mirror="true" />
+    <ExternalDependency Include="Microsoft.Build" Version="$(MicrosoftBuildPackageVersion)" Source="$(DotNetCoreFeed)" Mirror="true" />
+    <ExternalDependency Include="NuGet.Frameworks" Version="$(NuGetFrameworksPackageVersion)" Source="$(DotNetCoreFeed)" Mirror="true" />
   </ItemGroup>
   <!-- CoreFX labs -->
   <PropertyGroup>
@@ -108,9 +114,6 @@
   </PropertyGroup>
   <ItemGroup>
     <ExternalDependency Include="System.Buffers.Primitives" Version="$(SystemBuffersPrimitivesPackageVersion)" Source="$(CoreFxLabFeed)" Mirror="true" />
-    <ExternalDependency Include="System.Collections.Sequences" Version="$(SystemCollectionsSequencesPackageVersion)" Source="$(CoreFxLabFeed)" Private="true" Mirror="true" />
-    <ExternalDependency Include="System.IO.Pipelines.Extensions" Version="$(SystemIOPipelinesExtensionsPackageVersion)" Source="$(CoreFxLabFeed)" Private="true" Mirror="true" />
-    <ExternalDependency Include="System.IO.Pipelines.Text.Primitives" Version="$(SystemIOPipelinesTextPrimitivesPackageVersion)" Source="$(CoreFxLabFeed)" Private="true" Mirror="true" />
     <ExternalDependency Include="System.IO.Pipelines" Version="$(SystemIOPipelinesPackageVersion)" Source="$(CoreFxLabFeed)" Mirror="true" />
     <ExternalDependency Include="System.IO.Pipelines.Testing" Version="$(SystemIOPipelinesTestingPackageVersion)" Source="$(CoreFxLabFeed)" Mirror="true" />
     <ExternalDependency Include="System.Text.Encodings.Web.Utf8" Version="$(SystemTextEncodingsWebUtf8PackageVersion)" Source="$(CoreFxLabFeed)" Mirror="true" />
@@ -238,11 +241,6 @@
     <ExternalDependency Include="Microsoft.Azure.KeyVault" Version="$(MicrosoftAzureKeyVaultPackageVersion)" Source="$(DefaultNuGetFeed)" />
     <ExternalDependency Include="Microsoft.Azure.Management.Fluent" Version="$(MicrosoftAzureManagementFluentPackageVersion)" Source="$(DefaultNuGetFeed)" />
     <ExternalDependency Include="Microsoft.Azure.Services.AppAuthentication" Version="$(MicrosoftAzureServicesAppAuthenticationPackageVersion)" Source="$(DefaultNuGetFeed)" />
-    <ExternalDependency Include="Microsoft.Build.Framework" Version="$(MicrosoftBuildFrameworkPackageVersion)" Source="$(DefaultNuGetFeed)" />
-    <ExternalDependency Include="Microsoft.Build.Runtime" Version="$(MicrosoftBuildRuntimePackageVersion)" Source="$(DefaultNuGetFeed)" />
-    <ExternalDependency Include="Microsoft.Build.Tasks.Core" Version="$(MicrosoftBuildTasksCorePackageVersion)" Source="$(DefaultNuGetFeed)" />
-    <ExternalDependency Include="Microsoft.Build.Utilities.Core" Version="$(MicrosoftBuildUtilitiesCorePackageVersion)" Source="$(DefaultNuGetFeed)" />
-    <ExternalDependency Include="Microsoft.Build" Version="$(MicrosoftBuildPackageVersion)" Source="$(DefaultNuGetFeed)" />
     <!-- Razor uses a custom version of roslyn packages -->
     <ExternalDependency Include="Microsoft.CodeAnalysis.Common" Version="$(MicrosoftCodeAnalysisCommonPackageVersion)" Source="$(DefaultNuGetFeed)">
       <NoWarn>KRB2004</NoWarn>
@@ -326,15 +324,10 @@
       <NoWarn>KRB2004</NoWarn>
       <VariableName>NETStandard16PackageVersion</VariableName>
     </ExternalDependency>
-    <ExternalDependency Include="NETStandard.Library" Version="$(NETStandard20PackageVersion)" Source="$(DefaultNuGetFeed)">
+    <ExternalDependency Include="NETStandard.Library" Version="$(NETStandardLibrary20PackageVersion)" Source="$(DefaultNuGetFeed)">
       <!-- netstandard2.0 -->
       <NoWarn>KRB2004</NoWarn>
-      <VariableName>NETStandard20PackageVersion</VariableName>
-    </ExternalDependency>
-    <ExternalDependency Include="NETStandard.Library" Version="$(NETStandard201PackageVersion)" Source="$(DefaultNuGetFeed)">
-      <!-- netstandard2.0.1 -->
-      <NoWarn>KRB2004</NoWarn>
-      <VariableName>NETStandard201PackageVersion</VariableName>
+      <VariableName>NETStandardLibrary20PackageVersion</VariableName>
     </ExternalDependency>
     <ExternalDependency Include="Newtonsoft.Json.Bson" Version="$(NewtonsoftJsonBsonPackageVersion)" Source="$(DefaultNuGetFeed)" />
     <ExternalDependency Include="Newtonsoft.Json" Version="$(NewtonsoftJsonPackageVersion)" Source="$(DefaultNuGetFeed)">
@@ -347,7 +340,6 @@
       <VariableName>VisualStudio_NewtonsoftJsonPackageVersion</VariableName>
     </ExternalDependency>
     <ExternalDependency Include="Castle.Core" Version="$(CastleCorePackageVersion)" Source="$(DefaultNuGetFeed)" />
-    <ExternalDependency Include="NuGet.Frameworks" Version="$(NuGetFrameworksPackageVersion)" Source="$(DefaultNuGetFeed)" />
     <ExternalDependency Include="Oracle.ManagedDataAccess" Version="$(OracleManagedDataAccessPackageVersion)" Source="$(DefaultNuGetFeed)" />
     <ExternalDependency Include="Remotion.Linq" Version="$(RemotionLinqPackageVersion)" Source="$(DefaultNuGetFeed)" />
     <ExternalDependency Include="Serilog.Extensions.Logging" Version="$(SerilogExtensionsLoggingPackageVersion)" Source="$(DefaultNuGetFeed)" />

+ 1 - 0
build/tasks/ProjectModel/ProjectInfoFactory.cs

@@ -88,6 +88,7 @@ namespace RepoTasks.ProjectModel
             var globalProps = new Dictionary<string, string>()
             {
                 ["DesignTimeBuild"] = "true",
+                ["ExcludeRestorePackageImports"] = "true",
             };
 
             var project = new Project(xml,

+ 68 - 0
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"
+}

+ 59 - 5
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
+}