Commit graph

7388 commits

Author SHA1 Message Date
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
Vadim Petrochenkov
043b164b3b bootstrap: Remove bin_root from PATH 2025-05-27 20:31:21 +03:00
bjorn3
026baa1c6f 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-27 15:49:28 +00:00
Jieyou Xu
d43c2e7448
distcheck: document what distcheck is intended to exercise 2025-05-27 20:44:47 +08:00
Michael Goulet
2c5361a309
Rollup merge of #141568 - onur-ozkan:141393-fix, r=Kobzol
dist: make sure llvm-project submodule is present

Zero-config `x install` fails when bootstrap tries to copy files from the LLVM submodule because it's not properly initialized/handled. This diff handles that.

Fixes https://github.com/rust-lang/rust/issues/141393
2025-05-27 13:01:38 +02:00
Michael Goulet
f1371a8891
Rollup merge of #141556 - jeremyd2019:patch-1, r=jieyouxu
bootstrap: translate Windows paths in a way that works for both Cygwin and MSYS2

Cygwin defaults to rooting Windows paths in /cygdrive/X, while MSYS2 configures them to be /X.  Regardless of configuration, drives are always accessible as /proc/cygdrive/X, so use that.

If there are other shells on Windows that are supported and use /X style paths, perhaps something more complicated needs to be done.

r? `@jieyouxu`

`@Berrysoft` `@mati865`
2025-05-27 13:01:37 +02:00
Jeremy Drake
108c16eebd bootstrap: translate Windows paths in a way that works for both Cygwin and MSYS2
Cygwin defaults to rooting Windows paths in /cygdrive/X, while MSYS2
configures them to be /X.  Regardless of configuration, drives are
always accessible as /proc/cygdrive/X, so use that.
2025-05-26 10:31:56 -07:00
许杰友 Jieyou Xu (Joe)
0912d1f06a
Rollup merge of #140898 - onur-ozkan:miri-run, r=Kobzol
minor improvements on running miri

It should be clear from the commit messages when reviewing them one by one.
2025-05-27 01:29:16 +08:00
onur-ozkan
b71a1279a1 dist: make sure llvm-project submodule is present
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-26 08:08:50 +03:00
xtex
4350fd170e
bootstrap: clippy: set TESTNAME based on given paths
This addresses issue 104200 by setting the TESTNAME environment
variable automatically based on the paths from run configs,
marking a selected set of UI tests to be run.

Note that this does not filter out other unit tests using #[test].
2025-05-25 09:55:50 +08:00
Matthias Krüger
8b69895ec2
Rollup merge of #141374 - jeremyd2019:patch-1, r=jieyouxu
make shared_helpers exe function work for both cygwin and non-cygwin hosts

On Cygwin, it needs to not append .exe, because /proc/self/exe (and therefore `std::env::current_exe`) does not include the .exe extension, breaking bootstrap's rustc wrapper.  On hosts other than Cygwin, it *does* need to append .exe because the file really does have a .exe extension, and non-Cygwin hosts won't be doing the same filename rewriting that Cygwin does when looking for a file X but finding only X.exe in its place.

Arising from discussion in https://github.com/rust-lang/rust/pull/140154#pullrequestreview-2855782812
``@mati865`` ``@Berrysoft``
2025-05-23 20:30:11 +02:00
onur-ozkan
17d27c993e let tool::Miri implementation to handle compilers
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-23 19:45:38 +03:00
onur-ozkan
55298ea6ea if stage isn't set explicitly, default to 1 when running miri
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-23 18:58:34 +03:00
bors
163cb4ea3f Auto merge of #141062 - ChaiTRex:ide_fmt_2024, r=Mark-Simulacrum
Update IDEs to use rustfmt 2024, fix Zed settings

Update IDEs to use rustfmt 2024, fix Zed settings

- Update IDE `rust-analyzer` settings to use 2024 rather than 2021.
- Fix Zed settings by removing `${workspaceFolder}/` from paths.
2025-05-23 11:15:24 +00:00
Jeremy Drake
1f862a82e2 make shared_helpers exe function work for both cygwin and non-cygwin hosts
On Cygwin, it needs to not append .exe, because /proc/self/exe (and
therefore std::env::current_exe) does not include the .exe extension,
breaking bootstrap's rustc wrapper.  On hosts other than Cygwin, it
*does* need to append .exe because the file really does have a .exe
extension, and non-Cygwin hosts won't be doing the same filename
rewriting that Cygwin does when looking for a file X but finding only
X.exe in its place.
2025-05-22 11:06:52 -07:00
Ralf Jung
b9e69959c6 run core and alloc tests with strict provenance 2025-05-22 10:09:19 +02:00
Matthias Krüger
04a7c2c66d
Rollup merge of #141283 - Sol-Ell:fix-benchmarking-on-windows, r=Kobzol
Allow `x perf` to find rustc.exe on Windows

Related issue: #141281
2025-05-21 11:28:45 +02:00
Matthias Krüger
64a5a66666
Rollup merge of #140994 - onur-ozkan:cc2ar-removal, r=albertlarsan68
replace `cc_detect::cc2ar` with `cc::try_get_archiver`

~~Awaiting new release of [cc](https://crates.io/crates/cc) version with https://github.com/rust-lang/cc-rs/pull/1456 to bump the version.~~

~~Blocked by https://github.com/rust-lang/cc-rs/pull/1456.~~

Kind a self-explanatory.

try-job: dist-android
2025-05-21 11:28:44 +02:00
Ell
6ac8e51283 Allow x perf to find rustc.exe on Windows 2025-05-21 10:09:29 +03:00
bors
6cab15c1ae Auto merge of #140932 - onur-ozkan:llvm-tools, r=Kobzol
update llvm-tools logic for `dist` and `install` steps

First commit aligns `build_steps::compile` and `build_steps::dist` logics for copying llvm-tools, and the second commit adds the correct `should_run` condition for `LlvmTools` step as the previous one was clearly incorrect.

Fixes #140913
2025-05-20 12:44:14 +00:00
Stuart Cook
41afd0433b
Rollup merge of #141257 - Shourya742:2025-05-19-trim-cache-module, r=onur-ozkan
trim cache module in utils bootstrap

We don't use other variants of Interner in bootstrap, so this PR streamlines the bootstrap cache utils module.

r? `@onur-ozkan`
2025-05-20 12:53:14 +10:00
bit-aloo
8ecb128a22
trim cache module in utils 2025-05-19 22:08:12 +05:30
Matthias Krüger
334136f112
Rollup merge of #141247 - onur-ozkan:141246, r=albertlarsan68
skip compiler tools sanity checks on certain commands

Closes #141246
2025-05-19 18:08:42 +02:00
onur-ozkan
9da637a578 skip compiler tools sanity checks on certain commands
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-19 15:42:12 +03:00
bors
e42bbfe1f7 Auto merge of #140154 - Berrysoft:cygwin-host, r=jieyouxu
Cygwin support in rustc

This PR builds host rustc targeting cygwin.

- [x] https://github.com/rust-lang/stacker/pull/122
- [x] https://github.com/nagisa/rust_libloading/pull/173
- [x] https://github.com/Detegr/rust-ctrlc/pull/131
- [x] https://github.com/rust-random/getrandom/pull/654
- [x] https://github.com/msys2/MSYS2-packages/issues/5350
- [x] https://github.com/rust-lang/rust/pull/140886
- [x] https://github.com/rust-lang/rust/pull/140921
- [x] https://github.com/rust-lang/rust/pull/140973

Currently supported:
* rustc
* rustdoc
* rustfmt
* clippy

Blocking:
* cargo: blocked by https://github.com/rust-lang/socket2/pull/568
* rust-analyzer: needs `cargo update`, fixed upstream

```
$ rustc --version --verbose
rustc 1.88.0-dev
binary: rustc
commit-hash: unknown
commit-date: unknown
host: x86_64-pc-cygwin
release: 1.88.0-dev
LLVM version: 20.1.4
```
2025-05-18 23:53:04 +00:00
bors
4d051fb306 Auto merge of #127013 - tgross35:f16-format-parse, r=Mark-Simulacrum
Add `f16` formatting and parsing

Use the same algorithms as for `f32` and `f64` to implement `f16` parsing and printing.

try-job: x86_64-gnu-aux
2025-05-18 20:38:01 +00:00
Trevor Gross
250869e909 float: Add f16 to test-float-parse
This requires a fix to the subnormal test to cap the maximum allowed
value within the maximum mantissa.
2025-05-18 16:51:28 +00:00
Ralf Jung
6eb1afa468 tools-aux ci runner: also cross-test doctests 2025-05-18 11:36:59 +02:00
klensy
40940e1294 bootstrap: bump windows too 2025-05-17 15:31:02 +03:00
onur-ozkan
5027ee27de bump bootstrap cc-rs to 1.2.23
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-16 18:08:20 +00:00
Chai T. Rex
a6bf524975 Update IDEs to use rustfmt 2024, fix Zed settings
- Update IDE `rust-analyzer` settings to use 2024 rather than 2021.
- Fix Zed settings by removing `${workspaceFolder}/` from paths.
2025-05-15 20:38:03 -04:00
Matthias Krüger
3e6a2861e4
Rollup merge of #141027 - onur-ozkan:simpler-rustfmt-initialization, r=albertlarsan68
remove `RustfmtState` to reduce `initial_rustfmt` complexity

The current use of `RustfmtState` doesn't serve its main purpose as it never does the lazy evaulation since `Build::build` forces it to be ready on the early stage. If we want rustfmt to be ready on the early stage, we don't need to have `RustfmtState` complexity at all.
2025-05-15 22:28:52 +02:00
王宇逸
12fda865f2 Fix exe() to make rustc wrapper happy 2025-05-15 23:34:11 +08:00
王宇逸
49553be307 Experimental cygwin support in rustc
Co-authored-by: Ookiineko <chiisaineko@protonmail.com>
2025-05-15 23:34:11 +08:00
onur-ozkan
92116bcfa6 remove RustfmtState to reduce initial_rustfmt complexity
The current use of `RustfmtState` doesn't serve its main purpose as it
never does the lazy evaulation since `Build::build` forces it to be ready
on the early stage. If we want rustfmt to be ready on the early stage, we
don't need to have `RustfmtState` complexity at all.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-05-15 11:03:06 +00:00