Commit graph

6869 commits

Author SHA1 Message Date
moxian
e13af7abca Don't even bother checking changelog in --dry-run mode 2025-03-06 01:07:02 -08:00
moxian
571f95fb94 Remember silenced bootstrap changelog warnings even in --dry-run 2025-03-05 16:28:35 -08:00
许杰友 Jieyou Xu (Joe)
dac4ffd5c0
Rollup merge of #137723 - onur-ozkan:cfg-ver-description, r=pietroalbini,weihanglo
Make `rust.description` more general-purpose and pass `CFG_VER_DESCRIPTION`

Moves the `description` field from the `rust` section to the `build` section as it can be useful for tools and is not specific to rustc. Also passes this value to tool builds through the `CFG_VER_DESCRIPTION` env.

Motivated from https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap/topic/Propagate.20rust.2Edescription.20to.20tools.20in.20dist.20build
2025-03-05 21:46:43 +08:00
许杰友 Jieyou Xu (Joe)
4aa61e77ff
Rollup merge of #137679 - bjorn3:coretests_improvements, r=jieyouxu,onur-ozkan
Various coretests improvements

The first commit is not yet strictly necessary as directly testing libcore works though useless work, but will be necessary once https://github.com/rust-lang/rust/pull/136642 migrates the liballoc tests into a separate package. The second commit fixes https://github.com/rust-lang/rust/issues/137478 and ensures that coretests actually gets tested on all CI job. The third commit fixes an error that didn't get caught because coretests doesn't run on the wasm32 CI job.
2025-03-05 21:46:42 +08:00
onur-ozkan
9646c2f642 replace rust.description with build.description
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-03-05 08:39:56 +03:00
onur-ozkan
853e34dbe1 pass CFG_VER_DESCRIPTION to tool builds
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-03-05 08:39:53 +03:00
onur-ozkan
92956e8cd6 add change-entry
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-03-05 08:39:42 +03:00
onur-ozkan
31e612bd7b move rust.description to build.description
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-03-05 08:38:40 +03:00
Jubilee
df2a263ec2
Rollup merge of #137667 - Kobzol:gcc-dist-build, r=onur-ozkan
Add `dist::Gcc` build step

This PR adds a `dist:Gcc` bootstrap step to distribute a prebuilt `libgccjit.so` from CI on x64 Linux.

With primed sccache, the build takes ~4 minutes on CI, and produces a 50 MiB archive.

I want to land this before adding something akin to `[gcc] download-ci-gcc = true`, to already have the artifacts available on CI, to make it easier to setup the download merge-base logic.

r? ``@ghost``
2025-03-04 14:50:41 -08:00
Jubilee
e5ac9f89eb
Rollup merge of #137373 - Kobzol:tool-stage0-improve, r=jieyouxu
Compile run-make-support and run-make tests with the bootstrap compiler

It does not seem necessary to have to recompile run-make-support on changes to the local compiler/stdlib. This PR simplifies the implementation of a few tools, then switches rms to stage0 and also makes the handling of environment variables in run-make tests simpler.

Best reviewed commit-by-commit. I can split it into multiple PRs if you want.

Also tested that `COMPILETEST_FORCE_STAGE0=1 ./x test tests/run-make --stage 0` still works. Incredibly, it looks like it even passes more tests than on `master` 😆

r? ``@jieyouxu``
2025-03-04 14:50:39 -08:00
Jakub Beránek
2e5ab4e6a0 Store bootstrap command-line into metrics 2025-03-04 12:30:41 +01:00
Matthias Krüger
a4b6181156
Rollup merge of #137882 - onur-ozkan:remove-extra-compiler-stage, r=Kobzol
do not build additional stage on compiler paths

When calling `x build compiler (or rustc) --stage N` bootstrap builds stage N+1 compiler, which is clearly not what we requested. This doesn't happen when running `x build --stage N` without explicitly targeting the compiler.

The changes applied fix this issue.

r? ghost
2025-03-03 20:47:12 +01:00
onur-ozkan
cfb475c1d2 extend scope of build_all test
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-03-02 14:41:23 +03:00
onur-ozkan
ef028d79d6 do not build additional stage on compiler paths
When calling `x build compiler (or rustc) --stage N` bootstrap builds stage N+1 compiler,
which is clearly not what we requested. This doesn't happen when running `x build --stage N`
without explicitly targeting the compiler.

The changes applied fix this issue.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-03-02 08:27:40 +00:00
Jakub Beránek
0034d6c928 Compile run-make recipes using the stage0 compiler 2025-03-01 22:11:02 +01:00
bors
30508faeb3 Auto merge of #137796 - jieyouxu:rollup-qt9yr1g, r=jieyouxu
Rollup of 10 pull requests

Successful merges:

 - #134943 (Add FileCheck annotations to mir-opt/issues)
 - #137017 (Don't error when adding a staticlib with bitcode files compiled by newer LLVM)
 - #137197 (Update some comparison codegen tests now that they pass in LLVM20)
 - #137540 (Fix (more) test directives that were accidentally ignored)
 - #137551 (import `simd_` intrinsics)
 - #137599 (tests: use minicore more)
 - #137673 (Fix Windows `Command` search path bug)
 - #137676 (linker: Fix escaping style for response files on Windows)
 - #137693 (Re-enable `--generate-link-to-defintion` for tools internal rustdoc)
 - #137770 (Fix sized constraint for unsafe binder)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-03-01 00:53:19 +00:00
Jakub Beránek
4af94f842d Implement RunMake test suite using the test! macro 2025-02-28 16:44:04 +01:00
Jakub Beránek
807f6ffa91 Implement RunMakeSupport tool using the bootstrap_tool! macro 2025-02-28 16:44:03 +01:00
Jakub Beránek
96a91975f1 Allow specifying that tools build a library, not a binary 2025-02-28 16:44:03 +01:00
Jakub Beránek
6563437773 Create the OptimizedDist tool with a macro 2025-02-28 16:44:03 +01:00
许杰友 Jieyou Xu (Joe)
9e1ead6492
Rollup merge of #137693 - aDotInTheVoid:gaming, r=onur-ozkan,GuillaumeGomez
Re-enable `--generate-link-to-defintion` for tools internal rustdoc

~~These were removed because they used to break the build: https://github.com/rust-lang/rust/pull/122066#issuecomment-1983049222, but testing locally it seems to work now.~~

This was re enabled in #136589, but only for rustc, not tools.

The FIXME that prompted removing this is still present. Do we have an issue with an MCVE for this? CC ```@GuillaumeGomez```

ac91805f31/src/librustdoc/html/render/span_map.rs (L178-L182)

try-job: aarch64-apple
2025-02-28 22:29:55 +08:00
许杰友 Jieyou Xu (Joe)
f1cdd3be01
Rollup merge of #137676 - petrochenkov:winresp, r=Kobzol
linker: Fix escaping style for response files on Windows

If we use a С/С++ compiler as linker, then Posix-style escaping should be used.

Also temporarily fixup rustbuild to not fail at least in common scenarios, until the bootstrap compiler is updated.

Fixes https://github.com/rust-lang/rust/issues/137498
2025-02-28 22:29:54 +08:00
Pietro Albini
1ccff0e01a
support rust.channel = "auto-detect" 2025-02-28 11:02:22 +01:00
Jakub Beránek
4c452857e8 Add dist:Gcc build step
To distribute the prebuilt libgccjit.so from CI.
2025-02-28 09:42:47 +01:00
Matthias Krüger
f435138da9
Rollup merge of #136542 - jieyouxu:build-base, r=onur-ozkan
[`compiletest`-related cleanups 4/7] Make the distinction between root build directory vs test suite specific build directory in compiletest less confusing

Reference for overall changes: https://github.com/rust-lang/rust/pull/136437
Part **4** of **7** of the *`compiletest`-related cleanups* PR series.

### Summary

- Remove `--build-base` compiletest flag, and introduce `--build-{root,test-suite-root}` flags instead. `--build-base` previously actually is test suite specific build directory, not the root `build/` directory.
- Feed the root build directory directly from bootstrap to compiletest via `--build-root` instead of doing multiple layers of parent unwrapping[^parent] based on the test suite specific build directory.
- Remove a redundant `to_path_buf()`.

[^parent]: Please do not unwrap the parents.

r? bootstrap
2025-02-27 08:56:35 +01:00
bors
96cfc75584 Auto merge of #132295 - the8472:remove-randomize-exclusion1, r=onur-ozkan
fixed wast version was released, remove randomization exemption
2025-02-27 01:37:30 +00:00
Alona Enraght-Moony
e28500d28b Re-enable --generate-link-to-defintion for tools internal rustdoc 2025-02-26 20:20:49 +00:00
bjorn3
b491494a20 Also test coretests when running ./x.py test core
It is reasonable to expect that ./x.py test core is enough to run tests
when you are working on core. In addition it seems like CI for wasm32 at
least doesn't run coretests currently, which this commit fixes.
2025-02-26 15:11:05 +00:00
bjorn3
b60aeb05dd Stop passing --lib to cargo test
This overrides the test=false flag in Cargo.toml and it shouldn't be
necessary as --tests is already passed.
2025-02-26 14:52:56 +00:00
Vadim Petrochenkov
9a2362a76e linker: Fix escaping style for response files on Windows
If we use a С/С++ compiler as linker, then Posix-style escaping should be used.
2025-02-26 17:45:08 +03:00
bors
2af87eab3b Auto merge of #137036 - jieyouxu:drivers-license, r=Kobzol
Include version number of libs being built in cargo lib metadata (esp. `librustc_driver*.so`)

Previously, on a non-stable channel, it's possible for two builds from different versioned sources (e.g. 1.84.0 vs 1.84.1) to produce a `librustc_driver*.so` with the same filename hashes. This causes problems with side-by-side installs wrt. linker search paths because 1.84.1 rustc bin and 1.84.0 rustc bin may try to link to the "same" `librustc_driver*.so` (same filename hash) but fail because the contents of the so is actually different.

We try to mitigate this by including the version number of artifacts being built via `__CARGO_DEFAULT_LIB_METADATA` (kind of an ugly hack, but I don't think cargo has a way for us to tell cargo to use a package version override).

Fixes #136701 (mitigates, really).

### Testing

Tested manually[^host] by:

```bash
$ cat src/version
1.86.0
$ ./x build library # w/ compiler profile, (non-stable) dev channel
$ lddtree build/host/stage1/bin/rustc
rustc => build/host/stage1/bin/rustc (interpreter => /lib64/ld-linux-x86-64.so.2)
    librustc_driver-ea1b1b2291881cc4.so => build/host/stage1/bin/../lib/librustc_driver-ea1b1b2291881cc4.so
[...]
```

and observing that changing `src/version` to bump a point release causes `librustc_driver*.so` to have a different hash while sources are unmodified otherwise.

```bash
$ cat src/version
1.86.1
$ ./x build library # w/ compiler profile, (non-stable) dev channel
$ lddtree build/host/stage1/bin/rustc
rustc => build/host/stage1/bin/rustc (interpreter => /lib64/ld-linux-x86-64.so.2)
    librustc_driver-746badadbcb74721.so => build/host/stage1/bin/../lib/librustc_driver-746badadbcb74721.so
[...]
```

cc `@clan` `@demize` could you check that if you backport this change against 1.84.{0,1} as reported in #136701, that the produced `rustc` binary works, under the context of the Gentoo build system setup?

[^host]: on a `x86_64-unknown-linux-gnu` host, no cross
2025-02-26 09:42:41 +00:00
bors
a46c755c6a Auto merge of #136921 - Kobzol:gcc-build, r=onur-ozkan
Build GCC on CI

Previously, we have downloaded a specific commit of GCC and prebuilt it inside Docker using the `build-gccjit.sh` script. This PR removes that scripts and uses the bootstrap GCC step. This allows us to use the `src/gcc` submodule for determining which GCC should be built, and it also moves the logic closer to LLVM, which is also built by bootstrap.

A few things to note:
- The `sccache` option is currently in the `llvm` block, so the GCC build uses `llvm.ccache`, which is a bit weird :) We could either add `gcc.ccache`, or (what I think would be better) to just move `ccache` to the `build` section, as I don't think that it will be necessary to use ccache for LLVM, but not for GCC.
- When the GCC codegen backend is built, it needs to depend on a step that first builds GCC. This is currently done in a hacky way. The proper solution is to create a separate step for the GCC codegen backend, but that is a larger change. Let me know what you think.

