mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 13:13:44 +01:00
2abff832dd
Install the mingw OpenSSL package in Appveyor. This makes sure that the OpenSSL headers and libraries match in Tor's Appveyor builds. (This bug was triggered by an Appveyor image update.) Fixes bug 32449; bugfix on 0.3.5.6-rc.
132 lines
4.9 KiB
YAML
132 lines
4.9 KiB
YAML
version: 1.0.{build}
|
|
|
|
clone_depth: 50
|
|
|
|
# Appveyor images are named after the Visual Studio version they contain.
|
|
# But we compile using MinGW, not Visual Studio.
|
|
# We use these images because they have different Windows versions.
|
|
image:
|
|
# Windows Server 2019
|
|
- Visual Studio 2019
|
|
# Windows Server 2012 R2
|
|
- Visual Studio 2015
|
|
|
|
environment:
|
|
compiler: mingw
|
|
|
|
matrix:
|
|
- target: i686-w64-mingw32
|
|
compiler_path: mingw32
|
|
mingw_prefix: mingw-w64-i686
|
|
hardening:
|
|
- target: x86_64-w64-mingw32
|
|
compiler_path: mingw64
|
|
mingw_prefix: mingw-w64-x86_64
|
|
# hardening doesn't work with mingw-w64-x86_64-gcc, because it's gcc 8
|
|
hardening: --disable-gcc-hardening
|
|
|
|
matrix:
|
|
# Don't keep building failing jobs
|
|
fast_finish: true
|
|
# Skip the 32-bit Windows Server 2019 job, and the 64-bit Windows Server
|
|
# 2012 R2 job, to speed up the build.
|
|
# The environment variables must be listed without the 'environment' tag.
|
|
exclude:
|
|
- image: Visual Studio 2019
|
|
target: i686-w64-mingw32
|
|
compiler_path: mingw32
|
|
mingw_prefix: mingw-w64-i686
|
|
hardening:
|
|
- image: Visual Studio 2015
|
|
target: x86_64-w64-mingw32
|
|
compiler_path: mingw64
|
|
mingw_prefix: mingw-w64-x86_64
|
|
# hardening doesn't work with mingw-w64-x86_64-gcc, because it's gcc 8
|
|
hardening: --disable-gcc-hardening
|
|
|
|
install:
|
|
- ps: >-
|
|
Function Execute-Command ($commandPath)
|
|
{
|
|
& $commandPath $args 2>&1
|
|
if ( $LastExitCode -ne 0 ) {
|
|
$host.SetShouldExit( $LastExitCode )
|
|
}
|
|
}
|
|
Function Execute-Bash ()
|
|
{
|
|
Execute-Command 'c:\msys64\usr\bin\bash' '-e' '-c' $args
|
|
}
|
|
<# mingw packages start with ${env:mingw_prefix}
|
|
# unprefixed packages are from MSYS2, which is like Cygwin. Avoid them.
|
|
#
|
|
# Use pacman --debug to show package downloads and install locations
|
|
#>
|
|
Execute-Command "C:\msys64\usr\bin\pacman" -Sy --verbose --needed --noconfirm ${env:mingw_prefix}-libevent ${env:mingw_prefix}-openssl ${env:mingw_prefix}-pkg-config ${env:mingw_prefix}-xz ${env:mingw_prefix}-zstd ;
|
|
|
|
build_script:
|
|
- ps: >-
|
|
if ($env:compiler -eq "mingw") {
|
|
<# use the MSYS2 compiler and user binaries to build and install #>
|
|
$oldpath = ${env:Path} -split ';'
|
|
$buildpath = @("C:\msys64\${env:compiler_path}\bin", "C:\msys64\usr\bin") + $oldpath
|
|
$env:Path = @($buildpath) -join ';'
|
|
$env:build = @("${env:APPVEYOR_BUILD_FOLDER}", $env:target) -join '\'
|
|
Set-Location "${env:APPVEYOR_BUILD_FOLDER}"
|
|
Execute-Bash 'autoreconf -i'
|
|
mkdir "${env:build}"
|
|
Set-Location "${env:build}"
|
|
Execute-Bash "which ${env:target}-gcc"
|
|
Execute-Bash "${env:target}-gcc --version"
|
|
<# compile for mingw
|
|
# mingw zstd doesn't come with a pkg-config file, so we manually
|
|
# configure its flags. liblzma just works.
|
|
#>
|
|
Execute-Bash "ZSTD_CFLAGS='-L/${env:compiler_path}/include' ZSTD_LIBS='-L/${env:compiler_path}/lib -lzstd' ../configure --prefix=/${env:compiler_path} --build=${env:target} --host=${env:target} --with-openssl-dir=/${env:compiler_path} --disable-asciidoc --enable-fatal-warnings ${env:hardening}"
|
|
Execute-Bash "V=1 make -k -j2"
|
|
Execute-Bash "V=1 make -k -j2 install"
|
|
}
|
|
|
|
test_script:
|
|
- ps: >-
|
|
if ($env:compiler -eq "mingw") {
|
|
<# use the MSYS2 compiler binaries to make check #>
|
|
$oldpath = ${env:Path} -split ';'
|
|
$buildpath = @("C:\msys64\${env:compiler_path}\bin") + $oldpath
|
|
$env:Path = $buildpath -join ';'
|
|
Set-Location "${env:build}"
|
|
Execute-Bash "VERBOSE=1 make -k -j2 check"
|
|
}
|
|
|
|
on_finish:
|
|
- ps: >-
|
|
<# if we failed before install:, these functions won't be defined #>
|
|
Function Execute-Command ($commandPath)
|
|
{
|
|
& $commandPath $args 2>&1
|
|
if ( $LastExitCode -ne 0 ) {
|
|
$host.SetShouldExit( $LastExitCode )
|
|
}
|
|
}
|
|
Function Execute-Bash ()
|
|
{
|
|
Execute-Command 'c:\msys64\usr\bin\bash' '-e' '-c' $args
|
|
}
|
|
if ($env:compiler -eq "mingw") {
|
|
<# use the MSYS2 user binaries to archive failures #>
|
|
$oldpath = ${env:Path} -split ';'
|
|
$buildpath = @("C:\msys64\usr\bin") + $oldpath
|
|
$env:Path = @($buildpath) -join ';'
|
|
Set-Location "${env:build}"
|
|
<# store logs as appveyor artifacts: see the artifacts tab #>
|
|
Execute-Bash "7z a logs.zip config.log || true"
|
|
Execute-Bash "7z a logs.zip test-suite.log || true"
|
|
Execute-Bash "appveyor PushArtifact logs.zip || true"
|
|
Execute-Bash "tail -1000 config.log || true"
|
|
Execute-Bash "cat test-suite.log || true"
|
|
}
|
|
|
|
# notify the IRC channel of any failures
|
|
on_failure:
|
|
- cmd: C:\Python27\python.exe %APPVEYOR_BUILD_FOLDER%\scripts\test\appveyor-irc-notify.py irc.oftc.net:6697 tor-ci failure
|