| Age | Commit message (Collapse) | Author | Lines |
|
In developing #61557 I noticed that there were two parts of our tools
that were rebuilt twice on CI. One was rustfmt fixed in #61557, but
another was Cargo. The actual fix for Cargo's double compile was
rust-lang/cargo#7010 and took some time to propagate here. In an effort
to continue to assert that Cargo is itself not compiled twice, I updated
the assertion in rustbuild at the time of working on #61557 but couldn't
land it because the fix wouldn't be ready until the next bootstrap.
The next bootstrap is now here, so the fix can now land! This does not
change the behavior of rustbuild but it is intended to catch the
previous iteration of compiling cargo twice. The main update here was to
consider more files than those in `$target/release/deps` but also
consider those in `$target/release`. That's where, for example,
`libcargo.rlib` shows up and it's the file we learn about, and that's
what we want to deduplicate.
|
|
Update cargo-vendor usage
This contains a variety of updates to clean up the usage of cargo-vendor.
- Remove the install step for the old cargo-vendor now that it is built-in to cargo and available in the stage0 install.
- Update installation instructions, dealing with vendoring. The current instructions of running `sudo ./x.py install` is broken, it will almost always fail (since the vendor directory doesn't exist). Since the steps for properly handling this are numerous, I'm recommending removing the suggestion to use `sudo` altogether.
- If the sudo-forced-vendoring detects that the vendor directory is not available, abort with instructions on how to fix.
- Now that cargo-vendor is built-in, automatically run it if it looks like it is needed.
- Update instructions on how to install cargo.
- Remove the unused markdown link references in README/CONTRIBUTING. This reverts most of #44935. These references don't do anything if they are unused.
Closes #49269
cc #61142 #48771 #40108
|
|
|
|
Fix ICEs when `Self` is used in type aliases
I think it is right just to disallow this at resolution stage rather than let typeck produce a cyclic error. This is in line with previous behaviour. There was probably no need at all for the change that introduced this bug in #57428, so I've simply reversed it.
Fixes #62263, #62364, #62305.
r? @eddyb
|
|
rustbuild: Cleanup global lint settings
Lint settings do not depend on `if let Some(target) = target` in any way, so they are moved out of that clause.
Internal lints now respect `RUSTC_DENY_WARNINGS`.
Crate name treatment is cleaned up a bit.
cc https://github.com/rust-lang/rust/pull/61545 @flip1995
r? @Mark-Simulacrum
|
|
|
|
|
|
|
|
|
|
|
|
Lint on invalid values passed to x.py --warnings
This also introduces support for `--warnings allow` and fixes --warnings
being overridden by the configuration file, config.toml.
Fixes #62402
r? @RalfJung
|
|
Implement another internal lints
cc #49509
This adds ~~two~~ one internal lint~~s~~:
1. LINT_PASS_IMPL_WITHOUT_MACRO: Make sure, that the `{declare,impl}_lint_pass` macro is used to implement lint passes. cc #59669
2. ~~USAGE_OF_TYCTXT_AND_SPAN_ARGS: item 2 on the list in #49509~~
~~With 2. I wasn't sure, if this lint should be applied everywhere. That means a careful review of 0955835 would be great. Also 73fb9b4 allows this lint on some functions. Should I also apply this lint there?~~
TODO (not directly relevant for review):
- [ ] https://github.com/rust-lang/rust/pull/59316#discussion_r280186517 (not sure yet, if this works or how to query for `rustc_private`, since it's not in [`Features`](https://doc.rust-lang.org/nightly/nightly-rustc/syntax/feature_gate/struct.Features.html) :thinking: cc @eddyb)
- [x] https://github.com/rust-lang/rust/pull/61735#discussion_r292389870
- [x] Check explicitly for the `{declare,impl}_lint_pass!` macros
r? @oli-obk
|
|
This also introduces support for `--warnings allow` and fixes --warnings
being overridden by the configuration file, config.toml.
|
|
|
|
Add `--pass $mode` to compiletest through `./x.py`
Adds a flag `--pass $mode` to compiletest, which is exposed through `./x.py`.
When `--pass $mode` is passed, `{check,build,compile,run}-pass` tests will be forced to run under the given `$mode` unless the directive `// ignore-pass` exists in the test file.
The modes are explained in https://github.com/rust-lang/rust/pull/61778:
- `check` has the same effect as `cargo check`
- `build` or `compile` have the same effect as `cargo build`
- `run` has the same effect as `cargo run`
On my machine, `./x.py -i test src/test/run-pass --stage 1 --pass check` takes 38 seconds whereas it takes 2 min 7 seconds without `--pass check`.
cc https://github.com/rust-lang/rust/issues/61712
r? @petrochenkov
|
|
rustbuild: detect cxx for all targets
Replaces #61544
Fixes #59917
We need CXX to build llvm-libunwind which can be enabled for alltargets.
As we needed it for all hosts anyways, just move the detection so that it is ran for all targets (which contains all hosts) instead.
|
|
|
|
|
|
|
|
|
|
Even if it's not in hosts
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
|
|
|
|
|
|
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
|
|
|
|
Make use of `ptr::null(_mut)` instead of casting zero
There are few places that I don't replace the zero casting pointer with `ptr::null`
or `ptr::null_mut`:
```bash
% git grep -E '[ ([{]0 as \*'
src/libcore/ptr/mod.rs:216:pub const fn null<T>() -> *const T { 0 as *const T }
src/libcore/ptr/mod.rs:231:pub const fn null_mut<T>() -> *mut T { 0 as *mut T }
src/test/run-pass/consts/const-cast-ptr-int.rs:12:static a: TestStruct = TestStruct{x: 0 as *const u8};
src/test/ui/issues/issue-45730.rs:5: let x: *const _ = 0 as *const _; //~ ERROR cannot cast
src/test/ui/issues/issue-45730.rs:8: let x = 0 as *const i32 as *const _ as *mut _; //~ ERROR cannot cast
src/test/ui/issues/issue-45730.stderr:14:LL | let x: *const _ = 0 as *const _;
src/test/ui/issues/issue-45730.stderr:24:LL | let x = 0 as *const i32 as *const _ as *mut _;
src/test/ui/lint/lint-forbid-internal-unsafe.rs:15: println!("{}", evil!(*(0 as *const u8)));
src/test/ui/order-dependent-cast-inference.rs:5: let mut y = 0 as *const _;
src/test/ui/order-dependent-cast-inference.stderr:4:LL | let mut y = 0 as *const _;
```
r? @sfackler
|
|
|
|
Add a RUSTC_TIME env var to time rust crates during bootstrap
Blocked on https://github.com/rust-lang/cargo/pull/6674
r? @michaelwoerister
Example for rustc with https://github.com/rust-lang/rust/pull/58507:
```
time: 0.460; rss: 94MB parsing
time: 0.000; rss: 94MB attributes injection
time: 0.000; rss: 94MB recursion limit
time: 0.000; rss: 94MB crate injection
time: 0.000; rss: 94MB plugin loading
time: 0.000; rss: 94MB plugin registration
time: 0.044; rss: 94MB pre ast expansion lint checks
time: 1.999; rss: 316MB expand crate
time: 0.000; rss: 316MB check unused macros
time: 2.000; rss: 316MB expansion
time: 0.000; rss: 316MB maybe building test harness
time: 0.053; rss: 316MB AST validation
time: 0.000; rss: 316MB maybe creating a macro crate
time: 1.515; rss: 397MB name resolution
time: 0.122; rss: 397MB complete gated feature checking
time: 0.655; rss: 546MB lowering ast -> hir
time: 0.136; rss: 550MB early lint checks
time: 0.117; rss: 540MB validate hir map
time: 0.606; rss: 540MB indexing hir
time: 0.000; rss: 480MB load query result cache
time: 0.000; rss: 478MB dep graph tcx init
time: 0.000; rss: 478MB looking for entry point
time: 0.001; rss: 478MB looking for plugin registrar
time: 0.001; rss: 478MB looking for derive registrar
time: 0.049; rss: 478MB loop checking
time: 0.064; rss: 479MB attribute checking
time: 0.166; rss: 484MB stability checking
time: 0.699; rss: 566MB type collecting
time: 0.006; rss: 566MB outlives testing
time: 0.018; rss: 568MB impl wf inference
time: 0.002; rss: 583MB unsafety checking
time: 0.005; rss: 583MB orphan checking
time: 0.227; rss: 583MB coherence checking
time: 0.006; rss: 583MB variance testing
time: 1.546; rss: 657MB wf checking
time: 0.389; rss: 665MB item-types checking
time: 13.999; rss: 837MB item-bodies checking
time: 1.692; rss: 883MB rvalue promotion
time: 0.067; rss: 883MB intrinsic checking
time: 0.624; rss: 887MB match checking
time: 0.246; rss: 889MB liveness checking
time: 2.629; rss: 889MB misc checking
time: 0.000; rss: 889MB borrow checking
time: 16.754; rss: 1242MB MIR borrow checking
time: 0.050; rss: 1242MB dumping chalk-like clauses
time: 0.010; rss: 1242MB MIR effect checking
time: 0.001; rss: 1242MB layout testing
time: 0.829; rss: 1244MB privacy checking
time: 0.183; rss: 1247MB death checking
time: 0.100; rss: 1248MB unused lib feature checking
time: 0.405; rss: 1250MB lint checking
time: 1.518; rss: 1250MB misc checking
time: 0.000; rss: 1250MB resolving dependency formats
time: 2.928; rss: 1332MB write metadata
time: 0.014; rss: 1332MB collecting roots
time: 7.621; rss: 1488MB collecting mono items
time: 7.635; rss: 1488MB monomorphization collection
time: 0.557; rss: 1567MB codegen unit partitioning
time: 27.971; rss: 2656MB codegen to LLVM IR
time: 0.056; rss: 2656MB assert dep graph
time: 0.000; rss: 2656MB serialize dep graph
time: 195.414; rss: 2656MB codegen
time: 0.000; rss: 329MB serialize work products
time: 1.664; rss: 331MB running linker
time: 1.965; rss: 331MB linking
[RUSTC-TIMING] rustc test:false 950.103
```
It doesn't really look like the times add up here.
|
|
|
|
rustbuild: include llvm-libunwind in dist tarball
Without this we cannot build with llvm-libunwind enabled from a release tarball.
Could it be backported in a beta rollup somehow so that this gets fixed before 1.36 is released?
|
|
Pass LLVM linker flags to librustc_llvm build
Some -L and -l flags may be needed even when building librustc_llvm,
for example when using static libc++ on Linux we may need to manually
specify the library search path and -ldl -lpthread as additional link
dependencies. We pass LLVM linker flags from config to librustc_llvm
build to make sure these cases are handled.
|
|
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
|
|
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
|
|
|
|
|
|
Removing the tool argument in the previous commit means it's no longer
restricted to just bootstrap tools despite being written as such.
Inlining it prevents accidental use.
|
|
|
|
There's no need to have it given it merely forwarded to RustbookSrc.
|
|
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
|
|
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
|
|
rustbuild: fix libtest_stamp
Looks like an obvious copy/paste typo
|
|
Fix x.py install
Make sure we look for save analysis in the right place. Fixes #61703.
r? @Mark-Simulacrum
cc @petrhosek @cramertj
|
|
|
|
Replaces #61544
Fixes #59917
We need CXX to build llvm-libunwind which can be enabled for all
targets.
As we needed it for all hosts anyways, just move the detection so that
it is ran for all targets (which contains all hosts) instead.
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
|
|
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
|
|
Migrate rust-by-example to MdBook2
|
|
Pass cflags rather than cxxflags to LLVM as CMAKE_C_FLAGS
We mistakenly pass cxxflags from the configuration to LLVM build as
CMAKE_C_FLAGS.
|
|
Make sure we look for save analysis in the right place. Fixes #61703.
|
|
|
|
Some -L and -l flags may be needed even when building librustc_llvm,
for example when using static libc++ on Linux we may need to manually
specify the library search path and -ldl -lpthread as additional link
dependencies. We pass LLVM linker flags from config to librustc_llvm
build to make sure these cases are handled.
|