Commit graph

6034 commits

Author SHA1 Message Date
bors
636d7ff91b Auto merge of #129275 - matthiaskrgr:rollup-qv64hg6, r=matthiaskrgr
Rollup of 6 pull requests

Successful merges:

 - #129194 (Fix bootstrap test `detect_src_and_out` on Windows)
 - #129217 (safe transmute: check lifetimes)
 - #129223 ( Fix wrong argument for `get_fn_decl`)
 - #129235 (Check that `#[may_dangle]` is properly applied)
 - #129245 (Fix a typo in `rustc_hir` doc comment)
 - #129271 (Prevent double panic in query system, improve diagnostics)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-08-19 20:42:45 +00:00
bors
5601d14249 Auto merge of #128588 - onur-ozkan:clean-up-bootstrap-internals, r=albertlarsan68
bootstrap minor improvements and clean-ups

3rd commit fixes https://github.com/rust-lang/rust/issues/128553#issuecomment-2266119948.
2024-08-19 18:15:01 +00:00
Matthias Krüger
cdb44b7b15
Rollup merge of #129194 - ChrisDenton:detect-src, r=Mark-Simulacrum
Fix bootstrap test `detect_src_and_out` on Windows

Fixes #129188 by making sure it's properly testing the right path for the platform.
2024-08-19 20:14:56 +02:00
bors
45fbf41deb Auto merge of #128722 - tgross35:new-resolver-root, r=Mark-Simulacrum
Switch to using the v2 resolver in most workspaces

Pinning the resolver to v1 was done in 5abff3753a ("Explicit set workspace.resolver ...") in order to suppress warnings. Since there is no specific reason not to use the new resolver and since it fixes issues, change to `resolver = "2"` everywhere except library.
2024-08-19 09:50:33 +00:00
Trevor Gross
f956bceb6a
Rollup merge of #129116 - Zalathar:compiler-rt, r=Mark-Simulacrum
Include a copy of `compiler-rt` source in the `download-ci-llvm` tarball

This will make it possible to experiment with allowing `download-ci-llvm` builds to build `library/profiler_builtins`, without needing to check out the `src/llvm-project` submodule.

By itself, this PR just adds the files to the tarball, but doesn't actually do anything with them. The idea is that once this is merged, it will then be much easier to proceed with work on the necessary bootstrap changes (using the real downloaded tarball), without having to rig up weird hacks to simulate downloading a modified tarball.

---

Adding these files to the compressed tarballs appears to increase its size by a negligible amount (<1 MB out of 400/800+ MB).

The uncompressed size is about 14 MB (out of 2+ GB for the whole tarball).

(The excluded test files would have been another 35 MB.)
2024-08-18 23:41:48 -05:00
Trevor Gross
7240da01ee Run cargo update with the new v2 resolver
v2 resolves some dependencies differently, and we adjusted some
dependency versions. Run `cargo update` to make sure everything is in
sync.
2024-08-18 14:00:50 -05:00
Trevor Gross
f69e74e2f5 Update some dependency versions that allow better licensing
With the new resolver, a few dependencies get brought in twice with
different licenses. For example, all dependencies from `wasm-tools`
gained Apache-2.0 and MIT options, and with the v2 resolver we were
using one version from before and one version from after this change.
This made tidy's license check difficult.

Update some minimum versions to remove duplicate dependencies and smooth
out license checking.
2024-08-18 13:59:27 -05:00
Chris Denton
9a9cf2fd4c
Fix bootstrap test detect_src_and_out on Windows 2024-08-17 12:29:28 +00:00
bors
27b93da8de Auto merge of #129052 - onur-ozkan:better-incompatibility-check, r=Kobzol
detect incompatible CI rustc options more precisely

Previously, the logic here was simply checking whether the option was set in `config.toml`. This approach was not manageable in our CI runners as we set so many options in config.toml. In reality, those values are not incompatible since they are usually the same value used to generate the CI rustc. Now, the new logic compares the configuration values with the values used to generate the CI rustc, so we get more precise results and make the process more manageable.

r? Kobzol

