Commit graph

5258 commits

Author SHA1 Message Date
bors
604f185fae Auto merge of #118936 - nikic:update-llvm-18, r=cuviper
Update to LLVM 17.0.6

This is a rebase on the final LLVM 17 release.

Includes the RISCV fix requested in https://github.com/rust-lang/llvm-project/pull/157 (and I think this is also the only change in this release that is relevant to rustc).

r? `@cuviper`

Fixes #117902
2023-12-15 02:15:55 +00:00
Nikita Popov
5a8d6e784d Fix bootstrap test failures
There are a number of fixes here:
 * if-unchanged is supposed to be the default for channel=dev, but
   actually used different logic. Make sure it is the same.
 * If no llvm section was specified at all, different logic was
   also used. Go through the standard helper.
 * Some more assertions should depend on if_unchanged.
2023-12-14 15:52:47 +01:00
bors
529047cfc3 Auto merge of #118789 - jyn514:dry-run, r=onur-ozkan
fix --dry-run when the change-id warning is printed

previously:
```
Building bootstrap
   Compiling bootstrap v0.0.0 (/home/jyn/src/rust2/src/bootstrap)
    Finished dev [unoptimized] target(s) in 4.23s
thread 'main' panicked at src/bin/main.rs:147:17:
fs::write(warned_id_path, latest_change_id.to_string()) failed with No such file or directory (os error 2)
```
2023-12-14 13:30:48 +00:00
bors
2862500152 Auto merge of #118919 - matthiaskrgr:rollup-02udckl, r=matthiaskrgr
Rollup of 4 pull requests

Successful merges:

 - #118759 (Support bare unit structs in destructuring assignments)
 - #118871 (Coroutine variant fields can be uninitialized)
 - #118883 (Change a typo mistake in the-doc-attribute.md)
 - #118906 (Fix LLD thread flags in bootstrap on Windows)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-12-13 17:45:17 +00:00
Jakub Beránek
066e6ffa02
Fix LLD thread flag selection for Windows targets 2023-12-13 07:47:46 +01:00
Jakub Beránek
c5208518fa
Add TargetSelection::is_windows method 2023-12-13 07:47:25 +01:00
David Tolnay
b30e94b7bb
Unbreak non-unix non-windows bootstrap 2023-12-12 13:11:39 -08:00
bors
5b8bc568d2 Auto merge of #118817 - lnicola:sync-from-ra, r=lnicola
Subtree update of `rust-analyzer`

r? `@ghost`
2023-12-12 08:22:37 +00:00
Laurențiu Nicola
ce8d5fba85 Add rust_analyzer to EXTRA_CHECK_CFGS 2023-12-12 08:16:34 +02:00
onur-ozkan
2de3cf8d6b sort dump files at the end of bootstrap
To ensure deterministic results we must sort the dump lines.
This is necessary because the order of rustc invocations different
almost all the time.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-12-11 14:26:19 +03:00
onur-ozkan
9eeb265f7c update auto completions
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-12-11 14:26:11 +03:00
onur-ozkan
f2feed1095 Dump command invocations from bootstrap shims
When making changes to the bootstrap that shouldn't change its behavior,
this feature will help developers perform comparisons to check whether the
bootstrap behavior has changed or not.

