Commit Graph

4798 Commits

Author SHA1 Message Date
Matthias Krüger a353cb0cd8 Rollup merge of #113234 - jyn514:revert-python-test-args, r=clubby789
Don't pass --test-args to `python -m unitest`

The args for unittest and cargo test are mutually incompatible. Suggest that people use `python -m unittest ...` manually instead.

This also changes `bootstrap_test.py` to be easier to run standalone; see the commit for details.

r? `@clubby789` cc https://github.com/rust-lang/rust/pull/112281#discussion_r1248849172
2023-07-02 10:27:22 +02:00
bors be6e38c617 Auto merge of #112756 - hi-rustin:rustin-patch-bootstrap, r=clubby789
Use RustOptimize to set optimize

close https://github.com/rust-lang/rust/issues/112678

Use RustOptimize to set optimize.
2023-07-02 04:54:15 +00:00
hi-rustin 7cab8f7862 Fix broken tests
Signed-off-by: hi-rustin <rustin.liu@gmail.com>
2023-07-02 12:07:25 +08:00
jyn 85372005e7 Don't pass --test-args to python -m unitest
The args for unittest and cargo test are mutually incompatible. Suggest that people use `python -m unittest ...` manually instead.

This also changes `bootstrap_test.py` to be easier to run standalone; see the commit for details.
2023-07-01 11:13:08 -05:00
hi-rustin 878eff1207 Add tests for RustOptimize
Signed-off-by: hi-rustin <rustin.liu@gmail.com>
2023-07-01 16:59:35 +08:00
hi-rustin e6e2825bb0 Use RustOptimize to set optimize
Signed-off-by: hi-rustin <rustin.liu@gmail.com>
2023-07-01 16:03:42 +08:00
Rémy Rakic a158053e35 msvc dist extended: rust-analyzer is optional
The windows tarballs and installers expect rust-analyzer to be present, but
it's not always the case. For example, in try builds.
2023-07-01 07:58:55 +00:00
Rémy Rakic 8a4a6f79dd msvc dist extended: clippy is optional
The windows tarballs and installers expect clippy to be present, but
it's not always the case. For example, in try builds.
2023-07-01 07:55:33 +00:00
Matthias Krüger a2c18616e3 Rollup merge of #113185 - jyn514:dist-channel, r=ozkanonur
Set `channel = nightly` in dist profile

This avoids some channel-specific defaults leaking into local installs. It also makes it easier to set options for compiler/library/codegen profiles in the future, since they can be gated off `channel` instead of being duplicated between all three files.

Here are the exact things `channel` controls today:
https://github.com/rust-lang/rust/blob/68d458bb402b873b9ae80423710c2672967479df/src/bootstrap/llvm.rs#L466-L470
https://github.com/rust-lang/rust/blob/85c4ea0138fcca2e8cf4515a063cd3b762d64aec/src/bootstrap/config.rs#L1374-L1375
https://github.com/rust-lang/rust/blob/85c4ea0138fcca2e8cf4515a063cd3b762d64aec/src/bootstrap/config.rs#L1464-L1465
``@cuviper`` i expect you don't want any of those to be set in distro builds, right?
2023-07-01 00:35:05 +02:00
jyn 368f51743b Set channel = nightly in dist profile 2023-06-29 23:37:20 -05:00
Matthias Krüger f00db43e97 Rollup merge of #112300 - Zalathar:run-coverage, r=wesleywiser
Convert `run-make/coverage-reports` tests to use a custom compiletest mode

I was frustrated by the fact that most of the coverage tests are glued together with makefiles and shell scripts, so I tried my hand at converting most of them over to a newly-implemented `run-coverage` mode/suite in compiletest.

This ~~*mostly*~~ resolves #85009, ~~though I've left a small number of the existing tests as-is because they would require more work to fix/support~~.

---

I had time to go back and add support for the more troublesome tests that I had initially skipped over, so this PR now manages to completely get rid of `run-make/coverage-reports`.

---

