Commit graph

4230 commits

Author SHA1 Message Date
Matthias Krüger
30846f6ff1
Rollup merge of #106396 - jyn514:bump-stage-date, r=pietroalbini
Allow passing a specific date to `bump-stage0`

This allows regenerating `src/stage0.json` on changes to the tool, without needing to hard-code the date in the source. It was useful for https://github.com/rust-lang/rust/pull/106394, which added clippy to the list of required components.

r? `@pietroalbini`
2023-01-04 07:28:56 +01:00
Michael Goulet
752c0f57ea
Rollup merge of #104748 - lqd:download_lld, r=jyn514
Ensure `lld` is supported with `download-ci-llvm`

This PR:
- ensures LLD's step in bootstrap's dist, but it's not strictly necessary since dist will already package it when it's present.
- makes bootstrap's `native::LLD` step support using the packaged `ci-llvm/bin/lld`, instead of building it from source (which would most likely not be available today, nor in the future where `download-ci-llvm = if-available` is the default).

If I understand correctly, `--enable-full-tools` will also enable `rust.lld`, and this is why LLD is already packaged today in the `rust-dev` component on the main targets (and why `-Zgcc-ld=lld` does work there).

That means it's likely that this PR will not be able to land before I've reworked and landed #101792: if LLD is available in `download-ci-llvm`, the `needs-rust-lld` tests should start being executed on the x64 macOS test builders, and CI would fail today.

I've tested locally that building with `download-ci-llvm = true` and `lld = true` with the LLVM submodule unregistered was successful, and that `rust-lld` and the various `lld-wrapper`s are present and `-Zgcc-ld=lld` works as well, on a few different platforms:
- `x86_64-unknown-linux-gnu`
- `aarch64-apple-darwin`
- `x86_64-pc-windows-msvc` (with `-Clinker=rust-lld` rather than `-Zgcc-ld=lld`)
- `x86_64-apple-darwin`, with the `MACOSX_DEPLOYMENT_TARGET` workaround for #101653

I don't think we really need to bump the `download-ci-llvm-stamp` in this case, since `./build/$triple/ci-llvm/bin/lld` is present on all the above targets already, but have added it mechanically, and it should probably be removed to avoid unnecessary downloads/churn.

Fixes #98340
Supersedes #100010
2023-01-03 17:19:25 -08:00
Rémy Rakic
e0f5c6da1d ensure lld's step unconditionally for RustDev component 2023-01-03 20:21:49 +00:00
Rémy Rakic
c73a46c6bf bump download-ci-llvm-stamp 2023-01-03 20:14:27 +00:00
Rémy Rakic
f635f9d4e4 turn a comment into an actual doc comment 2023-01-03 20:14:27 +00:00
Rémy Rakic
4e4658f0aa slight cleanup 2023-01-03 20:14:24 +00:00
Rémy Rakic
835b58d619 make the native::LLD step able to use an already built lld
Makes the lld step avoid building it from source when possible: when
dist has packaged it along the other LLVM binaries for the rust-dev
component.
2023-01-03 20:06:45 +00:00
Rémy Rakic
6eb205d591 bootstrap dist: ensure LLD's step 2023-01-03 20:06:45 +00:00
Matthias Krüger
258a0fb89e
Rollup merge of #104552 - DebugSteven:warn-newer-x, r=jyn514
warn newer available version of the x tool

This PR adds a check to `tidy` to assert that the installed version of `x` is equal to the version in `src/tools/x/Cargo.toml`. It adds a `--wrapper-version` argument to `x` to determine the version at runtime, .

It does not warn if `x` has not yet been installed, on the assumption that the user isn't interested in using it.
2023-01-03 17:12:10 +01:00
bors
3b1c8a94a4 Auto merge of #105609 - bjorn3:shrink_rustc_dev, r=jyn514
Only include metadata for non-dynamic libraries in rustc-dev

The actual object code should be linked from librustc_driver.so, which is still included in rustc-dev. This saves on download time and disk usage.