This can also be used for different purposes. For example, allowing CI to
dump the shims and upload them so that developers can download them and compare
with their local dump to see if CI affects the bootstrap unexpectedly. Or, make CI
perform comparisons on specific bootstrap tests to check for behavior changes between
the master and PR branches.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-12-11 14:25:19 +03:00
Jakub Beránek
3157f2121e
Revert "Use MCP510"
This reverts commit 40c3d351ad. The option was dogfooded for using lld with MCP510 , but it broke testing with LLD, because we don't pass `-Zunstable-options` on enough places.
2023-12-10 23:22:20 +01:00
Jakub Beránek
f1c5558edc
Add ChangeInfo record 2023-12-10 20:45:07 +01:00
Jakub Beránek
ccbd88dc83
Remove unused run_dsymutil and gpg_password_file config values 2023-12-10 20:45:07 +01:00
Jakub Beránek
6badc0d840
Destructure TOML configs
This will allow us to check if all values are used
2023-12-10 20:45:07 +01:00
Jakub Beránek
53031b264e
Review fixes 2023-12-10 13:06:05 +01:00
Jakub Beránek
4750e9de47
Produce an explicit error when using a self-contained lld, but we don't add it to sysroot 2023-12-10 11:21:36 +01:00
Jakub Beránek
ea769dbeb7
Add change tracker entry 2023-12-10 11:21:35 +01:00
Jakub Beránek
cbfe6327a1
Do not invoke external lld to figure out thread flags in self-contained mode 2023-12-10 11:21:35 +01:00
Jakub Beránek
40c3d351ad
Use MCP510 2023-12-10 11:21:35 +01:00
Jakub Beránek
48c1607bc6
Introduce LldMode and generalize parsing of use-lld 2023-12-10 11:21:35 +01:00
Jakub Beránek
d9f9e67bc1
Refactor rust(do)c linker flags 2023-12-10 11:21:33 +01:00
Jakub Beránek
b3c9ffdc77
Add is_msvc function 2023-12-10 11:20:49 +01:00
bors
f7253f2317 Auto merge of #118787 - GuillaumeGomez:rollup-fj5wr3q, r=GuillaumeGomez
Rollup of 5 pull requests

Successful merges:

 - #117966 (add safe compilation options)
 - #118747 (Remove extra check cfg handled by libc directly)
 - #118774 (add test for inductive cycle hangs)
 - #118775 (chore: add test case for type with generic)
 - #118782 (use `&` instead of start-process in x.ps1)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-12-10 01:02:42 +00:00
bors
8cd8d31369 Auto merge of #118069 - onur-ozkan:bypass_bootstrap_lock, r=Mark-Simulacrum
allow bypassing the build directory lock

As bootstrap locks its entire build directory, parallel bootstrapping for anything becomes impossible. This change enables developers to bypass the locking mechanism (with `--bypass-bootstrap-lock` flag) when it is unnecessary for their specific use case.

more context: https://rust-lang.zulipchat.com/#narrow/stream/326414-t-infra.2Fbootstrap/topic/Build.20.28miri.3F.29.20sysroots.20in.20parallel

cc `@saethlin`
2023-12-09 23:02:05 +00:00
jyn
520662eb2a fix --dry-run when the change-id warning is printed 2023-12-09 15:19:39 -05:00
onur-ozkan
6860654d82 allow bypassing the build directory lock
As bootstrap locks its entire build directory, parallel bootstrapping
for anything becomes impossible. This change enables developers to bypass
the locking mechanism when it is unnecessary for their specific use case.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-12-09 20:12:40 +03:00
bors
c722d5191c Auto merge of #117771 - tmandry:fuchsia-gha, r=Mark-Simulacrum
Build Fuchsia in CI

