aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authornicole mazzuca <mazzucan@outlook.com>2020-07-07 14:09:33 -0700
committerGitHub <noreply@github.com>2020-07-07 14:09:33 -0700
commit9606917c81792c52097847fa8037907d92b161a2 (patch)
tree6b58b8ead45c5b917542fd1585452c3715f1f604 /scripts
parentf8e975d44a6c8ae5855ece419696ea6abd050898 (diff)
downloadvcpkg-9606917c81792c52097847fa8037907d92b161a2.tar.gz
vcpkg-9606917c81792c52097847fa8037907d92b161a2.zip
[vcpkg ci] Update formatting CI (#12314)
* stage checking formatting this means that the port CI won't run if the formatting failed * fix invalid names * add formatting of manifests * fix dependsOn name * fix a thing * CRs * oops, typo
Diffstat (limited to 'scripts')
-rw-r--r--scripts/azure-pipelines/azure-pipelines.yml31
-rw-r--r--scripts/azure-pipelines/windows/Check-CxxFormatting.ps1 (renamed from scripts/azure-pipelines/windows/check-formatting.ps1)21
-rw-r--r--scripts/azure-pipelines/windows/Check-ManifestFormatting.ps151
-rw-r--r--scripts/azure-pipelines/windows/Get-ChangedFiles.ps19
-rw-r--r--scripts/azure-pipelines/windows/azure-pipelines.yml8
5 files changed, 100 insertions, 20 deletions
diff --git a/scripts/azure-pipelines/azure-pipelines.yml b/scripts/azure-pipelines/azure-pipelines.yml
index c0cda8432..9c66be5a3 100644
--- a/scripts/azure-pipelines/azure-pipelines.yml
+++ b/scripts/azure-pipelines/azure-pipelines.yml
@@ -5,7 +5,36 @@ variables:
windows-pool: 'PrWin-2020-06-30'
linux-pool: 'PrLin-2020-06-30'
-jobs:
+stages:
+- stage: check_cxx_formatting
+ displayName: 'Check the formatting of the C++'
+ pool: $(windows-pool)
+ jobs:
+ - job:
+ steps:
+ - task: Powershell@2
+ displayName: 'Check C++ Formatting'
+ inputs:
+ filePath: 'scripts/azure-pipelines/windows/Check-CxxFormatting.ps1'
+ arguments: '-Root .'
+- stage: check_manifest_formatting
+ displayName: Check the formatting of port manifests
+ pool: $(windows-pool)
+ dependsOn: []
+ jobs:
+ - job:
+ steps:
+ - task: Powershell@2
+ displayName: 'Check port manifest Formatting'
+ inputs:
+ filePath: 'scripts/azure-pipelines/windows/Check-ManifestFormatting.ps1'
+ arguments: '-Root . -Downloads D:\Downloads'
+- stage: run_port_ci
+ displayName: 'Run the Port CI'
+ dependsOn:
+ - check_cxx_formatting
+ - check_manifest_formatting
+ jobs:
- template: windows/azure-pipelines.yml
parameters:
triplet: x86-windows
diff --git a/scripts/azure-pipelines/windows/check-formatting.ps1 b/scripts/azure-pipelines/windows/Check-CxxFormatting.ps1
index e3c3d213e..7f300164f 100644
--- a/scripts/azure-pipelines/windows/check-formatting.ps1
+++ b/scripts/azure-pipelines/windows/Check-CxxFormatting.ps1
@@ -1,7 +1,7 @@
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True)]
- [string]$Toolsrc,
+ [string]$Root,
[Parameter()]
[switch]$IgnoreErrors # allows one to just format
)
@@ -13,23 +13,20 @@ if (-not (Test-Path $clangFormat))
throw
}
-$Toolsrc = Get-Item $Toolsrc
-Push-Location $Toolsrc
+$toolsrc = Get-Item "$Root/toolsrc"
+Push-Location $toolsrc
try
{
- $files = Get-ChildItem -Recurse -LiteralPath "$Toolsrc/src" -Filter '*.cpp'
- $files += Get-ChildItem -Recurse -LiteralPath "$Toolsrc/include/vcpkg" -Filter '*.h'
- $files += Get-ChildItem -Recurse -LiteralPath "$Toolsrc/include/vcpkg-test" -Filter '*.h'
- $files += Get-Item "$Toolsrc/include/pch.h"
+ $files = Get-ChildItem -Recurse -LiteralPath "$toolsrc/src" -Filter '*.cpp'
+ $files += Get-ChildItem -Recurse -LiteralPath "$toolsrc/include/vcpkg" -Filter '*.h'
+ $files += Get-ChildItem -Recurse -LiteralPath "$toolsrc/include/vcpkg-test" -Filter '*.h'
+ $files += Get-Item "$toolsrc/include/pch.h"
$fileNames = $files.FullName
& $clangFormat -style=file -i @fileNames
- $changedFiles = git status --porcelain $Toolsrc | ForEach-Object {
- (-split $_)[1]
- }
-
+ $changedFiles = & "$PSScriptRoot/Get-ChangedFiles.ps1" -Directory $toolsrc
if (-not $IgnoreErrors -and $null -ne $changedFiles)
{
$msg = @(
@@ -42,7 +39,7 @@ try
$msg += ""
$msg += "clang-format should produce the following diff:"
- $msg += git diff $Toolsrc
+ $msg += git diff $toolsrc
Write-Error ($msg -join "`n")
throw
diff --git a/scripts/azure-pipelines/windows/Check-ManifestFormatting.ps1 b/scripts/azure-pipelines/windows/Check-ManifestFormatting.ps1
new file mode 100644
index 000000000..e4f52ae7b
--- /dev/null
+++ b/scripts/azure-pipelines/windows/Check-ManifestFormatting.ps1
@@ -0,0 +1,51 @@
+[CmdletBinding()]
+Param(
+ [Parameter(Mandatory=$True)]
+ [string]$Root,
+ [Parameter()]
+ [string]$DownloadsDirectory,
+ [Parameter()]
+ [switch]$IgnoreErrors # allows one to just format
+)
+
+$portsTree = Get-Item "$Root/ports"
+
+if (-not (Test-Path "$Root/.vcpkg-root"))
+{
+ Write-Error "The vcpkg root was not at $Root"
+ throw
+}
+
+if (-not [string]::IsNullOrEmpty($DownloadsDirectory))
+{
+ $env:VCPKG_DOWNLOADS = $DownloadsDirectory
+}
+
+if (-not (Test-Path "$Root/vcpkg.exe"))
+{
+ & "$Root/bootstrap-vcpkg.bat"
+ if (-not $?)
+ {
+ Write-Error "Bootstrapping vcpkg failed"
+ throw
+ }
+}
+
+& "$Root/vcpkg.exe" 'x-format-manifest' '--all'
+$changedFiles = & "$PSScriptRoot/Get-ChangedFiles.ps1" -Directory $portsTree
+if (-not $IgnoreErrors -and $null -ne $changedFiles)
+{
+ $msg = @(
+ "",
+ "The formatting of the manifest files didn't match our expectation.",
+ "If your build fails here, you need to run:"
+ )
+ $msg += " vcpkg x-format-manifest --all"
+ $msg += ""
+
+ $msg += "vcpkg should produce the following diff:"
+ $msg += git diff $portsTree
+
+ Write-Error ($msg -join "`n")
+ throw
+}
diff --git a/scripts/azure-pipelines/windows/Get-ChangedFiles.ps1 b/scripts/azure-pipelines/windows/Get-ChangedFiles.ps1
new file mode 100644
index 000000000..e299369a0
--- /dev/null
+++ b/scripts/azure-pipelines/windows/Get-ChangedFiles.ps1
@@ -0,0 +1,9 @@
+[CmdletBinding()]
+Param(
+ [Parameter(Mandatory=$True)]
+ [string]$Directory
+)
+
+git status --porcelain $Directory | ForEach-Object {
+ (-split $_)[1]
+}
diff --git a/scripts/azure-pipelines/windows/azure-pipelines.yml b/scripts/azure-pipelines/windows/azure-pipelines.yml
index 1d18c0339..4136615c7 100644
--- a/scripts/azure-pipelines/windows/azure-pipelines.yml
+++ b/scripts/azure-pipelines/windows/azure-pipelines.yml
@@ -20,13 +20,7 @@ jobs:
condition: always()
inputs:
filePath: 'scripts/azure-pipelines/windows/disk-space.ps1'
- - task: Powershell@2
- displayName: 'Check C++ Formatting'
- condition: eq('${{ parameters.triplet }}', 'x86-windows')
- inputs:
- filePath: 'scripts/azure-pipelines/windows/check-formatting.ps1'
- arguments: '-Toolsrc ./toolsrc'
- # Note: D: is the Azure machines' temporary disk.
+ # Note: D: is the Azure machines' temporary disk.
- task: CmdLine@2
displayName: 'Build vcpkg'
inputs: