Skip to content

Commit 11e24c3

Browse files
committed
Auto merge of rust-lang#134124 - MarcoIeni:split-llvm-jobs, r=<try>
CI: use free runners for x86_64-gnu-llvm jobs try-job: x86_64-gnu-llvm-19-1 try-job: x86_64-gnu-llvm-19-2 try-job: x86_64-gnu-llvm-18-1 try-job: x86_64-gnu-llvm-18-2
2 parents 5a6036a + 4f0e781 commit 11e24c3

File tree

6 files changed

+132
-11
lines changed

6 files changed

+132
-11
lines changed

src/ci/docker/host-x86_64/x86_64-gnu-llvm-18/Dockerfile

+3-2
Original file line numberDiff line numberDiff line change
@@ -59,5 +59,6 @@ COPY host-x86_64/dist-x86_64-linux/build-gccjit.sh /scripts/
5959

6060
RUN /scripts/build-gccjit.sh /scripts
6161

62-
COPY scripts/x86_64-gnu-llvm.sh /tmp/script.sh
63-
ENV SCRIPT /tmp/script.sh
62+
ARG SCRIPT_ARG
63+
COPY scripts/{SCRIPT_ARG} /tmp/script.sh
64+
ENV SCRIPT="/tmp/script.sh"

src/ci/docker/host-x86_64/x86_64-gnu-llvm-19/Dockerfile

+3-2
Original file line numberDiff line numberDiff line change
@@ -59,5 +59,6 @@ COPY host-x86_64/dist-x86_64-linux/build-gccjit.sh /scripts/
5959

6060
RUN /scripts/build-gccjit.sh /scripts
6161

62-
COPY scripts/x86_64-gnu-llvm.sh /tmp/script.sh
63-
ENV SCRIPT /tmp/script.sh
62+
ARG SCRIPT_ARG
63+
COPY scripts/{SCRIPT_ARG} /tmp/script.sh
64+
ENV SCRIPT="/tmp/script.sh"

src/ci/docker/scripts/x86_64-gnu-llvm.sh

-3
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,6 @@ if [[ -z "${PR_CI_JOB}" ]]; then
3939
library/std library/alloc library/core
4040
fi
4141

42-
# NOTE: intentionally uses all of `x.py`, `x`, and `x.ps1` to make sure they all work on Linux.
43-
../x.py --stage 2 test --skip src/tools/tidy
44-
4542
# Run the `mir-opt` tests again but this time for a 32-bit target.
4643
# This enforces that tests using `// EMIT_MIR_FOR_EACH_BIT_WIDTH` have
4744
# both 32-bit and 64-bit outputs updated by the PR author, before
+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#!/bin/bash
2+
3+
set -ex
4+
5+
if [ "$READ_ONLY_SRC" = "0" ]; then
6+
# `core::builder::tests::ci_rustc_if_unchanged_logic` bootstrap test ensures that
7+
# "download-rustc=if-unchanged" logic don't use CI rustc while there are changes on
8+
# compiler and/or library. Here we are adding a dummy commit on compiler and running
9+
# that test to make sure we never download CI rustc with a change on the compiler tree.
10+
echo "" >> ../compiler/rustc/src/main.rs
11+
git config --global user.email "[email protected]"
12+
git config --global user.name "dummy"
13+
git add ../compiler/rustc/src/main.rs
14+
git commit -m "test commit for rust.download-rustc=if-unchanged logic"
15+
DISABLE_CI_RUSTC_IF_INCOMPATIBLE=0 ../x.py test bootstrap \
16+
-- core::builder::tests::ci_rustc_if_unchanged_logic
17+
# Revert the dummy commit
18+
git reset --hard HEAD~1
19+
fi
20+
21+
# Only run the stage 1 tests on merges, not on PR CI jobs.
22+
if [[ -z "${PR_CI_JOB}" ]]; then
23+
../x.py --stage 1 test
24+
--skip tests
25+
--skip coverage-map
26+
--skip coverage-run
27+
--skip library
28+
--skip tidyselftest
29+
fi
30+
31+
../x.py --stage 2 test
32+
--skip tests
33+
--skip coverage-map
34+
--skip coverage-run
35+
--skip library
36+
--skip tidyselftest
+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#!/bin/bash
2+
3+
set -ex
4+
5+
if [ "$READ_ONLY_SRC" = "0" ]; then
6+
# `core::builder::tests::ci_rustc_if_unchanged_logic` bootstrap test ensures that
7+
# "download-rustc=if-unchanged" logic don't use CI rustc while there are changes on
8+
# compiler and/or library. Here we are adding a dummy commit on compiler and running
9+
# that test to make sure we never download CI rustc with a change on the compiler tree.
10+
echo "" >> ../compiler/rustc/src/main.rs
11+
git config --global user.email "[email protected]"
12+
git config --global user.name "dummy"
13+
git add ../compiler/rustc/src/main.rs
14+
git commit -m "test commit for rust.download-rustc=if-unchanged logic"
15+
DISABLE_CI_RUSTC_IF_INCOMPATIBLE=0 ../x.py test bootstrap \
16+
-- core::builder::tests::ci_rustc_if_unchanged_logic
17+
# Revert the dummy commit
18+
git reset --hard HEAD~1
19+
fi
20+
21+
# Only run the stage 1 tests on merges, not on PR CI jobs.
22+
if [[ -z "${PR_CI_JOB}" ]]; then
23+
../x.py --stage 1 test
24+
--skip compiler
25+
--skip src
26+
27+
# Run the `mir-opt` tests again but this time for a 32-bit target.
28+
# This enforces that tests using `// EMIT_MIR_FOR_EACH_BIT_WIDTH` have
29+
# both 32-bit and 64-bit outputs updated by the PR author, before
30+
# the PR is approved and tested for merging.
31+
# It will also detect tests lacking `// EMIT_MIR_FOR_EACH_BIT_WIDTH`,
32+
# despite having different output on 32-bit vs 64-bit targets.
33+
../x.py --stage 1 test tests/mir-opt --host='' --target=i686-unknown-linux-gnu
34+
35+
# Run `ui-fulldeps` in `--stage=1`, which actually uses the stage0
36+
# compiler, and is sensitive to the addition of new flags.
37+
../x.py --stage 1 test tests/ui-fulldeps
38+
39+
# Rebuild the stdlib with the size optimizations enabled and run tests again.
40+
RUSTFLAGS_NOT_BOOTSTRAP="--cfg feature=\"optimize_for_size\"" ../x.py --stage 1 test \
41+
library/std library/alloc library/core
42+
fi
43+
44+
../x.py --stage 2 test
45+
--skip compiler
46+
--skip src
47+
48+
# Run the `mir-opt` tests again but this time for a 32-bit target.
49+
# This enforces that tests using `// EMIT_MIR_FOR_EACH_BIT_WIDTH` have
50+
# both 32-bit and 64-bit outputs updated by the PR author, before
51+
# the PR is approved and tested for merging.
52+
# It will also detect tests lacking `// EMIT_MIR_FOR_EACH_BIT_WIDTH`,
53+
# despite having different output on 32-bit vs 64-bit targets.
54+
../x --stage 2 test tests/mir-opt --host='' --target=i686-unknown-linux-gnu
55+
56+
# Run the UI test suite again, but in `--pass=check` mode
57+
#
58+
# This is intended to make sure that both `--pass=check` continues to
59+
# work.
60+
../x.ps1 --stage 2 test tests/ui --pass=check --host='' --target=i686-unknown-linux-gnu

