Commit graph

152 commits

Author SHA1 Message Date
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
Milo
e3d84b2809 clippy argument support 2022-07-11 07:42:10 +00: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
Thom Chiovoloni
79f8dc0b89
Add a --build-dir flag to rustbuild 2022-06-30 15:50:48 -07:00
David Tolnay
1ae4b25826
Revert "Remove num_cpus dependency from bootstrap, build-manifest and rustc_session"
This reverts commit 2d854f9c34.
2022-06-09 03:10:15 -07:00
Jack Huey
410dcc9674 Fully stabilize NLL 2022-06-03 17:16:41 -04:00
Matthias Krüger
1174dba02f
Rollup merge of #97411 - raiyansayeed:print-stderr-consistently, r=Mark-Simulacrum
Print stderr consistently

Solves https://github.com/rust-lang/rust/issues/96712

I tried to follow what I perceived as the general consensus for error messages in boostrap i.e messages that were ..
* resulting from an Err(...) =>
* literally called as "Error: ...."
* by the end of the block scope forced to run a panic! or process::exit with a guaranteed non-zero error code.
2022-05-28 01:11:47 +02:00
Raiyan
d25f64ae99 feat: refactored bootstrap files to use stderr consistently 2022-05-25 22:01:55 -04:00
Collin Baker
b2316c1a88 Add test skip support
libtest already supports a "--skip SUBSTRING" arg which excludes any
test names matching SUBSTRING.

This adds a "--skip" argument to compiletest and bootstrap which is
forwarded to libtest.
2022-05-10 10:29:48 -04:00
Joshua Nelson
7a4a66da3d Add a test for --exclude test::XXX
I didn't know that the `test::` syntax was valid before, and it doesn't
seem to be documented anywhere. Add a test so it doesn't regress accidentally,
and as executable documentation.
2022-04-21 21:30:54 -05:00
Allen Wild
870cb8ef92 bootstrap: consolidate subcommand parsing and matching
There's several places where the x.py command names are matched as
strings, leading to some inconsistencies and opportunities for cleanup.

* Add Format, Clean, and Setup variants to builder::Kind.
* Use Kind to parse the x.py subcommand name (including aliases)
* Match on the subcommand Kind rather than strings when handling
  options and help text.
* Several subcommands don't display any paths when run with `-h -v` even
  though the help text indicates that they should. Fix this and refactor
  so that manually keeping matches in sync isn't necessary.

Fixes #95937
2022-04-16 14:54:17 -04:00
Joshua Nelson
477cae3bd7 copy over std::path::absolute instead of adding canonicalize hacks
this also fixes a bug where bootstrap would try to use the fake `rustc` binary built by bootstrap -
cargo puts it in a different directory when using `cargo run` instead of x.py
2022-03-07 17:06:31 -05:00
Joshua Nelson
984527f7bb fix weird bug when out would get overridden by unit tests 2022-03-07 17:06:11 -05:00
Joshua Nelson
62b522ec3a Don't depend on python for RUST_BOOTSTRAP_CONFIG 2022-03-07 17:06:11 -05:00
bjorn3
e657da72aa Merge build_helper into util 2022-03-05 15:31:22 +01:00
bjorn3
0cfc3e1016 Remove build_helper
The majority of the code is only used by either rustbuild or
rustc_llvm's build script. Rust_build is compiled once for rustbuild and
once for every stage. This means that the majority of the code in this
crate is needlessly compiled multiple times. By moving only the code
actually used by the respective crates to rustbuild and rustc_llvm's
build script, this needless duplicate compilation is avoided.
2022-03-05 15:31:22 +01:00
bjorn3
2d854f9c34 Remove num_cpus dependency from bootstrap, build-manifest and rustc_session 2022-03-02 15:39:04 +01:00
Nicholas Nethercote
2e74ca18e4 Tweak the usage messages for x.py build and x.py check.
They're a bit out of date, and overly complicated.
2022-01-04 09:24:10 +11:00
Mark Rousskov
451abd311c PGO for LLVM builds on x86_64-unknown-linux-gnu in CI
This shows up to 5% less instruction counts on multiple benchmarks, and up to
19% wins on the -j1 wall times for rustc self-compilation.

