aboutsummaryrefslogtreecommitdiff
path: root/.appveyor.yml
blob: 78f9f3313a37c818d505c1b316b6d41762c59a2b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
version: '{build}'

os: Visual Studio 2015

environment:
  matrix:
    - arch: x86
      compiler: msys2-mingw
      backend: ninja

    - arch: x64
      compiler: msys2-mingw
      backend: ninja

    - arch: x64
      compiler: cygwin
      backend: ninja

    - 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: x64
      compiler: msvc2017
      backend: ninja
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
      BOOST_ROOT: C:\Libraries\Boost_1_64_0

    - arch: x64
      compiler: msvc2017
      backend: vs2017
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
      BOOST_ROOT: C:\Libraries\Boost_1_64_0

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