The patches are arranged as follows:

- Declare the new mode/suite in bootstrap
- Small changes to compiletest that will be used by the new mode
- Implement the new mode in compiletest
- Migrate most of the tests over
- Add more code to bootstrap and compiletest to support the remaining tests
- Migrate the remaining tests (with some temporary hacks to avoid re-blessing them)
- Remove the temporary hacks and re-bless the migrated tests
- Remove the unused remnants of `run-make/coverage-reports`
2023-06-29 16:36:31 +02:00
Matthias Krüger 93a97c7a2a Rollup merge of #112234 - ozkanonur:hotfix, r=jyn514
refactor `tool_doc!`

resolves https://github.com/rust-lang/rust/pull/112211#discussion_r1215190510
2023-06-29 16:36:30 +02:00
ozkanonur cde54ffc99 refactor tool_doc! so that it can accept additional arguments.
Signed-off-by: ozkanonur <work@onurozkan.dev>
2023-06-29 12:37:48 +03:00
Takayuki Maeda 376c944bd2 Rollup merge of #113048 - psumbera:solaris-bootstrap-cfgs, r=ozkanonur
Fix build on Solaris where fd-lock cannot be used.

This fixes build regression after https://github.com/rust-lang/rust/commit/e7e584b7d9d4eba8b9655b255840ef9caf9b40c0.

Resolves #113085
2023-06-29 03:29:32 +09:00
Dylan DPC fa56e01b35 Rollup merge of #111571 - jhpratt:proc-macro-span, r=m-ou-se
Implement proposed API for `proc_macro_span`

