environment:

  # By default schannel checks revocation of certificates unlike some other SSL
  # backends, but we've historically had problems on CI where a revocation
  # server goes down presumably. See #43333 for more info
  CARGO_HTTP_CHECK_REVOKE: false

  # Recommended by AppVeyor this moves our builds to GCE which incurs a 3-4
  # minute startup overhead, but that's paltry compared to our overall build
  # times so we're will to eat the cost. This is intended to give us better
  # performance I believe!
  appveyor_build_worker_cloud: gce

  matrix:
  # 32/64 bit MSVC tests
  - MSYS_BITS: 64
    RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --enable-profiler
    SCRIPT: python x.py test
    CI_JOB_NAME: x86_64-msvc
  - MSYS_BITS: 32
    RUST_CONFIGURE_ARGS: --build=i686-pc-windows-msvc
    SCRIPT: make appveyor-subset-1
    CI_JOB_NAME: i686-msvc-1
  - MSYS_BITS: 32
    RUST_CONFIGURE_ARGS: --build=i686-pc-windows-msvc
    SCRIPT: make appveyor-subset-2
    CI_JOB_NAME: i686-msvc-2

  # MSVC aux tests
  - MSYS_BITS: 64
    RUST_CHECK_TARGET: check-aux EXCLUDE_CARGO=1
    RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc
    CI_JOB_NAME: x86_64-msvc-aux
  - MSYS_BITS: 64
    SCRIPT: python x.py test src/tools/cargotest src/tools/cargo
    RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc
    CI_JOB_NAME: x86_64-msvc-cargo

  # MSVC tools tests
  - MSYS_BITS: 64
    SCRIPT: src/ci/docker/x86_64-gnu-tools/checktools.sh x.py /tmp/toolstates.json windows
    RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --save-toolstates=/tmp/toolstates.json --enable-test-miri
    CI_JOB_NAME: x86_64-msvc-tools

  # 32/64-bit MinGW builds.
  #
  # We are using MinGW with posix threads since LLVM does not compile with
  # the win32 threads version due to missing support for C++'s std::thread.
  #
  # Instead of relying on the MinGW version installed on appveryor we download
  # and install one ourselves so we won't be surprised by changes to appveyor's
  # build image.
  #
  # Finally, note that the downloads below are all in the `rust-lang-ci` S3
  # bucket, but they cleraly didn't originate there! The downloads originally
  # came from the mingw-w64 SourceForge download site. Unfortunately
  # SourceForge is notoriously flaky, so we mirror it on our own infrastructure.
  - MSYS_BITS: 32
    RUST_CONFIGURE_ARGS: --build=i686-pc-windows-gnu
    SCRIPT: make appveyor-subset-1
    MINGW_URL: https://s3-us-west-1.amazonaws.com/rust-lang-ci2/rust-ci-mirror
    MINGW_ARCHIVE: i686-6.3.0-release-posix-dwarf-rt_v5-rev2.7z
    MINGW_DIR: mingw32
    CI_JOB_NAME: i686-mingw-1
  - MSYS_BITS: 32
    RUST_CONFIGURE_ARGS: --build=i686-pc-windows-gnu
    SCRIPT: make appveyor-subset-2
    MINGW_URL: https://s3-us-west-1.amazonaws.com/rust-lang-ci2/rust-ci-mirror
    MINGW_ARCHIVE: i686-6.3.0-release-posix-dwarf-rt_v5-rev2.7z
    MINGW_DIR: mingw32
    CI_JOB_NAME: i686-mingw-2
  - MSYS_BITS: 64
    SCRIPT: python x.py test
    RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-gnu
    MINGW_URL: https://s3-us-west-1.amazonaws.com/rust-lang-ci2/rust-ci-mirror
    MINGW_ARCHIVE: x86_64-6.3.0-release-posix-seh-rt_v5-rev2.7z
    MINGW_DIR: mingw64
    CI_JOB_NAME: x86_64-mingw

  # 32/64 bit MSVC and GNU deployment
  - RUST_CONFIGURE_ARGS: >
      --build=x86_64-pc-windows-msvc
      --target=x86_64-pc-windows-msvc,aarch64-pc-windows-msvc
      --enable-full-tools
      --enable-profiler
    SCRIPT: python x.py dist
    DIST_REQUIRE_ALL_TOOLS: 1
    DEPLOY: 1
    CI_JOB_NAME: dist-x86_64-msvc
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 Preview
  - RUST_CONFIGURE_ARGS: >
      --build=i686-pc-windows-msvc
      --target=i586-pc-windows-msvc
      --enable-full-tools
      --enable-profiler
    SCRIPT: python x.py dist
    DIST_REQUIRE_ALL_TOOLS: 1
    DEPLOY: 1
    CI_JOB_NAME: dist-i686-msvc
  - MSYS_BITS: 32
    RUST_CONFIGURE_ARGS: --build=i686-pc-windows-gnu --enable-full-tools
    SCRIPT: python x.py dist
    MINGW_URL: https://s3-us-west-1.amazonaws.com/rust-lang-ci2/rust-ci-mirror
    MINGW_ARCHIVE: i686-6.3.0-release-posix-dwarf-rt_v5-rev2.7z
    MINGW_DIR: mingw32
    DIST_REQUIRE_ALL_TOOLS: 1
    DEPLOY: 1
    CI_JOB_NAME: dist-i686-mingw
  - MSYS_BITS: 64
    SCRIPT: python x.py dist
    RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-gnu --enable-full-tools
    MINGW_URL: https://s3-us-west-1.amazonaws.com/rust-lang-ci2/rust-ci-mirror
    MINGW_ARCHIVE: x86_64-6.3.0-release-posix-seh-rt_v5-rev2.7z
    MINGW_DIR: mingw64
    DIST_REQUIRE_ALL_TOOLS: 1
    DEPLOY: 1
    CI_JOB_NAME: dist-x86_64-mingw

  # "alternate" deployment, see .travis.yml for more info
  - MSYS_BITS: 64
    RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --enable-extended --enable-profiler
    SCRIPT: python x.py dist
    DEPLOY_ALT: 1
    CI_JOB_NAME: dist-x86_64-msvc-alt