src/ci/github-actions/jobs.yml

+30-4
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ pr:
117117
ENABLE_GCC_CODEGEN: "1"
118118
# We are adding (temporarily) a dummy commit on the compiler
119119
READ_ONLY_SRC: "0"
120+
DOCKER_SCRIPT: x86_64-gnu-llvm.sh
120121
<<: *job-linux-16c
121122
- image: x86_64-gnu-tools
122123
<<: *job-linux-16c
@@ -312,16 +313,41 @@ auto:
312313
- image: x86_64-gnu-distcheck
313314
<<: *job-linux-8c
314315

315-
- image: x86_64-gnu-llvm-19
316+
# The x86_64-gnu-llvm-19 job is split into multiple jobs to run tests in parallel.
317+
# x86_64-gnu-llvm-19-1 skips tests that run in x86_64-gnu-llvm-19-2.
318+
- image: x86_64-gnu-llvm-19-1
316319
env:
317320
RUST_BACKTRACE: 1
318-
<<: *job-linux-8c
321+
IMAGE: x86_64-gnu-llvm-19
322+
DOCKER_SCRIPT: x86_64-gnu-llvm1.sh
323+
<<: *job-linux-4c
319324

320-
- image: x86_64-gnu-llvm-18
325+
# Skip tests that run in x86_64-gnu-llvm-19-2
326+
- image: x86_64-gnu-llvm-19-2
327+
env:
328+
RUST_BACKTRACE: 1
329+
IMAGE: x86_64-gnu-llvm-19
330+
DOCKER_SCRIPT: x86_64-gnu-llvm2.sh
331+
<<: *job-linux-4c
332+
333+
# The x86_64-gnu-llvm-18 job is split into multiple jobs to run tests in parallel.
334+
# x86_64-gnu-llvm-18-1 skips tests that run in x86_64-gnu-llvm-18-2.
335+
- image: x86_64-gnu-llvm-18-1
321336
env:
322337
RUST_BACKTRACE: 1
323338
READ_ONLY_SRC: "0"
324-
<<: *job-linux-8c
339+
IMAGE: x86_64-gnu-llvm-18
340+
DOCKER_SCRIPT: x86_64-gnu-llvm1.sh
341+
<<: *job-linux-4c
342+
343+
# Skip tests that run in x86_64-gnu-llvm-18-2
344+
- image: x86_64-gnu-llvm-18-2
345+
env:
346+
RUST_BACKTRACE: 1
347+
READ_ONLY_SRC: "0"
348+
IMAGE: x86_64-gnu-llvm-18
349+
DOCKER_SCRIPT: x86_64-gnu-llvm2.sh
350+
<<: *job-linux-4c
325351

326352
- image: x86_64-gnu-nopt
327353
<<: *job-linux-4c

0 commit comments

Comments
 (0)