Fixes https://github.com/rust-lang/rust/issues/103538
2023-01-03 08:05:54 +00:00
Joshua Nelson
6f1d9ba581 Allow passing a specific date to bump-stage0
This allows regenerating `src/stage0.json` on changes to the tool,
without needing to hard-code the date in the source.
2023-01-03 03:40:58 +00:00
Eric Huss
59b80f598f Run cargo test on tidy itself. 2022-12-31 12:34:23 -08:00
DebugSteven
a917308d91 remove commented out old code 2022-12-31 11:38:44 -07:00
DebugSteven
b2cd3374e9 remove leading comma from macro expansion 2022-12-31 11:37:13 -07:00
bjorn3
5c84f76f57 Only include metadata for non-dynamic libraries in rustc-dev
The actual object code should be linked from librustc_driver.so,
which is still included in rustc-dev. This saves on download time and
disk usage.
2022-12-31 17:20:01 +00:00
Michael Goulet
7f930b4a54
Rollup merge of #106314 - jyn514:fix-panic, r=jyn514
Fix panic on `x build --help`

Fixes https://github.com/rust-lang/rust/issues/106313. This avoids trying to run `get_help` unless we actually need to see the paths that are available for the subcommand.

This originally regressed in https://github.com/rust-lang/rust/pull/106166.
2022-12-30 21:26:36 -08:00
Michael Goulet
96e32a49c9
Rollup merge of #106310 - compiler-errors:old-git, r=jyn514
Dont use `--merge-base` during bootstrap formatting subcommand

I use a development image with Ubuntu 20.04 LTS, which has git 2.25.

Recently, `./x.py test tidy --bless` regressed in #105702 because it uses the `--merge-base` option on `diff-index`, which was only introduced in git 2.30 (git/git@0f5a1d449b). Luckily, it can be replicated via two calls to `git merge-base` + `git diff-index`, so let's just use that.
2022-12-30 21:26:36 -08:00
Michael Goulet
93032e8112
Rollup merge of #106305 - jyn514:tail-args, r=Mark-Simulacrum
bootstrap: Get rid of tail_args in stream_cargo

Based on https://github.com/rust-lang/rust/pull/106303 for convenience.

r? ````@Mark-Simulacrum````
2022-12-30 21:26:35 -08:00
Joshua Nelson
90a10cae4b Revert "Auto merge of #105058 - Nilstrieb:no-merge-commits-for-you-only-bors-is-allowed-to-do-that, r=jyn514"
This reverts commit 4839886f0a, reversing
changes made to ce85c98575.
2022-12-31 01:55:24 +00:00
Joshua Nelson
6d2fe52dc5 Fix panic on x build --help 2022-12-31 00:53:46 +00:00
Michael Goulet
e2c5999265 Dont use --merge-base during bootstrap formatting subcommand 2022-12-30 22:44:01 +00:00
Joshua Nelson
9dfe50440e bootstrap: Get rid of tail_args in stream_cargo 2022-12-30 20:38:34 +00:00
Joshua Nelson
c8c849ef5c Use more consistent progress messages in bootstrap
Before:
```
Testing ["rustc_interface"] stage0 (aarch64-unknown-linux-gnu -> aarch64-unknown-linux-gnu)
```

After:
```
Testing {rustc_interface} stage0 (aarch64-unknown-linux-gnu -> aarch64-unknown-linux-gnu)
```

Note there is a slight consistency between `build` and `test`: The
former doesn't print "compiler artifacts". It would be annoying to fix
and doesn't hurt anything, so I left it be.

```
; x t rustc_interface --stage 0 --dry-run
Testing {rustc_interface} stage0 (aarch64-unknown-linux-gnu -> aarch64-unknown-linux-gnu)
; x b rustc_interface --stage 0 --dry-run
Building {rustc_interface} stage0 compiler artifacts (aarch64-unknown-linux-gnu -> aarch64-unknown-linux-gnu)
```
2022-12-30 20:37:48 +00:00
Nilstrieb
878af66b53 Add build_helper crate to share code between tidy and bootstrap 2022-12-30 20:41:47 +01:00
bors
2c7536eaae Auto merge of #105920 - MarcusCalhoun-Lopez:respect_set, r=jyn514
Respect --set=target.platform when building rustbuild itself

`--set=target.platform.cc` and `--set=target.platform.cxx` are ignored if target is quoted.

