| # This file contains definitions of CI job parameters that are loaded | |
| # dynamically in CI from ci.yml. | |
| runners: | |
| - &base-job | |
| env: | |
| # This force enables the new Cargo build-dir layout for all CI jobs. | |
| # The new layout will become the default soon so we enable it on everything | |
| # to catch issues as soon as possible. | |
| # See: https://github.com/rust-lang/cargo/issues/15010 | |
| CARGO_UNSTABLE_BUILD_DIR_NEW_LAYOUT: true | |
| - &job-linux-4c | |
| os: ubuntu-24.04 | |
| # Free some disk space to avoid running out of space during the build. | |
| free_disk: true | |
| <<: *base-job | |
| - &job-linux-4c-largedisk | |
| os: ubuntu-24.04-4core-16gb | |
| <<: *base-job | |
| - &job-linux-8c | |
| os: ubuntu-24.04-8core-32gb | |
| <<: *base-job | |
| - &job-linux-16c | |
| os: ubuntu-24.04-16core-64gb | |
| <<: *base-job | |
| - &job-macos-15 | |
| os: macos-15 # macOS 15 Arm64 | |
| <<: *base-job | |
| - &job-macos-26 | |
| os: macos-26 # macOS 26 Arm64 | |
| <<: *base-job | |
| - &job-windows | |
| os: windows-2025 | |
| <<: *base-job | |
| - &job-windows-8c | |
| os: windows-2025-8core-32gb | |
| <<: *base-job | |
| - &job-windows-aarch64 | |
| os: windows-11-arm | |
| <<: *base-job | |
| - &job-aarch64-linux | |
| # Free some disk space to avoid running out of space during the build. | |
| free_disk: true | |
| os: ubuntu-24.04-arm | |
| <<: *base-job | |
| - &job-aarch64-linux-8c | |
| os: ubuntu-24.04-arm64-8core-32gb | |
| <<: *base-job | |
| # Codebuild runners are provisioned in | |
| # https://github.com/rust-lang/simpleinfra/blob/b7ddd5e6bec8a93ec30510cdddec02c5666fefe9/terragrunt/accounts/ci-prod/ci-runners/terragrunt.hcl#L2 | |
| - &job-linux-36c-codebuild | |
| free_disk: true | |
| codebuild: true | |
| os: codebuild-ubuntu-22-36c-$github.run_id-$github.run_attempt | |
| <<: *base-job | |
| - &job-linux-8c-codebuild | |
| free_disk: true | |
| codebuild: true | |
| os: codebuild-ubuntu-22-8c-$github.run_id-$github.run_attempt | |
| <<: *base-job | |
| envs: | |
| production: | |
| &production | |
| DEPLOY_BUCKET: rust-lang-ci2 | |
| # AWS_SECRET_ACCESS_KEYs are stored in GitHub's secrets storage, named | |
| # AWS_SECRET_ACCESS_KEY_<keyid>. Including the key id in the name allows to | |
| # rotate them in a single branch while keeping the old key in another | |
| # branch, which wouldn't be possible if the key was named with the kind | |
| # (caches, artifacts...). | |
| CACHES_AWS_ACCESS_KEY_ID: AKIA46X5W6CZI5DHEBFL | |
| ARTIFACTS_AWS_ACCESS_KEY_ID: AKIA46X5W6CZN24CBO55 | |
| AWS_REGION: us-west-1 | |
| TOOLSTATE_PUBLISH: 1 | |
| # Try builds started through `@bors try` (without specifying custom jobs | |
| # in the PR description) will be passed the `DIST_TRY_BUILD` environment | |
| # variable by citool. | |
| # This tells the `opt-dist` tool to skip building certain components | |
| # and skip running tests, so that the try build finishes faster. | |
| try: | |
| <<: *production | |
| auto: | |
| <<: *production | |
| pr: | |
| PR_CI_JOB: 1 | |
| jobs: | |
| dist-x86_64-linux: &job-dist-x86_64-linux | |
| name: dist-x86_64-linux | |
| env: | |
| IMAGE: dist-x86_64-linux | |
| CODEGEN_BACKENDS: llvm,cranelift | |
| DOCKER_SCRIPT: dist.sh | |
| <<: *job-linux-36c-codebuild | |
| # Jobs that run on each push to a pull request (PR). | |
| # | |
| # These jobs automatically inherit envs.pr, to avoid repeating it in each job | |
| # definition. | |
| # | |
| # PR CI jobs will be automatically registered as Auto CI jobs or overridden. When | |
| # automatically registered, the PR CI job configuration will be copied as an | |
| # Auto CI job but with `continue_on_error` overridden to `false` (to fail-fast). | |
| # When overridden, `citool` will check for equivalence between the PR and CI job | |
| # of the same name modulo `continue_on_error` and `env`. | |
| pr: | |
| - name: pr-check-1 | |
| <<: *job-linux-4c | |
| - name: pr-check-2 | |
| <<: *job-linux-4c | |
| - name: tidy | |
| continue_on_error: true | |
| free_disk: false | |
| env: | |
| # This submodule is expensive to checkout, and it should not be needed for | |
| # tidy. This speeds up the PR CI job by ~1 minute. | |
| SKIP_SUBMODULES: src/gcc | |
| <<: *job-linux-4c | |
| - name: x86_64-gnu-llvm-21 | |
| env: | |
| ENABLE_GCC_CODEGEN: "1" | |
| DOCKER_SCRIPT: x86_64-gnu-llvm.sh | |
| <<: *job-linux-4c | |
| - name: aarch64-gnu-llvm-21-1 | |
| env: | |
| IMAGE: aarch64-gnu-llvm-21 | |
| DOCKER_SCRIPT: stage_2_test_set1.sh | |
| <<: *job-aarch64-linux | |
| - name: aarch64-gnu-llvm-21-2 | |
| env: | |
| IMAGE: aarch64-gnu-llvm-21 | |
| DOCKER_SCRIPT: stage_2_test_set2.sh | |
| <<: *job-aarch64-linux | |
| - name: x86_64-gnu-tools | |
| <<: *job-linux-4c | |
| - name: x86_64-gnu-miri | |
| <<: *job-linux-4c | |
| - name: x86_64-gnu-gcc | |
| doc_url: https://rustc-dev-guide.rust-lang.org/tests/codegen-backend-tests/cg_gcc.html | |
| env: | |
| CODEGEN_BACKENDS: llvm,gcc | |
| <<: *job-linux-4c | |
| - name: x86_64-gnu-gcc-core-tests | |
| doc_url: https://rustc-dev-guide.rust-lang.org/tests/codegen-backend-tests/cg_gcc.html | |
| env: | |
| CODEGEN_BACKENDS: gcc | |
| <<: *job-linux-4c | |
| # This job tests features we want to stabilize soon, to ensure they don't | |
| # regress. | |
| - name: x86_64-gnu-next-trait-solver-polonius | |
| doc_url: https://rustc-dev-guide.rust-lang.org/tests/x86_64-gnu-next-trait-solver-polonius-ci-job.html | |
| env: | |
| CODEGEN_BACKENDS: llvm | |
| <<: *job-linux-4c | |
| # Jobs that run when you perform a try build (@bors try) | |
| # These jobs automatically inherit envs.try, to avoid repeating | |
| # it in each job definition. | |
| try: | |
| - <<: *job-dist-x86_64-linux | |
| name: dist-x86_64-linux-quick | |
| # Jobs that only run when explicitly invoked in one of the following ways: | |
| # - comment `@bors try jobs=<job-name>` | |
| # - `try-job: <job-name>` in the PR description and comment `@bors try`. | |
| optional: | |
| # This job is used just to test optional jobs. | |
| # It will be replaced by tier 2 and tier 3 jobs in the future. | |
| - name: optional-pr-check-1 | |
| env: | |
| IMAGE: pr-check-1 | |
| <<: *job-linux-4c | |
| # Main CI jobs that have to be green to merge a commit into the default branch. | |
| # | |
| # These jobs automatically inherit envs.auto, to avoid repeating it in each job | |
| # definition. | |
| # | |
| # Auto jobs may not specify `continue_on_error: true`, and thus will fail-fast. | |
| # | |
| # Unless explicitly overridden, PR CI jobs will be automatically registered as | |
| # Auto CI jobs. | |
| auto: | |
| ############################# | |
| # Linux/Docker builders # | |
| ############################# | |
| - name: aarch64-gnu | |
| <<: *job-aarch64-linux | |
| - name: aarch64-gnu-debug | |
| <<: *job-aarch64-linux | |
| - name: arm-android | |
| <<: *job-linux-4c | |
| - name: armhf-gnu | |
| <<: *job-linux-4c | |
| - name: dist-aarch64-linux | |
| env: | |
| CODEGEN_BACKENDS: llvm,cranelift | |
| <<: *job-aarch64-linux-8c | |
| - name: dist-android | |
| <<: *job-linux-4c | |
| - name: dist-arm-linux-gnueabi | |
| <<: *job-linux-4c | |
| - name: dist-arm-linux-musl | |
| <<: *job-linux-4c | |
| - name: dist-armhf-linux | |
| <<: *job-linux-4c | |
| - name: dist-armv7-linux | |
| <<: *job-linux-4c | |
| - name: dist-i586-gnu-i586-i686-musl | |
| <<: *job-linux-4c | |
| - name: dist-i686-linux | |
| <<: *job-linux-4c | |
| - name: dist-loongarch64-linux | |
| <<: *job-linux-4c | |
| - name: dist-loongarch64-musl | |
| <<: *job-linux-4c | |
| - name: dist-ohos-aarch64 | |
| <<: *job-linux-4c | |
| - name: dist-ohos-armv7 | |
| <<: *job-linux-4c | |
| - name: dist-ohos-x86_64 | |
| <<: *job-linux-4c | |
| - name: dist-powerpc-linux | |
| <<: *job-linux-4c | |
| - name: dist-powerpc64-linux-gnu | |
| <<: *job-linux-4c | |
| - name: dist-powerpc64-linux-musl | |
| <<: *job-linux-4c | |
| - name: dist-powerpc64le-linux-gnu | |
| <<: *job-linux-4c | |
| - name: dist-powerpc64le-linux-musl | |
| <<: *job-linux-4c | |
| - name: dist-riscv64-linux | |
| <<: *job-linux-4c | |
| - name: dist-s390x-linux | |
| <<: *job-linux-4c | |
| - name: dist-various-1 | |
| <<: *job-linux-4c | |
| - name: dist-various-2 | |
| <<: *job-linux-4c | |
| - name: dist-x86_64-freebsd | |
| <<: *job-linux-4c | |
| - name: dist-aarch64-freebsd | |
| <<: *job-aarch64-linux | |
| - name: dist-x86_64-illumos | |
| <<: *job-linux-4c | |
| - <<: *job-dist-x86_64-linux | |
| - name: dist-x86_64-linux-alt | |
| env: | |
| IMAGE: dist-x86_64-linux | |
| CODEGEN_BACKENDS: llvm,cranelift | |
| DOCKER_SCRIPT: dist-alt.sh | |
| <<: *job-linux-8c | |
| - name: dist-x86_64-musl | |
| env: | |
| CODEGEN_BACKENDS: llvm,cranelift | |
| <<: *job-linux-4c | |
| - name: dist-x86_64-netbsd | |
| <<: *job-linux-4c | |
| - name: dist-x86_64-solaris | |
| <<: *job-linux-4c | |
| - name: dist-sparcv9-solaris | |
| <<: *job-linux-4c | |
| # The i686-gnu job is split into multiple jobs to run tests in parallel. | |
| # i686-gnu-1 skips tests that run in i686-gnu-2. | |
| - name: i686-gnu-1 | |
| env: | |
| IMAGE: i686-gnu | |
| DOCKER_SCRIPT: stage_2_test_set1.sh | |
| <<: *job-linux-4c | |
| # Skip tests that run in i686-gnu-1 | |
| - name: i686-gnu-2 | |
| env: | |
| IMAGE: i686-gnu | |
| DOCKER_SCRIPT: stage_2_test_set2.sh | |
| <<: *job-linux-4c | |
| # The i686-gnu-nopt job is split into multiple jobs to run tests in parallel. | |
| # i686-gnu-nopt-1 skips tests that run in i686-gnu-nopt-2 | |
| - name: i686-gnu-nopt-1 | |
| env: | |
| IMAGE: i686-gnu-nopt | |
| DOCKER_SCRIPT: stage_2_test_set1.sh | |
| <<: *job-linux-4c | |
| # Skip tests that run in i686-gnu-nopt-1 | |
| - name: i686-gnu-nopt-2 | |
| env: | |
| IMAGE: i686-gnu-nopt | |
| DOCKER_SCRIPT: i686-gnu-nopt-2.sh | |
| <<: *job-linux-4c | |
| - name: pr-check-1 | |
| <<: *job-linux-4c | |
| - name: pr-check-2 | |
| <<: *job-linux-4c | |
| - name: tidy | |
| free_disk: false | |
| <<: *job-linux-4c | |
| - name: test-various | |
| <<: *job-linux-4c | |
| # FIXME: temporarily disabled due to fuchsia server rate limits. See | |
| # <https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/fuchsia.20failure/with/506637259>. | |
| # | |
| #- name: x86_64-fuchsia | |
| # # Only run this job on the nightly channel. Fuchsia requires | |
| # # nightly features to compile, and this job would fail if | |
| # # executed on beta and stable. | |
| # only_on_channel: nightly | |
| # doc_url: https://rustc-dev-guide.rust-lang.org/tests/fuchsia.html | |
| # <<: *job-linux-8c | |
| # Tests integration with Rust for Linux. | |
| # Builds stage 1 compiler and tries to compile a few RfL examples with it. | |
| - name: x86_64-rust-for-linux | |
| doc_url: https://rustc-dev-guide.rust-lang.org/tests/rust-for-linux.html | |
| <<: *job-linux-4c | |
| - name: x86_64-gnu | |
| <<: *job-linux-4c | |
| - name: optional-x86_64-gnu-parallel-frontend | |
| # This test can be flaky, so do not cancel CI if it fails, for now. | |
| continue_on_error: true | |
| env: | |
| DOCKER_SCRIPT: optional-x86_64-gnu-parallel-frontend.sh | |
| <<: *job-linux-4c | |
| # This job ensures commits landing on nightly still pass the full | |
| # test suite on the stable channel. There are some UI tests that | |
| # depend on the channel being built (for example if they include the | |
| # channel name on the output), and this builder prevents landing | |
| # changes that would result in broken builds after a promotion. | |
| - name: x86_64-gnu-stable | |
| # Only run this job on the nightly channel. Running this on beta | |
| # could cause failures when `dev: 1` in `stage0.txt`, and running | |
| # this on stable is useless. | |
| only_on_channel: nightly | |
| env: | |
| IMAGE: x86_64-gnu | |
| RUST_CI_OVERRIDE_RELEASE_CHANNEL: stable | |
| <<: *job-linux-4c | |
| - name: x86_64-gnu-aux | |
| <<: *job-linux-4c | |
| - name: x86_64-gnu-debug | |
| <<: *job-linux-4c | |
| - name: x86_64-gnu-distcheck | |
| <<: *job-linux-4c | |
| # The x86_64-gnu-llvm-21 job is split into multiple jobs to run tests in parallel. | |
| # x86_64-gnu-llvm-21-1 skips tests that run in x86_64-gnu-llvm-21-{2,3}. | |
| - name: x86_64-gnu-llvm-21-1 | |
| env: | |
| RUST_BACKTRACE: 1 | |
| IMAGE: x86_64-gnu-llvm-21 | |
| DOCKER_SCRIPT: stage_2_test_set2.sh | |
| <<: *job-linux-4c | |
| # Skip tests that run in x86_64-gnu-llvm-21-{1,3} | |
| - name: x86_64-gnu-llvm-21-2 | |
| env: | |
| RUST_BACKTRACE: 1 | |
| IMAGE: x86_64-gnu-llvm-21 | |
| DOCKER_SCRIPT: x86_64-gnu-llvm2.sh | |
| <<: *job-linux-4c | |
| # Skip tests that run in x86_64-gnu-llvm-21-{1,2} | |
| - name: x86_64-gnu-llvm-21-3 | |
| env: | |
| RUST_BACKTRACE: 1 | |
| IMAGE: x86_64-gnu-llvm-21 | |
| DOCKER_SCRIPT: x86_64-gnu-llvm3.sh | |
| <<: *job-linux-4c | |
| # The x86_64-gnu-llvm-22 job is split into multiple jobs to run tests in parallel. | |
| # x86_64-gnu-llvm-22-1 skips tests that run in x86_64-gnu-llvm-22-{2,3}. | |
| - name: x86_64-gnu-llvm-22-1 | |
| env: | |
| RUST_BACKTRACE: 1 | |
| IMAGE: x86_64-gnu-llvm-22 | |
| DOCKER_SCRIPT: stage_2_test_set2.sh | |
| <<: *job-linux-4c | |
| # Skip tests that run in x86_64-gnu-llvm-22-{1,3} | |
| - name: x86_64-gnu-llvm-22-2 | |
| env: | |
| RUST_BACKTRACE: 1 | |
| IMAGE: x86_64-gnu-llvm-22 | |
| DOCKER_SCRIPT: x86_64-gnu-llvm2.sh | |
| <<: *job-linux-4c | |
| # Skip tests that run in x86_64-gnu-llvm-22-{1,2} | |
| - name: x86_64-gnu-llvm-22-3 | |
| env: | |
| RUST_BACKTRACE: 1 | |
| IMAGE: x86_64-gnu-llvm-22 | |
| DOCKER_SCRIPT: x86_64-gnu-llvm3.sh | |
| <<: *job-linux-4c | |
| - name: x86_64-gnu-nopt | |
| <<: *job-linux-4c | |
| - name: x86_64-gnu-tools | |
| env: | |
| DEPLOY_TOOLSTATES_JSON: toolstates-linux.json | |
| <<: *job-linux-4c | |
| - name: x86_64-gnu-miri | |
| <<: *job-linux-4c | |
| #################### | |
| # macOS Builders # | |
| #################### | |
| - name: dist-x86_64-apple | |
| env: | |
| SCRIPT: >- | |
| ./x.py dist bootstrap enzyme | |
| --include-default-paths | |
| --host=x86_64-apple-darwin | |
| --target=x86_64-apple-darwin | |
| RUST_CONFIGURE_ARGS: >- | |
| --enable-full-tools | |
| --enable-sanitizers | |
| --enable-profiler | |
| --disable-docs | |
| --set rust.jemalloc | |
| --set llvm.link-shared=true | |
| --set rust.lto=thin | |
| --set rust.codegen-units=1 | |
| # Ensure that host tooling is built to support our minimum support macOS version. | |
| MACOSX_DEPLOYMENT_TARGET: 10.12 | |
| MACOSX_STD_DEPLOYMENT_TARGET: 10.12 | |
| DEVELOPER_DIR: /Applications/Xcode_26.2.app/Contents/Developer | |
| DIST_REQUIRE_ALL_TOOLS: 1 | |
| CODEGEN_BACKENDS: llvm,cranelift | |
| <<: *job-macos-15 | |
| - name: dist-apple-various | |
| env: | |
| # Build and distribute the standard library for these targets. | |
| TARGETS: "aarch64-apple-ios,\ | |
| aarch64-apple-ios-sim,\ | |
| x86_64-apple-ios,\ | |
| aarch64-apple-ios-macabi,\ | |
| x86_64-apple-ios-macabi,\ | |
| aarch64-apple-tvos,\ | |
| aarch64-apple-tvos-sim,\ | |
| aarch64-apple-visionos,\ | |
| aarch64-apple-visionos-sim,\ | |
| aarch64-apple-watchos,\ | |
| aarch64-apple-watchos-sim" | |
| SCRIPT: ./x.py dist bootstrap --include-default-paths --host='' --target=$TARGETS | |
| # Mac Catalyst cannot currently compile the sanitizer: | |
| # https://github.com/rust-lang/rust/issues/129069 | |
| # | |
| # And tvOS and watchOS don't currently support the profiler runtime: | |
| # https://github.com/rust-lang/rust/issues/152426 | |
| RUST_CONFIGURE_ARGS: >- | |
| --enable-sanitizers | |
| --enable-profiler | |
| --set rust.jemalloc | |
| --set target.aarch64-apple-ios-macabi.sanitizers=false | |
| --set target.x86_64-apple-ios-macabi.sanitizers=false | |
| --set target.aarch64-apple-tvos.profiler=false | |
| --set target.aarch64-apple-tvos-sim.profiler=false | |
| --set target.aarch64-apple-watchos.profiler=false | |
| --set target.aarch64-apple-watchos-sim.profiler=false | |
| # Ensure that host tooling is built to support our minimum support macOS version. | |
| # FIXME(madsmtm): This might be redundant, as we're not building host tooling here (?) | |
| MACOSX_DEPLOYMENT_TARGET: 10.12 | |
| MACOSX_STD_DEPLOYMENT_TARGET: 10.12 | |
| DEVELOPER_DIR: /Applications/Xcode_26.2.app/Contents/Developer | |
| <<: *job-macos-15 | |
| - name: dist-aarch64-apple | |
| env: | |
| SCRIPT: >- | |
| ./x.py dist bootstrap enzyme | |
| --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.link-shared=true | |
| --set rust.lto=thin | |
| --set rust.codegen-units=1 | |
| # Aarch64 tooling only needs to support macOS 11.0 and up as nothing else | |
| # supports the hardware. | |
| MACOSX_DEPLOYMENT_TARGET: 11.0 | |
| MACOSX_STD_DEPLOYMENT_TARGET: 11.0 | |
| DEVELOPER_DIR: /Applications/Xcode_26.2.app/Contents/Developer | |
| DIST_REQUIRE_ALL_TOOLS: 1 | |
| CODEGEN_BACKENDS: llvm,cranelift | |
| <<: *job-macos-15 | |
| - name: aarch64-apple | |
| env: | |
| SCRIPT: > | |
| ./x.py --stage 2 test --host=aarch64-apple-darwin --target=aarch64-apple-darwin && | |
| ./x.py --stage 2 test --host=aarch64-apple-darwin --target=aarch64-apple-darwin src/tools/cargo | |
| RUST_CONFIGURE_ARGS: >- | |
| --enable-sanitizers | |
| --enable-profiler | |
| --set rust.jemalloc | |
| DEVELOPER_DIR: /Applications/Xcode_26.2.app/Contents/Developer | |
| # Aarch64 tooling only needs to support macOS 11.0 and up as nothing else | |
| # supports the hardware, so only need to test it there. | |
| MACOSX_DEPLOYMENT_TARGET: 11.0 | |
| MACOSX_STD_DEPLOYMENT_TARGET: 11.0 | |
| <<: *job-macos-15 | |
| # EXPERIMENT(#157687): we will try to run `aarch64-apple`-equivalent workload | |
| # on `macos-26` runner images in parallel to evaluate the running times, since | |
| # previous attempts have timed out multiple times. Remove/revert this job if | |
| # this hangs or times out, or if it becomes the slowest Merge CI job, and let | |
| # T-infra know. | |
| - name: aarch64-apple-macos-26 | |
| doc_url: https://github.com/rust-lang/rust/issues/157687 | |
| env: | |
| SCRIPT: > | |
| ./x.py --stage 2 test --host=aarch64-apple-darwin --target=aarch64-apple-darwin && | |
| ./x.py --stage 2 test --host=aarch64-apple-darwin --target=aarch64-apple-darwin src/tools/cargo | |
| RUST_CONFIGURE_ARGS: >- | |
| --enable-sanitizers | |
| --enable-profiler | |
| --set rust.jemalloc | |
| DEVELOPER_DIR: /Applications/Xcode_26.2.app/Contents/Developer | |
| # Aarch64 tooling only needs to support macOS 11.0 and up as nothing else | |
| # supports the hardware, so only need to test it there. | |
| MACOSX_DEPLOYMENT_TARGET: 11.0 | |
| MACOSX_STD_DEPLOYMENT_TARGET: 11.0 | |
| <<: *job-macos-26 | |
| ###################### | |
| # Windows Builders # | |
| ###################### | |
| # x86_64-msvc is split into two jobs to run tests in parallel. | |
| - name: x86_64-msvc-1 | |
| env: | |
| RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --enable-sanitizers --enable-profiler | |
| SCRIPT: make ci-msvc-py | |
| <<: *job-windows | |
| - name: x86_64-msvc-2 | |
| env: | |
| RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --enable-sanitizers --enable-profiler | |
| SCRIPT: make ci-msvc-ps1 | |
| <<: *job-windows | |
| # i686-msvc is split into two jobs to run tests in parallel. | |
| - name: i686-msvc-1 | |
| env: | |
| RUST_CONFIGURE_ARGS: --build=i686-pc-windows-msvc --enable-sanitizers | |
| SCRIPT: make ci-msvc-py | |
| <<: *job-windows | |
| - name: i686-msvc-2 | |
| env: | |
| RUST_CONFIGURE_ARGS: --build=i686-pc-windows-msvc --enable-sanitizers | |
| SCRIPT: make ci-msvc-ps1 | |
| <<: *job-windows | |
| # aarch64-msvc is split into two jobs to run tests in parallel. | |
| - name: aarch64-msvc-1 | |
| env: | |
| RUST_CONFIGURE_ARGS: --build=aarch64-pc-windows-msvc | |
| SCRIPT: make ci-msvc-py | |
| <<: *job-windows-aarch64 | |
| - name: aarch64-msvc-2 | |
| env: | |
| RUST_CONFIGURE_ARGS: --build=aarch64-pc-windows-msvc | |
| SCRIPT: make ci-msvc-ps1 | |
| <<: *job-windows-aarch64 | |
| # x86_64-msvc-ext is split into multiple jobs to run tests in parallel. | |
| - name: x86_64-msvc-ext1 | |
| env: | |
| SCRIPT: python x.py --stage 2 test src/tools/cargotest src/tools/cargo | |
| RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --enable-lld | |
| <<: *job-windows | |
| # Temporary builder to workaround CI issues | |
| # See <https://github.com/rust-lang/rust/issues/127883> | |
| #FIXME: Remove this, and re-enable the same tests in `checktools.sh`, once CI issues are fixed. | |
| - name: x86_64-msvc-ext2 | |
| env: | |
| SCRIPT: > | |
| python x.py test --stage 2 src/tools/miri --target x86_64-apple-darwin --test-args pass && | |
| python x.py test --stage 2 src/tools/miri --target x86_64-pc-windows-gnu --test-args pass && | |
| python x.py miri --stage 2 library/core --test-args notest && | |
| python x.py miri --stage 2 library/alloc --test-args notest && | |
| python x.py miri --stage 2 library/std --test-args notest | |
| # The last 3 lines smoke-test `x.py miri`. This doesn't run any actual tests (that would take | |
| # too long), but it ensures that the crates build properly when tested with Miri. | |
| RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --enable-lld | |
| <<: *job-windows | |
| # Run `checktools.sh` and upload the toolstate file. | |
| - name: x86_64-msvc-ext3 | |
| env: | |
| SCRIPT: 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 | |
| <<: *job-windows | |
| # 32/64-bit MinGW builds. | |
| # | |
| # We are using MinGW with POSIX threads since LLVM requires | |
| # C++'s std::thread which is disabled in libstdc++ with win32 threads. | |
| # FIXME: Libc++ doesn't have this limitation so we can avoid | |
| # winpthreads if we switch to it. | |
| # | |
| # Instead of relying on the MinGW version installed on CI we download | |
| # and install one ourselves so we won't be surprised by changes to CI's | |
| # build image. | |
| # | |
| # Finally, note that the downloads below are all in the `rust-lang-ci` S3 | |
| # bucket, but they clearly 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. | |
| # x86_64-mingw is split into two jobs to run tests in parallel. | |
| - name: x86_64-mingw-1 | |
| env: | |
| SCRIPT: make ci-mingw-x | |
| RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-gnu | |
| <<: *job-windows | |
| - name: x86_64-mingw-2 | |
| env: | |
| SCRIPT: make ci-mingw-bootstrap | |
| RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-gnu | |
| <<: *job-windows | |
| - 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 | |
| --set rust.codegen-units=1 | |
| SCRIPT: python x.py build --set rust.debug=true opt-dist && PGO_HOST=x86_64-pc-windows-msvc ./build/x86_64-pc-windows-msvc/stage1-tools-bin/opt-dist windows-ci -- python x.py dist bootstrap --include-default-paths | |
| DIST_REQUIRE_ALL_TOOLS: 1 | |
| CODEGEN_BACKENDS: llvm,cranelift | |
| <<: *job-windows-8c | |
| - name: dist-i686-msvc | |
| env: | |
| RUST_CONFIGURE_ARGS: >- | |
| --build=i686-pc-windows-msvc | |
| --host=i686-pc-windows-msvc | |
| --target=i686-pc-windows-msvc | |
| --enable-full-tools | |
| --enable-profiler | |
| --disable-docs | |
| SCRIPT: python x.py dist bootstrap --include-default-paths | |
| DIST_REQUIRE_ALL_TOOLS: 1 | |
| CODEGEN_BACKENDS: llvm,cranelift | |
| <<: *job-windows | |
| - name: dist-aarch64-msvc | |
| env: | |
| RUST_CONFIGURE_ARGS: >- | |
| --build=aarch64-pc-windows-msvc | |
| --host=aarch64-pc-windows-msvc | |
| --target=aarch64-pc-windows-msvc,arm64ec-pc-windows-msvc | |
| --enable-full-tools | |
| --enable-profiler | |
| SCRIPT: python x.py dist bootstrap --include-default-paths | |
| DIST_REQUIRE_ALL_TOOLS: 1 | |
| <<: *job-windows-aarch64 | |
| - name: dist-i686-mingw | |
| env: | |
| RUST_CONFIGURE_ARGS: >- | |
| --build=i686-pc-windows-gnu | |
| --enable-full-tools | |
| SCRIPT: python x.py dist bootstrap --include-default-paths | |
| DIST_REQUIRE_ALL_TOOLS: 1 | |
| CODEGEN_BACKENDS: llvm,cranelift | |
| <<: *job-windows | |
| - 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 | |
| DIST_REQUIRE_ALL_TOOLS: 1 | |
| CODEGEN_BACKENDS: llvm,cranelift | |
| <<: *job-windows | |
| # i686 has no dedicated job, build it here because this job is fast | |
| - name: dist-aarch64-llvm-mingw | |
| env: | |
| SCRIPT: python x.py dist bootstrap enzyme --include-default-paths | |
| RUST_CONFIGURE_ARGS: >- | |
| --build=aarch64-pc-windows-gnullvm | |
| --target=aarch64-pc-windows-gnullvm,i686-pc-windows-gnullvm | |
| --enable-full-tools | |
| --enable-profiler | |
| --enable-llvm-link-shared | |
| DIST_REQUIRE_ALL_TOOLS: 1 | |
| CODEGEN_BACKENDS: llvm,cranelift | |
| CC_i686_pc_windows_gnullvm: i686-w64-mingw32-clang | |
| <<: *job-windows-aarch64 | |
| - name: dist-x86_64-llvm-mingw | |
| env: | |
| SCRIPT: python x.py dist bootstrap enzyme --include-default-paths | |
| RUST_CONFIGURE_ARGS: >- | |
| --build=x86_64-pc-windows-gnullvm | |
| --enable-full-tools | |
| --enable-profiler | |
| --enable-llvm-link-shared | |
| DIST_REQUIRE_ALL_TOOLS: 1 | |
| CODEGEN_BACKENDS: llvm,cranelift | |
| <<: *job-windows | |
| - 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 | |
| <<: *job-windows |