mirror of https://github.com/python/cpython
87 lines
2.3 KiB
YAML
87 lines
2.3 KiB
YAML
name: $(SourceTag)_$(Date:yyyyMMdd)$(Rev:.rr)
|
|
|
|
variables:
|
|
IntDir: '$(Build.BinariesDirectory)'
|
|
OutDir: '$(Build.ArtifactStagingDirectory)'
|
|
|
|
# MUST BE SET AT QUEUE TIME
|
|
# SigningCertificate: 'Python Software Foundation'
|
|
# SourcesRepo: 'https://github.com/python/cpython-source-deps'
|
|
# SourceTag: 'libffi-3.4.2'
|
|
|
|
jobs:
|
|
- job: Build_LibFFI
|
|
displayName: LibFFI
|
|
pool:
|
|
vmImage: windows-latest
|
|
|
|
workspace:
|
|
clean: all
|
|
|
|
steps:
|
|
- checkout: none
|
|
|
|
- template: ./find-tools.yml
|
|
|
|
- powershell: |
|
|
mkdir -Force "$(IntDir)\script"
|
|
iwr "https://github.com/python/cpython/raw/main/PCbuild/prepare_libffi.bat" `
|
|
-outfile "$(IntDir)\script\prepare_libffi.bat"
|
|
displayName: 'Download build script'
|
|
|
|
- powershell: |
|
|
git clone $(SourcesRepo) -b $(SourceTag) --depth 1 -c core.autocrlf=false -c core.eol=lf .
|
|
displayName: 'Check out LibFFI sources'
|
|
|
|
- script: 'prepare_libffi.bat --install-cygwin'
|
|
workingDirectory: '$(IntDir)\script'
|
|
displayName: 'Install Cygwin and build'
|
|
env:
|
|
VCVARSALL: '$(vcvarsall)'
|
|
LIBFFI_SOURCE: '$(Build.SourcesDirectory)'
|
|
LIBFFI_OUT: '$(OutDir)'
|
|
|
|
- powershell: |
|
|
if ((gci *\*.dll).Count -lt 4) {
|
|
Write-Error "Did not generate enough DLL files"
|
|
}
|
|
if ((gci *\Include\ffi.h).Count -lt 4) {
|
|
Write-Error "Did not generate enough include files"
|
|
}
|
|
failOnStderr: true
|
|
workingDirectory: '$(OutDir)'
|
|
displayName: 'Verify files were created'
|
|
|
|
- publish: '$(OutDir)'
|
|
artifact: 'unsigned'
|
|
displayName: 'Publish unsigned build'
|
|
|
|
- job: Sign_LibFFI
|
|
displayName: Sign LibFFI
|
|
dependsOn: Build_LibFFI
|
|
pool:
|
|
name: 'Windows Release'
|
|
|
|
workspace:
|
|
clean: all
|
|
|
|
steps:
|
|
- checkout: none
|
|
- download: current
|
|
artifact: unsigned
|
|
|
|
- template: ./find-tools.yml
|
|
|
|
- powershell: |
|
|
signtool sign /q /a `
|
|
/n "Python Software Foundation" `
|
|
/fd sha256 `
|
|
/tr http://timestamp.digicert.com/ /td sha256 `
|
|
/d "LibFFI for Python" `
|
|
(gci "$(Pipeline.Workspace)\unsigned\*.dll" -r)
|
|
displayName: 'Sign files'
|
|
|
|
- publish: '$(Pipeline.Workspace)\unsigned'
|
|
artifact: 'libffi'
|
|
displayName: 'Publish libffi'
|