]> git.lizzy.rs Git - rust.git/blob - appveyor.yml
pacify tidy
[rust.git] / appveyor.yml
1 environment:
2   SCCACHE_BUCKET: rust-lang-ci-sccache
3   AWS_ACCESS_KEY_ID: AKIAIMX7VLAS3PZAVLUQ
4   AWS_SECRET_ACCESS_KEY:
5     secure: 1UkmbiDd15tWtYbMm5O2Uqm0b0Ur8v1MoSlydxl4ojcroPeerRMlUges0l57py8c
6   SCCACHE_DIGEST: f808afabb4a4eb1d7112bcb3fa6be03b61e93412890c88e177c667eb37f46353d7ec294e559b16f9f4b5e894f2185fe7670a0df15fd064889ecbd80f0c34166c
7   matrix:
8   # 32/64 bit MSVC
9   - MSYS_BITS: 64
10     RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --enable-extended
11     SCRIPT: python x.py test && python x.py dist
12     DEPLOY: 1
13   - MSYS_BITS: 32
14     RUST_CONFIGURE_ARGS: --build=i686-pc-windows-msvc --target=i586-pc-windows-msvc --enable-extended
15     SCRIPT: python x.py test --host i686-pc-windows-msvc --target i686-pc-windows-msvc && python x.py dist
16     DEPLOY: 1
17
18   # MSVC cargotest
19   - MSYS_BITS: 64
20     NO_VENDOR: 1
21     RUST_CHECK_TARGET: check-aux
22     RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc
23
24   # 32/64-bit MinGW builds.
25   #
26   # The MinGW builds unfortunately have to both download a custom toolchain and
27   # avoid the one installed by AppVeyor by default. Interestingly, though, for
28   # different reasons!
29   #
30   # For 32-bit the installed gcc toolchain on AppVeyor uses the pthread
31   # threading model. This is unfortunately not what we want, and if we compile
32   # with it then there's lots of link errors in the standard library (undefined
33   # references to pthread symbols).
34   #
35   # For 64-bit the installed gcc toolchain is currently 5.3.0 which
36   # unfortunately segfaults on Windows with --enable-llvm-assertions (segfaults
37   # in LLVM). See rust-lang/rust#28445 for more information, but to work around
38   # this we go back in time to 4.9.2 specifically.
39   #
40   # Finally, note that the downloads below are all in the `rust-lang-ci` S3
41   # bucket, but they cleraly didn't originate there! The downloads originally
42   # came from the mingw-w64 SourceForge download site. Unfortunately
43   # SourceForge is notoriously flaky, so we mirror it on our own infrastructure.
44   #
45   # And as a final point of note, the 32-bit MinGW build using the makefiles do
46   # *not* use debug assertions and llvm assertions. This is because they take
47   # too long on appveyor and this is tested by rustbuild below.
48   - MSYS_BITS: 32
49     RUST_CONFIGURE_ARGS: --build=i686-pc-windows-gnu --enable-extended
50     SCRIPT: python x.py test && python x.py dist
51     MINGW_URL: https://s3.amazonaws.com/rust-lang-ci
52     MINGW_ARCHIVE: i686-4.9.2-release-win32-dwarf-rt_v4-rev4.7z
53     MINGW_DIR: mingw32
54     DEPLOY: 1
55
56   - MSYS_BITS: 64
57     SCRIPT: python x.py test && python x.py dist
58     RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-gnu --enable-extended
59     MINGW_URL: https://s3.amazonaws.com/rust-lang-ci
60     MINGW_ARCHIVE: x86_64-4.9.2-release-win32-seh-rt_v4-rev4.7z
61     MINGW_DIR: mingw64
62     DEPLOY: 1
63
64 matrix:
65   fast_finish: true
66
67 clone_depth: 1
68 build: false
69
70 install:
71   # If we need to download a custom MinGW, do so here and set the path
72   # appropriately.
73   #
74   # Note that this *also* means that we're not using what is typically
75   # /mingw32/bin/python2.7.exe, which is a "correct" python interpreter where
76   # /usr/bin/python2.7.exe is not. To ensure we use the right interpreter we
77   # move `C:\Python27` ahead in PATH and then also make sure the `python2.7.exe`
78   # file exists in there (which it doesn't by default).
79   - if defined MINGW_URL appveyor DownloadFile %MINGW_URL%/%MINGW_ARCHIVE%
80   - if defined MINGW_URL 7z x -y %MINGW_ARCHIVE% > nul
81   - if defined MINGW_URL set PATH=C:\Python27;%CD%\%MINGW_DIR%\bin;C:\msys64\usr\bin;%PATH%
82   - if defined MINGW_URL copy C:\Python27\python.exe C:\Python27\python2.7.exe
83
84   # Otherwise pull in the MinGW installed on appveyor
85   - if NOT defined MINGW_URL set PATH=C:\msys64\mingw%MSYS_BITS%\bin;C:\msys64\usr\bin;%PATH%
86
87   # Download and install sccache
88   - appveyor DownloadFile https://api.pub.build.mozilla.org/tooltool/sha512/%SCCACHE_DIGEST%
89   - mv %SCCACHE_DIGEST% sccache.tar.bz2
90   - 7z x -y sccache.tar.bz2 > nul
91   - 7z x -y sccache.tar > nul
92   - set PATH=%PATH%;%CD%\sccache2
93
94   # Install InnoSetup to get `iscc` used to produce installers
95   - choco install -y InnoSetup
96   - set PATH="C:\Program Files (x86)\Inno Setup 5";%PATH%
97
98   # Help debug some handle issues on AppVeyor
99   - ps: Invoke-WebRequest -Uri https://download.sysinternals.com/files/Handle.zip -OutFile handle.zip
100   - mkdir handle
101   - ps: Expand-Archive handle.zip -dest handle
102   - set PATH=%PATH%;%CD%\handle
103   - handle.exe -accepteula -help
104
105 test_script:
106   - git submodule update --init
107   - set SRC=.
108   - set NO_CCACHE=1
109   - sh src/ci/run.sh
110
111 cache:
112   - "build/i686-pc-windows-gnu/llvm -> src/rustllvm/llvm-auto-clean-trigger"
113   - "build/x86_64-pc-windows-gnu/llvm -> src/rustllvm/llvm-auto-clean-trigger"
114   - "build/i686-pc-windows-msvc/llvm -> src/rustllvm/llvm-auto-clean-trigger"
115   - "build/x86_64-pc-windows-msvc/llvm -> src/rustllvm/llvm-auto-clean-trigger"
116   - "i686-pc-windows-gnu/llvm -> src/rustllvm/llvm-auto-clean-trigger"
117   - "x86_64-pc-windows-gnu/llvm -> src/rustllvm/llvm-auto-clean-trigger"
118   - "i686-pc-windows-msvc/llvm -> src/rustllvm/llvm-auto-clean-trigger"
119   - "x86_64-pc-windows-msvc/llvm -> src/rustllvm/llvm-auto-clean-trigger"
120
121 branches:
122   only:
123     - auto
124
125 before_deploy:
126   - ps: |
127         New-Item -Path deploy -ItemType directory
128         Remove-Item -Recurse -Force build\dist\doc
129         Get-ChildItem -Path build\dist | Move-Item -Destination deploy
130         Get-ChildItem -Path deploy | Foreach-Object {
131           Push-AppveyorArtifact $_.FullName -FileName ${env:APPVEYOR_REPO_COMMIT}/$_
132         }
133
134 deploy:
135   - provider: S3
136     skip_cleanup: true
137     access_key_id: AKIAIPQVNYF2T3DTYIWQ
138     secret_access_key:
139       secure: +11jsUNFTQ9dq5Ad1i2+PeUJaXluFJ0zIJAXESE1dFT3Kdjku4/eDdgyjgsB6GnV
140     bucket: rust-lang-ci
141     set_public: true
142     region: us-east-1
143     artifact: /.*/
144     folder: rustc-builds
145     on:
146       branch: auto
147       DEPLOY: 1
148
149 # init:
150 #   - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
151 # on_finish:
152 #   - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))