|
|
|
version: '{build}'
|
|
|
|
|
|
|
|
os: Visual Studio 2015
|
|
|
|
|
|
|
|
environment:
|
|
|
|
matrix:
|
|
|
|
- arch: x86
|
|
|
|
compiler: msvc2015
|
|
|
|
backend: ninja
|
|
|
|
BOOST_ROOT: C:\Libraries\Boost_1_60_0
|
|
|
|
|
|
|
|
- arch: x86
|
|
|
|
compiler: msvc2015
|
|
|
|
backend: vs2015
|
|
|
|
BOOST_ROOT: C:\Libraries\Boost_1_60_0
|
|
|
|
|
|
|
|
- arch: x86
|
|
|
|
compiler: msys2-mingw
|
|
|
|
backend: ninja
|
|
|
|
|
|
|
|
- arch: x64
|
|
|
|
compiler: msys2-mingw
|
|
|
|
backend: ninja
|
|
|
|
|
|
|
|
- arch: x64
|
|
|
|
compiler: cygwin
|
|
|
|
backend: ninja
|
|
|
|
|
|
|
|
platform:
|
|
|
|
- x64
|
|
|
|
|
|
|
|
branches:
|
|
|
|
only:
|
|
|
|
- master
|
|
|
|
# Release branches
|
|
|
|
- /^[0-9]+\.[0-9]+$/
|
|
|
|
|
|
|
|
init:
|
|
|
|
- ps: |
|
|
|
|
If($Env:compiler -like 'msvc2015') {
|
|
|
|
Set-WinSystemLocale de-DE
|
|
|
|
Start-Sleep -s 5
|
|
|
|
Restart-Computer
|
|
|
|
}
|
|
|
|
|
|
|
|
install:
|
|
|
|
- ps: |
|
|
|
|
function DownloadFile([String] $Source, [String] $Destination) {
|
|
|
|
$retries = 10
|
|
|
|
for ($i = 1; $i -le $retries; $i++) {
|
|
|
|
try {
|
|
|
|
(New-Object net.webclient).DownloadFile($Source, $Destination)
|
|
|
|
break # succeeded
|
|
|
|
} catch [net.WebException] {
|
|
|
|
if ($i -eq $retries) {
|
|
|
|
throw # fail on last retry
|
|
|
|
}
|
|
|
|
$backoff = (10 * $i) # backoff 10s, 20s, 30s...
|
|
|
|
echo ('{0}: {1}' -f $Source, $_.Exception.Message)
|
|
|
|
echo ('Retrying in {0}s...' -f $backoff)
|
|
|
|
Start-Sleep -m ($backoff * 1000)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
- cmd: set "ORIG_PATH=%PATH%"
|
|
|
|
# Use a Ninja with QuLogic's patch: https://github.com/ninja-build/ninja/issues/1219
|
|
|
|
- cmd: set "MESON_FIXED_NINJA=1"
|
|
|
|
- ps: DownloadFile -Source 'https://github.com/mesonbuild/cidata/raw/master/ninja.exe' -Destination 'C:\projects\meson\ninja.exe'
|
|
|
|
# Use the x86 python only when building for x86 for the cpython tests.
|
|
|
|
# For all other archs (including, say, arm), use the x64 python.
|
|
|
|
- cmd: if %arch%==x86 (set MESON_PYTHON_PATH=C:\python35) else (set MESON_PYTHON_PATH=C:\python35-x64)
|
|
|
|
|
|
|
|
# Skip CI requires python
|
|
|
|
- cmd: python ./skip_ci.py --base-branch-env=APPVEYOR_REPO_BRANCH --is-pull-env=APPVEYOR_PULL_REQUEST_NUMBER
|
|
|
|
|
|
|
|
# Set paths for BOOST dll files
|
|
|
|
- cmd: if %compiler%==msvc2015 ( if %arch%==x86 ( set "PATH=%PATH%;%BOOST_ROOT%\lib32-msvc-14.0" ) else ( set "PATH=%PATH%;%BOOST_ROOT%\lib64-msvc-14.0" ) )
|
|
|
|
- cmd: if %compiler%==msvc2017 ( if %arch%==x86 ( set "PATH=%PATH%;%BOOST_ROOT%\lib32-msvc-14.1" ) else ( set "PATH=%PATH%;%BOOST_ROOT%\lib64-msvc-14.1" ) )
|
|
|
|
|
|
|
|
# Set paths and config for each build type.
|
|
|
|
- cmd: if %compiler%==msvc2015 ( call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" %arch% )
|
|
|
|
- cmd: if %compiler%==msvc2017 ( call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat" -arch=%arch% )
|
|
|
|
- cmd: if %compiler%==cygwin ( set PYTHON=python3 ) else ( set PYTHON=python )
|
|
|
|
# MinGW setup, lines are split to prevent "The input line is too long." error.
|
|
|
|
- cmd: if %arch%==x86 ( set "PACMAN_ARCH=i686" ) else ( set "PACMAN_ARCH=x86_64" )
|
|
|
|
- cmd: if %arch%==x86 ( set "PACMAN_BITS=32" ) else ( set "PACMAN_BITS=64" )
|
|
|
|
- cmd: if %compiler%==msys2-mingw ( set "PATH=C:\msys64\mingw%PACMAN_BITS%\bin;%PATH%" )
|
|
|
|
- cmd: if %compiler%==msys2-mingw ( set "MESON_PYTHON_PATH=C:\msys64\mingw%PACMAN_BITS%\bin" )
|
|
|
|
- cmd: if %compiler%==msys2-mingw ( set "PYTHON=python3" )
|
|
|
|
- cmd: if %compiler%==msys2-mingw ( C:\msys64\usr\bin\pacman -S --needed --noconfirm "mingw%PACMAN_BITS%/mingw-w64-%PACMAN_ARCH%-python3" "mingw%PACMAN_BITS%/mingw-w64-%PACMAN_ARCH%-python3-setuptools" )
|
|
|
|
# Cygwin
|
|
|
|
- cmd: if not %compiler%==cygwin ( set "PATH=%cd%;%MESON_PYTHON_PATH%;%PATH%;" )
|
|
|
|
- cmd: if %compiler%==cygwin ( set WRAPPER=ci\run-in-cygwin.bat )
|
|
|
|
- cmd: if %compiler%==cygwin ( %WRAPPER% which %PYTHON% ) else ( where %PYTHON% )
|
|
|
|
|
|
|
|
# Setup D compiler and dub packages
|
|
|
|
- ps: |
|
|
|
|
If($Env:compiler.StartsWith('msvc') -and $Env:backend -eq 'ninja') {
|
|
|
|
& .\ci\install-dmd.ps1
|
|
|
|
$arch = 'x86_mscoff'
|
|
|
|
If($Env:arch -eq 'x64') {
|
|
|
|
$arch = 'x86_64'
|
|
|
|
}
|
|
|
|
& dub fetch urld
|
|
|
|
& dub build urld --compiler=dmd --arch=$arch
|
|
|
|
& dub fetch dubtestproject
|
|
|
|
& dub build dubtestproject:test1 --compiler=dmd --arch=$arch
|
|
|
|
& dub build dubtestproject:test2 --compiler=dmd --arch=$arch
|
|
|
|
}
|
|
|
|
|
|
|
|
# pkg-config is needed for the pkg-config tests on msvc
|
|
|
|
- ps: |
|
|
|
|
If($Env:compiler.StartsWith('msvc')) {
|
|
|
|
DownloadFile -Source 'http://nirbheek.in/files/binaries/pkg-config/win32/pkg-config.exe' `
|
|
|
|
-Destination 'C:\projects\meson\pkg-config.exe'
|
|
|
|
}
|
|
|
|
- cmd: if %compiler%==cygwin ( call ci\appveyor-install.bat )
|
|
|
|
- ps: |
|
|
|
|
If($Env:compiler -like 'msvc*') {
|
|
|
|
DownloadFile -Source "https://download.microsoft.com/download/D/B/B/DBB64BA1-7B51-43DB-8BF1-D1FB45EACF7A/msmpisdk.msi" `
|
|
|
|
-Destination "C:\projects\msmpisdk.msi"
|
|
|
|
c:\windows\system32\msiexec.exe /i C:\projects\msmpisdk.msi /quiet
|
|
|
|
DownloadFile -Source "https://download.microsoft.com/download/D/B/B/DBB64BA1-7B51-43DB-8BF1-D1FB45EACF7A/MSMpiSetup.exe" `
|
|
|
|
-Destination "C:\projects\MSMpiSetup.exe"
|
|
|
|
c:\projects\MSMpiSetup.exe -unattend -full
|
|
|
|
}
|
|
|
|
|
|
|
|
build_script:
|
|
|
|
- cmd: echo No build step.
|
|
|
|
- cmd: if %backend%==ninja ( %WRAPPER% ninja.exe --version ) else ( MSBuild /version & echo. )
|
|
|
|
|
|
|
|
test_script:
|
|
|
|
- cmd: echo Running tests for %arch% and %compiler% with the %backend% backend
|
|
|
|
- cmd: "%WRAPPER% %PYTHON% run_tests.py --backend=%backend%"
|
|
|
|
|
|
|
|
on_finish:
|
|
|
|
- set "PATH=%ORIG_PATH%"
|
|
|
|
- appveyor PushArtifact meson-test-run.txt -DeploymentName "Text test logs"
|
|
|
|
- appveyor PushArtifact meson-test-run.xml -DeploymentName "XML test logs"
|
|
|
|
|
|
|
|
cache:
|
|
|
|
- C:\cache
|