We can afford to spend the extra cycles building LLVM essentially once more for
the x86_64-unknown-linux-gnu CI build today. The builder finishes in around 50
minutes on average, and this adds just 10 more minutes. Given the sizeable
improvements in compiler performance, this is definitely worth it.
2021-08-24 17:08:30 -04:00
Joshua Nelson
c6f4eed45c Enable --all-targets for x.py check unconditionally
Now that Cargo deduplicates diagnostics from different targets, this doesn't flood the console with
duplicate errors.

Note that this doesn't add `--all-targets` in `Builder::cargo` directly because `impl Step for Std`
actually wants to omit `--all-targets` the first time while it's still building libtest.

When passed `--all-targets`, this warns that the option isn't needed, but still continues to compile.
2021-08-13 11:09:10 -05:00
Smitty
b7e9b1ad7f Add x.py option to --force-rerun compiletest tests 2021-08-03 19:06:12 -04:00
inquisitivecrystal
a60f6275fd Make x.py d an alias for x.py doc 2021-07-21 23:44:09 -07:00
Yuki Okushi
7e827e936b
Rollup merge of #84783 - jyn514:fmt-one, r=Mark-Simulacrum
Allow formatting specific subdirectories

Fixes https://github.com/rust-lang/rust/issues/71094.
2021-05-11 09:28:04 +09:00
Joshua Nelson
dadcb0550d Allow formatting specific subdirectories 2021-05-01 01:57:15 -04:00
Tyler Mandry
1e46b18fec Fix help for profile flags 2021-04-30 04:12:37 +00:00
Tyler Mandry
0b2e908691 Add support for --run for non-ui tests 2021-04-30 04:10:15 +00:00
Tyler Mandry
09783815b2 Add run flag to bootstrap test 2021-04-30 04:10:14 +00:00
Matthias Krüger
4390a61b64 avoid full-slicing slices
If we already have a slice, there is no need to get another full-range slice from that, just use the original.
clippy::redundant_slicing
2021-02-16 00:31:11 +01:00
Mark Rousskov
8b702e02c0 Support non-stage0 check 2021-01-16 10:07:09 -05:00
Mark Rousskov
a448f88b69 Utilize PGO for rustc linux dist builds
This implements support for applying PGO to the rustc compilation step (not
standard library or any tooling, including rustdoc). Expanding PGO to more tools
is not terribly difficult but will involve more work and greater CI time
commitment.

For the same reason of avoiding greater time commitment, this currently avoids
implementing for platforms outside of x86_64-unknown-linux-gnu, though in
practice it should be quite simple to extend over time to more platforms. The
initial implementation is intentionally minimal here to avoid too much work
investment before we start seeing wins for a subset of Rust users.

The choice of workloads to profile here is somewhat arbitrary, but the general
rationale was to aim for a small set that largely avoided time regressions on
perf.rust-lang.org's full suite of crates. The set chosen is libcore, cargo (and
its dependencies), and a few ad-hoc stress tests from perf.rlo. The stress tests
are arguably the most controversial, but they benefit those cases (avoiding
regressions) and do not really remove wins from other benchmarks.

The primary next step after this PR lands is to implement support for PGO in
LLVM. It is unclear whether we can afford a full LLVM rebuild in CI, though, so
the approach taken there may need to be more staggered. rustc-only PGO seems
well affordable on linux at least, giving us up to 20% wall time wins on some
crates for 15 minutes of extra CI time (1 hour up from 45 minutes).

The PGO data is uploaded to allow others to reuse it if attempting to reproduce
the CI build or potentially, in the future, on other platforms where an
off-by-one strategy is used for dist builds at minimal performance cost.
2020-12-22 12:23:37 -05:00
Joshua Nelson
31741aad39 Add --color support to bootstrap
This allows using bootstrap with https://github.com/Canop/bacon.
2020-11-12 16:31:21 -05:00
Joshua Nelson
51f8076403 Add --fix support to x.py clippy 2020-10-26 18:58:52 -04:00
Nelson J Morais
c3cbaf64d3 x.py test --test-args flag description enhancement 2020-10-23 20:06:37 +01:00
Ian Jackson
b7c6041df1 x.py: setup: Provide a description of what it does
Co-authored-by: Joshua Nelson <joshua@yottadb.com>
2020-10-14 11:40:53 +01:00
Ian Jackson
c4c5653a48 x.py: setup: Refactor to centralise list of profiles
Put all()'s otuput in the order we want to print things in, and add a
comment about why they are in this order.  Provide purpose() and
all_for_help().  Use these things everywhere.