matrix:
  fast_finish: true

clone_depth: 2
build: false

install:
  # If we need to download a custom MinGW, do so here and set the path
  # appropriately.
  #
  # Note that this *also* means that we're not using what is typically
  # /mingw32/bin/python2.7.exe, which is a "correct" python interpreter where
  # /usr/bin/python2.7.exe is not. To ensure we use the right interpreter we
  # move `C:\Python27` ahead in PATH and then also make sure the `python2.7.exe`
  # file exists in there (which it doesn't by default).
  - if defined MINGW_URL appveyor-retry appveyor DownloadFile %MINGW_URL%/%MINGW_ARCHIVE%
  - if defined MINGW_URL 7z x -y %MINGW_ARCHIVE% > nul
  - if defined MINGW_URL set PATH=%CD%\%MINGW_DIR%\bin;C:\msys64\usr\bin;%PATH%

  # If we're compiling for MSVC then we, like most other distribution builders,
  # switch to clang as the compiler. This'll allow us eventually to enable LTO
  # amongst LLVM and rustc. Note that we only do this on MSVC as I don't think
  # clang has an output mode compatible with MinGW that we need. If it does we
  # should switch to clang for MinGW as well!
  #
  # Note that the LLVM installer is an NSIS installer
  #
  # Original downloaded here came from
  # http://releases.llvm.org/7.0.0/LLVM-7.0.0-win64.exe
  - if NOT defined MINGW_URL appveyor-retry appveyor DownloadFile https://s3-us-west-1.amazonaws.com/rust-lang-ci2/rust-ci-mirror/LLVM-7.0.0-win64.exe
  - if NOT defined MINGW_URL .\LLVM-7.0.0-win64.exe /S /NCRC /D=C:\clang-rust
  - if NOT defined MINGW_URL set RUST_CONFIGURE_ARGS=%RUST_CONFIGURE_ARGS% --set llvm.clang-cl=C:\clang-rust\bin\clang-cl.exe

  # Here we do a pretty heinous thing which is to mangle the MinGW installation
  # we just had above. Currently, as of this writing, we're using MinGW-w64
  # builds of gcc, and that's currently at 6.3.0. We use 6.3.0 as it appears to
  # be the first version which contains a fix for #40546, builds randomly
  # failing during LLVM due to ar.exe/ranlib.exe failures.
  #
  # Unfortunately, though, 6.3.0 *also* is the first version of MinGW-w64 builds
  # to contain a regression in gdb (#40184). As a result if we were to use the
  # gdb provided (7.11.1) then we would fail all debuginfo tests.
  #
  # In order to fix spurious failures (pretty high priority) we use 6.3.0. To
  # avoid disabling gdb tests we download an *old* version of gdb, specifically
  # that found inside the 6.2.0 distribution. We then overwrite the 6.3.0 gdb
  # with the 6.2.0 gdb to get tests passing.
  #
  # Note that we don't literally overwrite the gdb.exe binary because it appears
  # to just use gdborig.exe, so that's the binary we deal with instead.
  - if defined MINGW_URL appveyor-retry appveyor DownloadFile %MINGW_URL%/2017-04-20-%MSYS_BITS%bit-gdborig.exe
  - if defined MINGW_URL mv 2017-04-20-%MSYS_BITS%bit-gdborig.exe %MINGW_DIR%\bin\gdborig.exe

  # Otherwise pull in the MinGW installed on appveyor
  - if NOT defined MINGW_URL set PATH=C:\msys64\mingw%MSYS_BITS%\bin;C:\msys64\usr\bin;%PATH%

  # Prefer the "native" Python as LLVM has trouble building with MSYS sometimes
  - copy C:\Python27\python.exe C:\Python27\python2.7.exe
  - set PATH=C:\Python27;%PATH%

  # Download and install sccache
  - appveyor-retry appveyor DownloadFile https://s3-us-west-1.amazonaws.com/rust-lang-ci2/rust-ci-mirror/2018-04-26-sccache-x86_64-pc-windows-msvc
  - mv 2018-04-26-sccache-x86_64-pc-windows-msvc sccache.exe
  - set PATH=%PATH%;%CD%

  # Download and install ninja
  #
  # Note that this is originally from the github releases patch of Ninja
  - appveyor-retry appveyor DownloadFile https://s3-us-west-1.amazonaws.com/rust-lang-ci2/rust-ci-mirror/2017-03-15-ninja-win.zip
  - 7z x 2017-03-15-ninja-win.zip
  - set RUST_CONFIGURE_ARGS=%RUST_CONFIGURE_ARGS% --enable-ninja
  # - set PATH=%PATH%;%CD% -- this already happens above for sccache

  # Install InnoSetup to get `iscc` used to produce installers
  - appveyor-retry appveyor DownloadFile https://s3-us-west-1.amazonaws.com/rust-lang-ci2/rust-ci-mirror/2017-08-22-is.exe
  - 2017-08-22-is.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-
  - set PATH="C:\Program Files (x86)\Inno Setup 5";%PATH%

  # Help debug some handle issues on AppVeyor
  - appveyor-retry appveyor DownloadFile https://s3-us-west-1.amazonaws.com/rust-lang-ci2/rust-ci-mirror/2017-05-15-Handle.zip
  - mkdir handle
  - 7z x -ohandle 2017-05-15-Handle.zip
  - set PATH=%PATH%;%CD%\handle
  - handle.exe -accepteula -help

