3870 Commits

Author SHA1 Message Date
Yuki Okushi
a76f2fe66e
Rollup merge of #99765 - nicholasbishop:bishop-disable-uefi-std-build, r=jyn514
Don't build std for *-uefi targets

https://github.com/rust-lang/rust/issues/97322
2022-07-27 11:52:57 +09:00
Nicholas Bishop
05c1a4ab4d Don't build std for *-uefi targets
https://github.com/rust-lang/rust/issues/97322
2022-07-26 11:50:54 -04:00
bors
c9b31839b6 Auto merge of #99680 - workingjubilee:revert-revert-icf, r=Mark-Simulacrum
Revert "Revert "Use ICF (identical code folding) for building rustc""

This reverts commit rust-lang/rust@45575d23f3,
thereby enabling identical code folding again.

Closes #99440 (again).
2022-07-26 13:31:31 +00:00
Amos Wenger
fa0037a5d5 Only run proc-macro-srv tests for now (after discussion with @Veykril, @jyn514, and @lnicola) 2022-07-24 21:04:56 +02:00
Jubilee Young
dda53383d9 Revert "Revert "Use ICF (identical code folding) for building rustc""
This reverts commit rust-lang/rust@45575d23f3,
thereby enabling identical code folding again.
2022-07-24 08:52:08 -07:00
Joshua Nelson
ee09dc5510 Small fixups
- use `path` instead of `paths`
- don't mark rust-analyzer as an optional tool
- print the cargo command that's run in the proc-macro-test build script

  this originally was part of a change to fix `test --stage 0 rust-analyzer`,
  but I'm going to leave that for a separate PR so it's easier to review.
2022-07-24 10:38:42 +02:00
Amos Wenger
107e2653a6 Don't run slow tests in Rust CI, only RA CI 2022-07-24 10:38:19 +02:00
Amos Wenger
44f50c5fd2 Add comment about CARGO_WORKSPACE_DIR 2022-07-24 10:38:12 +02:00
Amos Wenger
37ed531fcc Use top-level path in tool Step 2022-07-24 10:38:06 +02:00
Amos Wenger
d42b28af41 Allow cross-compiling, build all crates 2022-07-24 10:37:59 +02:00
Amos Wenger
4dedb5830f Use compiler.stage
Co-authored-by: Joshua Nelson <github@jyn.dev>
2022-07-24 10:37:53 +02:00
Amos Wenger
4ea2f8e48f Add test step for rust-analyzer, run it by default 2022-07-24 10:37:47 +02:00
Amos Wenger
d59abcf9b3 Check only tests and benches, not examples 2022-07-24 10:37:40 +02:00
Amos Wenger
9cf485c3db Add check step, stuck on 'no output generated for libgoto_def-hash rmeta' 2022-07-24 10:37:36 +02:00
Amos Wenger
0f2266d3cc Convert rust-analyzer to 'in-tree' tool, pass 'in-rust-tree' feature by default 2022-07-24 10:37:29 +02:00
Ralf Jung
ae22ae1358 miri: make --stage 0 testing work 2022-07-22 08:33:35 -04:00
bors
03d488b48a Auto merge of #98843 - Urgau:check-cfg-stage0, r=Mark-Simulacrum
Enable check-cfg in stage0

Now that the bootstrap cargo supports `rustc-check-cfg` we can now enable it with `-Zcheck-cfg=output` and use it in `rustc_llvm` to unblock `--check-cfg` support in stage0.

r? `@Mark-Simulacrum`
2022-07-20 04:23:09 +00:00
Jakub Beránek
45575d23f3
Revert "Use ICF (identical code folding) for building rustc" 2022-07-18 23:50:00 +02:00
Jakub Beránek
97f6f95879
Use LLD linker for compiling rustc on Linux x64 and use ICF for binary size optimization 2022-07-17 17:37:10 +02:00
leo60228
bee373c699
Don't build std for switch 2022-07-14 15:57:21 -04:00
leo60228
60beb1a995
Don't use host linker for switch 2022-07-14 15:56:16 -04:00
Dylan DPC
f74358d052
Rollup merge of #99236 - psumbera:Issue99208, r=Mark-Simulacrum
solaris: unbreak build on native platform

