mirror of https://github.com/python/cpython
111 lines
3.1 KiB
YAML
111 lines
3.1 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: 'openssl-1.1.1k'
|
|
|
|
jobs:
|
|
- job: Build_SSL
|
|
displayName: OpenSSL
|
|
pool:
|
|
name: 'Windows Release'
|
|
#vmImage: windows-latest
|
|
|
|
strategy:
|
|
matrix:
|
|
win32:
|
|
Platform: 'win32'
|
|
VCPlatform: 'amd64_x86'
|
|
OpenSSLPlatform: 'VC-WIN32 no-asm'
|
|
amd64:
|
|
Platform: 'amd64'
|
|
VCPlatform: 'amd64'
|
|
OpenSSLPlatform: 'VC-WIN64A-masm'
|
|
arm32:
|
|
Platform: 'arm32'
|
|
VCPlatform: 'amd64_arm'
|
|
OpenSSLPlatform: 'VC-WIN32-ARM'
|
|
arm64:
|
|
Platform: 'arm64'
|
|
VCPlatform: 'amd64_arm64'
|
|
OpenSSLPlatform: 'VC-WIN64-ARM'
|
|
|
|
workspace:
|
|
clean: all
|
|
|
|
steps:
|
|
- checkout: none
|
|
|
|
- template: ./find-tools.yml
|
|
|
|
- powershell: |
|
|
git clone $(SourcesRepo) -b $(SourceTag) --depth 1 .
|
|
displayName: 'Check out OpenSSL sources'
|
|
|
|
- powershell: |
|
|
$f = gi ms\uplink.c
|
|
$c1 = gc $f
|
|
$c2 = $c1 -replace '\(\(h = GetModuleHandle\(NULL\)\) == NULL\)', '((h = GetModuleHandleA("_ssl.pyd")) == NULL) if ((h = GetModuleHandleA("_ssl_d.pyd")) == NULL) if ((h = GetModuleHandle(NULL)) == NULL /*patched*/)'
|
|
if ($c2 -ne $c1) {
|
|
$c2 | Out-File $f -Encoding ASCII
|
|
} else {
|
|
Write-Host '##warning Failed to patch uplink.c'
|
|
}
|
|
displayName: 'Apply uplink.c patch'
|
|
|
|
- script: |
|
|
call "$(vcvarsall)" $(VCPlatform)
|
|
perl "$(Build.SourcesDirectory)\Configure" $(OpenSSLPlatform)
|
|
nmake
|
|
workingDirectory: '$(IntDir)'
|
|
displayName: 'Build OpenSSL'
|
|
|
|
- script: |
|
|
call "$(vcvarsall)" $(VCPlatform)
|
|
signtool sign /q /a /n "$(SigningCertificate)" /fd sha256 /tr http://timestamp.digicert.com/ /td sha256 /d "OpenSSL for Python" *.dll
|
|
workingDirectory: '$(IntDir)'
|
|
displayName: 'Sign OpenSSL Build'
|
|
condition: and(succeeded(), variables['SigningCertificate'])
|
|
|
|
- task: CopyFiles@2
|
|
displayName: 'Copy built libraries for upload'
|
|
inputs:
|
|
SourceFolder: '$(IntDir)'
|
|
Contents: |
|
|
lib*.dll
|
|
lib*.pdb
|
|
lib*.lib
|
|
include\openssl\*.h
|
|
TargetFolder: '$(OutDir)'
|
|
|
|
- task: CopyFiles@2
|
|
displayName: 'Copy header files for upload'
|
|
inputs:
|
|
SourceFolder: '$(Build.SourcesDirectory)'
|
|
Contents: |
|
|
include\openssl\*
|
|
TargetFolder: '$(OutDir)'
|
|
|
|
- task: CopyFiles@2
|
|
displayName: 'Copy applink files for upload'
|
|
inputs:
|
|
SourceFolder: '$(Build.SourcesDirectory)\ms'
|
|
Contents: applink.c
|
|
TargetFolder: '$(OutDir)\include'
|
|
|
|
- task: CopyFiles@2
|
|
displayName: 'Copy LICENSE for upload'
|
|
inputs:
|
|
SourceFolder: '$(Build.SourcesDirectory)'
|
|
Contents: LICENSE
|
|
TargetFolder: '$(OutDir)'
|
|
|
|
- publish: '$(OutDir)'
|
|
artifact: '$(Platform)'
|
|
displayName: 'Publishing $(Platform)'
|