test_script:
  - if not exist C:\cache\rustsrc\NUL mkdir C:\cache\rustsrc
  - sh src/ci/init_repo.sh . /c/cache/rustsrc
  - set SRC=.
  - set NO_CCACHE=1
  - sh src/ci/run.sh

on_failure:
  # Dump crash log
  - set PATH=%PATH%;"C:\Program Files (x86)\Windows Kits\10\Debuggers\X64"
  - if exist %LOCALAPPDATA%\CrashDumps for %%f in (%LOCALAPPDATA%\CrashDumps\*) do cdb -c "k;q" -G -z "%%f"

branches:
  only:
    - auto

before_deploy:
  - ps: |
        New-Item -Path deploy -ItemType directory
        Remove-Item -Recurse -Force build\dist\doc
        Get-ChildItem -Path build\dist | Move-Item -Destination deploy
        Get-ChildItem -Path deploy | Foreach-Object {
          Push-AppveyorArtifact $_.FullName -FileName ${env:APPVEYOR_REPO_COMMIT}/$_
        }

deploy:
  - provider: S3
    access_key_id: $(AWS_ACCESS_KEY_ID)
    secret_access_key: $(AWS_SECRET_ACCESS_KEY)
    bucket: rust-lang-ci2
    set_public: true
    region: us-west-1
    artifact: /.*/
    folder: rustc-builds
    on:
      branch: auto
      DEPLOY: 1
    max_error_retry: 5

  # This provider is the same as the one above except that it has a slightly
  # different upload directory and a slightly different trigger
  - provider: S3
    access_key_id: $(AWS_ACCESS_KEY_ID)
    secret_access_key: $(AWS_SECRET_ACCESS_KEY)
    bucket: rust-lang-ci2
    set_public: true
    region: us-west-1
    artifact: /.*/
    folder: rustc-builds-alt
    on:
      branch: auto
      DEPLOY_ALT: 1
    max_error_retry: 5

# init:
#   - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
# on_finish:
#   - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
