From f76d2f8d92805758b740adc76f78fa12442ec514 Mon Sep 17 00:00:00 2001 From: Nate McMaster Date: Fri, 9 Feb 2018 11:20:15 -0800 Subject: [PATCH] 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 --- build/dependencies.props | 26 +++---- build/external-dependencies.props | 26 +++---- .../tasks/ProjectModel/ProjectInfoFactory.cs | 1 + scripts/UpdateDependencies.ps1 | 68 +++++++++++++++++++ scripts/common.psm1 | 64 +++++++++++++++-- 5 files changed, 148 insertions(+), 37 deletions(-) create mode 100644 scripts/UpdateDependencies.ps1 diff --git a/build/dependencies.props b/build/dependencies.props index 0c738b654e..f442d498dc 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 @@ -39,7 +39,7 @@ 4.5.0-preview2-26130-01 2.1.0-preview2-25711-01 1.0.0-rc3-003121 - 2.1.0-preview2-25711-01 + 2.1.0-preview1-26208-06 1.1.0 3.14.2 5.2.0 @@ -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 @@ -143,14 +142,11 @@ 4.5.0-preview2-26130-01 4.5.0-preview2-26130-01 4.5.0-preview2-26130-01 - 5.2.0 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 +208,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/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/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 +}