Blocker for https://github.com/rust-lang/rust/pull/122709
2024-08-16 11:52:38 +00:00
许杰友 Jieyou Xu (Joe)
26fae1ed1c bootstrap: fix trying to modify file times on read-only file on Windows 2024-08-16 06:55:23 +00:00
Jakub Beránek
478d42bdc2
Print more verbose error for commands that capture output 2024-08-15 18:31:43 +02:00
Zalathar
320be47410 Include a copy of compiler-rt source in the download-ci-llvm tarball 2024-08-15 15:33:10 +10:00
onur-ozkan
469d5937bf disable download-rustc if CI rustc has unsupported options
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-08-14 18:59:23 +03:00
onur-ozkan
0935c86603 leave a FIXME note for --set flags coverage
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-08-14 18:59:21 +03:00
onur-ozkan
151e8cd2f8 improve config::check_incompatible_options_for_ci_rustc logs
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-08-14 18:59:17 +03:00
onur-ozkan
4d13470834 fix the incorrect unpacking logic
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-08-14 18:59:12 +03:00
onur-ozkan
4d21c735a2 create const BUILDER_CONFIG_FILENAME for builder-config file
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-08-14 18:59:06 +03:00
onur-ozkan
43320d5d6c do not check incompatibility if config.toml isn't present
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-08-14 08:06:50 +03:00
onur-ozkan
b76f6a3b1a print values of incompatible options
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-08-14 08:04:02 +03:00
Jakub Beránek
87a4c325d2 Fix target triple in bootstrap 2024-08-13 18:08:30 +02:00
onur-ozkan
0518e8c7fd detect incompatible CI rustc options more precisely
Previously, the logic here was simply checking whether the option was set in `config.toml`.
This approach was not manageable in our CI runners as we set so many options in config.toml.
In reality, those values are not incompatible since they are usually the same value used to generate
the CI rustc. Now, the new logic compares the configuration values with the values used to generate
the CI rustc, so we get more precise results and make the process more manageable.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-08-13 17:22:13 +03:00
onur-ozkan
b2f1fc1697 separate inner function (get_toml) of Config::parse
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-08-13 17:20:39 +03:00
onur-ozkan
aba675fe75 copy builder-config file into ci-rustc sysroot
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-08-13 13:48:23 +03:00
Matthias Krüger
9d9c9acc6e
Rollup merge of #128983 - Kobzol:bootstrap-target, r=onur-ozkan
Slightly refactor `TargetSelection` in bootstrap

Mostly a drive-by refactoring of `TargetSelection` to reduce some manual "windows-gnu" detection and also accesses to the `triple` field.

r? `@onur-ozkan`
2024-08-13 12:12:24 +02:00
Matthias Krüger
0643c3b910
Rollup merge of #128841 - lqd:rustc-args, r=onur-ozkan
bootstrap: don't use rustflags for `--rustc-args`

r? `@onur-ozkan`

This is going to require a bit of context.

https://github.com/rust-lang/rust/pull/47558 has added `--rustc-args` to `./x test` to allow passing flags when building `compiletest` tests. It was made specifically because using `RUSTFLAGS` would rebuild the compiler/stdlib, which would in turn require the flag you want to build tests with to successfully bootstrap.

#113178 made the request that it also works for other tests and doctests. This is not trivial to support across the board for `library`/`compiler` unit-tests/doctests and across stages. This issue was closed in #113948 by using `RUSTFLAGS`, seemingly incorrectly since https://github.com/rust-lang/rust/pull/123489 fixed that part to make it work.

Unfortunately #123489/#113948 have regressed the goals of `--rustc-args`:
- now we can't use rustc args that don't bootstrap, to run the UI tests: we can't test incomplete features. The new trait solver doesn't bootstrap, in-progress borrowck/polonius changes don't bootstrap, some other features are similarly incomplete, etc.
- using the flag now rebuilds everything from scratch: stage0 stdlib, stage1 compiler, stage1 stdlib. You don't need to re-do all this to compile UI tests, you only need the latter to run stdlib tests with a new flag, etc. This happens for contributors, but also on CI today. (Not to mention that in doing that it will rebuild things with flags that are not meant to be used, e.g. stdlib cfgs that don't exist in the compiler; or you could also imagine that this silently enables flags that were not meant to be enabled in this way).

Since then, https://github.com/rust-lang/rust/pull/125011/commits/bd71c71ea04b4a4f954e579c2a6d44113274846a has started using it to test a stdlib feature, relying on the fact that it now rebuilds everything. So #125011 also regressed CI times more than necessary because it rebuilds everything instead of just stage 1 stdlib.

