Commit graph

7222 commits

Author SHA1 Message Date
bors
df8102fe5f Auto merge of #142002 - onur-ozkan:follow-ups2, r=jieyouxu
redesign stage 0 std follow-ups part2

Fixes three bugs:

1. `x check` fails when run on rustdoc without `download-rustc` enabled. (1st commit)
2. `x check` fails when run on the compiler with `download-rustc` enabled. (2nd commit)
3. `x test library` fails with `download-rustc` enabled. (3rd commit)

Fixes rust-lang/rust#142018 (case 1)
Fixes https://github.com/rust-lang/rust/issues/141983 (case 3)
2025-06-04 14:15:44 +00:00
onur-ozkan
7af12a19a8 remove outdated RUSTC_SYSROOT handling for ci-rustc
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-06-04 07:16:25 +03:00
Aleksey Kliger
556c0962ed bootstrap: don't symlink source dir into stage0 sysroot
In StdLink::run we subsequently recursively copy the initial sysroot
lib directory into the stage0-sysroot lib directory.  If the initial
sysroot is a toolchain that includes the `rust-src` component (in
lib/rustlib/src/rust), if we add this symlink, that recursive copy
will overwrite the repo sources with the toolchain's sources.
2025-06-04 00:06:01 -04:00
onur-ozkan
e66948c4fe make it possible to request stage 0 std with Builder::ensure
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-06-04 06:58:28 +03:00
onur-ozkan
bded7010e8 run check::Std as the final step
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-06-04 06:57:12 +03:00
bors
a124fb3cb7 Auto merge of #141961 - matthiaskrgr:rollup-r09j2sp, r=matthiaskrgr
Rollup of 8 pull requests

Successful merges:

 - rust-lang/rust#141724 (fix(rust-lang/rust#141141): When expanding `PartialEq`, check equality of scalar types first.)
 - rust-lang/rust#141833 (`tests/ui`: A New Order [2/N])
 - rust-lang/rust#141861 (Switch `x86_64-msvc-{1,2}` back to Windows Server 2025 images)
 - rust-lang/rust#141914 (redesign stage 0 std follow-ups)
 - rust-lang/rust#141918 (Deconstruct values in the THIR visitor)
 - rust-lang/rust#141923 (Update books)
 - rust-lang/rust#141931 (Deconstruct values in the THIR visitor)
 - rust-lang/rust#141956 (Remove two trait methods from cg_ssa)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-06-03 16:31:44 +00:00
bors
aae43c4532 Auto merge of #136942 - Kobzol:stage0-sccache, r=jieyouxu
Use ccache for stage0 tool builds

Now after the stage0 redesign, we can actually start ccaching the build of the compiler itself. We can also cache the bootstrap tools, since these are also built with the stage0 compiler.

Stage0 compiler builds are now being cached: https://github.com/rust-lang/rust/actions/runs/15397246267#summary-43321151192 (`..bootstrap::core::build_steps::compile::Rustc	483.10s	40.41s	-91.6%`). It's not a gigantic win everywhere, but it should help. It seems to make the Linux jobs ~10 minute faster. It should be especially useful on PR builds after https://github.com/rust-lang/rust/pull/141948.

r? `@jieyouxu`

try-job: `x86_64-gnu-llvm-19*`
try-job: `x86_64-msvc*`
try-job: `x86_64-apple*`
try-job: `dist-x86_64-linux`
2025-06-03 13:09:57 +00:00
Matthias Krüger
72f60fb700
Rollup merge of #141914 - onur-ozkan:follow-ups, r=Kobzol
redesign stage 0 std follow-ups

