about summary refs log tree commit diff
path: root/src/bootstrap
AgeCommit message (Collapse)AuthorLines
2025-03-13Rollup merge of #126856 - onur-ozkan:remove-rls, r=clubby789Matthias Krüger-58/+7
remove deprecated tool `rls` This tool has been deprecated for two years and now it only gives warning without doing anything useful. Zulip discussion: https://rust-lang.zulipchat.com/#narrow/stream/241545-t-release/topic/excluding.20rls.20from.20the.20release try-job: x86_64-gnu-distcheck
2025-03-12Rollup merge of #138390 - onur-ozkan:fix-invalid-tracing-log, r=jieyouxuMatthias Krüger-5/+1
fix incorrect tracing log Previous information is not correct.
2025-03-12Rollup merge of #138331 - nnethercote:use-RUSTC_LINT_FLAGS-more, ↵Matthias Krüger-16/+24
r=onur-ozkan,jieyouxu Use `RUSTC_LINT_FLAGS` more An alternative to the failed #138084. Fixes #138106. r? ````@jieyouxu````
2025-03-12Auto merge of #137612 - Kobzol:bootstrap-2024, r=onur-ozkanbors-53/+83
Update bootstrap to edition 2024 The stage0 compiler now supports edition 2024, so we can update bootstrap to it. I manually reviewed all the changes from `cargo fix --edition` and reverted most of them (`if let` -> `matches` changes and two unneeded usages of `use <>`). r? `@onur-ozkan` try-job: dist-x86_64-msvc
2025-03-12fix incorrect tracing logonur-ozkan-5/+1
Previous information is not correct. Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-03-12Rollup merge of #138313 - rustbot:docs-update, r=jieyouxuMatthias Krüger-0/+1
Update books ## rust-lang/book 11 commits in 4a01a9182496f807aaa5f72d93a25ce18bcbe105..81a976a237f84b8392c4ce1bd5fd076eb757a2eb 2025-02-27 22:10:41 UTC to 2025-02-24 18:36:27 UTC - Ch. 10: Make social media discussion generic. (rust-lang/book#4249) - Another Ch. 17 -> 18 fix (rust-lang/book#4247) - Ch. 05: further tweak to wording about `user1` availability (rust-lang/book#4246) - Ch. 02: Fix rand version mistake (from testing) (rust-lang/book#4245) - Ch. 19: Correct the discussion of `fn` type and closures (rust-lang/book#4244) - Edition maintenance: scripting the updates for future work (rust-lang/book#4243) - Ch. 17: fresh-eyes edits (rust-lang/book#4242) - Ch. 17: drop lifetime not required in 2024 Edition (rust-lang/book#4212) - Appendix B, Operators: Replace “member access” with “field access” and “method call”. (rust-lang/book#4240) - Update to Rust 1.85 and 2024 Edition! (rust-lang/book#4241) - Chapter 1: fix 'four things' now that spacing is not emphasized (rust-lang/book#4239) ## rust-lang/edition-guide 2 commits in daa4b763cd848f986813b5cf8069e1649f7147af..1e27e5e6d5133ae4612f5cc195c15fc8d51b1c9c 2025-03-04 22:02:00 UTC to 2025-02-26 12:47:41 UTC - Mention both `rustfmt.toml` and `.rustfmt.toml` (rust-lang/edition-guide#372) - Fix a typo (rust-lang/edition-guide#370) ## rust-lang/nomicon 1 commits in 8f5c7322b65d079aa5b242eb10d89a98e12471e1..b4448fa406a6dccde62d1e2f34f70fc51814cdcc 2025-03-01 04:48:05 UTC to 2025-03-01 04:48:05 UTC - Update to 2024 edition (rust-lang/nomicon#481) ## rust-lang/reference 8 commits in 615b4cec60c269cfc105d511c93287620032d5b0..dda31c85f2ef2e5d2f0f2f643c9231690a30a626 2025-03-09 14:25:25 UTC to 2025-02-25 16:07:17 UTC - Rework note blocks and change admonition rendering (rust-lang/reference#1754) - Add more information on rules and tests (rust-lang/reference#1753) - Mention `explicit_builtin_cfgs_in_flags` lint cfg chapter (rust-lang/reference#1747) - fixup test links (rust-lang/reference#1741) - Fix diagnostics typo: `do_no_recommend` -> `do_not_recommend` (rust-lang/reference#1749) - panic runtime and C-unwind documentation (rust-lang/reference#1226) - Closures: fix example of desugaring (rust-lang/reference#1743) - Update boolean.md, Comment breaks paragraph format (rust-lang/reference#1744) ## rust-lang/rust-by-example 1 commits in 66543bbc5b7dbd4e679092c07ae06ba6c73fd912..6f69823c28ae8d929d6c815181c73d3e99ef16d3 2025-03-09 13:12:24 UTC to 2025-03-09 13:12:24 UTC - Update mdbook to 0.4.46 (rust-lang/rust-by-example#1914) try-job: x86_64-gnu-distcheck
2025-03-12add change entry for rls removalonur-ozkan-0/+5
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-03-12remove rls support from bootstraponur-ozkan-58/+2
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-03-11Rollup merge of #138245 - onur-ozkan:ci-rustc-test-fix, r=jieyouxuMatthias Krüger-2/+11
stabilize `ci_rustc_if_unchanged_logic` test for local environments Fixes #138239
2025-03-11Rollup merge of #138051 - Kobzol:download-ci-gcc, r=onur-ozkanMatthias Krüger-120/+261
Add support for downloading GCC from CI This PR adds a new bootstrap config section called `gcc` and implements a single config `download-ci-gcc`. Its behavior is similar to `download-ci-llvm`. Since https://github.com/rust-lang/rust/pull/137667, we distribute a CI component that contains the prebuilt `libgccjit.so` library on x64 Linux. With `download-ci-gcc`, this component is downloaded from CI to avoid building GCC locally. This is an MVP of this functionality, designed for local usage. This PR does not enable this functionality on the LLVM 18 PR CI job which builds `cg_gcc`, and does not implement more complex detection logic. It simply uses `false` (build locally) or `true` (download from CI if you're on the right target, if CI download fails, then bootstrap fails). The original LLVM CI download functionality has a lot of features and complexity, which we don't need for GCC (yet). I don't like how the LLVM CI stuff is threaded through multiple parts of bootstrap, so with GCC I would like to take a more centralized approach, where the `build::Gcc` step handles download from CI internally. This means that: - For the rest of bootstrap, it should be transparent whether GCC was built locally or downloaded from CI. - GCC is not downloaded eagerly unless you actually requested GCC (either you requested `x build gcc` or you asked to build/test the GCC backend). This approach will require some modifications once we extend this feature, but so far I like this approach much more than putting this stuff into `Config[::parse]`, which already does a ton of stuff that it arguably shouldn't (but it's super difficult to extract its logic out). This PR is an alternative to https://github.com/rust-lang/rust/pull/130749, which did a more 1:1 copy of the `download-ci-llvm` logic. r? ``@onur-ozkan``
2025-03-11Fix `cargo vendor` not working without `rustc` installedEric Huss-0/+1
This fixes an issue where vendoring would fail if `rustc` is not in PATH. This happens with the update of some workspaces to the 2024 edition which need to run `rustc -Vv` to determine which rust version is in use.
2025-03-11Do not download GCC in testsJakub Beránek-6/+14
2025-03-11Add missing unsafe blockJakub Beránek-29/+32
2025-03-11Add `unreachable_pub` to `RUSTC_LINT_FLAGS` for `compiler/` crates.Nicholas Nethercote-0/+1
And fix the new errors in the handful of crates that didn't have a `#![warn(unreachable_pub)]`.
2025-03-11Use `RUSTC_LINT_FLAGS` more.Nicholas Nethercote-16/+23
For the `Mode::Rustc` lints as well. Because, unlike `RUSTC_FLAGS`, `RUSTC_LINT_FLAGS` is not ignored for proc macro crates. Fixes #138106.
2025-03-10Target definition for `wasm32-wali-linux-musl` to support the Wasm LinuxArjun Ramesh-17/+37
Interface This commit does not patch libc, stdarch, or cc
2025-03-10stabilize `ci_rustc_if_unchanged_logic` test for local environmentsonur-ozkan-2/+11
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-03-10Add change tracker entryJakub Beránek-0/+5
2025-03-10Implement downloading GCC from CIJakub Beránek-20/+104
2025-03-10Add `download-ci-gcc-stamp` fileJakub Beránek-0/+4
2025-03-10Add `[gcc] download-ci-gcc` optionJakub Beránek-1/+27
2025-03-10Add `gcc` bootstrap config sectionJakub Beránek-1/+8
2025-03-10Refactor GCC compilationJakub Beránek-105/+112
2025-03-10Revert "Use workspace lints for crates in `compiler/` #138084"许杰友 Jieyou Xu (Joe)-9/+4
Revert <https://github.com/rust-lang/rust/pull/138084> to buy time to consider options that avoids breaking downstream usages of cargo on distributed `rustc-src` artifacts, where such cargo invocations fail due to inability to inherit `lints` from workspace root manifest's `workspace.lints` (this is only valid for the source rust-lang/rust workspace, but not really the distributed `rustc-src` artifacts). This breakage was reported in <https://github.com/rust-lang/rust/issues/138304>. This reverts commit 48caf81484b50dca5a5cebb614899a3df81ca898, reversing changes made to c6662879b27f5161e95f39395e3c9513a7b97028.
2025-03-09Rollup merge of #138233 - smmalis37:no-advapi32, r=ChrisDentonMatthias Krüger-2/+4
Windows: Don't link std (and run-make) against advapi32, except on win7 Std no longer depends on any functionality provided by advapi32, so we can remove it from the list of external libraries we link against. Except, the win7 targets do still rely on advapi32-provided functionality. This PR therefore moves linking against it to only occur on win7 targets, so that no new uses of it slip in without being noticed.
2025-03-09Rollup merge of #138232 - Kobzol:gcc-reduce-verbosity, r=GuillaumeGomezMatthias Krüger-2/+11
Reduce verbosity of GCC build log It was a bit too spammy before. Fixes: https://github.com/rust-lang/rust/issues/138213 r? ``@GuillaumeGomez``
2025-03-09Rollup merge of #138216 - Zalathar:any-debug, r=onur-ozkanMatthias Krüger-2/+75
bootstrap: Fix stack printing when a step cycle is detected When bootstrap detects a step dependency cycle (which represents a bootstrap bug), it is supposed to print out the contents of the step stack as part of its panic message. However, while investigating #138205 it was found that bootstrap was actually printing out several copies of `Any { .. }`, because that is the Debug implementation for `dyn Any`. This is sadly not very helpful. This PR fixes that problem by introducing a `trait AnyDebug: Any + Debug` that delegates to the underlying type's Debug implementation, while still allowing downcasting via Any. --- The fixed behaviour can be verified manually (and is tested automatically) via a new dummy command, `./x run cyclic-step`: ``` $ x run cyclic-step Building bootstrap Finished `dev` profile [unoptimized] target(s) in 0.02s thread 'main' panicked at src/bootstrap/src/core/builder/mod.rs:1521:17: Cycle in build detected when adding CyclicStep { n: 0 } CyclicStep { n: 0 } CyclicStep { n: 1 } CyclicStep { n: 2 } note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace Build completed unsuccessfully in 0:00:00 ```
2025-03-09Rollup merge of #138084 - nnethercote:workspace-lints, r=jieyouxuMatthias Krüger-4/+9
Use workspace lints for crates in `compiler/` This is nicer and hopefully less error prone than specifying lints via bootstrap. r? ``@jieyouxu``
2025-03-09Auto merge of #137541 - onur-ozkan:fix-cargo-clippy-bin, r=jieyouxubors-4/+15
add `tool::CargoClippy` and `tool::Cargofmt` binary to target sysroot When running `x build clippy`, we expect `stage1-tool-bin/cargo-clippy` and `stage2/bin/cargo-clippy` to be the same, but they aren't. This happens because `tool::CargoClippy` doesn't place its binary in the `stage2` directory. As a result, `stage1-tool-bin/cargo-clippy` comes from `tool::CargoClippy`, while `stage2/bin/cargo-clippy` comes from `tool::Cargo`. Same applies for `tool::Cargofmt`. This PR fixes the issue by adding `tool::CargoClippy` and ``tool::Cargofmt`` binaries to the expected sysroot and makes sure both directories share the same binary. To test this, run `x build --stage 2 compiler clippy rustfmt`, link the stage2 sysroot with rustup, and then call `cargo +stage2 fmt` and `cargo +stage2 clippy` on any rust project (it wouldn't work without this PR).
2025-03-08re-add gnu lib and tweak commentSteven Malis-2/+5
2025-03-08Don't link against advapi32, except on win7.Steven Malis-1/+0
2025-03-08Reduce verbosity of GCC build logJakub Beránek-2/+11
2025-03-08Auto merge of #138224 - onur-ozkan:fix-multiple-candidates, r=jieyouxubors-3/+11
skip `compile::Std` and `compile::Rustc` on `forced_compiler` Fixes https://github.com/rust-lang/rust/issues/138220 Set `download-rustc = true/false` and run `x test tests/ui/meta/no_std-extern-libc.rs --force-rerun` to debug it.
2025-03-08skip `compile::Std` and `compile::Rustc` on `forced_compiler`onur-ozkan-3/+11
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-03-08Auto merge of #138208 - jhpratt:rollup-hlqyu51, r=jhprattbors-5/+14
Rollup of 5 pull requests Successful merges: - #136642 (Put the alloc unit tests in a separate alloctests package) - #137528 (Windows: Fix error in `fs::rename` on Windows 1607) - #137685 (self-contained linker: conservatively default to `-znostart-stop-gc` on x64 linux) - #137757 (On long spans, trim the middle of them to make them fit in the terminal width) - #138189 (Mention `env` and `option_env` macros in `std::env::var` docs) r? `@ghost` `@rustbot` modify labels: rollup
2025-03-08Update bootstrap to edition 2024Jakub Beránek-24/+51
2025-03-08bootstrap: Fix stack printing when a step cycle is detectedZalathar-2/+75
2025-03-08Rollup merge of #136642 - bjorn3:separate_alloctest_crate, r=cuviperJacob Pratt-5/+14
Put the alloc unit tests in a separate alloctests package Same rationale as https://github.com/rust-lang/rust/pull/135937. This PR has some extra complexity though as a decent amount of tests are testing internal implementation details rather than the public api. As such I opted to include the modules containing the types under test using `#[path]` into the alloctests package. This means that those modules still need `#[cfg(test)]`, but the rest of liballoc no longer need it.
2025-03-08Auto merge of #138205 - onur-ozkan:fix-build-cycle, r=jieyouxubors-17/+21
handle precompiled compiler more properly Fixes the build cycle problem reported on [#t-infra/bootstrap > Cycle on &#96;aarch64-apple&#96;](https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap/topic/Cycle.20on.20.60aarch64-apple.60/with/504231609).
2025-03-08update doc-comment for `forced_compiler`onur-ozkan-2/+2
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-03-08handle precompiled compiler more properlyonur-ozkan-15/+19
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-03-07Rollup merge of #137537 - jieyouxu:daily-rmake, r=KobzolJacob Pratt-1/+1
Prevent `rmake.rs` from using unstable features, and fix 3 run-make tests that currently do Addresses (mostly) #137532. Follow-up to #137373. ### Summary - Fix 3 run-make tests that currently use unstable features: 1. `tests/run-make/issue-107495-archive-permissions/rmake.rs` uses `#![feature(rustc_private)]` for `libc` on `unix`, but `run_make_support` already exports `libc`, so just use that. 2. `tests/run-make/cross-lang-lto/rmake.rs` uses `#![feature(path_file_prefix)]` for convenience, replaced with similar filename prefix logic. 3. `tests/run-make/broken-pipe-no-ice/rmake.rs` uses `#![feature(anonymous_pipe)]` for anonymous pipes. This is more complicated[^race-condition], and I decided to temporarily introduce a dependency on [`os_pipe`] before std's `anonymous_pipe` library feature is stabilized[^pipe-stab]. I left a FIXME tracked by #137532 to make the switch once `anonymous_pipe` stabilizes and reaches beta. - Use `RUSTC_BOOTSTRAP=-1` when building `rmake.rs` to have the stage 0 rustc reject any unstable features used in `rmake.rs`. - The requirement that `rmake.rs` may not use any unstable features is now documented in rustc-dev-guide. - This PR does not impose `RUSTC_BOOTSTRAP=-1` when building `run-make-support`, but I suppose we could. r? `@Kobzol` try-job: x86_64-msvc-1 try-job: x86_64-mingw-1 [`os_pipe`]: https://github.com/oconnor663/os_pipe.rs [^race-condition]: We can't just try to spawn `rustc` and immediate close the stderr handle because of race condition, as there's no guarantee `rustc` will not try to print to stderr before the handle gets closed. [^pipe-stab]: In-progress stabilization PR over at https://github.com/rust-lang/rust/pull/135822.
2025-03-08Specify rust lints for `compiler/` crates via Cargo.Nicholas Nethercote-4/+9
By naming them in `[workspace.lints.rust]` in the top-level `Cargo.toml`, and then making all `compiler/` crates inherit them with `[lints] workspace = true`. (I omitted `rustc_codegen_{cranelift,gcc}`, because they're a bit different.) The advantages of this over the current approach: - It uses a standard Cargo feature, rather than special handling in bootstrap. So, easier to understand, and less likely to get accidentally broken in the future. - It works for proc macro crates. It's a shame it doesn't work for rustc-specific lints, as the comments explain.
2025-03-07Move all alloc integration tests to a new alloctests cratebjorn3-5/+14
2025-03-07Auto merge of #138148 - onur-ozkan:fix-llvm-bitcode-build, r=jieyouxubors-4/+4
use target compiler on llvm-bitcode-linker The build compiler is already resolved inside the `ToolBuild` step, so we should pass only the target compilers for `Mode::ToolRustc` tools. Fixes https://github.com/rust-lang/rust/issues/138123 r? ghost try-job: dist-powerpc64le-linux
2025-03-07Apply `--cfg windows_raw_dylib` for bootstrap tools tooJieyou Xu-1/+1
This is already applied for rustc/std tools. This is needed to make `windows` crates avoid trying to depend on a generated `windows.0.xx.0.lib`.
2025-03-07use target compiler on llvm-bitcode-linkeronur-ozkan-4/+4
The build compiler is already resolved inside the `ToolBuild` step, so we should pass only the target compilers for `Mode::ToolRustc` tools. Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-03-06Rollup merge of #138078 - moxian:rember-warns, r=KobzolMichael Goulet-6/+7
Reduce the noise of bootstrap changelog warnings in --dry-run mode Presently x.py displays "There have been changes to x.py since you last updated:" note only once when run normally, but on every invocation when run with `--dry-run`. The disparity is not exactly intentonal, but just a historical accident. It was made to be printed once in https://github.com/rust-lang/rust/pull/117815 via storing `.last-warned-change-id` on disk in `{config.out}/bootstrap` (i.e. `build/bootstrap`) directory. But that didn't quite work for `--dry-run`, since `{config.out}/bootsrap` points to `build/tmp-dry-run/bootstrap` which *isn't* created in dry-run mode, so file creation fails. This got fixed in https://github.com/rust-lang/rust/pull/118789 and now `--dry-run` does not save `.last-warned-change-id` at all. (Nor does it read it, since it cannot know to read from non-dry-run location) This PR simply stops displaying the changelog altogether in --dry-run mode. <details> <summary>previous attempt (outdated)</summary> This PR takes a different approach, and instead of not-writing the stamp in `--dry-run` mode it instead tries harder to yes-write it, and, specifically, creates `build/tmp-dry-run/bootstrap` directory to do so. If neccessary (i.e. if there are changes newer than the `change-id` stamp of config.toml to warn about). Note that `build/tmp-dry-run/` was *already* being created, so making an extra `boostrap` sub-folder should not meaningfully pollute the build dir. </details> (Apologies for the, perhaps, excessively wordy PR, I'm new to this)
2025-03-06Rollup merge of #138041 - ↵Michael Goulet-3/+3
thaliaarchi:use-prelude-size-of.boostrap-compiletest, r=jieyouxu bootstrap and compiletest: Use `size_of_val` from the prelude instead of imported Use `std::mem::size_of_val` from the prelude instead of importing or qualifying it. This function was added to all preludes in Rust 1.80. r? ``@jieyouxu``
2025-03-06Auto merge of #138039 - onur-ozkan:handle-forced-compiler-on-tools, r=jieyouxubors-86/+145
handle forced compiler and revert #137476 Fixes https://github.com/rust-lang/rust/issues/138004 I would appreciate it if we could measure CI pipelines with the current changes to see if this reduces recent CI overhead. cc `@rust-lang/infra` try-job: dist-powerpc64le-linux