Commit graph

2492 commits

Author SHA1 Message Date
Miguel Ojeda
6e26762224 CI: rfl: move job forward to Linux v6.15-rc4
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
2025-04-29 17:40:17 +02:00
Guillaume Gomez
117202e535
Rollup merge of #140349 - marcoieni:codebuild-linux-large-runners, r=Kobzol
ci: use aws codebuild for the `dist-x86_64-linux` job

try-job: dist-x86_64-linux
2025-04-28 13:30:47 +02:00
Guillaume Gomez
64b3643454
Rollup merge of #140347 - marcoieni:free-disk-codebuild, r=jdno
ci: clean more disk space in codebuild

try-job: dist-arm-linux
2025-04-28 13:30:46 +02:00
MarcoIeni
480d007616
ci: use aws codebuild for the dist-x86_64-linux job 2025-04-28 08:48:10 +02:00
Chris Denton
52b846dca3
Rollup merge of #138737 - Ayush1325:r-efi-update, r=tgross35
uefi: Update r-efi

- Bump up the version to 5.2.0

try-job: x86_64-gnu-distcheck
try-job: x86_64-gnu
try-job: test-various
2025-04-28 01:58:47 +00:00
Chris Denton
009a84fbe1
Rollup merge of #138395 - Kobzol:ci-download-gcc, r=Mark-Simulacrum
Download GCC from CI on test builders

This should reduce the duration of the `x86_64-gnu-llvm-18` job, which runs on PR CI, which is currently the only one that builds GCC (outside of the x64 dist builder).

Since we handle the GCC download in the GCC step, and not eagerly in config, we can set this flag globally across all test builders, as it won't do anything unless they actually try to build GCC.

Opening as a draft to test if it works on CI, because I still need to implement logic to avoid the download if there are any local modifications to GCC (essentially the "if-unchanged" mode, although I want to try something a bit different).

r? ```@ghost```
2025-04-28 01:58:47 +00:00
MarcoIeni
474466dc16
ci: clean more disk space in codebuild 2025-04-27 11:03:53 +02:00
Ayush Singh
d40d424d43
CI: docker: host-x86_64: test-various: uefi_qemu_test: Update r-efi
- Update r-efi to 5.2.0

Signed-off-by: Ayush Singh <ayush@beagleboard.org>
2025-04-27 14:07:33 +05:30
Matthias Krüger
7ba71d38d8
Rollup merge of #140148 - marcoieni:ci-aws-codebuild, r=Kobzol
CI: use aws codebuild for job dist-arm-linux

try-job: dist-arm-linux
2025-04-25 00:53:58 +02:00
MarcoIeni
18c3370e5d
CI: use aws codebuild for job dist-arm-linux 2025-04-23 13:31:24 +02:00
Jakub Beránek
d4011ae043 Download GCC from CI on test builders 2025-04-23 11:04:56 +02:00
bors
645d0ad2a4 Auto merge of #138591 - Kobzol:git-ci, r=Mark-Simulacrum
Refactor git change detection in bootstrap

While working on https://github.com/rust-lang/rust/pull/138395, I finally found the courage to delve into the insides of git path change detection in bootstrap, which is used (amongst other things) to detect if we should rebuilt od download `[llvm|rustc|gcc]`. I found it a bit hard to understand, and given that this code was historically quite fragile, I thought that it would be better to rebuild it from scratch.

The previous approach had a bunch of limitations:
- It separated the computation of "are there local changes?" and "what upstream SHA should we use?" even though these two things are intertwined.
- It used hacks to work around what happens on CI.
- It had special cases for CI scattered throughout the codebase, rather than centralized in one place.
- It wasn't documented enough and didn't have tests for the git behavior.