r? `@onur-ozkan`

try-job: i686-msvc-1
try-job: x86_64-mingw-1
2025-02-26 03:04:21 +00:00
León Orell Valerian Liehr
e6bd9e6928
Rollup merge of #137522 - onur-ozkan:137215-follow-ups, r=Kobzol
use stage 2 on cargo and clippy tests when possible

Follow-up for #137215.

For more context, read the discussion starting from https://github.com/rust-lang/rust/pull/137215#issuecomment-2674395959.

r? Kobzol (Feel free to re-r if you are not available).
2025-02-25 13:32:56 +01:00
León Orell Valerian Liehr
849a60a762
Rollup merge of #137460 - onur-ozkan:downgrade-cc, r=jieyouxu
downgrade bootstrap `cc`

Current `cc` version causing bootstrap to fail on custom targets. See https://github.com/rust-lang/cc-rs/issues/1317 for more context.

Fixes (after beta and stable backports): https://github.com/rust-lang/rust/issues/137064 and https://github.com/rust-lang/rust/issues/135271
2025-02-25 13:32:54 +01:00
Trevor Gross
af10f27bf1
Rollup merge of #137493 - nabijaczleweli:python3, r=Kobzol
configure.py: don't instruct user to run nonexistent program

```shell-session
$ ./configure
configure: processing command line
configure:
configure: build.configure-args := []
configure: profile              := dist
configure:
configure: writing `config.toml` in current directory
configure:
configure: run `python /mnt/filling/store/nabijaczleweli/code/rust/x.py --help`
```

This is naturally not valid since I don't have a "python" executable (and this will hopefully become more and more true as Python 2 dies out).

./configure knows this since it does `try python3 "$``@"`,`` then `python2.7` &c.

After, this now says
```
configure: run `python3 /mnt/filling/store/nabijaczleweli/code/rust/x.py --help`
```
which is possible, and corresponds to the interpreter actually running.
2025-02-24 18:46:37 -05:00
onur-ozkan
9ad6011494 use stage 2 on cargo and clippy tests when possible
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-02-24 14:41:50 +00:00
onur-ozkan
cf6dc742b7 add coverage for explicit stage fields
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-02-24 11:20:13 +03:00
onur-ozkan
37b18f8f47 add explicit stage fields to Config
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-02-24 11:17:19 +03:00
bors
9af8985e05 Auto merge of #137497 - tgross35:rollup-1oeclrr, r=tgross35
Rollup of 8 pull requests

Successful merges:

 - #136439 (Misc. `rustc_codegen_ssa` cleanups 🧹)
 - #136543 (intrinsics: unify rint, roundeven, nearbyint in a single round_ties_even intrinsic)
 - #136637 (Add binary_format to rustc target specs)
 - #137099 (Fix rustdoc test directives that were accidentally ignored 🧐)
 - #137297 (Update `compiler-builtins` to 0.1.147)
 - #137451 (FIx `sym` -> `syn` typo in tail-expr-drop-order type opt-out)
 - #137452 (bootstrap: add module docs for core:metadata)
 - #137483 (rename sub_ptr to offset_from_unsigned)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-02-23 23:49:11 +00:00