`--set=target.platform.linker` is ignored if RUSTFLAGS is not set.

Undo parts of
d1291dc8b4 and
1532fd8cd0
2022-12-29 22:21:16 +00:00
Joshua Nelson
cbede85538 Support x clean --stage 1 rustc_query_impl
Previously, clean only supported `--stage 0` for specific crates.

The new `crate_description` function generates a string that looks
like
```
: {rustc_query_impl}
```
2022-12-29 21:58:14 +00:00
Marcus Calhoun-Lopez
480297d216 Respect --set=target.platform during build
Avoid quoting targets that do not contain a period.
See 1532fd8cd0

`--set=target.platform.linker` is ignored if RUSTFLAGS is not set.
Undo parts of d1291dc8b4
2022-12-29 12:22:49 -07:00
Matthias Krüger
65fb70304a
Rollup merge of #106263 - chenyukang:yukang/fix-106261-formater, r=jyn514
Formatter should not try to format non-Rust files

Fixes #106261
2022-12-29 18:24:34 +01:00
yukang
7ebcc786b8 fix #106261, formater should not try to format non-Rust files 2022-12-30 00:00:08 +08:00
Lukas Markeffsky
50a8ca56be ./x doc library --open opens std 2022-12-29 13:31:45 +01:00
bors
b15ca6635f Auto merge of #105741 - pietroalbini:pa-1.68-nightly, r=Mark-Simulacrum
Bump master bootstrap compiler

This PR bumps the bootstrap compiler to the beta created earlier this week, cherry-picks the stabilization version number updates, and updates the `cfg(bootstrap)`s.

r? `@Mark-Simulacrum`
2022-12-29 01:24:26 +00:00
Matthias Krüger
06306770f8
Rollup merge of #105702 - albertlarsan68:x-fmt-opt, r=jyn514
Format only modified files

As discussed on #105688, this makes x fmt only format modified files.

Fixes #105688
2022-12-28 22:22:20 +01:00
Mark Rousskov
cc4e434854 Skip LTO in stage0 (again) 2022-12-28 15:29:21 -05:00
Mark Rousskov
fbe0450251 -Zrustdoc-scrape-examples no longer takes arguments 2022-12-28 09:20:57 -05:00
Lukas Markeffsky
fdf6cc34b2 delete more cfg(bootstrap) 2022-12-28 09:18:43 -05:00
Albert Larsan
0b942a879d
Add changelog entry 2022-12-27 22:19:56 +01:00
Albert Larsan
c5bc87713f
Make x clean also clean the stamp file 2022-12-27 18:28:12 +01:00
Albert Larsan
b07a1e3f5a
Put final touches 2022-12-27 14:54:38 +01:00
Albert Larsan
00b23e8d01
Add rustfmt version check 2022-12-27 14:54:37 +01:00
Albert Larsan
633a6c8b66
Format only modified files
As discussed on #105688, this makes x fmt only format modified files
2022-12-27 14:54:37 +01:00
bors
b38a6d373c Auto merge of #106168 - jyn514:clean-crates, r=Mark-Simulacrum
Allow cleaning individual crates

As a bonus, this stops special casing `clean` in `Builder`.

## Motivation