The current approach should hopefully resolve all of that. I implemented a single entrypoint called `check_path_modifications` (naming bikeshed pending, half of the time I spend on this PR was thinking about names, as it's quite tricky here..) that explicitly receives a mode of operation (in CI or outside CI), and accordingly figures out that upstream SHA that we should use for downloading artifacts and it also figures out if there are any local changes. Users of this function can then use this unified output to implement `download-ci-X` and other functionality. Notably, this change detection no longer uses `git merge-base`, which makes it easier to use and doesn't require setting up remotes.

I also added a bunch of integration tests that literally spawn a git repository on disk and then check that the function can deal with various situations (PR CI, auto/try CI, local builds).

After I built this inner layer, I used it for downloading GCC, LLVM and rustc. The latter two (and especially rustc) were using the `last_modified_commit` function before, but in all cases but one this function was actually only used to check if there are any local changes, which was IMO confusing. The LLVM handling would deserve a bit of refactoring, but that's a larger change that can be done as a follow-up.

I hope that the implementation is now clear and easy to understand, so that in combination with the tests we can have more confidence that it does what we want. I tried to include a lot of documentation in the code, so I won't be repeating the actual implementation details here, if there are any questions, I'll add the answers to the documentation too :)

The new approach explicitly supports three scenarios:
- Running on PR CI, where we have one upstream bors parent commit and one PR merge commit made by GitHub.
- Running on try/auto CI, where we have one upstream bors parent commit and one PR merge commit made by bors.
- Running locally, where we assume that we have at least one upstream bors parent commit in our git history.

I removed the handling of upstreams on CI, as I think that it shouldn't be needed and I considered it to be a hack. However, it's possible that there are other use-cases that I haven't considered, so I want to ask around if people have other situations than the three use-cases described above. If there are other such use-cases, I would like to include them in the new centralized implementation and add them to the git test suite, rather than going back to the old ways :)

In particular, the code before relied on `git merge-base`, but I don't see why we can't just lookup the most recent bors commit and assume that is a merge commit that is also upstream? I might be running into Chesterton's Fence here :)

CC `@pietroalbini` To make sure that this won't break downstream users of Rust's CI.

Best reviewed commit by commit.

Companion PRs:
- For testing beta: https://github.com/rust-lang/rust/pull/138597

r? `@onur-ozkan`

Fixes: https://github.com/rust-lang/rust/issues/101907

try-job: x86_64-gnu-aux
try-job: aarch64-gnu
try-job: dist-x86_64-apple
2025-04-23 03:10:04 +00:00
Jakub Beránek
432c4a80e9 Remove the add_dummy_commit.sh hack
The new git tests should be enough to check this scenario. We should ideally not be creating dummy commits on CI.
2025-04-20 09:35:39 +02:00
Jakub Beránek
64795ecb87 Remove setup-upstream-remote.sh and upstream handling.
It shouldn't be needed anymore.
2025-04-20 09:13:56 +02:00
Jakub Beránek
de9d8e9f71 Remove stray newline from post-merge report 2025-04-20 08:57:28 +02:00
Jakub Beránek
b18e373053 Reduce duplicated test prefixes in nested subdirectories
`assembly/asm` contained a test named `asm/aarch64-el2vmsa.rs`, while it should have been only `arch64-el2vmsa.rs`.
2025-04-18 12:44:39 +02:00
Jakub Beránek
65ce38a4c9 Add a note that explains the counts 2025-04-18 12:32:19 +02:00
Jakub Beránek
cecf16785f
Add a note about the test dashboard to the post-merge report 2025-04-17 17:38:15 +02:00
Jakub Beránek
08cb187d26
Turn test_dashboard into a file 2025-04-17 17:26:40 +02:00
Jakub Beránek
aa9cb70190
Print number of root tests and subdirectories 2025-04-17 17:25:12 +02:00
Jakub Beránek
d2c1763336
Create a macro for rendering test results 2025-04-17 17:18:38 +02:00
Jakub Beránek
1a6e0d52e5
Render test revisions separately 2025-04-17 17:14:26 +02:00
Jakub Beránek
4b310338f8
Add a note about how to find tests that haven't been executed anywhere. 2025-04-17 16:35:39 +02:00
Jakub Beránek
a326afd5dd
Add buttons for expanding and collapsing all test suites 2025-04-17 16:30:23 +02:00
Jakub Beránek
c8a882b7b5
Add command to citool for generating a test dashboard 2025-04-17 16:18:24 +02:00
Jakub Beránek
111c15c48e
Extract function for normalizing path delimiters to utils 2025-04-17 16:18:01 +02:00
Jakub Beránek
d14df2652d
Make parent in download_auto_job_metrics optional 2025-04-17 16:18:01 +02:00
Matthias Krüger
2e363ce1df
Rollup merge of #139859 - marcoieni:rename-macos-runner, r=Kobzol
CI: rename MacOS runner