bors
f8a913b138 Auto merge of #137476 - onur-ozkan:137469, r=jieyouxu
avoid `compiler_for` for dist tools and force the current compiler

Using `compiler_for` in dist steps was causing to install stage1 tools into the dist tarballs, which doesn't match with the stage2 compiler.

Fixes https://github.com/rust-lang/rust/issues/137469
2025-02-23 20:32:32 +00:00
Trevor Gross
e8342e7d42
Rollup merge of #137452 - Shourya742:2025-02-23-add-module-level-doc-for-core-metadata, r=Kobzol
bootstrap: add module docs for core:metadata

Add module doc for bootstrap:core:metadata
2025-02-23 14:30:28 -05:00
наб
097d64205a
configure.py: don't instruct user to run nonexistent program
$ ./configure
configure: processing command line
configure:
configure: build.configure-args := []
configure: profile              := dist
configure:
configure: writing `config.toml` in current directory
configure:
configure: run `python /mnt/filling/store/nabijaczleweli/code/rust/x.py --help`

This is naturally not valid since I don't have a "python" executable
(and this will hopefully become more and more true as Python 2 dies out).

./configure knows this since it does try python3 "$@", then python2.7 &c.

After, this now says
  configure: run `python3 /mnt/filling/store/nabijaczleweli/code/rust/x.py --help`
which is possible, and corresponds to the interpreter actually running.
2025-02-23 19:11:37 +01:00
许杰友 Jieyou Xu (Joe)
7d2e4e4b69 bootstrap: remove redundant to_path_buf() 2025-02-23 21:47:15 +08:00
许杰友 Jieyou Xu (Joe)
5238337d52 bootstrap: remove --build-base and use --build-root and --build-test-suite-root instead 2025-02-23 21:47:15 +08:00
onur-ozkan
1c7b60f8a4 add FIXME note on Builder::compiler_for
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-02-23 16:05:51 +03:00
onur-ozkan
50f84129e6 avoid compiler_for for dist tools and force the current compiler
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-02-23 11:55:19 +00:00
bors
b880760977 Auto merge of #137237 - cuviper:stage0, r=Mark-Simulacrum
Master bootstrap update

https://forge.rust-lang.org/release/process.html#master-bootstrap-update-tuesday

r? `@Mark-Simulacrum`
2025-02-23 11:12:56 +00:00
bors
1805b33483 Auto merge of #137466 - jhpratt:rollup-spyi02y, r=jhpratt
Rollup of 9 pull requests

Successful merges:

 - #135354 ([Debuginfo] Add MSVC Synthetic and Summary providers to LLDB)
 - #136826 (Replace mem::zeroed with mem::MaybeUninit::uninit for large struct in Unix)
 - #137194 (More const {} init in thread_local)
 - #137334 (Greatly simplify lifetime captures in edition 2024)
 - #137382 (bootstrap: add doc for vendor build step)
 - #137423 (Improve a bit HIR pretty printer)
 - #137435 (Fix "missing match arm body" suggestion involving `!`)
 - #137448 (Fix bugs due to unhandled `ControlFlow` in compiler)
 - #137458 (Fix missing self subst when rendering `impl Fn*<T>` with no output type)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-02-23 08:06:25 +00:00
Jacob Pratt
553fde4fc9
Rollup merge of #137382 - Shourya742:2025-02-21-add-vendor-step-doc, r=Kobzol
bootstrap: add doc for vendor build step

This PR adds docs for vendor build step.
2025-02-23 02:44:18 -05:00
onur-ozkan
e4ca11f87f downgrade bootstrap cc
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2025-02-23 08:24:56 +03:00