Cleaning artifacts isn't strictly necessary to get cargo to rebuild; `touch compiler/rustc_driver/src/lib.rs` (for example) will also work. There's two reasons I thought making this part of bootstrap proper was a better approach:
1. `touch` does not *remove* artifacts, it just causes a rebuild. This is unhelpful for when you want to measure how long the compiler itself takes to build (e.g. for https://github.com/rust-lang/rust/issues/65031).
2. It seems a little more discoverable; and I want to extend it in the future to things like `x clean --stage 1 rustc`, which makes it easier to work around https://github.com/rust-lang/rust/issues/76720 without having to completely wipe all the stage 0 artifacts, or having to be intimately familiar with which directories to remove.
2022-12-27 13:04:08 +00:00
Joshua Nelson
6d388a4ee3 Allow cleaning individual crates
As a bonus, this stops special casing `clean` in `Builder`.
2022-12-26 19:31:40 -06:00
Joshua Nelson
3890992d0a Fix panic on x build --help --verbose
This also makes the panic message a little more informative in case it
happens again.
2022-12-26 17:53:57 -06:00
Matthias Krüger
9ae98804e5
Rollup merge of #105465 - jyn514:docs, r=Mark-Simulacrum
Improve top-level docs

See a detailed explanation in the commit messages. This is a companion PR to https://github.com/rust-lang/rustc-dev-guide/pull/1528.

* Link to other resources instead of inlining their information
* Remove ancient and outdated reference to `config.mk`
* Suggest `profile = "user"` in the README
* Add detail about dependencies from the dev-guide
* Link to CONTRIBUTING.md instead of rustc-dev-guide in the main readme
* Link to `std-dev-guide` in CONTRIBUTING.md
2022-12-24 08:53:46 +01:00
Joshua Nelson
70a0e0a277 Remove ancient and outdated references to config.mk 2022-12-23 19:08:53 -06:00
bors
5e656baf8b Auto merge of #106070 - matthiaskrgr:rollup-jv9ctkl, r=matthiaskrgr
Rollup of 6 pull requests

Successful merges:

 - #105978 (Mark `proc_macro_decls_static` as always used)
 - #106051 (Allow building std with cranelift)
 - #106056 (Make `sess.bug` much less noisy)
 - #106057 (Give a more helpful error for "trimmed_def_paths constructed")
 - #106058 (Fix the issue number in comment for as_local_call_operand)
 - #106059 (Avoid running the `Profile` step twice on `x setup`)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2022-12-23 02:44:32 +00:00
Matthias Krüger
fa1e34fbaf
Rollup merge of #106059 - jyn514:setup-twice, r=Nilstrieb
Avoid running the `Profile` step twice on `x setup`

Prevents runs like the following:
```
$ x setup
Welcome to the Rust project! What do you want to do with x.py?
a) library: Contribute to the standard library
b) compiler: Contribute to the compiler itself
c) codegen: Contribute to the compiler, and also modify LLVM or codegen
d) tools: Contribute to tools which depend on the compiler, but do not modify it directly (e.g. rustdoc, clippy, miri)
e) user: Install Rust from source
Please choose one (a/b/c/d/e): b

To get started, try one of the following commands:
- `x.py check`
- `x.py build`
- `x.py test`
For more suggestions, see https://rustc-dev-guide.rust-lang.org/building/suggested.html
`x.py` will now use the configuration at /home/nilsh/projects/rustfast/src/bootstrap/defaults/config.compiler.toml
Welcome to the Rust project! What do you want to do with x.py?
...
```

r? `@Nilstrieb`
2022-12-23 01:17:52 +01:00
Matthias Krüger
49287a4095
Rollup merge of #106051 - jyn514:cranelift-std, r=bjorn3
Allow building std with cranelift

- Don't pass llvm-specific args when using cranelift
- Don't use `asm` in compiler_builtins when using cranelift

r? `@bjorn3` cc `@Mark-Simulacrum`
2022-12-23 01:17:50 +01:00
Joshua Nelson
f94c926aec Support documenting Cargo
The primary motivation is to have the cargo docs show up on https://doc.rust-lang.org/nightly/nightly-rustc/cargo, but as a nice side effect this makes `x doc cargo` work locally.
2022-12-22 14:33:22 -06:00
Joshua Nelson
103816d704 Avoid running the Profile step twice on x setup
Prevents runs like the following:
```
$ x setup
Welcome to the Rust project! What do you want to do with x.py?
a) library: Contribute to the standard library
b) compiler: Contribute to the compiler itself
c) codegen: Contribute to the compiler, and also modify LLVM or codegen
d) tools: Contribute to tools which depend on the compiler, but do not modify it directly (e.g. rustdoc, clippy, miri)
e) user: Install Rust from source
Please choose one (a/b/c/d/e): b

To get started, try one of the following commands:
- `x.py check`
- `x.py build`
- `x.py test`
For more suggestions, see https://rustc-dev-guide.rust-lang.org/building/suggested.html
`x.py` will now use the configuration at /home/nilsh/projects/rustfast/src/bootstrap/defaults/config.compiler.toml
Welcome to the Rust project! What do you want to do with x.py?
...
```
2022-12-22 13:23:56 -06:00