r? ``@Kobzol``
2025-04-15 21:16:06 +02:00
MarcoIeni
73065b9484
CI: rename MacOS runner 2025-04-15 12:28:32 +02:00
Josh Stone
c2712bcd2d ci: add runners for vanilla LLVM 20
Ubuntu 25.04 has `llvm-20` packages that we can start testing with.
The `Dockerfile` is otherwise the same as the `llvm-18`/`19` runners.
2025-04-14 16:13:04 -07:00
Jakub Beránek
3da0a19a29
Improve wording of post-merge report 2025-04-14 16:27:33 +02:00
oyvindln
77116881a8 update miniz_oxide to 0.8.8
0.8.7 can trigger a panic when debug assertions are enabled when used via flate2 in some cases
2025-04-10 00:30:53 +02:00
Matthias Krüger
704d301b43
Rollup merge of #139481 - Kobzol:post-merge-links, r=marcoieni
Add job summary links to post-merge report

This should make it much easier to investigate the individual job test/duration changes.

The GitHub API handling is a bit crude, but I didn't want to include octocrab, because it more than doubles the current number of dependencies of `citool`...

Can be tested with:
```bash
$ cargo run --manifest-path src/ci/citool/Cargo.toml post-merge-report bad13a970a 1e008dd5d8
```

r? ```@marcoieni```
2025-04-09 14:52:39 +02:00
Stuart Cook
ab80f575c4
Rollup merge of #139386 - onur-ozkan:configurable-compiletest-libtest, r=jieyouxu,kobzol
make it possible to use stage0 libtest on compiletest

With https://github.com/rust-lang/rust/pull/119899, building the library tree will require a stage 1 compiler. This is because `compiletest` is defined as a `ToolStd` (since https://github.com/rust-lang/rust/pull/68019) in order to use the in-tree library. As a result, https://github.com/rust-lang/rust/pull/119899 makes certain development workflows more difficult as changes on the compiler tree will now require recompiling `compiletest` each time.

This PR allows switching `ToolStd` to `ToolBootstrap` with a simple boolean option in `bootstrap.toml` to allow `compiletest` to use the stage 0 `libtest` instead.

The changes under `src/ci` are clearly intended to make sure that `compiletest` doesn't break during future bootstrap beta bumps.
2025-04-08 20:55:08 +10:00
Jakub Beránek
6ece1de0cd Add job summary links to post-merge report
This should make it much easier to investigate the individual job changes.
2025-04-07 17:42:44 +02:00
Jakub Beránek
1a4863421b Sort job duration changes by absolute duration
It was supposed to be like this from the start, but I forgot to apply the `abs` operation, as I got sidetracked with how to actually compare floats...
2025-04-07 12:52:09 +02:00
onur-ozkan
c8306650ba enable in-tree std on some runners
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-04-07 10:08:08 +03:00
Josh Stone
12167d7064 Update the minimum external LLVM to 19 2025-04-05 11:44:38 -07:00
Noratrieb
6a1f57d095 Demote i686-pc-windows-gnu to Tier 2
In accordance with RFC 3771.