Fixes: #99208
2022-07-14 19:24:08 +05:30
Petr Sumbera
1e64a7b4f1 solaris: unbreak build on native platform
Fixes: #99208
2022-07-14 13:44:40 +02:00
Dylan DPC
c1b43ef589
Rollup merge of #99139 - jyn514:dist-tool-help, r=Mark-Simulacrum
Give a better error when `x dist` fails for an optional tool

Before:
```
thread 'main' panicked at 'Unable to build RLS', dist.rs:42:9
```

After:
```
thread 'main' panicked at 'Unable to build submodule tool RLS (use `missing-tools = true` to ignore this failure)
note: not all tools are available on all nightlies
help: see https://forge.rust-lang.org/infra/toolstate.html for more information', dist.rs:43:9
```

Closes https://github.com/rust-lang/rust/issues/85683 by explaining better why the error is expected.
2022-07-14 14:14:23 +05:30
Guillaume Gomez
0b3644e1f3
Rollup merge of #98848 - flip1995:clippy-book, r=jyn514
Build the Clippy book as part of x.py doc

r? ``@ehuss`` since you said you would be interested in helping moving this forward.

cc ``@jyn514`` as part of the bootstrap team.
2022-07-13 10:38:42 +02:00
bors
95e8b86c8c Auto merge of #99149 - ferrocene:pa-nightly-branch, r=Mark-Simulacrum
Configure nightly branch name in `stage0.json`

The beta version number detection code relies on git to know how many merge commits were made since we branched off, and in doing so hardcodes `master` as the default branch name. This works for rust-lang/rust, but is problematic for forks that use a different default branch name (in Ferrocene we use `main` instead).

This PR changes the code to instead load the default branch name from `src/stage0.json`. `bump-stage0` has also been updated to remove the need to update it every time a new field is added to `stage0.json`.
2022-07-13 05:24:18 +00:00
bors
b3f4c31199 Auto merge of #99165 - matthiaskrgr:rollup-rqpelfa, r=matthiaskrgr
Rollup of 8 pull requests

Successful merges:

 - #97210 (Support `-A`, `-W`, `-D` and `-F` when running `./x.py clippy`)
 - #99055 (Fix rustdoc help options)
 - #99075 (Fix duplicated type annotation suggestion)
 - #99124 (Fix sized check ICE in asm check)
 - #99142 (fix(doctest): treat fatal parse errors as incomplete attributes)
 - #99145 (Don't rerun the build script for the compiler each time on non-windows platforms)
 - #99146 (Do not error during method probe on `Sized` predicates for types that aren't the method receiver)
 - #99161 (compiletest: trim edition before passing as flag)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2022-07-12 00:25:45 +00:00
Matthias Krüger
601c5a2087
Rollup merge of #97210 - Milo123459:clippy-args, r=jyn514
Support `-A`, `-W`, `-D` and `-F` when running `./x.py clippy`

Resolves #97059

This PR adds support for `-A`, `-W`, `-D` and `-F` when running `./x.py clippy`.
2022-07-11 22:39:03 +02:00
bors
8a3325496f Auto merge of #96978 - lqd:win_pgo2, r=Mark-Simulacrum
Utilize PGO for windows x64 rustc dist builds

This PR adds PGO support for the CI x64 windows dist builds.