It's not easy for me to know how to properly fix #113178 in bootstrap, but #113948/#123489 are not it since they regress the initial intent. I'd think bootstrap would have to know from the list of test targets that are passed that the `library` or `compiler` paths that are passed could require rebuilding these crates with different rustflags, probably also depending on stages. Therefore I would not be able to fix it, and will just try in this PR to unregress the situation to unblock the initial use-case.

It seems miri now also uses `./x miri --rustc-args` in this incorrect meaning to rebuild the `library` paths they support to run with the new args. I've not made any bootstrap changes related to `./x miri` in this PR, so `--rustc-args` wouldn't work there anymore. I'd assume this would need to use rustflags again but I don't know how to make that work properly in bootstrap, hence opening as draft, so you can tell me how to do that. I assume we don't want to break their use-case again now that it exists, even though there are ways to use `./x test` to do exactly that.

`RUSTFLAGS_NOT_BOOTSTRAP=flag ./x test library/std` is a way to run unit tests with a new flag without rebuilding everything, while with #123489 there is no way anymore to run tests with a flag that doesn't bootstrap.

---
edit: after review, this PR:
- renames `./x test --rustc-args` to `./x test --compiletest-rustc-args` as it only applies there, and cannot use rustflags for this purpose.
- fixes the regression that using these args rebuilt everything from scratch
- speeds up some CI jobs via the above point
- removes `./x miri --rustc-args` as only library tests are supported, needs to rebuild libstd, and `./x miri --compiletest-rustc-args` wouldn't work since compiletests are not supported.
2024-08-13 12:12:23 +02:00
Jakub Beránek
1c0c2c3ad6 Implement AsRef<Path> for TargetSelection 2024-08-13 10:40:45 +02:00
Jakub Beránek
0cfbfa9532 Create a TargetSelection method for recognizing *-windows-gnu targets 2024-08-13 10:39:35 +02:00
Matthias Krüger
301a4cab68
Rollup merge of #129000 - RalfJung:miri-bootstrap-clear, r=onur-ozkan
bootstrap: clear miri ui-test deps when miri sysroot gets rebuilt

Second attempt after https://github.com/rust-lang/rust/pull/128683: seems like it's not the compiler changing that we care about, but the sysroot changing.

I did some local testing with sysroot rebuilds and it works fine for at least those cases I checked.

r? ``@onur-ozkan``
2024-08-12 23:10:51 +02:00
Rémy Rakic
2abfa35acd add change tracker notice 2024-08-12 15:28:39 +00:00
Rémy Rakic
5e872568a8 rename ./x test's --rustc-args to --compiletest-rustc-args 2024-08-12 15:28:38 +00:00
Rémy Rakic
0ad798aec7 remove unexpected --rustc-args from ./x miri 2024-08-12 15:28:38 +00:00
Rémy Rakic
bc9ca2902e clarify that --rustc-args is for compiletest tests 2024-08-12 15:28:38 +00:00
Rémy Rakic
83727eca21 don't use rustflags for --rustc-args 2024-08-12 15:28:38 +00:00
Guillaume Gomez
355a23292a
Rollup merge of #128878 - Kobzol:refactor-flags, r=onur-ozkan
Slightly refactor `Flags` in bootstrap

The next step for https://github.com/rust-lang/rust/issues/126819 is to track commands executed inside `Config::parse`. This is quite challenging, because (tracked) command execution needs to access some state that is stored inside `Config`, which creates a sort of a chicken-and-egg problem.

I would like to first untangle `Config::parse` a little bit, which is what this PR starts with.

Tracking issue: https://github.com/rust-lang/rust/issues/126819

r? `@onur-ozkan`
2024-08-12 17:09:17 +02:00
Ralf Jung
6839a8f6d5 bootstrap: clear miri ui-test deps when miri sysroot gets rebuilt 2024-08-12 12:12:33 +02:00
bors
9cb1998ea1 Auto merge of #122362 - Zoxc:rustc_driver_static_std, r=oli-obk,lqd,bjorn3,Kobzol
Link `std` statically in `rustc_driver`

This makes `rustc_driver` statically link to `std`. This is done by not passing `-C prefer-dynamic` when building `rustc_driver`. However building `rustc-main` won't work currently as it tries to dynamically link to both `rustc_driver` and `std` resulting in a crate graph with `std` duplicated. To fix that new command line option `-Z prefer_deps_of_dynamic` is added which prevents linking to a dylib if there's a static variant of it already statically linked into another dylib dependency.