As proposed in [#54725 (comment)](https://github.com/rust-lang/rust/issues/54725#issuecomment-1546918161). I have omitted the byte-level API as it's already available as [`Span::byte_range`](https://doc.rust-lang.org/nightly/proc_macro/struct.Span.html#method.byte_range).

`@rustbot` label +A-proc-macros

r? `@m-ou-se`
2023-06-28 18:28:46 +05:30
Zalathar d05653cbe0 Declare a run-coverage-rustdoc suite for coverage tests that need rustdoc 2023-06-28 11:09:19 +10:00
Zalathar d8d09b0681 Declare a run-coverage test mode/suite in bootstrap 2023-06-28 11:08:09 +10:00
Petr Sumbera 35cfac1e2b [PATCH] Fix build on Solaris where fd-lock cannot be used. 2023-06-27 14:28:44 +02:00
clubby789 85c4ea0138 bootstrap: rename 'user' profile to 'dist' 2023-06-26 22:54:47 +00:00
Matthias Krüger 5122e88b35 Rollup merge of #113034 - jyn514:ci-progress, r=oli-obk
Switch some more Steps to `builder.msg`

In particular, this hides compiletest suites under a dropdown - some builders are configured with `verbose-tests`, which makes the suites take up many thousands of lines.

before:
```
Documenting stage1 cargo (x86_64-unknown-linux-gnu)
Check compiletest suite=rustdoc-js mode=js-doc-test (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
```

after:
```
::group::Documenting stage1 cargo (x86_64-unknown-linux-gnu)
::group::Testing stage1 compiletest suite=rustdoc-js mode=js-doc-test (x86_64-unknown-linux-gnu)
```

found this from https://github.com/rust-lang-ci/rust/actions/runs/5366993848/jobs/9736792611

r? `@oli-obk`
2023-06-26 11:58:46 +02:00
Matthias Krüger f6d58eaad3 Rollup merge of #111326 - he32:netbsd-aarch64-be, r=oli-obk
Add support for NetBSD/aarch64-be (big-endian arm64).
2023-06-26 11:58:43 +02:00
Takayuki Maeda 96ab7e6ed7 Rollup merge of #112281 - jyn514:test-bootstrap-py, r=albertlarsan68
Test the cargo args generated by bootstrap.py

I recommend reviewing this commit-by-commit using the instructions in https://rustc-dev-guide.rust-lang.org/git.html#moving-large-sections-of-code.

- Test cargo arguments passed by bootstrap.py

  This moves a lot of code around, but the logic itself is not too terribly complicated.

    - Move almost all logic in `def bootstrap` to the `RustBuild` class, to avoid mixing setting configuration with running commands
    - Update various doctests to the new (more complete) RustBuild config. In particular, don't pretend that `bin_root` supports `build` being unset.
    - Change `parse_args` not to use a global, to allow testing it
    - Set BUILD_DIR appropriately so bootstrap.py doesn't panic because cargo isn't found

- Allow passing arguments to `bootstrap_test.py`

    Previous, it used the built-in test runner, which doesn't support options unless they're manually passed in the script.

- Fix progress messages for configure in bootstrap_test.py

    Before it would unconditionally print `configure-args = []`.

r? `@albertlarsan68` cc https://github.com/rust-lang/rust/pull/112089 https://github.com/rust-lang/rust/pull/111979#issuecomment-1568525699
2023-06-26 01:50:27 +09:00
jyn 1e7f03718b fix some bugs
- fix tests when `--build` is set
- don't leak `config.example.toml` fd
- don't crash if `config.toml` doesn't exist yet
2023-06-25 10:01:04 -05:00
jyn bd36f636cb Switch some more Steps to builder.msg
In particular, this hides compiletest suites under a dropdown - some builders are configured with `verbose-tests`, which makes the suites take up many thousands of lines.

before:
```
Documenting stage1 cargo (x86_64-unknown-linux-gnu)
Check compiletest suite=rustdoc-js mode=js-doc-test (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
```

after:
```
::group::Documenting stage1 cargo (x86_64-unknown-linux-gnu)
::group::Testing stage1 compiletest suite=rustdoc-js mode=js-doc-test (x86_64-unknown-linux-gnu)
```
2023-06-25 09:40:30 -05:00
Guillaume Gomez fb98925b8c Rollup merge of #112918 - zephaniahong:issue-107077-fix, r=Mark-Simulacrum
display PID of process holding lock

Displays PID of process holding lock when trying to run multiple instances of x.py
2023-06-25 10:46:14 +02:00
Noah Lev ce326918ec bootstrap: Backup settings.json to the correct filename
The old code actually replaced `.json` with `.bak` (so, `settings.bak`),
rather than appending `.bak` as claimed (`settings.json.bak`).

`Path::set_extension` can instead be used with dots:

> The new extension may contain dots and will be used in its entirety,
> but only the part after the final dot will be reflected in
> self.extension.
2023-06-24 10:23:46 -07:00
jyn 24e67d51a0 Don't test the profile override hack
It generates invalid TOML. I want to get rid of it eventually, but this avoids the issue in the meantime.
2023-06-24 09:40:22 -05:00
jyn c7af6fb5b8 Test color/verbose/warnings properly
These weren't being passed in to bootstrap consistently before; in particular `serialize_and_parse` forgot to pass them in.
2023-06-23 21:13:36 -05:00
jyn c5820b50c5 Test cargo arguments passed by bootstrap.py
This moves a lot of code around, but the logic itself is not too terribly complicated.

- Move almost all logic in `def bootstrap` to the `RustBuild` class, to avoid mixing setting configuration with running commands
- Update various doctests to the new (more complete) RustBuild config. In particular, don't pretend that `bin_root` supports `build` being unset.
- Change `parse_args` not to use a global, to allow testing it
- Set BUILD_DIR appropriately so bootstrap.py doesn't panic because cargo isn't found
2023-06-23 21:13:36 -05:00
jyn 3508cde815 Allow passing arguments to bootstrap_test.py
Previous, it used the built-in test runner, which doesn't support options unless they're manually passed in the script.
2023-06-23 21:13:34 -05:00
jyn 7d2373e48f Fix progress messages for configure in bootstrap_test.py
Before it would unconditionally print `configure-args = []`.
2023-06-23 21:12:06 -05:00
Guillaume Gomez 7b5577985d Make try_run return a Result<(), ()> instead of a boolean 2023-06-23 17:07:34 +02:00
Zephaniah Ong e7e584b7d9 display pid of process holding lock 2023-06-23 15:09:09 +08:00
clubby789 e3e65d1e14 Revert 'Rename profile=user to profile=dist'
This reverts commit a45fc94652
2023-06-21 13:30:02 +01:00
David Tolnay 21d9fd77f4 Delete use of proc_macro_span_shrink from proc-macro2 2023-06-20 19:53:06 -04:00
Michael Goulet 935452b619 Rollup merge of #112499 - tgross35:py-ruff-fixes, r=Mark-Simulacrum
Fix python linting errors

These were flagged by `ruff`, run using the config in https://github.com/rust-lang/rust/pull/112482
2023-06-19 17:53:34 -07:00
bors f217411bac Auto merge of #112774 - compiler-errors:rollup-z8oof6r, r=compiler-errors
Rollup of 6 pull requests

Successful merges:

 - #112537 (Don't record adjustments twice in `note_source_of_type_mismatch_constraint`)
 - #112663 (cleanup azure leftovers)
 - #112668 (Test `x.ps1` in `msvc` CI job)
 - #112710 (Re-use the deref-pattern recursion instead of duplicating the logic)
 - #112753 (Don't try to auto-bless 32-bit `mir-opt` tests on ARM Mac hosts)
 - #112758 (refactor(resolve): delete update_resolution function)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-06-18 22:30:48 +00:00
Michael Goulet d70be67047 Rollup merge of #112753 - Zalathar:no-bless, r=clubby789
Don't try to auto-bless 32-bit `mir-opt` tests on ARM Mac hosts

#112418 added special support for automatically blessing 32-bit output on 64-bit hosts, for the subset of `mir-opt` tests that are pointer-width-dependent.

This relies on the 64-bit host having some corresponding 32-bit target that can be built “easily”. For most 64-bit hosts this is fine, but ARM Macs don't have a corresponding 32-bit target. (There have never been 32-bit ARM Macs, and ARM Macs don't have the libraries needed for building `i686-apple-darwin`.)