These are the results from running the rustc-perf benchmarks:
![image](https://user-images.githubusercontent.com/247183/177662869-683a8034-7c95-42bf-9900-9ffd66677fcf.png)

Thanks to `@Kobzol,` `@michaelwoerister,` `@wesleywiser,` `@Mark-Simulacrum` for their precious help.
2022-07-11 20:32:06 +00:00
Rémy Rakic
9dd6f5246c extend bootstrap for PGO on windows
When building LLVM/LLD as part of a build that asks LLVM to generate profiles, e.g. when
doing PGO, cmake or clang-cl don't automatically link clang's profiler runtime in,
causing undefined reference errors at link-time.

We do that manually, by adding clang's resource library folder to the library search path:
- for LLVM itself, by extending the linker args that `rustc_llvm`'s build script
  uses, to avoid the linker errors when linking `rustc_driver`.
- for LLD, by extending cmake's linker flags during the LLD build step.
2022-07-11 15:43:28 +02:00
Pietro Albini
6bc97d0adc
configure nightly branch name in stage0.json 2022-07-11 10:15:13 +02:00
Milo
e3d84b2809 clippy argument support 2022-07-11 07:42:10 +00:00
bors
2682b88c52 Auto merge of #98369 - jyn514:configure.py, r=Mark-Simulacrum
Remove unsupported options in configure.py

I've seen people using `optimize = false` and `full-bootstrap = true` in the past, without knowing
that they're not recommended. Remove `optimize` and a few other options that are always a bad idea,
and document that full-bootstrap is only for testing reproducible builds.
2022-07-11 06:37:20 +00:00
bors
a51fb2ba82 Auto merge of #99130 - jyn514:std-cache-invalidation, r=Mark-Simulacrum
Fix `x build library/std compiler/rustc`

Previously, this was broken because of improper caching:
1. `StepDescription::maybe_run` builds `Compile::Std`, which only built `std` and not `proc_macro`
1. `Std` calls `builder.ensure(StdLink)`
1. `Rustc` calls `ensure(Std)`, which builds all crates, including `proc_macro`
1. `Rustc` calls `ensure(StdLink)`. `ensure` would see that it had already been run and do nothing.  <-- bug is here
1. Cargo gives an error that `proc_macro` doesn't exist.

This fixes the caching by adding `crates` to `StdLink`, so it will get rerun if the crates that are built change.

Fixes https://github.com/rust-lang/rust/issues/99129.
2022-07-11 03:56:37 +00:00
Joshua Nelson
939510348d Give a better error when x dist fails for an optional tool
Before:
```
thread 'main' panicked at 'Unable to build RLS', dist.rs:42:9
```

After:
```
thread 'main' panicked at 'Unable to build submodule tool RLS (use `missing-tools = true` to ignore this failure)
note: not all tools are available on all nightlies
help: see https://forge.rust-lang.org/infra/toolstate.html for more information', dist.rs:43:9
```
2022-07-10 21:53:06 -05:00
bors
adaddb5bab Auto merge of #98526 - jyn514:download-llvm-outside-checkout, r=Mark-Simulacrum
Allow using `download-ci-llvm = true` outside the git checkout

`@bjorn3` noticed that this is already allowed today when download-llvm is disabled, but breaks with it enabled:
```
$ ./rust2/x.py build
fatal: not a git repository (or any of the parent directories): .git
thread 'main' panicked at 'command did not execute successfully: "git" "rev-list" "--author=bors@rust-lang.org" "-n1" "--first-parent" "HEAD" "--" "/home/jnelson/rust-lang/rust2/src/llvm-project" "/home/jnelson/rust-lang/rust2/src/bootstrap/download-ci-llvm-stamp" "/home/jnelson/rust-lang/rust2/src/version"
expected success, got: exit status: 128', src/bootstrap/native.rs:134:20
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
```

Support it too for consistency. It's unclear to me when anyone would need to use this, but `@bjorn3`
feels we should support it, and it's not much additional effort to get it working.
2022-07-11 01:15:47 +00:00
Joshua Nelson
7d4bd54f75 Fix x build library/std compiler/rustc
Previously, this was broken because of improper caching:
1. `StepDescription::maybe_run` builds `Compile::Std`, which only built `std` and not `proc_macro`
1. `Std` calls `builder.ensure(StdLink)`
1. `Rustc` calls `ensure(Std)`, which builds all crates, including `proc_macro`
1. `Rustc` calls `ensure(StdLink)`. `ensure` would see that it had already been run and do nothing.  <-- bug is here
1. Cargo gives an error that `proc_macro` doesn't exist.

This fixes the caching by adding `crates` to `StdLink`, so it will get rerun if the crates that are
built change.  This also does the same for `RustcLink`; it doesn't matter in practice currently
because nothing uses it except `impl Step for Rustc`, but it will avoid bugs if we start using it in
the future (e.g. to build individual crates for rustfmt).
2022-07-10 17:50:09 -05:00
oxalica
6245d725a2 Fix download-ci-llvm NixOS patching for binaries
LLVM tools should also be patched, since they are used in some tests,
specially,
- src/test/run-make-fulldeps/cross-lang-lto (llvm-ar)
- src/test/run-make-fulldeps/cross-lang-lto-upstream-rlibs (llvm-ar)
- src/test/run-make-fulldeps/issue-64153 (llvm-objdump)

To be more future proof, we should patch all binaries in `bin`.
2022-07-11 05:40:48 +08:00
Joshua Nelson
56e42b8713 Allow using download-ci-llvm = true outside the git checkout
@bjorn3 noticed that this is already allowed today when download-llvm is disabled, but breaks with it enabled:
```
$ ./rust2/x.py build
fatal: not a git repository (or any of the parent directories): .git
thread 'main' panicked at 'command did not execute successfully: "git" "rev-list" "--author=bors@rust-lang.org" "-n1" "--first-parent" "HEAD" "--" "/home/jnelson/rust-lang/rust2/src/llvm-project" "/home/jnelson/rust-lang/rust2/src/bootstrap/download-ci-llvm-stamp" "/home/jnelson/rust-lang/rust2/src/version"
expected success, got: exit status: 128', src/bootstrap/native.rs:134:20
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
```

Support it too for consistency. It's unclear to me when anyone would need to use this, but @bjorn3
feels we should support it, and it's not much additional effort to get it working.

This also updates a bunch of other git commands that were similarly depending on the current directory.
2022-07-10 16:34:19 -05:00
Joshua Nelson
4151a5b96c Remove unsupported options in configure.py
I've seen people using `optimize = false` and `full-bootstrap = true` in the past, without knowing
that they're not recommended. Remove `optimize` and a few other options that are always a bad idea,
and document that full-bootstrap is only for testing reproducible builds.
2022-07-10 16:28:57 -05:00
Michael Howell
271bad9b08 Update submodule rust-installer
This includes the following pull requests:

* https://github.com/rust-lang/rust-installer/pull/114
* https://github.com/rust-lang/rust-installer/pull/113
2022-07-09 09:49:05 -07:00
bors
73443a0590 Auto merge of #98328 - topjohnwu:fix_cross, r=jyn514
Fix several issues during cross compiling

- When cross compiling LLVM on an arm64 macOS machine to x86_64, CMake will produce universal binaries by default, causing link errors. Explicitly set `CMAKE_OSX_ARCHITECTURES` to the one single target architecture so that the executables and libraries will be single architecture.
- When cross compiling rustc with `llvm.clang = true`, `CLANG_TABLEGEN` has to be set to the host `clang-tblgen` executable to build clang.
2022-07-09 10:45:30 +00:00
Matthias Krüger
6c6791a458
Rollup merge of #98798 - jyn514:download-rustc-cached, r=Mark-Simulacrum
Fix caching bug in `download-rustc = true`

When moving this to rustbuild, I introduced a bug: if you had the file already downloaded, but
deleted the sysroot for whatever reason, rustbuil would fail to unpack the cached tarball.

This only affects people if they have a cached tarball, which is probably why we haven't seen an issue yet -
wiping `build/cache` would work around the issue, or just not deleting `build/$TARGET/stage2`.

Fixes the following error:
```
thread 'main' panicked at 'fs::read_dir(&lib_dir) failed with No such file or directory (os error 2) ("/home/jnelson/rust-lang/rust2/build/x86_64-unknown-linux-gnu/ci-rustc/lib")', config.rs:1563:20
```

r? ``@Mark-Simulacrum``
2022-07-08 08:00:39 +02:00
Matthias Krüger
6742dc4d65
Rollup merge of #98994 - kons-9:dont_use_process_exit, r=jyn514
replace process exit with more detailed exit in src/bootstrap/*.rs

Fixes [#98830](https://github.com/rust-lang/rust/issues/98830)

I implemeted "detail_exit.rs" in lib.rs, and replace all of std::process::exit.
So, error code should panic in test code.
```
// lib.rs
pub fn detail_exit(code: i32) -> ! {
    // Successful exit
    if code == 0 {
        std::process::exit(0);
    }
    if cfg!(test) {
        panic!("status code: {}", code);
    } else {
        std::panic::resume_unwind(Box::new(code));
    }
}
```

<details>
<summary>% rg "exit\(" src/bootstrap/*.rs</summary>

```
builder.rs
351:            crate::detail_exit(1);
1000:            crate::detail_exit(1);
1429:                    crate::detail_exit(1);

compile.rs
1331:        crate::detail_exit(1);

config.rs
818:                    crate::detail_exit(2);
1488:        crate::detail_exit(1);

flags.rs
263:                crate::detail_exit(exit_code);
349:            crate::detail_exit(exit_code);
381:            crate::detail_exit(1);
602:                        crate::detail_exit(1);
616:                crate::detail_exit(1);
807:            crate::detail_exit(1);

format.rs
35:            crate::detail_exit(1);
117:        crate::detail_exit(1);

lib.rs
714:            detail_exit(1);
1620:                detail_exit(1);
1651:pub fn detail_exit(code: i32) -> ! {
1654:        std::process::exit(0);

sanity.rs
107:            crate::detail_exit(1);

setup.rs
97:        crate::detail_exit(1);
290:            crate::detail_exit(1);

test.rs
676:            crate::detail_exit(1);
1024:                crate::detail_exit(1);
1254:            crate::detail_exit(1);

tool.rs
207:                crate::detail_exit(1);

toolstate.rs
96:    crate::detail_exit(3);
111:            crate::detail_exit(1);
182:            crate::detail_exit(1);
228:            crate::detail_exit(1);

util.rs
339:        crate::detail_exit(1);
378:        crate::detail_exit(1);
468:    crate::detail_exit(1);
```
</details>
2022-07-07 20:33:28 +02:00
toshiki goto
d6de276bd9 squash the commits
implement detail_exit but I'm not sure it is right.

not create new file and write detail exit in lib.rs

replace std::process::exit to detail_exit

that is not related to code runnning.

remove pub
2022-07-07 13:41:56 +09:00
flip1995
f2a1e45246
Build the Clippy book as part of x.py doc 2022-07-06 10:01:27 +02:00
Guillaume Gomez
3fe0191df8
Rollup merge of #98880 - topjohnwu:macos-dylib-cross, r=jyn514
Proper macOS libLLVM symlink when cross compiling

Follow up of #98418

When cross compiling on macOS with `llvm.link-shared` enabled, the symlink creation will fail after compiling LLVM for the target architecture, because it will attempt to create the symlink in the host LLVM directory, which was already created when being built.

This commit changes the symlink path to the actual LLVM output.

r? `@jyn514`
2022-07-05 23:43:32 +02:00
Guillaume Gomez
0a7f2c3a02
Rollup merge of #95503 - jyn514:build-single-crate, r=Mark-Simulacrum
bootstrap: Allow building individual crates

This aims to be as unintrusive as possible, but did still require adding a new `tail_args` field to all `Rustc` and `Std` steps.

New library and compiler crates are added to the sysroot as they are built, since it's useful to have e.g. just alloc and not std.

Fixes https://github.com/rust-lang/rust/issues/44293.
2022-07-05 23:43:28 +02:00
Matthias Krüger
a82f4a574e
Rollup merge of #98895 - ChrisDenton:no-elves-allowed, r=jyn514
bootstrap.py: Always use `.exe` for Windows

This ensures that it will run the Windows executable if other files in the directory (such as Linux executables) have the same file name minus the extension. I've been tripped up by this a few times where both `bootstrap` and `bootstrap.exe` end up in the same directory.

This PR avoids ever having to see the following message:

`OSError: [WinError 193] %1 is not a valid Win32 application`
2022-07-05 17:08:13 +02:00
Chris Denton
9ac4a4e67a
Fix typo in src/bootstrap/bootstrap.py
Co-authored-by: Marco Colombo <mar.colombo13@gmail.com>
2022-07-05 09:06:43 +01:00