aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/azure-pipelines/Create-FormatDiff.ps120
-rw-r--r--scripts/azure-pipelines/Format-CxxCode.ps149
-rw-r--r--scripts/azure-pipelines/azure-pipelines.yml65
-rw-r--r--scripts/azure-pipelines/windows/Check-CMakeFunctionDocumentation.ps130
-rw-r--r--scripts/azure-pipelines/windows/Check-CxxFormatting.ps155
-rw-r--r--scripts/azure-pipelines/windows/Check-ManifestFormatting.ps149
-rw-r--r--scripts/azure-pipelines/windows/Get-ChangedFiles.ps19
7 files changed, 97 insertions, 180 deletions
diff --git a/scripts/azure-pipelines/Create-FormatDiff.ps1 b/scripts/azure-pipelines/Create-FormatDiff.ps1
new file mode 100644
index 000000000..599118089
--- /dev/null
+++ b/scripts/azure-pipelines/Create-FormatDiff.ps1
@@ -0,0 +1,20 @@
+[CmdletBinding(PositionalBinding=$False)]
+Param(
+ [Parameter(Mandatory=$True)]
+ [String]$DiffFile
+)
+
+Start-Process -FilePath 'git' -ArgumentList 'diff' `
+ -NoNewWindow -Wait `
+ -RedirectStandardOutput $DiffFile
+if (0 -ne (Get-Item -LiteralPath $DiffFile).Length)
+{
+ $msg = @(
+ 'The formatting of the files in the repo were not what we expected,',
+ 'or the documentation was not regenerated.',
+ 'Please access the diff from format.diff in the build artifacts,'
+ 'and apply the patch with `git apply`'
+ )
+ Write-Error ($msg -join "`n")
+ throw
+} \ No newline at end of file
diff --git a/scripts/azure-pipelines/Format-CxxCode.ps1 b/scripts/azure-pipelines/Format-CxxCode.ps1
new file mode 100644
index 000000000..a20a9ce0b
--- /dev/null
+++ b/scripts/azure-pipelines/Format-CxxCode.ps1
@@ -0,0 +1,49 @@
+[CmdletBinding()]
+Param(
+ [Parameter(Mandatory=$True)]
+ [string]$Root
+)
+
+$Root = Resolve-Path -LiteralPath $Root
+
+$clangFormat = Get-Command 'clang-format' -ErrorAction 'SilentlyContinue'
+if ($null -ne $clangFormat)
+{
+ $clangFormat = $clangFormat.Source
+}
+
+if ($IsWindows)
+{
+ if ([String]::IsNullOrEmpty($clangFormat) -or -not (Test-Path $clangFormat))
+ {
+ $clangFormat = 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\Llvm\x64\bin\clang-format.exe'
+ }
+ if (-not (Test-Path $clangFormat))
+ {
+ $clangFormat = 'C:\Program Files\LLVM\bin\clang-format.exe'
+ }
+}
+
+if ([String]::IsNullOrEmpty($clangFormat) -or -not (Test-Path $clangFormat))
+{
+ Write-Error 'clang-format not found; is it installed?'
+ throw
+}
+
+$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"
+ $fileNames = $files.FullName
+
+ & $clangFormat -style=file -i @fileNames
+}
+finally
+{
+ Pop-Location
+}
diff --git a/scripts/azure-pipelines/azure-pipelines.yml b/scripts/azure-pipelines/azure-pipelines.yml
index 03bf38e4c..b7121bb08 100644
--- a/scripts/azure-pipelines/azure-pipelines.yml
+++ b/scripts/azure-pipelines/azure-pipelines.yml
@@ -7,59 +7,50 @@ variables:
osx-pool: 'PrOsx-2020-09-28'
stages:
-- stage: check_cxx_formatting
- displayName: 'Check the formatting of the C++'
+- stage: FormatChecks
+ displayName: 'Formatting and Documentation Checks'
pool: $(windows-pool)
jobs:
- job:
workspace:
clean: resources
+ variables:
+ - name: VCPKG_DOWNLOADS
+ value: D:\downloads
+ - name: DiffFile
+ value: $(Build.ArtifactStagingDirectory)\format.diff
steps:
- task: Powershell@2
- displayName: 'Check C++ Formatting'
+ displayName: 'Format C++'
inputs:
- filePath: 'scripts/azure-pipelines/windows/Check-CxxFormatting.ps1'
+ filePath: 'scripts/azure-pipelines/Format-CxxCode.ps1'
arguments: '-Root .'
pwsh: true
-- stage: check_manifest_formatting
- displayName: Check the formatting of port manifests
- pool: $(windows-pool)
- dependsOn: []
- variables:
- - name: VCPKG_DOWNLOADS
- value: D:\downloads
- jobs:
- - job:
- workspace:
- clean: resources
- steps:
- task: Powershell@2
- displayName: 'Check port manifest Formatting'
+ displayName: 'Generate Documentation'
inputs:
- filePath: 'scripts/azure-pipelines/windows/Check-ManifestFormatting.ps1'
- arguments: '-Root .'
+ filePath: 'docs/regenerate.ps1'
+ arguments: '-VcpkgRoot . -WarningAction Stop'
pwsh: true
-- stage: check_documentation_generation
- displayName: Check if the documentation has been regenerated correctly
- pool: $(windows-pool)
- dependsOn: []
- jobs:
- - job:
- workspace:
- clean: resources
- steps:
+ - script: .\bootstrap-vcpkg.bat
+ displayName: 'Build vcpkg'
+ - script: '.\vcpkg format-manifest --all'
+ displayName: 'Format Manifests'
- task: Powershell@2
- displayName: 'Check documentation generation'
+ displayName: 'Create Diff'
inputs:
- filePath: 'scripts/azure-pipelines/windows/Check-CMakeFunctionDocumentation.ps1'
- arguments: '-Root .'
+ filePath: scripts/azure-pipelines/Create-FormatDiff.ps1
+ arguments: '-DiffFile $(DiffFile)'
pwsh: true
-- stage: run_port_ci
- displayName: 'Run the Port CI'
- dependsOn:
- - check_cxx_formatting
- - check_manifest_formatting
- - check_documentation_generation
+ - task: PublishBuildArtifacts@1
+ condition: failed()
+ displayName: 'Publish C++ Diff'
+ inputs:
+ PathtoPublish: '$(DiffFile)'
+ ArtifactName: 'format.diff'
+- stage: RunPrTests
+ displayName: 'Run PR Tests:'
+ dependsOn: FormatChecks
jobs:
- template: windows/azure-pipelines.yml
parameters:
diff --git a/scripts/azure-pipelines/windows/Check-CMakeFunctionDocumentation.ps1 b/scripts/azure-pipelines/windows/Check-CMakeFunctionDocumentation.ps1
deleted file mode 100644
index 5505c3401..000000000
--- a/scripts/azure-pipelines/windows/Check-CMakeFunctionDocumentation.ps1
+++ /dev/null
@@ -1,30 +0,0 @@
-[CmdletBinding()]
-Param(
- [Parameter(Mandatory=$True)]
- [string]$Root
-)
-
-if (-not (Test-Path "$Root/.vcpkg-root"))
-{
- Write-Error "The vcpkg root was not at $Root"
- throw
-}
-
-& "$Root/docs/regenerate.ps1" -VcpkgRoot $Root -WarningAction 'Stop'
-
-$changedFiles = & "$PSScriptRoot/Get-ChangedFiles.ps1" -Directory "$Root/docs"
-if ($null -ne $changedFiles)
-{
- $msg = @(
- "",
- "The documentation files do not seem to have been regenerated.",
- "Please re-run `docs/regenerate.ps1`."
- )
- $msg += ""
-
- $msg += "This should produce the following diff:"
- $msg += git diff "$Root/docs"
-
- Write-Error ($msg -join "`n")
- throw
-}
diff --git a/scripts/azure-pipelines/windows/Check-CxxFormatting.ps1 b/scripts/azure-pipelines/windows/Check-CxxFormatting.ps1
deleted file mode 100644
index eaa9e692b..000000000
--- a/scripts/azure-pipelines/windows/Check-CxxFormatting.ps1
+++ /dev/null
@@ -1,55 +0,0 @@
-[CmdletBinding()]
-Param(
- [Parameter(Mandatory=$True)]
- [string]$Root,
- [Parameter()]
- [switch]$IgnoreErrors # allows one to just format
-)
-
-$clangFormat = 'C:\Program Files\LLVM\bin\clang-format.exe'
-if (-not (Test-Path $clangFormat))
-{
- $clangFormat = 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\Llvm\x64\bin\clang-format.exe'
- if (-not (Test-Path $clangFormat))
- {
- Write-Error 'clang-format not found; is it installed in the CI machines?'
- throw
- }
-}
-
-$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"
- $fileNames = $files.FullName
-
- & $clangFormat -style=file -i @fileNames
-
- $changedFiles = & "$PSScriptRoot/Get-ChangedFiles.ps1" -Directory $toolsrc
- if (-not $IgnoreErrors -and $null -ne $changedFiles)
- {
- $msg = @(
- "",
- "The formatting of the C++ files didn't match our expectation.",
- "See github.com/microsoft/vcpkg/blob/master/docs/maintainers/maintainer-guide.md#vcpkg-internal-code for solution."
- )
- $msg += "File list:"
- $msg += " $changedFiles"
- $msg += ""
-
- $msg += "clang-format should produce the following diff:"
- $msg += git diff $toolsrc
-
- Write-Error ($msg -join "`n")
- throw
- }
-}
-finally
-{
- Pop-Location
-}
diff --git a/scripts/azure-pipelines/windows/Check-ManifestFormatting.ps1 b/scripts/azure-pipelines/windows/Check-ManifestFormatting.ps1
deleted file mode 100644
index 75924c24a..000000000
--- a/scripts/azure-pipelines/windows/Check-ManifestFormatting.ps1
+++ /dev/null
@@ -1,49 +0,0 @@
-[CmdletBinding()]
-Param(
- [Parameter(Mandatory=$True)]
- [string]$Root,
- [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 (Test-Path "$Root/vcpkg.exe"))
-{
- & "$Root/bootstrap-vcpkg.bat"
- if (-not $?)
- {
- Write-Error "Bootstrapping vcpkg failed"
- throw
- }
-}
-
-& "$Root/vcpkg.exe" 'format-manifest' '--all'
-if (-not $?)
-{
- Write-Error "Failed formatting manifests; are they well-formed?"
- throw
-}
-
-$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.",
- "See github.com/microsoft/vcpkg/blob/master/docs/maintainers/maintainer-guide.md#manifest for solution."
- )
- $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
deleted file mode 100644
index e299369a0..000000000
--- a/scripts/azure-pipelines/windows/Get-ChangedFiles.ps1
+++ /dev/null
@@ -1,9 +0,0 @@
-[CmdletBinding()]
-Param(
- [Parameter(Mandatory=$True)]
- [string]$Directory
-)
-
-git status --porcelain $Directory | ForEach-Object {
- (-split $_)[1]
-}