mirror of
https://github.com/rust-lang/rust.git
synced 2026-03-19 11:59:31 +00:00
Improvements to building and CI for mingw/msys I was getting error messages when trying to follow the build instructions the mingw build for Rust, and managed to track the issue down to an incomparability of Rust's bootstrap program with MSYS2's version of git. Essentially, the problem is that MSYS2's git works in emulated unix-y paths, but bootstrap expects a Windows path. I found a workaround for this by using relative paths instead of absolute paths. Along with that fix, this PR also updates the build instructions for MinGW to be compatible with modern versions of MSYS2, and some changes to CI to make sure that MSYS2's version of git is tested. In particular, I'm suggesting using the [MSYS2 github action](https://github.com/marketplace/actions/setup-msys2) specially made for this purpose, which is much less hacky than the old approach and gives us more control of what packages are installed. I also cleaned up as many alternate versions of key tools as I could find from PATH, to avoid accidental usage, and cleaned up some abuses of the `CUSTOM_MINGW` environment variable. This fixes https://github.com/rust-lang/rust/issues/105696 and fixes https://github.com/rust-lang/rust/issues/117567
793 lines
32 KiB
YAML
793 lines
32 KiB
YAML
#############################################################
|
|
# WARNING: automatically generated file, DO NOT CHANGE! #
|
|
#############################################################
|
|
|
|
# This file was automatically generated by the expand-yaml-anchors tool. The
|
|
# source file that generated this one is:
|
|
#
|
|
# src/ci/github-actions/ci.yml
|
|
#
|
|
# Once you make changes to that file you need to run:
|
|
#
|
|
# ./x.py run src/tools/expand-yaml-anchors/
|
|
#
|
|
# The CI build will fail if the tool is not run after changes to this file.
|
|
|
|
---
|
|
name: CI
|
|
"on":
|
|
push:
|
|
branches:
|
|
- auto
|
|
- try
|
|
- try-perf
|
|
- automation/bors/try
|
|
- master
|
|
pull_request:
|
|
branches:
|
|
- "**"
|
|
permissions:
|
|
contents: read
|
|
packages: write
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
concurrency:
|
|
group: "${{ github.workflow }}-${{ ((github.ref == 'refs/heads/try' || github.ref == 'refs/heads/try-perf') && github.sha) || github.ref }}"
|
|
cancel-in-progress: true
|
|
jobs:
|
|
pr:
|
|
name: "PR - ${{ matrix.name }}"
|
|
env:
|
|
PR_CI_JOB: 1
|
|
CI_JOB_NAME: "${{ matrix.name }}"
|
|
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
|
|
HEAD_SHA: "${{ github.event.pull_request.head.sha || github.sha }}"
|
|
DOCKER_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
|
SCCACHE_BUCKET: rust-lang-ci-sccache2
|
|
TOOLSTATE_REPO: "https://github.com/rust-lang-nursery/rust-toolstate"
|
|
CACHE_DOMAIN: ci-caches.rust-lang.org
|
|
if: "github.event_name == 'pull_request'"
|
|
continue-on-error: "${{ matrix.name == 'mingw-check-tidy' }}"
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- name: mingw-check
|
|
os: ubuntu-20.04-4core-16gb
|
|
env: {}
|
|
- name: mingw-check-tidy
|
|
os: ubuntu-20.04-4core-16gb
|
|
env: {}
|
|
- name: x86_64-gnu-llvm-16
|
|
env:
|
|
ENABLE_GCC_CODEGEN: "1"
|
|
os: ubuntu-20.04-16core-64gb
|
|
- name: x86_64-gnu-tools
|
|
os: ubuntu-20.04-16core-64gb
|
|
env: {}
|
|
defaults:
|
|
run:
|
|
shell: "${{ contains(matrix.os, 'windows') && 'msys2 {0}' || 'bash' }}"
|
|
timeout-minutes: 600
|
|
runs-on: "${{ matrix.os }}"
|
|
steps:
|
|
- if: "contains(matrix.os, 'windows')"
|
|
uses: msys2/setup-msys2@v2.22.0
|
|
with:
|
|
msystem: "${{ contains(matrix.name, 'i686') && 'mingw32' || 'mingw64' }}"
|
|
update: false
|
|
release: true
|
|
path-type: inherit
|
|
install: "make dos2unix diffutils\n"
|
|
- name: disable git crlf conversion
|
|
run: git config --global core.autocrlf false
|
|
- name: checkout the source code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 2
|
|
- name: configure the PR in which the error message will be posted
|
|
run: "echo \"[CI_PR_NUMBER=$num]\""
|
|
env:
|
|
num: "${{ github.event.number }}"
|
|
if: "success() && !env.SKIP_JOB && github.event_name == 'pull_request'"
|
|
- name: add extra environment variables
|
|
run: src/ci/scripts/setup-environment.sh
|
|
env:
|
|
EXTRA_VARIABLES: "${{ toJson(matrix.env) }}"
|
|
if: success() && !env.SKIP_JOB
|
|
- name: decide whether to skip this job
|
|
run: src/ci/scripts/should-skip-this.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: ensure the channel matches the target branch
|
|
run: src/ci/scripts/verify-channel.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: collect CPU statistics
|
|
run: src/ci/scripts/collect-cpu-stats.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: show the current environment
|
|
run: src/ci/scripts/dump-environment.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install awscli
|
|
run: src/ci/scripts/install-awscli.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install sccache
|
|
run: src/ci/scripts/install-sccache.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: select Xcode
|
|
run: src/ci/scripts/select-xcode.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install clang
|
|
run: src/ci/scripts/install-clang.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install tidy
|
|
run: src/ci/scripts/install-tidy.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install WIX
|
|
run: src/ci/scripts/install-wix.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: disable git crlf conversion
|
|
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: checkout submodules
|
|
run: src/ci/scripts/checkout-submodules.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install MSYS2
|
|
run: src/ci/scripts/install-msys2.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install MinGW
|
|
run: src/ci/scripts/install-mingw.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install ninja
|
|
run: src/ci/scripts/install-ninja.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: enable ipv6 on Docker
|
|
run: src/ci/scripts/enable-docker-ipv6.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: disable git crlf conversion
|
|
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: ensure line endings are correct
|
|
run: src/ci/scripts/verify-line-endings.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: ensure backported commits are in upstream branches
|
|
run: src/ci/scripts/verify-backported-commits.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: ensure the stable version number is correct
|
|
run: src/ci/scripts/verify-stable-version-number.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: run the build
|
|
run: src/ci/scripts/run-build-from-ci.sh
|
|
env:
|
|
AWS_ACCESS_KEY_ID: "${{ env.CACHES_AWS_ACCESS_KEY_ID }}"
|
|
AWS_SECRET_ACCESS_KEY: "${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.CACHES_AWS_ACCESS_KEY_ID)] }}"
|
|
TOOLSTATE_REPO_ACCESS_TOKEN: "${{ secrets.TOOLSTATE_REPO_ACCESS_TOKEN }}"
|
|
if: success() && !env.SKIP_JOB
|
|
- name: create github artifacts
|
|
run: src/ci/scripts/create-doc-artifacts.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: upload artifacts to github
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: "${{ env.DOC_ARTIFACT_NAME }}"
|
|
path: obj/artifacts/doc
|
|
if-no-files-found: ignore
|
|
retention-days: 5
|
|
if: success() && !env.SKIP_JOB
|
|
- name: upload artifacts to S3
|
|
run: src/ci/scripts/upload-artifacts.sh
|
|
env:
|
|
AWS_ACCESS_KEY_ID: "${{ env.ARTIFACTS_AWS_ACCESS_KEY_ID }}"
|
|
AWS_SECRET_ACCESS_KEY: "${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.ARTIFACTS_AWS_ACCESS_KEY_ID)] }}"
|
|
if: "success() && !env.SKIP_JOB && (github.event_name == 'push' || env.DEPLOY == '1' || env.DEPLOY_ALT == '1')"
|
|
auto:
|
|
name: "auto - ${{ matrix.name }}"
|
|
env:
|
|
CI_JOB_NAME: "${{ matrix.name }}"
|
|
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
|
|
HEAD_SHA: "${{ github.event.pull_request.head.sha || github.sha }}"
|
|
DOCKER_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
|
SCCACHE_BUCKET: rust-lang-ci-sccache2
|
|
DEPLOY_BUCKET: rust-lang-ci2
|
|
TOOLSTATE_REPO: "https://github.com/rust-lang-nursery/rust-toolstate"
|
|
TOOLSTATE_ISSUES_API_URL: "https://api.github.com/repos/rust-lang/rust/issues"
|
|
TOOLSTATE_PUBLISH: 1
|
|
CACHES_AWS_ACCESS_KEY_ID: AKIA46X5W6CZI5DHEBFL
|
|
ARTIFACTS_AWS_ACCESS_KEY_ID: AKIA46X5W6CZN24CBO55
|
|
AWS_REGION: us-west-1
|
|
CACHE_DOMAIN: ci-caches.rust-lang.org
|
|
if: "github.event_name == 'push' && github.ref == 'refs/heads/auto' && github.repository == 'rust-lang-ci/rust'"
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- name: aarch64-gnu
|
|
os:
|
|
- self-hosted
|
|
- ARM64
|
|
- linux
|
|
- name: arm-android
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: armhf-gnu
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-aarch64-linux
|
|
env:
|
|
CODEGEN_BACKENDS: "llvm,cranelift"
|
|
os: ubuntu-20.04-8core-32gb
|
|
- name: dist-android
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-arm-linux
|
|
os: ubuntu-20.04-16core-64gb
|
|
env: {}
|
|
- name: dist-armhf-linux
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-armv7-linux
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-i586-gnu-i586-i686-musl
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-i686-linux
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-loongarch64-linux
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-powerpc-linux
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-powerpc64-linux
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-powerpc64le-linux
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-riscv64-linux
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-s390x-linux
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-various-1
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-various-2
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-x86_64-freebsd
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-x86_64-illumos
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: dist-x86_64-linux
|
|
env:
|
|
CODEGEN_BACKENDS: "llvm,cranelift"
|
|
os: ubuntu-20.04-16core-64gb
|
|
- name: dist-x86_64-linux-alt
|
|
env:
|
|
IMAGE: dist-x86_64-linux
|
|
CODEGEN_BACKENDS: "llvm,cranelift"
|
|
os: ubuntu-20.04-16core-64gb
|
|
- name: dist-x86_64-musl
|
|
env:
|
|
CODEGEN_BACKENDS: "llvm,cranelift"
|
|
os: ubuntu-20.04-8core-32gb
|
|
- name: dist-x86_64-netbsd
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: i686-gnu
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: i686-gnu-nopt
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: mingw-check
|
|
os: ubuntu-20.04-4core-16gb
|
|
env: {}
|
|
- name: test-various
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: x86_64-gnu
|
|
os: ubuntu-20.04-4core-16gb
|
|
env: {}
|
|
- name: x86_64-gnu-stable
|
|
env:
|
|
IMAGE: x86_64-gnu
|
|
RUST_CI_OVERRIDE_RELEASE_CHANNEL: stable
|
|
CI_ONLY_WHEN_CHANNEL: nightly
|
|
os: ubuntu-20.04-4core-16gb
|
|
- name: x86_64-gnu-aux
|
|
os: ubuntu-20.04-4core-16gb
|
|
env: {}
|
|
- name: x86_64-gnu-integration
|
|
env:
|
|
CI_ONLY_WHEN_CHANNEL: nightly
|
|
os: ubuntu-20.04-8core-32gb
|
|
- name: x86_64-gnu-debug
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: x86_64-gnu-distcheck
|
|
os: ubuntu-20.04-8core-32gb
|
|
env: {}
|
|
- name: x86_64-gnu-llvm-17
|
|
env:
|
|
RUST_BACKTRACE: 1
|
|
os: ubuntu-20.04-8core-32gb
|
|
- name: x86_64-gnu-llvm-16
|
|
env:
|
|
RUST_BACKTRACE: 1
|
|
os: ubuntu-20.04-8core-32gb
|
|
- name: x86_64-gnu-nopt
|
|
os: ubuntu-20.04-4core-16gb
|
|
env: {}
|
|
- name: x86_64-gnu-tools
|
|
env:
|
|
DEPLOY_TOOLSTATES_JSON: toolstates-linux.json
|
|
os: ubuntu-20.04-8core-32gb
|
|
- name: dist-x86_64-apple
|
|
env:
|
|
SCRIPT: "./x.py dist bootstrap --include-default-paths --host=x86_64-apple-darwin --target=x86_64-apple-darwin"
|
|
RUST_CONFIGURE_ARGS: "--enable-full-tools --enable-sanitizers --enable-profiler --set rust.jemalloc --set rust.lto=thin"
|
|
RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
|
|
MACOSX_DEPLOYMENT_TARGET: 10.12
|
|
SELECT_XCODE: /Applications/Xcode_14.3.1.app
|
|
NO_LLVM_ASSERTIONS: 1
|
|
NO_DEBUG_ASSERTIONS: 1
|
|
NO_OVERFLOW_CHECKS: 1
|
|
DIST_REQUIRE_ALL_TOOLS: 1
|
|
CODEGEN_BACKENDS: "llvm,cranelift"
|
|
os: macos-13
|
|
- name: dist-apple-various
|
|
env:
|
|
SCRIPT: "./x.py dist bootstrap --include-default-paths --host='' --target=aarch64-apple-ios,x86_64-apple-ios,aarch64-apple-ios-sim"
|
|
RUST_CONFIGURE_ARGS: "--enable-sanitizers --enable-profiler --set rust.jemalloc"
|
|
RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
|
|
MACOSX_DEPLOYMENT_TARGET: 10.12
|
|
SELECT_XCODE: /Applications/Xcode_14.3.1.app
|
|
NO_LLVM_ASSERTIONS: 1
|
|
NO_DEBUG_ASSERTIONS: 1
|
|
NO_OVERFLOW_CHECKS: 1
|
|
os: macos-13
|
|
- name: x86_64-apple-1
|
|
env:
|
|
SCRIPT: "./x.py --stage 2 test --skip tests/ui --skip tests/rustdoc --skip tests/run-make-fulldeps"
|
|
RUST_CONFIGURE_ARGS: "--build=x86_64-apple-darwin --enable-sanitizers --enable-profiler --set rust.jemalloc"
|
|
RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
|
|
MACOSX_DEPLOYMENT_TARGET: 10.12
|
|
MACOSX_STD_DEPLOYMENT_TARGET: 10.12
|
|
SELECT_XCODE: /Applications/Xcode_14.3.1.app
|
|
NO_LLVM_ASSERTIONS: 1
|
|
NO_DEBUG_ASSERTIONS: 1
|
|
NO_OVERFLOW_CHECKS: 1
|
|
os: macos-13
|
|
- name: x86_64-apple-2
|
|
env:
|
|
SCRIPT: "./x.py --stage 2 test tests/ui tests/rustdoc tests/run-make-fulldeps"
|
|
RUST_CONFIGURE_ARGS: "--build=x86_64-apple-darwin --enable-sanitizers --enable-profiler --set rust.jemalloc"
|
|
RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
|
|
MACOSX_DEPLOYMENT_TARGET: 10.12
|
|
MACOSX_STD_DEPLOYMENT_TARGET: 10.12
|
|
SELECT_XCODE: /Applications/Xcode_14.3.1.app
|
|
NO_LLVM_ASSERTIONS: 1
|
|
NO_DEBUG_ASSERTIONS: 1
|
|
NO_OVERFLOW_CHECKS: 1
|
|
os: macos-13
|
|
- name: dist-aarch64-apple
|
|
env:
|
|
SCRIPT: "./x.py dist bootstrap --include-default-paths --host=aarch64-apple-darwin --target=aarch64-apple-darwin"
|
|
RUST_CONFIGURE_ARGS: "--enable-full-tools --enable-sanitizers --enable-profiler --set rust.jemalloc --set llvm.ninja=false --set rust.lto=thin"
|
|
RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
|
|
SELECT_XCODE: /Applications/Xcode_14.3.1.app
|
|
USE_XCODE_CLANG: 1
|
|
MACOSX_DEPLOYMENT_TARGET: 11.0
|
|
MACOSX_STD_DEPLOYMENT_TARGET: 11.0
|
|
NO_LLVM_ASSERTIONS: 1
|
|
NO_DEBUG_ASSERTIONS: 1
|
|
NO_OVERFLOW_CHECKS: 1
|
|
DIST_REQUIRE_ALL_TOOLS: 1
|
|
os: macos-14
|
|
- name: aarch64-apple
|
|
env:
|
|
SCRIPT: "./x.py --stage 2 test --host=aarch64-apple-darwin --target=aarch64-apple-darwin"
|
|
RUST_CONFIGURE_ARGS: "--enable-sanitizers --enable-profiler --set rust.jemalloc"
|
|
RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
|
|
SELECT_XCODE: /Applications/Xcode_14.3.1.app
|
|
USE_XCODE_CLANG: 1
|
|
MACOSX_DEPLOYMENT_TARGET: 11.0
|
|
MACOSX_STD_DEPLOYMENT_TARGET: 11.0
|
|
NO_LLVM_ASSERTIONS: 1
|
|
NO_DEBUG_ASSERTIONS: 1
|
|
NO_OVERFLOW_CHECKS: 1
|
|
os: macos-14
|
|
- name: x86_64-msvc
|
|
env:
|
|
RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-msvc --enable-profiler"
|
|
SCRIPT: make ci-msvc
|
|
os: windows-2019-8core-32gb
|
|
- name: i686-msvc
|
|
env:
|
|
RUST_CONFIGURE_ARGS: "--build=i686-pc-windows-msvc"
|
|
SCRIPT: make ci-msvc
|
|
os: windows-2019-8core-32gb
|
|
- name: x86_64-msvc-ext
|
|
env:
|
|
SCRIPT: python x.py --stage 2 test src/tools/cargotest src/tools/cargo && src/ci/docker/host-x86_64/x86_64-gnu-tools/checktools.sh x.py /tmp/toolstate/toolstates.json windows
|
|
HOST_TARGET: x86_64-pc-windows-msvc
|
|
RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-msvc --enable-lld --save-toolstates=/tmp/toolstate/toolstates.json"
|
|
DEPLOY_TOOLSTATES_JSON: toolstates-windows.json
|
|
os: windows-2019-8core-32gb
|
|
- name: i686-mingw
|
|
env:
|
|
RUST_CONFIGURE_ARGS: "--build=i686-pc-windows-gnu"
|
|
SCRIPT: make ci-mingw
|
|
NO_DOWNLOAD_CI_LLVM: 1
|
|
CUSTOM_MINGW: 1
|
|
os: windows-2019-8core-32gb
|
|
- name: x86_64-mingw
|
|
env:
|
|
SCRIPT: make ci-mingw
|
|
RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-gnu --enable-profiler"
|
|
NO_DOWNLOAD_CI_LLVM: 1
|
|
CUSTOM_MINGW: 1
|
|
os: windows-2019-8core-32gb
|
|
- name: dist-x86_64-msvc
|
|
env:
|
|
RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-msvc --host=x86_64-pc-windows-msvc --target=x86_64-pc-windows-msvc --enable-full-tools --enable-profiler"
|
|
SCRIPT: python x.py build --set rust.debug=true opt-dist && PGO_HOST=x86_64-pc-windows-msvc ./build/x86_64-pc-windows-msvc/stage0-tools-bin/opt-dist windows-ci -- python x.py dist bootstrap --include-default-paths
|
|
DIST_REQUIRE_ALL_TOOLS: 1
|
|
os: windows-2019-8core-32gb
|
|
- name: dist-i686-msvc
|
|
env:
|
|
RUST_CONFIGURE_ARGS: "--build=i686-pc-windows-msvc --host=i686-pc-windows-msvc --target=i686-pc-windows-msvc,i586-pc-windows-msvc --enable-full-tools --enable-profiler"
|
|
SCRIPT: python x.py dist bootstrap --include-default-paths
|
|
DIST_REQUIRE_ALL_TOOLS: 1
|
|
os: windows-2019-8core-32gb
|
|
- name: dist-aarch64-msvc
|
|
env:
|
|
RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-msvc --host=aarch64-pc-windows-msvc --enable-full-tools --enable-profiler"
|
|
SCRIPT: python x.py dist bootstrap --include-default-paths
|
|
DIST_REQUIRE_ALL_TOOLS: 1
|
|
os: windows-2019-8core-32gb
|
|
- name: dist-i686-mingw
|
|
env:
|
|
RUST_CONFIGURE_ARGS: "--build=i686-pc-windows-gnu --enable-full-tools --enable-profiler"
|
|
NO_DOWNLOAD_CI_LLVM: 1
|
|
SCRIPT: python x.py dist bootstrap --include-default-paths
|
|
CUSTOM_MINGW: 1
|
|
DIST_REQUIRE_ALL_TOOLS: 1
|
|
os: windows-2019-8core-32gb
|
|
- name: dist-x86_64-mingw
|
|
env:
|
|
SCRIPT: python x.py dist bootstrap --include-default-paths
|
|
RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-gnu --enable-full-tools --enable-profiler"
|
|
NO_DOWNLOAD_CI_LLVM: 1
|
|
CUSTOM_MINGW: 1
|
|
DIST_REQUIRE_ALL_TOOLS: 1
|
|
os: windows-2019-8core-32gb
|
|
- name: dist-x86_64-msvc-alt
|
|
env:
|
|
RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-msvc --enable-extended --enable-profiler"
|
|
SCRIPT: python x.py dist bootstrap --include-default-paths
|
|
os: windows-2019-8core-32gb
|
|
defaults:
|
|
run:
|
|
shell: "${{ contains(matrix.os, 'windows') && 'msys2 {0}' || 'bash' }}"
|
|
timeout-minutes: 600
|
|
runs-on: "${{ matrix.os }}"
|
|
steps:
|
|
- if: "contains(matrix.os, 'windows')"
|
|
uses: msys2/setup-msys2@v2.22.0
|
|
with:
|
|
msystem: "${{ contains(matrix.name, 'i686') && 'mingw32' || 'mingw64' }}"
|
|
update: false
|
|
release: true
|
|
path-type: inherit
|
|
install: "make dos2unix diffutils\n"
|
|
- name: disable git crlf conversion
|
|
run: git config --global core.autocrlf false
|
|
- name: checkout the source code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 2
|
|
- name: configure the PR in which the error message will be posted
|
|
run: "echo \"[CI_PR_NUMBER=$num]\""
|
|
env:
|
|
num: "${{ github.event.number }}"
|
|
if: "success() && !env.SKIP_JOB && github.event_name == 'pull_request'"
|
|
- name: add extra environment variables
|
|
run: src/ci/scripts/setup-environment.sh
|
|
env:
|
|
EXTRA_VARIABLES: "${{ toJson(matrix.env) }}"
|
|
if: success() && !env.SKIP_JOB
|
|
- name: decide whether to skip this job
|
|
run: src/ci/scripts/should-skip-this.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: ensure the channel matches the target branch
|
|
run: src/ci/scripts/verify-channel.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: collect CPU statistics
|
|
run: src/ci/scripts/collect-cpu-stats.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: show the current environment
|
|
run: src/ci/scripts/dump-environment.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install awscli
|
|
run: src/ci/scripts/install-awscli.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install sccache
|
|
run: src/ci/scripts/install-sccache.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: select Xcode
|
|
run: src/ci/scripts/select-xcode.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install clang
|
|
run: src/ci/scripts/install-clang.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install tidy
|
|
run: src/ci/scripts/install-tidy.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install WIX
|
|
run: src/ci/scripts/install-wix.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: disable git crlf conversion
|
|
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: checkout submodules
|
|
run: src/ci/scripts/checkout-submodules.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install MSYS2
|
|
run: src/ci/scripts/install-msys2.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install MinGW
|
|
run: src/ci/scripts/install-mingw.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install ninja
|
|
run: src/ci/scripts/install-ninja.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: enable ipv6 on Docker
|
|
run: src/ci/scripts/enable-docker-ipv6.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: disable git crlf conversion
|
|
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: ensure line endings are correct
|
|
run: src/ci/scripts/verify-line-endings.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: ensure backported commits are in upstream branches
|
|
run: src/ci/scripts/verify-backported-commits.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: ensure the stable version number is correct
|
|
run: src/ci/scripts/verify-stable-version-number.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: run the build
|
|
run: src/ci/scripts/run-build-from-ci.sh
|
|
env:
|
|
AWS_ACCESS_KEY_ID: "${{ env.CACHES_AWS_ACCESS_KEY_ID }}"
|
|
AWS_SECRET_ACCESS_KEY: "${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.CACHES_AWS_ACCESS_KEY_ID)] }}"
|
|
TOOLSTATE_REPO_ACCESS_TOKEN: "${{ secrets.TOOLSTATE_REPO_ACCESS_TOKEN }}"
|
|
if: success() && !env.SKIP_JOB
|
|
- name: create github artifacts
|
|
run: src/ci/scripts/create-doc-artifacts.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: upload artifacts to github
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: "${{ env.DOC_ARTIFACT_NAME }}"
|
|
path: obj/artifacts/doc
|
|
if-no-files-found: ignore
|
|
retention-days: 5
|
|
if: success() && !env.SKIP_JOB
|
|
- name: upload artifacts to S3
|
|
run: src/ci/scripts/upload-artifacts.sh
|
|
env:
|
|
AWS_ACCESS_KEY_ID: "${{ env.ARTIFACTS_AWS_ACCESS_KEY_ID }}"
|
|
AWS_SECRET_ACCESS_KEY: "${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.ARTIFACTS_AWS_ACCESS_KEY_ID)] }}"
|
|
if: "success() && !env.SKIP_JOB && (github.event_name == 'push' || env.DEPLOY == '1' || env.DEPLOY_ALT == '1')"
|
|
try:
|
|
name: "try - ${{ matrix.name }}"
|
|
env:
|
|
DIST_TRY_BUILD: 1
|
|
CI_JOB_NAME: "${{ matrix.name }}"
|
|
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
|
|
HEAD_SHA: "${{ github.event.pull_request.head.sha || github.sha }}"
|
|
DOCKER_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
|
SCCACHE_BUCKET: rust-lang-ci-sccache2
|
|
DEPLOY_BUCKET: rust-lang-ci2
|
|
TOOLSTATE_REPO: "https://github.com/rust-lang-nursery/rust-toolstate"
|
|
TOOLSTATE_ISSUES_API_URL: "https://api.github.com/repos/rust-lang/rust/issues"
|
|
TOOLSTATE_PUBLISH: 1
|
|
CACHES_AWS_ACCESS_KEY_ID: AKIA46X5W6CZI5DHEBFL
|
|
ARTIFACTS_AWS_ACCESS_KEY_ID: AKIA46X5W6CZN24CBO55
|
|
AWS_REGION: us-west-1
|
|
CACHE_DOMAIN: ci-caches.rust-lang.org
|
|
if: "github.event_name == 'push' && (((github.ref == 'refs/heads/try' || github.ref == 'refs/heads/try-perf') && github.repository == 'rust-lang-ci/rust') || ((github.ref == 'refs/heads/automation/bors/try') && github.repository == 'rust-lang/rust'))"
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- name: dist-x86_64-linux
|
|
env:
|
|
CODEGEN_BACKENDS: "llvm,cranelift"
|
|
os: ubuntu-20.04-16core-64gb
|
|
defaults:
|
|
run:
|
|
shell: "${{ contains(matrix.os, 'windows') && 'msys2 {0}' || 'bash' }}"
|
|
timeout-minutes: 600
|
|
runs-on: "${{ matrix.os }}"
|
|
steps:
|
|
- if: "contains(matrix.os, 'windows')"
|
|
uses: msys2/setup-msys2@v2.22.0
|
|
with:
|
|
msystem: "${{ contains(matrix.name, 'i686') && 'mingw32' || 'mingw64' }}"
|
|
update: false
|
|
release: true
|
|
path-type: inherit
|
|
install: "make dos2unix diffutils\n"
|
|
- name: disable git crlf conversion
|
|
run: git config --global core.autocrlf false
|
|
- name: checkout the source code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 2
|
|
- name: configure the PR in which the error message will be posted
|
|
run: "echo \"[CI_PR_NUMBER=$num]\""
|
|
env:
|
|
num: "${{ github.event.number }}"
|
|
if: "success() && !env.SKIP_JOB && github.event_name == 'pull_request'"
|
|
- name: add extra environment variables
|
|
run: src/ci/scripts/setup-environment.sh
|
|
env:
|
|
EXTRA_VARIABLES: "${{ toJson(matrix.env) }}"
|
|
if: success() && !env.SKIP_JOB
|
|
- name: decide whether to skip this job
|
|
run: src/ci/scripts/should-skip-this.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: ensure the channel matches the target branch
|
|
run: src/ci/scripts/verify-channel.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: collect CPU statistics
|
|
run: src/ci/scripts/collect-cpu-stats.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: show the current environment
|
|
run: src/ci/scripts/dump-environment.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install awscli
|
|
run: src/ci/scripts/install-awscli.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install sccache
|
|
run: src/ci/scripts/install-sccache.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: select Xcode
|
|
run: src/ci/scripts/select-xcode.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install clang
|
|
run: src/ci/scripts/install-clang.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install tidy
|
|
run: src/ci/scripts/install-tidy.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install WIX
|
|
run: src/ci/scripts/install-wix.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: disable git crlf conversion
|
|
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: checkout submodules
|
|
run: src/ci/scripts/checkout-submodules.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install MSYS2
|
|
run: src/ci/scripts/install-msys2.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install MinGW
|
|
run: src/ci/scripts/install-mingw.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: install ninja
|
|
run: src/ci/scripts/install-ninja.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: enable ipv6 on Docker
|
|
run: src/ci/scripts/enable-docker-ipv6.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: disable git crlf conversion
|
|
run: src/ci/scripts/disable-git-crlf-conversion.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: ensure line endings are correct
|
|
run: src/ci/scripts/verify-line-endings.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: ensure backported commits are in upstream branches
|
|
run: src/ci/scripts/verify-backported-commits.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: ensure the stable version number is correct
|
|
run: src/ci/scripts/verify-stable-version-number.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: run the build
|
|
run: src/ci/scripts/run-build-from-ci.sh
|
|
env:
|
|
AWS_ACCESS_KEY_ID: "${{ env.CACHES_AWS_ACCESS_KEY_ID }}"
|
|
AWS_SECRET_ACCESS_KEY: "${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.CACHES_AWS_ACCESS_KEY_ID)] }}"
|
|
TOOLSTATE_REPO_ACCESS_TOKEN: "${{ secrets.TOOLSTATE_REPO_ACCESS_TOKEN }}"
|
|
if: success() && !env.SKIP_JOB
|
|
- name: create github artifacts
|
|
run: src/ci/scripts/create-doc-artifacts.sh
|
|
if: success() && !env.SKIP_JOB
|
|
- name: upload artifacts to github
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: "${{ env.DOC_ARTIFACT_NAME }}"
|
|
path: obj/artifacts/doc
|
|
if-no-files-found: ignore
|
|
retention-days: 5
|
|
if: success() && !env.SKIP_JOB
|
|
- name: upload artifacts to S3
|
|
run: src/ci/scripts/upload-artifacts.sh
|
|
env:
|
|
AWS_ACCESS_KEY_ID: "${{ env.ARTIFACTS_AWS_ACCESS_KEY_ID }}"
|
|
AWS_SECRET_ACCESS_KEY: "${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.ARTIFACTS_AWS_ACCESS_KEY_ID)] }}"
|
|
if: "success() && !env.SKIP_JOB && (github.event_name == 'push' || env.DEPLOY == '1' || env.DEPLOY_ALT == '1')"
|
|
master:
|
|
name: master
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
SCCACHE_BUCKET: rust-lang-ci-sccache2
|
|
DEPLOY_BUCKET: rust-lang-ci2
|
|
TOOLSTATE_REPO: "https://github.com/rust-lang-nursery/rust-toolstate"
|
|
TOOLSTATE_ISSUES_API_URL: "https://api.github.com/repos/rust-lang/rust/issues"
|
|
TOOLSTATE_PUBLISH: 1
|
|
CACHES_AWS_ACCESS_KEY_ID: AKIA46X5W6CZI5DHEBFL
|
|
ARTIFACTS_AWS_ACCESS_KEY_ID: AKIA46X5W6CZN24CBO55
|
|
AWS_REGION: us-west-1
|
|
CACHE_DOMAIN: ci-caches.rust-lang.org
|
|
if: "github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository == 'rust-lang-ci/rust'"
|
|
steps:
|
|
- name: checkout the source code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 2
|
|
- name: publish toolstate
|
|
run: src/ci/publish_toolstate.sh
|
|
shell: bash
|
|
env:
|
|
TOOLSTATE_REPO_ACCESS_TOKEN: "${{ secrets.TOOLSTATE_REPO_ACCESS_TOKEN }}"
|
|
if: success() && !env.SKIP_JOB
|
|
try-success:
|
|
needs:
|
|
- try
|
|
if: "success() && github.event_name == 'push' && (github.ref == 'refs/heads/try' || github.ref == 'refs/heads/try-perf') && github.repository == 'rust-lang-ci/rust'"
|
|
steps:
|
|
- name: mark the job as a success
|
|
run: exit 0
|
|
shell: bash
|
|
name: bors build finished
|
|
runs-on: ubuntu-latest
|
|
try-failure:
|
|
needs:
|
|
- try
|
|
if: "!success() && github.event_name == 'push' && (github.ref == 'refs/heads/try' || github.ref == 'refs/heads/try-perf') && github.repository == 'rust-lang-ci/rust'"
|
|
steps:
|
|
- name: mark the job as a failure
|
|
run: exit 1
|
|
shell: bash
|
|
name: bors build finished
|
|
runs-on: ubuntu-latest
|
|
auto-success:
|
|
needs:
|
|
- auto
|
|
if: "success() && github.event_name == 'push' && github.ref == 'refs/heads/auto' && github.repository == 'rust-lang-ci/rust'"
|
|
steps:
|
|
- name: mark the job as a success
|
|
run: exit 0
|
|
shell: bash
|
|
name: bors build finished
|
|
runs-on: ubuntu-latest
|
|
auto-failure:
|
|
needs:
|
|
- auto
|
|
if: "!success() && github.event_name == 'push' && github.ref == 'refs/heads/auto' && github.repository == 'rust-lang-ci/rust'"
|
|
steps:
|
|
- name: mark the job as a failure
|
|
run: exit 1
|
|
shell: bash
|
|
name: bors build finished
|
|
runs-on: ubuntu-latest
|