There is an entry for `("i686-apple-darwin", "aarch64-apple-darwin")` in the list of corresponding 32-bit platforms, but this doesn't actually work on ARM Macs. Instead, the bootstrap invocation fails to build the necessary 32-bit target support, and nothing gets tested or blessed.

According to [this Zulip thread](https://rust-lang.zulipchat.com/#narrow/stream/182449-t-compiler.2Fhelp/topic/Can't.20bless.20any.20mir-opt.20tests.20on.20aarch64.20Mac/near/367109789), that mapping was only added because the author assumed it would work. But since it doesn't actually work on ARM Macs, the solution is to just remove that mapping.

With the mapping removed, ARM Macs still can't auto-bless 32-bit output (they will see a warning instead), but at least they can now bless the output of `mir-opt` tests that don't care about pointer width.
2023-06-18 13:17:07 -07:00
Michael Goulet b0991731d4 Rollup merge of #112668 - Kobzol:ci-msvc-ps1, r=pietroalbini
Test `x.ps1` in `msvc` CI job

Small adjustment to https://github.com/rust-lang/rust/pull/112633, to resolve [this comment](https://github.com/rust-lang/rust/pull/112633#issuecomment-1592973577).

r? `@pietroalbini`
2023-06-18 13:17:06 -07:00
Michael Goulet 2a85e02428 Rollup merge of #112663 - klensy:dusk-and-dawn, r=pietroalbini
cleanup azure leftovers

Continuation of #97756
2023-06-18 13:17:06 -07:00
bors 2d0aa57684 Auto merge of #112645 - Kobzol:ci-mingw-merge, r=pietroalbini
CI: merge `mingw` test CI jobs

Same as https://github.com/rust-lang/rust/pull/112633, but for `mingw`. From the logs it looks like the runner spends 40 minutes compiling `rustc`, and then `10`/`20` minutes running tests. It seems wasteful to split that into two jobs.

CI run: https://github.com/rust-lang/rust/actions/runs/5275702134/jobs/9541479343?pr=112645

r? `@jyn514`
2023-06-18 19:49:26 +00:00
Jakub Beránek f3a4cf13a7 Merge mingw-1/2 CI jobs 2023-06-18 14:40:52 +02:00
Jakub Beránek d25e8d79a1 Test x.ps1 in msvc CI job 2023-06-18 11:50:05 +02:00
Zalathar b198589214 Don't try to auto-bless 32-bit mir-opt tests on ARM Mac hosts
Blessing 32-bit tests on 64-bit hosts relies on having a corresponding 32-bit
target that can be built "easily" on those hosts.

ARM Macs don't have a corresponding 32-bit target, so trying to build one is
usually going to fail.
2023-06-18 11:17:19 +10:00
Trevor Gross 22d00dcd47 Apply changes to fix python linting errors 2023-06-16 20:56:01 -04:00
DrMeepster 3078de7636 add dry_run check 2023-06-16 13:39:55 -07:00
klensy 903b3d36db cleanup more azure leftovers 2023-06-15 18:58:57 +03:00
Jakub Beránek 895eb3035e Merge msvc-1/2 CI jobs 2023-06-14 23:07:49 +02:00
bors afa9fef709 Auto merge of #112418 - ferrocene:pa-mir-opt-panic, r=ozkanonur,saethlin
Add support for targets without unwinding in `mir-opt`, and improve `--bless` for it

The main goal of this PR is to add support for targets without unwinding support in the `mir-opt` test suite, by adding the `EMIT_MIR_FOR_EACH_PANIC_STRATEGY` comment. Similarly to 32bit vs 64bit, when that comment is present, blessed output files will have the `.panic-unwind` or `.panic-abort` suffix, and the right one will be chosen depending on the target's panic strategy.

The `EMIT_MIR_FOR_EACH_PANIC_STRATEGY` comment replaced all the `ignore-wasm32` comments in the `mir-opt` test suite, as those comments were added due to `wasm32` being a target without unwinding support. The comment was also added on other tests that were only executed on x86 but were still panic strategy dependent.

The `mir-opt` suite was then blessed, which caused a ton of churn as most of the existing output files had to be renamed and (mostly) duplicated with the abort strategy.

---

After [asking on Zulip](https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/mir-opt.20tests.20and.20panic.3Dabort), the main concern about this change is it'd make blessing the `mir-opt` suite even harder, as you'd need to both bless it with an unwinding target and an aborting target. This exacerbated the current situation, where you'd need to bless it with a 32bit and a 64bit target already.

Because of that, this PR also makes significant enhancements to `--bless` for the `mir-opt` suite, where it will automatically bless the suite four times with different targets, while requiring minimal cross-compilation.

To handle the 32bit vs 64bit blessing, there is now an hardcoded list of target mapping between 32bit and 64bit. The goal of the list is to find a related target that will *probably* work without requiring additional cross-compilation toolchains on the system. If a mapping is found, bootstrap will bless the suite with both targets, otherwise just with the current target.

To handle the panic strategy blessing (abort vs unwind), I had to resort to what I call "synthetic targets". For each of the target we're blessing (so either the current one, or a 32bit and a 64bit depending on the previous paragraph), bootstrap will extract the JSON spec of the target and change it to include `"panic-strategy": "abort"`. It will then build the standard library with this synthetic target, and bless the `mir-opt` suite with it.

As a result of these changes, blessing the `mir-opt` suite will actually bless it two or four times with different targets, ensuring all possible variants are actually blessed.

---

This PR is best reviewed commit-by-commit.

r? `@jyn514`
cc `@saethlin` `@oli-obk`
2023-06-14 14:20:59 +00:00
Pietro Albini f67809ac1d yet another dry run fix 2023-06-14 15:14:19 +02:00