Skip to content

Commit

Permalink
[vcpkg ci] Update formatting CI (#12314)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
strega-nil authored Jul 7, 2020
1 parent f8e975d commit 9606917
Show file tree
Hide file tree
Showing 5 changed files with 100 additions and 20 deletions.
31 changes: 30 additions & 1 deletion scripts/azure-pipelines/azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True)]
[string]$Toolsrc,
[string]$Root,
[Parameter()]
[switch]$IgnoreErrors # allows one to just format
)
Expand All @@ -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 = @(
Expand All @@ -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
Expand Down
51 changes: 51 additions & 0 deletions scripts/azure-pipelines/windows/Check-ManifestFormatting.ps1
Original file line number Diff line number Diff line change
@@ -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
}
9 changes: 9 additions & 0 deletions scripts/azure-pipelines/windows/Get-ChangedFiles.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True)]
[string]$Directory
)

git status --porcelain $Directory | ForEach-Object {
(-split $_)[1]
}
8 changes: 1 addition & 7 deletions scripts/azure-pipelines/windows/azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down

0 comments on commit 9606917

Please sign in to comment.