Move all the abbrev character ("a", "b", etc.) processing into
interactive_path.

No functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
2020-10-14 11:40:53 +01:00
Pietro Albini
60ae018bf1
bootstrap: add --include-default-paths to ./x.py 2020-10-12 19:53:25 +02:00
Dylan DPC
f600154be6
Rollup merge of #77624 - akoptelov:c-all-targets-fix, r=jyn514
Add c as a shorthand check alternative for new options #77603

There is a missing "c" that is a shorthand for "check" in newly added match arm for handling check-specific options.
2020-10-07 00:16:16 +02:00
Alexander Koptelov
db46f43977 Add c as a shorthand check alternative for new options #77603 2020-10-06 22:05:11 +03:00
Antoine Martin
d67a7e6cfc Use String type for Profile parse error 2020-10-06 16:40:30 +02:00
Antoine Martin
3afc004845 Show available profiles on error 2020-10-06 16:40:30 +02:00
Antoine Martin
d3d3397121 Use Profile enum for x.py setup 2020-10-06 16:40:30 +02:00
Mark Rousskov
f2961638c8 Place all-targets checking behind a flag
This matches Cargo behavior and avoids the (somewhat expensive) double checking,
as well as the unfortunate duplicate error messages (#76822,
rust-lang/cargo#5128).
2020-10-03 09:53:13 -04:00
Tyler Mandry
bf7aeaa617 Filter out empty items in bootstrap:🎏:split 2020-09-29 22:50:57 +00:00
Ralf Jung
c39598aeea
Rollup merge of #76631 - jyn514:x.py-setup, r=Mark-Simulacrum
Add `x.py setup`

Closes #76503.

- Suggest `x.py setup` if config.toml doesn't exist yet
- Prompt for a profile if not given on the command line
- Print the configuration that will be used
- Print helpful starting commands after setup
- Link to the dev-guide after finishing
2020-09-26 12:58:13 +02:00
Joshua Nelson
9baa601afd Add x.py setup
- Suggest `x.py setup` if config.toml doesn't exist yet (twice, once
before and once after the build)
- Prompt for a profile if not given on the command line
- Print the configuration file that will be used
- Print helpful starting commands after setup
- Link to the dev-guide after finishing
- Note that distro maintainers will see the changelog warning
2020-09-24 10:32:45 -04:00
Dylan MacKenzie
bcbd2ccc8d Add keep-stage-std to x.py
This keeps only the `std` artifacts compiled by the given stage, not the
compiler. This is useful when working on the latter stages of the
compiler in tandem with the standard library, since you don't have to
rebuild the *entire* compiler when the standard library changes.
2020-09-23 14:25:23 -07:00
Joshua Nelson
c35ce3ff17 Don't generate bootstrap usage unless it's needed
Previously, `x.py` would unconditionally run `x.py build` to get the
help message. After https://github.com/rust-lang/rust/issues/76165,
when checking the CI stage was moved into `Config`, that would cause an
assertion failure (but only only in CI!):

```
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `1`,
 right: `2`', src/bootstrap/config.rs:619:49
```

This changes bootstrap to only generate a help message when it needs
to (when someone passes `--help`).
2020-09-16 13:31:20 -04:00
Mark Rousskov
78125ec6b3 Stop implicitly appending triples to config.toml hosts and targets
Previously, the CLI --target/--host definitions and configured options differed
in their effect: when setting these on the CLI, only the passed triples would be
compiled for, while in config.toml we would also compile for the build triple
and any host triples. This is needlessly confusing; users expect --target and
--host to be identical to editing the configuration file.

The new behavior is to respect --host and --target when passed as the *only*
configured triples (no triples are implicitly added). The default for --host is
the build triple, and the default for --target is the host triple(s), either
configured or the default build triple.
2020-09-11 08:59:01 -04:00
mark
9e5f7d5631 mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
Matthias Krüger
108a3f8a5c bootstrap: fix a couple of clippy lint warnings
clippy::print_literal
clippy::clone_on_copy
clippy::single_char_pattern
clippy::into_iter_on_ref
clippy::match_like_matches_macro
2020-08-22 01:08:04 +02:00