Various follow-ups pointed out on Zulip during post-merge discussions of [redesign stage 0 std #119899](https://github.com/rust-lang/rust/pull/119899).

r? `@jieyouxu`

Fixes https://github.com/rust-lang/rust/issues/141902.
Fixes https://github.com/rust-lang/rust/issues/141905.

cc `@jyn514`
2025-06-03 15:00:34 +02:00
onur-ozkan
59d993b6c7 use better default stage for check::Std when stage isn't explicit
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-06-03 12:59:33 +03:00
Matthias Krüger
2fa33b0624
Rollup merge of #141949 - onur-ozkan:move-test-float-parse, r=Kobzol
move `test-float-parse` tool into `src/tools` dir

Obviously `test-float-parse` is a tool like any other in `src/tools`.

cc `@tgross35`
2025-06-03 11:33:37 +02:00
onur-ozkan
ecc7dde80a handle stage0 on Std::check
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-06-03 08:51:19 +00:00
onur-ozkan
59fbe04a52 move test-float-parse tool into src/tools dir
Obviously `test-float-parse` is a tool like any other in `src/tools`.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-06-03 11:05:51 +03:00
onur-ozkan
8a65d9febb make library profile to use stage 1 on x check
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-06-03 11:00:33 +03:00
onur-ozkan
4e71f24a6b make x check to use stage0 by default
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-06-03 11:00:30 +03:00
bors
b17dba4518 Auto merge of #141210 - RalfJung:miri-std-doctests, r=saethlin
tools-aux ci runner: also cross-test doctests in Miri

Miri now supports running doctests across different targets. Let's use that to run the std doctests on aarch64-apple-darwin, i686-pc-windows-msvc.

try-job: x86_64-gnu-aux
2025-06-03 03:14:19 +00:00
Jakub Beránek
0505ee514b
Use ccache for stage0 tool and rustc builds 2025-06-02 14:10:17 +02:00
bors
52882f6522 Auto merge of #119899 - onur-ozkan:redesign-stage0-std, r=albertlarsan68,jieyouxu,mark-simulacrum,kobzol,jyn514,Noratrieb,WaffleLapkin,RalfJung,bjorn3
redesign stage 0 std

### Summary

**Blog post: https://blog.rust-lang.org/inside-rust/2025/05/29/redesigning-the-initial-bootstrap-sequence/**

This PR changes how bootstrap builds the stage 1 compiler by switching to precompiled stage 0 standard library instead of building the in-tree one. The goal was to update bootstrap to use the beta standard library at stage 0 rather than compiling it from source (see the motivation at https://github.com/rust-lang/compiler-team/issues/619).

Previously, to build a stage 1 compiler bootstrap followed this path:

```
download stage0 compiler -> build in-tree std -> compile stage1 compiler with in-tree std
```

With this PR, the new path is:

```
download stage0 compiler -> compile stage1 compiler with precompiled stage0 std
```

This also means that `cfg(bootstrap)`/`cfg(not(bootstrap))` is no longer needed for library development.

### Building "library"

Since stage0 `std` is no longer in-tree `x build/test/check library --stage 0` is now no-op. The minimum supported stage to build `std` is now 1. For the same reason, default stage values in the library profile is no longer 0.

Because building the in-tree library now requires a stage1 compiler, I highly recommend library developers to enable `download-rustc` to speed up compilation time.

<hr>

**Blog post: https://blog.rust-lang.org/inside-rust/2025/05/29/redesigning-the-initial-bootstrap-sequence/**

If you encounter a bug or unexpected results please open a topic in the [#t-infra/bootstrap](https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap) Zulip channel or create a [bootstrap issue](https://github.com/rust-lang/rust/issues/new?template=bootstrap.md).

(Review thread: https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap/topic/Review.20thread.3A.20stage.200.20redesign.20PR/with/508271433)

~~Blocked on https://github.com/rust-lang/rust/pull/122709~~

try-job: dist-x86_64-linux
try-job: `x86_64-msvc*`
try-job: `x86_64-apple-*`
try-job: `aarch64-apple`
try-job: x86_64-gnu
try-job: `x86_64-gnu-llvm*`
2025-06-02 07:49:18 +00:00
Guillaume Gomez
90f418fbb3
Rollup merge of #141852 - onur-ozkan:resolve-if-let-fixme, r=jieyouxu
resolve if-let-chain FIXME on bootstrap

self-explanatory
2025-06-01 19:35:46 +02:00
Guillaume Gomez
f714b34000
Rollup merge of #141846 - Berrysoft:cygwin-bootstrap-tls, r=mati865
Fix TLS model on bootstrap for cygwin

There aren't other targets that both use emutls and enable `has_thread_local`, so cygwin triggers this bug first.

r? mati865

See: https://github.com/rust-lang/rust/pull/141719#issuecomment-2925445263

``@jeremyd2019`` Could you check if this PR fixes the issue? I just found my pre-built stage-0 rustc was too old to build the current rustc :(
2025-06-01 19:35:45 +02:00
Guillaume Gomez
fec5c8fd7c
Rollup merge of #141789 - ferrocene:hoverbear/exclude-cargo-home-from-in-tree-consideration, r=clubby789
Exclude `CARGO_HOME` from `generate-copyright` in-tree determination

On Ferrocene, we noticed that in our releases the out-of-tree notices were not being included. When `x.py run generate-copyright` was ran on local development machines, it worked fine.

After some investigations ``@tshepang`` and I determined that the problem was that the cargo registry (located in `CARGO_HOME`) started with the source directory on CI jobs, and was being excluded by this line:

15825b7161/src/tools/generate-copyright/src/cargo_metadata.rs (L85-L88)

In Ferrocene's `run.sh` we set `CARGO_HOME` to be `build/cargo-home`: 96a45dd9a1/ferrocene/ci/run.sh (L34-L46) which caused this issue.

This PR passes the `CARGO_HOME` variable to the `generate-copyright` tool and expands the consideration of in-tree-ness to be aware of `CARGO_HOME`. It is an upstreaming of https://github.com/ferrocene/ferrocene/pull/1491.

## Testing

Run `CARGO_HOME=build/cargo-home ./x.py run generate-copyright` on `master`, then check `build/host/doc/COPYRIGHT` and look for out of tree dependencies (at the bottom).

Then, try running the same command in this branch.
2025-06-01 19:35:44 +02:00
onur-ozkan
a71c00a713 resolve if-let-chain FIXME on bootstrap
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-06-01 14:43:02 +03:00
王宇逸
810a564d9b Fix TLS model on bootstrap for cygwin 2025-06-01 14:56:54 +08:00
Matthias Krüger
23cc24e0bf
Rollup merge of #141819 - mati865:windows-gnullvm-host-fixes, r=jieyouxu
Fixes for building windows-gnullvm hosts

Split out from: https://github.com/rust-lang/rust/pull/140772
2025-05-31 18:51:51 +02:00
Matthias Krüger
ec39208527
Rollup merge of #141646 - jieyouxu:distcheck, r=Mark-Simulacrum
Document what `distcheck` is intended to exercise

Or at least attempt to.

Closes rust-lang/rust#141387.

cc `@marcoieni` (re. [#t-infra/bootstrap > Speed up distcheck](https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap/topic/Speed.20up.20distcheck/with/520208870))
r? `@Mark-Simulacrum` (as you may have some clues about if this is accurate)
2025-05-31 18:51:48 +02:00
Mateusz Mikuła
885184ae41 Shared libLLVM linking is officially supported with MinGW and Clang 2025-05-31 16:06:08 +02:00
Mateusz Mikuła
7eea11b27c Fix C++ standard library name for *-windows-gnullvm targets 2025-05-31 15:58:43 +02:00
Mateusz Mikuła
98961cd3da Fix incorrect comment 2025-05-31 15:58:43 +02:00
Ana Hobden
f886925ed3
Exclude CARGO_HOME from generate-copyright in-tree determination 2025-05-30 12:52:50 -07:00
bors
70b3f4666e Auto merge of #141657 - petrochenkov:nobinroot, r=jieyouxu
bootstrap: Remove `bin_root` from `PATH`

It's not currently load bearing in typical setups on typical targets.
Basically, if it passes the standard CI, then we can remove it, I think.

If someone later reports this breaking the build, then we can address it in a more fine grained way.
E.g. add it to `PATH` last and not first, only on specific targets, and only if specific files are not already found in `PATH` directories.

Fixes [#t-infra/bootstrap > Build broken in MSYS2 @ 💬](https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap/topic/Build.20broken.20in.20MSYS2/near/520709527)
2025-05-30 18:56:37 +00:00
onur-ozkan
a577bcc077 fix clippy warnings
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:04:33 +03:00
onur-ozkan
d2a6990122 fix bootstrap tests
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:04:28 +03:00
onur-ozkan
305890541f fix fs bug on CI and update ming-check-1 Dockerfile
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:04:25 +03:00
onur-ozkan
60394a807d fix CI-rustc bugs
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:04:22 +03:00
onur-ozkan
1ab2ba300c be able to build stage1 library with CI-rustc
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:04:20 +03:00
onur-ozkan
2938c8d310 add "library" to RUSTC_IF_UNCHANGED_ALLOWED_PATHS
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:04:17 +03:00
onur-ozkan
fcee761e50 improve comments and docs
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:04:14 +03:00
onur-ozkan
caca33192b add change entry
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:04:11 +03:00
onur-ozkan
0803f62605 bless bootstrap tests
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:03:59 +03:00
onur-ozkan
4d5dab3f38 update stage defaults
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:03:57 +03:00
onur-ozkan
613eceb80e improve check::Std handling
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:03:52 +03:00
onur-ozkan
c5adf58599 update std uplifting algorithm
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:03:49 +03:00
onur-ozkan
5dc0d89abc use initial rustc's std on stage 0
On stage 0, rather than compiling std utilize the one from the stage0 sysroot
as stage 0 should represent the snapshot version not the compiled one.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-30 21:03:46 +03:00
Matthias Krüger
611340ffc2
Rollup merge of #141736 - onur-ozkan:resolve-stage0-syroot-from-rustc, r=Kobzol
resolve stage0 sysroot from rustc

Similar to https://github.com/rust-lang/rust/pull/141729, instead of manually navigating directories based on stage0 rustc, use `--print sysroot` to get the sysroot directly. This also works when using the bootstrap `rustc` shim.

r? Kobzol
2025-05-30 13:39:53 +02:00
Matthias Krüger
896be667b8
Rollup merge of #141407 - mu001999-contrib:dead-code/refactor, r=petrochenkov
Refactor the two-phase check for impls and impl items

Refactor the two-phase dead code check to make the logic clearer and simpler:
1. adding assoc fn and impl into `unsolved_items` directly during the initial construction of the worklist
2. converge the logic of checking whether assoc fn and impl are used to `item_should_be_checked`, and the item is considered used only when its corresponding trait and Self adt are used

This PR only refactors as much as possible to avoid affecting the original functions. However, due to the adjustment of the order of checks, the test results are slightly different, but overall, there is no regression problem

Fixes rust-lang/rust#127911
Fixes rust-lang/rust#128839

Extracted from https://github.com/rust-lang/rust/pull/128637.
r? petrochenkov

try-job: dist-aarch64-linux
2025-05-30 07:01:29 +02:00
bors
1ac1950c33 Auto merge of #141739 - GuillaumeGomez:rollup-ivboqwd, r=GuillaumeGomez
Rollup of 11 pull requests

Successful merges:

 - rust-lang/rust#137574 (Make `std/src/num` mirror `core/src/num`)
 - rust-lang/rust#141384 (Enable review queue tracking)
 - rust-lang/rust#141448 (A variety of improvements to the codegen backends)
 - rust-lang/rust#141636 (avoid some usages of `&mut P<T>` in AST visitors)
 - rust-lang/rust#141676 (float: Disable `total_cmp` sNaN tests for `f16`)
 - rust-lang/rust#141705 (Add eslint as part of `tidy` run)
 - rust-lang/rust#141715 (Add `loongarch64` with `d` feature to `f32::midpoint` fast path)
 - rust-lang/rust#141723 (Provide secrets to try builds with new bors)
 - rust-lang/rust#141728 (Fix false documentation of FnCtxt::diverges)
 - rust-lang/rust#141729 (resolve target-libdir directly from rustc)
 - rust-lang/rust#141732 (creader: Remove extraenous String::clone)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-05-29 23:02:31 +00:00
onur-ozkan
0d9f25bb4f resolve target-libdir directly from rustc
Leaving stage0 target-libdir resolution to rustc. This should also fix the issue with
hard-coding `$sysroot/lib` which fails on systems that use `$sysroot/lib64` or `$sysroot/lib32`.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-29 15:45:32 +03:00
onur-ozkan
0565d43060 resolve stage0 sysroot from rustc
Instead of manually navigating directories based on stage0 rustc, use `--print sysroot`
to get the sysroot directly. This also works when using the bootstrap `rustc` shim.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-29 15:40:07 +03:00
bors
13718eb788 Auto merge of #141595 - bjorn3:rustc_no_sysroot_proc_macro, r=onur-ozkan
Do not get proc_macro from the sysroot in rustc

With the stage0 refactor the proc_macro version found in the sysroot will no longer always match the proc_macro version that proc-macros get compiled with by the rustc executable that uses this proc_macro. This will cause problems as soon as the ABI of the bridge gets changed to implement new features or change the way existing features work.

To fix this, this commit changes rustc crates to depend directly on the local version of proc_macro which will also be used in the sysroot that rustc will build.
2025-05-29 12:07:53 +00:00
Mu001999
419897c132 Add cfg for FormatShortCmd 2025-05-28 23:00:27 +08:00
Khem Raj
56b669cd7a
Disable libunwind cross-architecture unwinding
Building with _LIBUNWIND_IS_NATIVE_ONLY disables code for cross-architecture unwinding
it is disabled by default in LLVM [1], replicate the cmake behavior in bootstrap process

It also enables some additional code that handles PAC-specific unwind info
it helps compiling with the -mbranch-protection=pac or -mbranch-protection=standard flags

This fixes build with clang/musl on aarch64

[1] 85624c5de3

Signed-off-by: Khem Raj <raj.khem@gmail.com>
2025-05-27 18:07:20 -07:00