The main motivation for this change is to enable `#[global_allocator]` to be used in `rustc_driver` allowing overriding the allocator used in rustc on all platforms.

---

Instead of adding `-Z prefer_deps_of_dynamic`, this PR is changed to crate opt-in to the linking change via the `rustc_private` feature instead, as that would be typically needed to link to `rustc_driver` anyway.

---

try-job: aarch64-apple
try-job: x86_64-msvc
try-job: i686-mingw
try-job: dist-x86_64-msvc
try-job: aarch64-gnu
2024-08-11 15:08:03 +00:00
Matthias Krüger
bd7075c69e
Rollup merge of #128592 - evelynharthbrooke:master, r=Mark-Simulacrum
Promote aarch64-apple-darwin to Tier 1

This promotes aarch64-apple-darwin to Tier 1 status as per rust-lang/rfcs#3671 and tracking issue #73908. Not sure what else is necessary for this to impement the aforementioned RFC, however I figured I'd try. I did read in previous issues and PRs that the necessary infrastructure was already in place for the aarch64-apple-darwin target, and the RFC mentions the same. So this should be all thats necessary in order for the target to be promoted.

This is a recreation of my previous PR because I accidentally did an incorrect git rebase which caused unnecessary changes to various commit SHAs. So this PR is a recreation of my previous PR without said stumble. My bad.
2024-08-11 07:51:51 +02:00
John Kåre Alsaker
b22253c454 Keep rustc's std copy 2024-08-11 05:43:32 +02:00
John Kåre Alsaker
dd3f7578ee Exclude just std from rustc deps 2024-08-11 04:16:53 +02:00
John Kåre Alsaker
486864f235 Don't statically link std into rustc_driver for windows-gnu 2024-08-11 04:16:53 +02:00
John Kåre Alsaker
3ee43259ac Link std statically in rustc_driver 2024-08-11 04:16:53 +02:00
bors
68d2e8a66e Auto merge of #125642 - khuey:zstd, r=Kobzol
Enable zstd for debug compression.

Set LLVM_ENABLE_ZSTD alongside LLVM_ENABLE_ZLIB so that --compress-debug-sections=zstd is an option.

See #120953

try-job: x86_64-gnu-tools
2024-08-09 22:44:37 +00:00
Matthias Krüger
cea3b42f58
Rollup merge of #128874 - Kobzol:cmd-verbose-logging, r=onur-ozkan
Disable verbose bootstrap command failure logging by default

One of my recent bootstrap command refactoring PRs enabled verbose logging of command failures by default. While this is great for debugging bootstrap, in many situations it's just too verbose and prevents the user from seeing the actual printed stdout/stderr, which usually contains much more useful information.

This PR reverts that logic, and only prints a detailed error when `-v` is passed to bootstrap.

r? ````@onur-ozkan````
2024-08-09 18:25:01 +02:00
Matthias Krüger
5f1e25e65d
Rollup merge of #128822 - onur-ozkan:add-build-config-in-tarballs, r=Kobzol
add `builder-config` into tarball sources

This will be useful for certain scenarios where developers want to know how the tarball sources were generated. We also want this to check for CI rustc incompatible options on bootstrap.

Blocker for #122709

r? Kobzol
2024-08-09 18:24:57 +02:00
Jakub Beránek
5431a93ddc Pass Flags to Config::parse explicitly 2024-08-09 16:19:57 +02:00
Jakub Beránek
03ee7b5999 Move verbose help parsing to main
To remove a side effect (process exit) when parsing config.
2024-08-09 16:19:34 +02:00
Jakub Beránek
a380d5e8f6 Do not print verbose error when a bootstrap command fails without verbose mode 2024-08-09 14:59:33 +02:00
Kyle Huey
6e9afb8dde Enable zstd for debug compression.
Set LLVM_ENABLE_ZSTD alongside LLVM_ENABLE_ZLIB so that --compress-debug-sections=zstd is an option.
Use static linking to avoid a new runtime dependency. Add an llvm.libzstd bootstrap option for LLVM
with zstd. Set it off by default except for the dist builder. Handle llvm-config --system-libs output
that contains static libraries.
2024-08-09 05:55:23 -07:00
Jakub Beránek
f72cb0415b Make Build::run comment more accurate 2024-08-09 12:17:01 +02:00
onur-ozkan
ff0d37cb01 use absolute path for config.toml
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-08-09 11:42:43 +03:00