I also added a stub doc page for the target and renamed the
windows-gnullvm page for consistency.
2025-04-02 21:40:58 +02:00
Jakub Beránek
27cca0a161 Add CI metadata to bootstrap metrics
This will allow us to provide links to CI workflows, jobs and summaries in the post-merge analysis report.
2025-03-27 17:03:08 +01:00
Jakub Beránek
a37cef9ee6 Add a note about interpreting job duration changes 2025-03-27 11:38:54 +01:00
Jakub Beránek
4a43675353 Add cache for job metrics 2025-03-27 11:38:54 +01:00
Jakub Beránek
a3bafca14a Add job duration changes stats in post-merge analysis 2025-03-27 11:38:49 +01:00
Stuart Cook
2ae5d34ea0
Rollup merge of #138930 - Kobzol:analyze-bootstrap-diffs, r=marcoieni
Add bootstrap step diff to CI job analysis

This PR adds another analysis to the job analysis report in GitHub summary. It compares (diffs) bootstrap steps executed by the parent run and by the current commit. This will help us figure out if the bootstrap invocation did something different than before, and also how did the duration of individual steps and bootstrap invocations change.

Can be tested on the https://github.com/rust-lang/rust/pull/119899 PR like this:
```bash
$ curl https://ci-artifacts.rust-lang.org/rustc-builds/3d3394eb64ee2f99ad1a2b849b376220fd38263e/metrics-mingw-check.json > metrics.json
$ cargo run --manifest-path src/ci/citool/Cargo.toml postprocess-metrics metrics.json --job-name mingw-check --parent 961351c76c > out.md
```

r? `@marcoie`
2025-03-26 19:40:30 +11:00
Jakub Beránek
813783e711 Add diff of bootstrap steps 2025-03-25 16:14:08 +01:00
Jakub Beránek
e9ddf54d16 Group test diffs by stage in post-merge analysis 2025-03-22 14:00:30 +01:00
Jakub Beránek
e288faa4b0 Disable CI mode when checking default bootstrap profiles 2025-03-21 12:18:51 +01:00
bors
a7fc463dd8 Auto merge of #138693 - matthiaskrgr:rollup-ejq8mwp, r=matthiaskrgr
Rollup of 10 pull requests

Successful merges:

 - #136177 (clarify BufRead::{fill_buf, consume} docs)
 - #138654 (Remove the regex dependency from coretests)
 - #138655 (rustc-dev-guide sync)
 - #138656 (Remove double nesting in post-merge workflow)
 - #138658 (CI: mirror alpine and centos images to ghcr)
 - #138659 (coverage: Don't store a body span in `FunctionCoverageInfo`)
 - #138661 (Revert: Add *_value methods to proc_macro lib)
 - #138670 (Remove existing AFIDT implementation)
 - #138674 (Various codegen_llvm cleanups)
 - #138684 (use then in docs for `fuse` to enhance readability)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-03-19 12:39:34 +00:00
bors
1370611c0a Auto merge of #138690 - jieyouxu:temp-disable-fuchsia, r=Kobzol
Temporarily disable Fuchsia test job to unblock queue

See <https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/fuchsia.20failure/with/506637259> for efforts to fix the test job.

This PR temporarily disables the Fuchsia test job to unblock the queue, so that neither the Fuchsia maintainers nor T-infra maintainers should feel pressured to fix the job ASAP.

Please feel free to re-enable once the test job is fixed.
FYI `@erickt` since you or other Fuchsia maintainers will need to revert this change to merge Fuchsia test job fixes in the future.

r? infra-ci
2025-03-19 06:16:45 +00:00
Jieyou Xu
351e0f7a31
Temporarily disable Fuchsia test job to unblock queue
See
<https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/fuchsia.20failure/with/506637259>
for efforts to fix the test job.
2025-03-19 13:43:34 +08:00