Commit graph

5125 commits

Author SHA1 Message Date
LuuuX
1b8dee19e8 Fix issue #110087
Three tasks have been implemented here.

Add a new `download-ci-llvm = if-unchange` option and enable if by
default for `profile = codegen`.

Include all build artifacts by traversing the llvm-project build output,
Keep the downloadable llvm the same state as if you have just run a full
source build.

After selecting the codegen profile during ./x.py setup, the submodule
will be automatically downloaded.
2023-11-08 09:22:28 +08:00
bors
f9b644636f Auto merge of #117435 - SparrowLii:nightly_parallel, r=oli-obk,davidtwco
enable parallel rustc front end in nightly builds

Refers to the [MCP](https://github.com/rust-lang/compiler-team/issues/681), this pr does:
1. Enable the parallel front end in nightly builds, and keep the default number of threads as 1. Then users can use the parallel rustc front end via -Z threads=n option.

2. Set it up to serial front end for beta/stable builds via bootstrap.

3. Switch over the alt builders from parallel rustc to serial, so we have artifacts without parallel to test against the artifacts with parallel.

r? `@oli-obk`

cc `@cjgillot` `@nnethercote` `@bjorn3` `@Kobzol`
2023-11-06 07:41:22 +00:00
bors
6c7de3181b Auto merge of #117574 - onur-ozkan:fix-compiler-crate-linking, r=Mark-Simulacrum
improve compiler&tool documenting and re-enable cranelift on CI

First commit addresses the linking issue with compiler crates. Second one ensures that compiler crates are linked correctly (with later commits we added this check for tools as well), allowing us to detect these hard-to-catch bugs on CI. Following three commits cherry-picked from #117328 to re-enable the Cranelift backend on CI.

More info: https://github.com/rust-lang/rust/issues/117430

cc `@bjorn3` `@RalfJung`
2023-11-05 15:41:35 +00:00
onur-ozkan
b0df8216ed bootstrap: improve linking of tool docs
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-11-05 17:01:53 +03:00
Matthias Krüger
fb30270cdc
Rollup merge of #117524 - unleashed:bootstrap-create-hooks-dir, r=Mark-Simulacrum
bootstrap/setup: create hooks directory if non-existing

When running `./x setup` on a local repository I chose to install a `pre-push` git hook, but this happened:

```shell
Would you like to install the git hook?: [y/N] y
error: could not create hook .git/hooks/pre-push: do you already have the git hook installed?
No such file or directory (os error 2)
thread 'main' panicked at src/core/build_steps/setup.rs:462:9:
install_git_hook_maybe(&config) failed with No such file or directory (os error 2)
```

This was caused because the `.git/hooks` directory did not exist in my local repository. Creating it manually and re-running the command works fine.

This PR tests for the above directory and if it does not exist then it _tries_ to create it before hard linking the pre-push hook - we use `fs::create_dir()` and disregard the result (ie. it could fail if the directory was created in the meantime) and proceed to call `fs::hard_link()` all the same.
2023-11-05 12:41:47 +01:00
Matthias Krüger
db665980e9
Rollup merge of #116017 - Zalathar:darwin-stdlib, r=albertlarsan68
Don't pass `-stdlib=libc++` when building C files on macOS

When using *Command Line Tools for Xcode* version 15.0, clang will warn about `argument unused during compilation: '-stdlib=libc++'` if this flag is present when compiling C files only (i.e. no C++ files).

To avoid this warning, we can add the flag only to CXXFLAGS and not to CFLAGS.

---

[Zulip thread](https://rust-lang.zulipchat.com/#narrow/stream/326414-t-infra.2Fbootstrap/topic/clang.20warning.3A.20argument.20unused.20during.20compilation.20.28libc.2B.2B.29)
2023-11-05 12:41:46 +01:00
bjorn3
52933e0bd2 Don't disable inline asm usage in compiler-builtins when the cranelift backend is enabled
This was a leftover from when inline asm wasn't universally supported by
the cranelift backend yet. It would cause the optimized inline asm
intrinsics to be avoided for the standard library distributed with
rustup now that we build the cranelift backend by default on nightly for
several tier 1 targets.
2023-11-04 16:49:39 +03:00
onur-ozkan
55b49455e7 ensure doc directory is not empty
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-11-04 15:46:02 +03:00
Rémy Rakic
451778b551 handle dry runs in dist::CodegenBackend
self.number_of_times_dry_runs_have_caused_issues += 1;
2023-11-04 15:12:00 +03:00
bjorn3
a9913ebed0 Ensure the rustc-codegen-cranelift-preview component is never empty
Either generate it with the actual codegen backend dylib or omit it
entirely when the cranelift backend is disabled for this build.
2023-11-04 15:11:55 +03:00
onur-ozkan
fda009c858 add sanity check for compiler crate docs
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-11-04 15:11:43 +03:00
onur-ozkan
5e2de479fa Ensure compiler crate paths are generated before linking
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-11-04 15:11:19 +03:00
bors
a026bd49e1 Auto merge of #117538 - matthiaskrgr:rollup-63u77xb, r=matthiaskrgr
Rollup of 5 pull requests

Successful merges:

 - #117434 (delegate `<Box<E> as Error>::provide` to `<E as Error>::provide`)
 - #117505 (Fix incorrect trait bound restriction suggestion)
 - #117520 (Clippy subtree update)
 - #117523 (oli-obk is on vacation)
 - #117533 (Revert "bootstrap: do not purge docs on CI environment")

r? `@ghost`
`@rustbot` modify labels: rollup
2023-11-03 12:45:01 +00:00
Matthias Krüger
c0fa97c3d6
Rollup merge of #117533 - onur-ozkan:revert-117471, r=onur-ozkan
Revert "bootstrap: do not purge docs on CI environment"

This reverts commit 6198e881d3.

ref https://github.com/rust-lang/rust/issues/117430#issuecomment-1791609163, https://github.com/rust-lang/rust/pull/117471#issuecomment-1791937529
2023-11-03 12:44:53 +01:00
Ralf Jung
f38849841b Revert "Auto merge of #117328 - lqd:cranelift-rocket, r=Mark-Simulacrum"
This reverts commit 1dfb6b162b, reversing
changes made to bcb5798dd8.

That commit broke generating nightly rustc docs. Revert it until we can figure out how to have both, cranelift and docs.
2023-11-03 08:03:28 +01:00
onur-ozkan
fedfca71ed Revert "bootstrap: do not purge docs on CI environment"
This reverts commit 6198e881d3.
2023-11-03 09:15:26 +03:00
bors
6b9d6dedd0 Auto merge of #117313 - GuillaumeGomez:cg_gcc-tests, r=onur-ozkan
Run part of `rustc_codegen_gcc`'s tests in CI

Thanks to #112701 and `@bjorn3,` it made this much easier.

Also cc `@antoyo.`

r? `@bjorn3`
2023-11-03 02:05:06 +00:00
Alejandro Martinez Ruiz
274a6f3d0d bootstrap/setup: create hooks directory if non-existing 2023-11-02 22:41:25 +01:00
Guillaume Gomez
260d91bd41 Add FIXME header for two comments in cg_gcc and cg_clif boostrap types 2023-11-02 21:03:27 +01:00
Guillaume Gomez
a1902a81d9 Force mangling version for rustc_codegen_gcc 2023-11-02 21:03:27 +01:00
Guillaume Gomez
4b290d40a5 Only run cg_gcc tests on linux x86_64 2023-11-02 21:03:27 +01:00
Guillaume Gomez
7f6aa4422c Add comment explaning when to uncomment the prepare command code 2023-11-02 21:03:27 +01:00
Guillaume Gomez
c6ace5c564 Run rustc_codegen_gcc tests in the CI 2023-11-02 21:03:27 +01:00
onur-ozkan
6198e881d3 bootstrap: do not purge docs on CI environment
Temporary fix for https://github.com/rust-lang/rust/issues/117430

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-11-02 21:36:43 +03:00
SparrowLii
248dd14fa5 update config.example.toml 2023-10-31 17:30:41 +08:00
SparrowLii
bf5fb7614b update bootstrap change history 2023-10-31 16:52:16 +08:00
SparrowLii
ab8101d019 enable parallel rustc in nightly builds 2023-10-31 16:36:40 +08:00
Guillaume Gomez
c994bdb8d7
Rollup merge of #117383 - onur-ozkan:fix-x-install, r=albertlarsan68
improve and fix `x install`

Fix: Write access check of `prefix` and `sysconfdir` when DESTDIR is present.

Improvement: Instead of repeatedly reading `DESTDIR` within each `fn prepare_dir` usage, read it once and pass it to the `fn prepare_dir`.

Fixes #117203
2023-10-30 17:33:18 +01:00
Guillaume Gomez
99b032f9ff
Rollup merge of #117356 - he32:netbsd-mipsel, r=oli-obk
Add support for mipsel-unknown-netbsd, 32-bit LE mips.
2023-10-30 17:33:16 +01:00
onur-ozkan
4b14048d60 improve and fix x install
Fix: Write access check of `prefix` and `sysconfdir`
when DESTDIR is present.

Improvement: Instead of repeatedly reading `DESTDIR` within
each `fn prepare_dir` usage, read it once and pass it to
the `fn prepare_dir`.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-10-30 11:42:19 +03:00
chenx97
2409ea3c12 bootstrap: bump fd-lock, clap and windows.
this also updates target-sensitive dependencies like rustix
and libc.
2023-10-30 15:54:57 +08:00
bors
1dfb6b162b Auto merge of #117328 - lqd:cranelift-rocket, r=Mark-Simulacrum
pass `CODEGEN_BACKENDS` to docker

The backends to build are now defined in the `CODEGEN_BACKENDS` env var. It's correctly set in CI, but wasn't passed to docker, hence cg_clif wasn't actually built in #81746.

r? `@Kobzol:` I locally tried `CODEGEN_BACKENDS="cranelift" DEPLOY=1 src/ci/docker/run.sh dist-x86_64-linux` and this change was enough for `ci/run.sh` to read the env var.

So I'll try as-is and we'll see.
2023-10-30 01:56:58 +00:00
Rémy Rakic
f656accdf5 handle dry runs in dist::CodegenBackend
self.number_of_times_dry_runs_have_caused_issues += 1;
2023-10-29 13:12:02 +00:00
Havard Eidnes
82b447a0cc Add support for mipsel-unknown-netbsd, 32-bit LE mips. 2023-10-29 12:39:30 +00:00
Guillaume Gomez
20debcd345
Rollup merge of #117043 - onur-ozkan:skip-stage0-validation, r=Mark-Simulacrum
add bootstrap flag `--skip-stage0-validation`

This change introduces the `--skip-stage0-validation` flag, which permits the use of any desired version of the stage0 compiler without verifying its version.

Additionally, stage0 compiler validation check is reverted(#115103) to its default enabled state.

Helps to #115065

r? Mark-Simulacrum
2023-10-29 12:35:00 +01:00
Jubilee
771b2558b4
Rollup merge of #117322 - onur-ozkan:fix-suppressed-outputs, r=Kobzol
change default output mode of `BootstrapCommand`

`SuppressOnSuccess` on `BootstrapCommand` is a problematic default mode as it affects the logs during the bootstrapping (as shown in the screenshot below). The default behavior should be to print everything unless we explicitly modify the behavior within build steps.

![image](https://github.com/rust-lang/rust/assets/39852038/8dbaaeb2-0656-4ff9-8e48-1ac0734a913f)

Fixes #117315

cc `@Kobzol`
2023-10-28 17:10:30 -07:00
bjorn3
aefd7ace91 Ensure the rustc-codegen-cranelift-preview component is never empty
Either generate it with the actual codegen backend dylib or omit it
entirely when the cranelift backend is disabled for this build.
2023-10-28 19:12:44 +00:00
onur-ozkan
236f6ba261 set BootstrapCommand output mode for submodules
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-10-28 20:02:41 +03:00
onur-ozkan
3bb0c94eb6 change default output mode of BootstrapCommand
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-10-28 19:36:09 +03:00
bors
6a66ca215b Auto merge of #81746 - bjorn3:cg_clif_rustup_component, r=Mark-Simulacrum
Distribute cg_clif as rustup component on the nightly channel

This makes it possible to use cg_clif using:

```bash
$ rustup component add rustc-codegen-cranelift-preview --toolchain nightly
$ RUSTFLAGS="-Zcodegen-backend=cranelift" cargo +nightly build
```

cc https://github.com/rust-lang/compiler-team/issues/405.
r? `@Mark-Simulacrum`
2023-10-28 15:16:27 +00:00
bors
c6eb61a97f Auto merge of #117197 - Zalathar:demangler, r=onur-ozkan
Avoid unnecessary builds/rebuilds of `rust-demangler`

This is a combination of two loosely-related changes:

- Don't build `rust-demangler` as a dependency of `tests/run-make`, because after #112300 none of the remaining run-make tests actually use it. (If future run-make tests ever do need the demangler, it'll be easy to add it back.)
- For `tests/run-coverage`, build the demangler with the stage 0 compiler instead of the current-stage compiler. This avoids having to uselessly rebuild the demangler after modifying and rebuilding the compiler itself.
2023-10-28 01:04:35 +00:00
bjorn3
aaa4e541ee Explicitly mark which targets to distribute cg_clif for in CI
This avoids needlessly building cg_clif for other targets and makes it
easier for the dist code to determine if it should distribute cg_clif as
component.
2023-10-27 18:56:46 +00:00
Matthias Krüger
b9015dab9d
Rollup merge of #117287 - onur-ozkan:fix-miri-target-info, r=RalfJung
fix miri target information for Test step

self-explanatory

r? RalfJung
2023-10-27 19:46:10 +02:00
onur-ozkan
b915fc86ca fix miri target information for Test step
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-10-27 18:20:19 +03:00
bjorn3
a58327dc01 Distribute cg_clif as a rustup component 2023-10-27 11:56:36 +00:00
Zalathar
36c3f90173 For run-coverage tests, build rust-demangler with the stage 0 compiler
This avoids useless rebuilds of the demangler when modifying the compiler.
2023-10-27 17:18:47 +11:00
Zalathar
be0d73afec Don't provide rust-demangler to run-make tests
The demangler was only needed by coverage tests, but those tests were migrated
into their own custom test mode in #112300.

This avoids having to build the demangler just for run-make tests. It will
still be built as needed by run-coverage tests or for other purposes.
2023-10-27 17:18:47 +11:00
bors
dab715641e Auto merge of #117249 - matthiaskrgr:rollup-h4og5rv, r=matthiaskrgr
Rollup of 6 pull requests

Successful merges:

 - #116968 (Invalid `?` suggestion on mismatched `Ok(T)`)
 - #117032 (Enable cg_clif tests for riscv64gc)
 - #117106 (When expecting closure argument but finding block provide suggestion)
 - #117114 (Improve `stringify.rs` test)
 - #117188 (Avoid repeated interning of `env!("CFG_RELEASE")`)
 - #117243 (Explain implementation of mem::replace)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-10-26 22:10:17 +00:00
Matthias Krüger
596369fea0
Rollup merge of #117032 - bjorn3:riscv64_enable_cg_clif_tests, r=petrochenkov
Enable cg_clif tests for riscv64gc

Cranelift now has support for riscv64 on Linux.
2023-10-26 22:26:10 +02:00
bors
aa1a71e9e9 Auto merge of #116581 - Kobzol:bootstrap-cmd-run, r=onur-ozkan
Centralize command running in boostrap (part one)

This PR tries to consolidate the various `run, try_run, run_quiet, run_quiet_delaying_failure, run_delaying_failure` etc. methods on `Builder`. This PR only touches command execution which doesn't produce output that would be later read by bootstrap, and it also only refactors spawning of commands that happens after a builder is created (commands executed during download & git submodule checkout are left as-is, for now).

The `run_cmd` method is quite meaty, but I expect that it will be changing rapidly soon, so I considered it easy to kept everything in a single method, and only after things settle down a bit, then maybe again split it up a bit.

I still kept the original shortcut methods like `run_quiet_delaying_failure`, but they now only delegate to `run_cmd`. I tried to keep the original behavior (or as close to it as possible) for all the various commands, but it is a giant mess, so there may be some deviations. Notably, `cmd.output()` is now always called, instead of just `status()`, which was called previously in some situations.

Apart from the refactored methods, there is also `Config::try_run`, `check_run`, methods that run commands that produce output, oh my… that's left for follow-up PRs :)

The driving goal of this (and following) refactors is to centralize command execution in bootstrap on a single place, to make command mocking feasible.

r? `@onur-ozkan`
2023-10-26 20:15:16 +00:00