Fittingly, when I first put this up it was failing due to discovering an ICE in clippy (looks like fixed in https://github.com/rust-lang/rust-clippy/pull/11760), probably more fallout from recent type system changes. Other recent regressions this would have caught include

- #117455 and #117493
- #117602

Originally we discussed basing this on cargotest, but they ended up not sharing anything. Fuchsia has its own tool to manage checkouts and its own build system. What it requires is a fully "install"ed toolchain with a host and fuchsia target. We share logic from the dist-various-2 builder to build the fuchsia target.

Right now this runs clippy and skips linking a bunch of targets, since most issues we catch are in the frontend. In theory we could probably get the build CPU time down quite a bit with this approach, but right now some linked targets are creeping into the dependencies anyway and we don't have a good way of preventing that yet.

The approach is basically to get a checkout at a pinned commit and then run a [script](https://fuchsia-review.git.corp.google.com/c/fuchsia/+/943833/6/scripts/rust/build_fuchsia_from_rust_ci.sh) at a predetermined location. I would like to update that pin every few weeks. Partial checkouts are used to minimize clone time, but we don't filter out prebuilt packages.

r? `@Mark-Simulacrum`

Based on discussion in [this Zulip thread](https://rust-lang.zulipchat.com/#narrow/stream/242791-t-infra/topic/Putting.20Fuchsia.20in.20crater).
2023-12-09 17:00:54 +00:00
Guillaume Gomez
cc821d3ae6
Rollup merge of #118747 - Urgau:check-cfg-freebsd-cleanup, r=onur-ozkan
Remove extra check cfg handled by libc directly

The `libc` crate has handle for quite some time now [check-cfg in it's own build script](497ac428bc/build.rs (L6-L32)).

We therefor no longer need to manually define them.
2023-12-09 18:00:36 +01:00
Guillaume Gomez
83e814f88c
Rollup merge of #117966 - lxy19980601:safe_compilation_options, r=Mark-Simulacrum
add safe compilation options

Add two options when building rustc : strip and stack protector.
If set `strip = true`, `rustc` will be stripped of symbols using `-Cstrip=symbols`.
Also can set `stack-protector` and then `rustc` will be compiled with stack protectors.
2023-12-09 18:00:36 +01:00
Urgau
0f40b6545d Remove extra check-cfg handled by libc directly 2023-12-08 15:51:18 +01:00
bors
6c470a557a Auto merge of #118301 - weihanglo:rustfix-doc, r=albertlarsan68
docs: publish nightly doc for `rustfix`

`rustfix `has migrated into rust-lang/cargo in <https://github.com/rust-lang/cargo/issues/13005>. We now can publish nightly doc for it.
2023-12-08 05:11:12 +00:00
Tyler Mandry
a1b9a59958 Build Fuchsia in CI 2023-12-07 16:30:36 -08:00
Matthias Krüger
f546b44ecd
Rollup merge of #117981 - Urgau:check-cfg-remove-deprecated-syntax, r=b-naber
Remove deprecated `--check-cfg` syntax

This PR removes the deprecated `--check-cfg` `names(...)` and `values(...)` syntax.

Follow up to https://github.com/rust-lang/rust/pull/111072
Part of https://github.com/rust-lang/compiler-team/issues/636

r? compiler
2023-12-06 21:52:30 +01:00
Matthias Krüger
756bc44949
Rollup merge of #118650 - RalfJung:flags-sync, r=clubby789
add comment about keeping flags in sync between bootstrap.py and bootstrap.rs

They got out of sync, probably because this comment was missing on the Python side (it only exists on the Rust side). https://github.com/rust-lang/rust/pull/118642 brings the flags back in sync but does not fix the comment, so let's do that here.

r? clubby789
2023-12-06 17:21:59 +01:00
Michael Goulet
0a8c0f780f
Rollup merge of #118642 - Xanewok:patch-1, r=clubby789
bootstrap(builder.rs): Don't explicitly warn against `semicolon_in_expressions_from_macros`

This already wasn't passed in bootstrap.py and the lint itself already warns-by-default for 2 years now and has already been added to the future-incompat group in Rust 1.68.

See https://github.com/rust-lang/rust/issues/79813 for the tracking issue.
2023-12-05 14:52:44 -05:00
Ralf Jung
68ea62100b add comment about keeping flags in sync between bootstrap.py and bootstrap.rs 2023-12-05 19:25:07 +01:00
Urgau
801bc561bc Update bootstrap libc to 0.2.150
Version 0.2.150 include support for the new check-cfg syntax
2023-12-05 13:25:11 +01:00
Igor Matuszewski
a0ba895f2d
bootstrap(builder.rs): Don't explicitly warn against semicolon_in_expressions_from_macros
This already wasn't passed in bootstrap.py and the lint itself already warns-by-default for 2 years now and has already been added to the future-incompat group in Rust 1.68.

See https://github.com/rust-lang/rust/issues/79813 for the tracking issue.
2023-12-05 12:11:29 +01:00
long-long-float
15a8e9d59b Fix x not to quit when x prints settings.json
Use `while` instead of `loop`

Co-authored-by: Onur Özkan <onurozkan.dev@outlook.com>

Update prompt message
2023-12-05 19:39:06 +09:00
l00846161
3f8487a099 Add safe compilation options
Add two options when building rust: strip and stack protector.
If set `strip = true`, symbols will be stripped using `-Cstrip=symbols`.
Also can set `stack-protector` and stack protectors will be used.
2023-12-05 14:22:08 +08:00
onur-ozkan
b7e6da80af replace once_cell::sync::OnceCell with std OnceLock
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-12-02 12:45:23 +03:00
bors
b10cfcd65f Auto merge of #118132 - onur-ozkan:stdlib-assertion-status-to-compiletest, r=wesleywiser
utilize stdlib debug assertion status in compiletest

Implemented a new flag `--with-debug-assertions` on compiletest to pass the stdlib debug assertion status from bootstrap.

Resolves #115171
2023-11-29 17:41:27 +00:00
Matthias Krüger
8f4ccc14c9
Rollup merge of #118323 - onur-ozkan:better-error-for-incorrect-profiles, r=clubby789
give dev-friendly error message for incorrect config profiles

before this change, an incorrect profile would result in the following error:

```sh
...
...
  File "/home/nimda/devspace/onur-ozkan/rust/src/bootstrap/bootstrap.py", line 1088, in bootstrap
    with open(include_path) as included_toml:
         ^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/home/nimda/devspace/onur-ozkan/rust/src/bootstrap/defaults/config.aaaa.toml'
```

with this change, the error message is now:

```sh
...
...
  File "/home/nimda/devspace/onur-ozkan/rust/src/bootstrap/bootstrap.py", line 1088, in bootstrap
    raise Exception("Unrecognized profile '{}'. Check src/bootstrap/defaults"
Exception: Unrecognized profile 'aaaa'. Check src/bootstrap/defaults for available options.
```
2023-11-28 16:09:55 +01:00
bors
49b3924bd4 Auto merge of #117947 - Dirbaio:drop-llvm-15, r=cuviper
Update the minimum external LLVM to 16.

With this change, we'll have stable support for LLVM 16 and 17.
For reference, the previous increase to LLVM 15 was #114148

[Relevant zulip discussion](https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/riscv.20forced-atomics)
2023-11-27 21:54:03 +00:00
bors
b29a1e00f8 Auto merge of #118352 - Zalathar:llvm-hash, r=onur-ozkan
bootstrap: Memoize the LLVM rebuild hash to avoid very slow `x check`

Recently I've encountered a massive regression in the performance of re-running `x check` after making no changes.

It used to take around 2 seconds, and now it takes 20-30 seconds. That's quite a hassle when r-a runs it every time I save.

After some poking around, what I've found is that each individual call to `generate_smart_stamp_hash` doesn't take a particularly long time (around 0.5 sec), but it gets called dozens of times during `x check`, and that seems to be what's adding up to 20-30 seconds.

---

https://rust-lang.zulipchat.com/#narrow/stream/326414-t-infra.2Fbootstrap/topic/Massive.20regression.20in.20no-op.20.60x.20check.60

cc `@onur-ozkan`
2023-11-27 10:22:08 +00:00
Zalathar
4f1cf0b5da bootstrap: Memoize the LLVM rebuild hash to avoid very slow x check 2023-11-27 18:21:19 +11:00
Matthias Krüger
8946bf56c6
Rollup merge of #118322 - onur-ozkan:if-only-doctests-skip-compiletest, r=clubby789
skip {tidy,compiletest,rustdoc-gui} based tests for `DocTests::Only`

As use of `--doc` with `x test` is intended for running doc-tests only, executing compiletest, tidy or rustdoc-gui based tests considered as an incorrect behavior from bootstrap. This change fixes that.
2023-11-27 08:21:18 +01:00
onur-ozkan
1017042575 give dev-friendly error message for incorrect config profiles
before this change, an incorrect profile would result in the following error:

```sh
...
...
  File "/home/nimda/devspace/onur-ozkan/rust/src/bootstrap/bootstrap.py", line 1088, in bootstrap
    with open(include_path) as included_toml:
         ^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/home/nimda/devspace/onur-ozkan/rust/src/bootstrap/defaults/config.aaaa.toml'
```

with this change, the error message is now:

```sh
...
...
  File "/home/nimda/devspace/onur-ozkan/rust/src/bootstrap/bootstrap.py", line 1088, in bootstrap
    raise Exception("Unrecognized profile '{}'. Check src/bootstrap/defaults"
Exception: Unrecognized profile 'aaaa'. Check src/bootstrap/defaults for available options.
```

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-11-26 19:05:02 +03:00