Commit graph

321 commits

Author SHA1 Message Date
Jieyou Xu
83af9f57c1
run-make: drop os_pipe workaround now that anonymous_pipe is stable on beta 2025-04-17 23:23:30 +08:00
Jieyou Xu
41931320f8
run-make-support: fix artifact name calculations for target
This was implemented incorrectly during the porting process, where we
relied on std consts. However, `run-make-support` is a host-only
library, which meant that these artifact names were for the *host* and
not the *target*.
2025-04-12 14:48:01 +08:00
Jakub Beránek
6af96f873a
Add a helper function for checking if LLD was used to run-make-support 2025-04-03 15:40:23 +02:00
Jieyou Xu
b591eb022d
Drop aux_build rustc helpers
They provide very little value and makes it more confusing than is
helpful.
2025-04-02 15:39:55 +08:00
Pietro Albini
5fe1e47f80
reintroduce remote-test support in run-make tests
The old Makefile-based infrastructure included support for executing
binaries with remote-test-client if configured, but that didn't get
ported to run_make_support as part of the rmake migration.

This PR re-introduces back that support, with the same implementation
(and limitations) of the original Makefile-based support.
2025-03-18 10:10:50 +01:00
Steven Malis
9278a3ebd6 Don't link against advapi32, except on win7. 2025-03-08 10:55:47 -05:00
许杰友 Jieyou Xu (Joe)
d47e5a371b Temporarily depend on os_pipe in run-make-support and re-export it
For `broken-pipe-no-ice` until std `anonymous_pipe` stabilizes.
2025-03-07 19:08:11 +08:00
许杰友 Jieyou Xu (Joe)
65da1ffe41
Rollup merge of #136581 - jieyouxu:makefile-be-gone, r=Kobzol
Retire the legacy `Makefile`-based `run-make` test infra

The final piece of [porting run-make tests to use Rust #121876](https://github.com/rust-lang/rust/issues/121876).
Closes #121876.
Closes #40713.
Closes #81791 (no longer using `wc`).
Closes #56475 (no longer a problem in current form of that test; we don't ignore the test on `aarch64-unknown-linux-gnu`).

### Summary

This PR removes the legacy `Makefile`-based `run-make` test infra which has served us well over the years. The legacy infra is no longer needed since we ported all of `Makefile`-based `run-make` tests to the new `rmake.rs` infra.

Additionally, this PR:

- Removes `tests/run-make/tools.mk` since no more `Makefile`-based tests remain.
- Updates `tests/run-make/README.md` and rustc-dev-guide docs to remove mention about `Makefile`-based `run-make` tests
- Update test suite requirements in rustc-dev-guide on Windows to no longer need MSYS2 (they should also now run successfully on native Windows MSVC).
- Update `triagebot.toml` to stop backlinking to #121876.

**Thanks to everyone who helped in this effort to modernize the `run-make` test infra and test suite!**

r? bootstrap
2025-03-05 21:46:32 +08:00
Jubilee
e5ac9f89eb
Rollup merge of #137373 - Kobzol:tool-stage0-improve, r=jieyouxu
Compile run-make-support and run-make tests with the bootstrap compiler

It does not seem necessary to have to recompile run-make-support on changes to the local compiler/stdlib. This PR simplifies the implementation of a few tools, then switches rms to stage0 and also makes the handling of environment variables in run-make tests simpler.

Best reviewed commit-by-commit. I can split it into multiple PRs if you want.

Also tested that `COMPILETEST_FORCE_STAGE0=1 ./x test tests/run-make --stage 0` still works. Incredibly, it looks like it even passes more tests than on `master` 😆

r? ``@jieyouxu``
2025-03-04 14:50:39 -08:00
许杰友 Jieyou Xu (Joe)
ed168e7b2b run-make-support: remove outdated comments 2025-03-02 05:56:56 +08:00
Jakub Beránek
0034d6c928 Compile run-make recipes using the stage0 compiler 2025-03-01 22:11:02 +01:00
Guillaume Gomez
46a39f0b27 Add new Rustdoc::emit method in run-make-support 2025-02-26 17:13:48 +01:00
Patryk Wychowaniec
78ddabf31d
Create a generic AVR target: avr-none
This commit removes the `avr-unknown-gnu-atmega328` target and replaces
it with a more generic `avr-none` variant that must be specialized with
the `-C target-cpu` flag (e.g. `-C target-cpu=atmega328p`).
2025-02-19 19:01:51 +01:00
clubby789
2966256133 Make -O mean -C opt-level=3 2025-02-13 19:47:55 +00:00
许杰友 Jieyou Xu (Joe)
1e87d00e11 run-make-support: add some stable rustc flag helpers 2025-02-01 16:14:36 +08:00
许杰友 Jieyou Xu (Joe)
68b6f92a56 run-make-support: add shallow_find_directories helper 2025-02-01 16:14:36 +08:00
许杰友 Jieyou Xu (Joe)
0bc1b4f4f6 run-make-support: add object-based symbol helpers
- `dynamic_symbol_names`
- `text_section_global_dynamic_symbol_names`
- `global_undefined_dynamic_symbol_names`

Also add some missing `#[track_caller]` attributes.

Co-authored-by: binarycat <binarycat@envs.net>
2025-01-31 04:29:40 +00:00
许杰友 Jieyou Xu (Joe)
c15c9702d6 run-make-support: add is_windows_gnu helper 2025-01-31 04:29:40 +00:00
许杰友 Jieyou Xu (Joe)
17e0fc6f03 run-make-support: collapse re-export 2025-01-31 04:29:40 +00:00
许杰友 Jieyou Xu (Joe)
09f68486bd run-make-support: add -Csymbol-mangling-version and -Cprefer-dynamic helpers to rustc
Co-authored-by: binarycat <binarycat@envs.net>
2025-01-31 04:29:40 +00:00
许杰友 Jieyou Xu (Joe)
5f513a6a88 run-make-support: improve docs for assert_exit_code 2025-01-29 08:11:01 +00:00
许杰友 Jieyou Xu (Joe)
dd616d6a16 run-make-support: add sysroot helper
Convenience helper for `rustc --print=sysroot`.
2025-01-29 08:10:05 +00:00
jyn
c1b4ab0e73 Shorten linker output even more when --verbose is not present
- Don't show environment variables. Seeing PATH is almost never useful, and it can be extremely long.
- For .rlibs in the sysroot, replace crate hashes with a `"-*"` string. This will expand to the full crate name when pasted into the shell.
- Move `.rlib` to outside the glob.
- Abbreviate the sysroot path to `<sysroot>` wherever it appears in the arguments.

This also adds an example of the linker output as a run-make test. Currently it only runs on x86_64-unknown-linux-gnu, because each platform has its own linker arguments. So that it's stable across machines, pass BUILD_ROOT as an argument through compiletest through to run-make tests.

- Only use linker-flavor=gnu-cc if we're actually going to compare the output. It doesn't exist on MacOS.
2025-01-25 16:04:52 -05:00
许杰友 Jieyou Xu (Joe)
ead78bb243 run-make-support: add set_aux_fd helper
Co-authored-by: Noa <coolreader18@gmail.com>
Co-authored-by: Oneirical <manchot@videotron.ca>
2025-01-22 12:26:14 +08:00
Guillaume Gomez
223a7c1237
Rollup merge of #135411 - Urgau:unreach_pub-run-make, r=jieyouxu
run_make_support: add `#![warn(unreachable_pub)]`

This PR enables the [`unreachable_pub`](https://doc.rust-lang.org/rustc/lints/listing/allowed-by-default.html#unreachable-pub) lint as warn in the `run_make_support` crate.

Related to https://github.com/rust-lang/compiler-team/issues/773

r? ``@jieyouxu``
2025-01-12 23:09:01 +01:00
Urgau
f25b0815a7 run_make_support: add #![warn(unreachable_pub)] 2025-01-12 16:12:34 +01:00
许杰友 Jieyou Xu (Joe)
1665b80b71 run-make-support: don't use lossy on TARGET_RPATH_DIR 2025-01-12 13:03:22 +08:00
许杰友 Jieyou Xu (Joe)
6175d73862 run-make-support: tidy up assertion failure dumping
Avoid double-dumping or dumping even when assertion is successful.
2025-01-03 20:06:46 +08:00
许杰友 Jieyou Xu (Joe)
7b763031e1 run-make-support: add basic sanity tests for assertion helpers 2025-01-03 19:57:30 +08:00
许杰友 Jieyou Xu (Joe)
f7d0842198 run-make-support: convert assertion_helpers to module 2025-01-03 19:56:30 +08:00
Jieyou Xu
4d3bf1f5ee run-make-support: re-export recursive_remove
This facade is like other `run_make_support::fs` APIs that
panic-on-failure but includes the path that the operation was called on
in the panic message.
2024-12-23 03:25:36 +08:00
许杰友 Jieyou Xu (Joe)
3b388eb9b6 run_make_support: extract copy_symlink helper 2024-12-23 03:25:36 +08:00
许杰友 Jieyou Xu (Joe)
fdd0eb0e34
Rollup merge of #134111 - jyn514:run-make-nocapture, r=jieyouxu
Fix `--nocapture` for run-make tests

This was confusing because there are three layers of output hiding.
1. libtest shoves all output into a buffer and does not print it unless the test fails or `--nocapture` is passed.
2. compiletest chooses whether to print the output from any given process.
3. run-make-support chooses what output to print.

This modifies 2 and 3.

- compiletest: Don't require both `--verbose` and `--nocapture` to show the output of run-make tests.
- compiletest: Print the output from `rmake` processes if they succeed. Previously this was only printed on failure.
- compiletest: Distinguish rustc and rmake stderr by printing the command name (e.g. "--stderr--" to "--rustc stderr--").
- run-make-support: Unconditionally print the needle/haystack being searched. Previously this was only printed on failure.

Before:
```
$ x t tests/run-make/linker-warning --force-rerun -- --nocapture
running 1 tests
.

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 377 filtered out; finished in 281.64ms
$ x t tests/run-make/linker-warning --force-rerun -v -- --nocapture 2>&1 | wc -l
1004
$ x t tests/run-make/linker-warning --force-rerun -v -- --nocapture | tail -n40
running 1 tests

------stdout------------------------------

------stderr------------------------------
warning: unused import: `std::path::Path`
 --> /home/jyn/src/rust2/tests/run-make/linker-warning/rmake.rs:1:5
  |
1 | use std::path::Path;
  |     ^^^^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: unused import: `run_make_support::rfs::remove_file`
 --> /home/jyn/src/rust2/tests/run-make/linker-warning/rmake.rs:3:5
  |
3 | use run_make_support::rfs::remove_file;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: 2 warnings emitted

------------------------------------------
test [run-make] tests/run-make/linker-warning ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 377 filtered out; finished in 285.89ms
```

After:

```
Testing stage1 compiletest suite=run-make mode=run-make (x86_64-unknown-linux-gnu)

running 1 tests
------rmake stdout------------------------------

------rmake stderr------------------------------
assert_contains_regex:
=== HAYSTACK ===
error: linking with `./fake-linker` failed: exit status: 1
  |
  = note: LC_ALL="C" PATH="/home/jyn/src/rust2/build/x86_64-unknown-linux-gnu/stage1/lib/rustlib/x86_64-unknown-linux-gnu/bin:...:/bin" VSLANG="1033" "./fake-linker" "-m64" "/tmp/rustcYqdAZT/symbols.o" "main.main.d17f5fbe6225cf88-cgu.0.rcgu.o" "main.2uoctswmurc6ir5rvoay0p9ke.rcgu.o" "-Wl,--as-needed" "-Wl,-Bstatic" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-B/home/jyn/src/rust2/build/x86_64-unknown-linux-gnu/stage1/lib/rustlib/x86_64-unknown-linux-gnu/bin/gcc-ld" "-fuse-ld=lld" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "/home/jyn/src/rust2/build/x86_64-unknown-linux-gnu/test/run-make/linker-warning/rmake_out" "-L" "/home/jyn/src/rust2/build/x86_64-unknown-linux-gnu/stage1/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "main" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-nodefaultlibs" "run_make_error"
  = note: error: baz

error: aborting due to 1 previous error

=== NEEDLE ===
fake-linker.*run_make_error
assert_not_contains_regex:
=== HAYSTACK ===

=== NEEDLE ===
fake-linker.*run_make_error

------------------------------------------
.

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 377 filtered out; finished in 314.81ms
```

r? `@jieyouxu`
2024-12-16 01:52:21 +08:00
jyn
da535b9155 Fix --nocapture for run-make tests
This was confusing because there are three layers of output hiding.
1. libtest shoves all output into a buffer and does not print it unless the test fails or `--nocapture` is passed.
2. compiletest chooses whether to print the output from any given process.
3. run-make-support chooses what output to print.

This modifies 2 and 3.

- compiletest: Don't require both `--verbose` and `--nocapture` to show the output of run-make tests.
- compiletest: Distinguish rustc and rmake stderr by printing the command name (e.g. "--stderr--" to "--rustc stderr--").
- run-make-support: Unconditionally print the needle/haystack being searched. Previously this was only printed on failure.

Before:
```
$ x t tests/run-make/linker-warning --force-rerun -- --nocapture
running 1 tests
.

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 377 filtered out; finished in 281.64ms
$ x t tests/run-make/linker-warning --force-rerun -v -- --nocapture 2>&1 | wc -l
1004
$ x t tests/run-make/linker-warning --force-rerun -v -- --nocapture | tail -n40
running 1 tests

------stdout------------------------------

------stderr------------------------------
warning: unused import: `std::path::Path`
 --> /home/jyn/src/rust2/tests/run-make/linker-warning/rmake.rs:1:5
  |
1 | use std::path::Path;
  |     ^^^^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: unused import: `run_make_support::rfs::remove_file`
 --> /home/jyn/src/rust2/tests/run-make/linker-warning/rmake.rs:3:5
  |
3 | use run_make_support::rfs::remove_file;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: 2 warnings emitted

------------------------------------------
test [run-make] tests/run-make/linker-warning ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 377 filtered out; finished in 285.89ms
```

After:

```
Testing stage1 compiletest suite=run-make mode=run-make (x86_64-unknown-linux-gnu)

running 1 tests
------rmake stdout------------------------------

------rmake stderr------------------------------
assert_contains_regex:
=== HAYSTACK ===
error: linking with `./fake-linker` failed: exit status: 1
  |
  = note: LC_ALL="C" PATH="/home/jyn/src/rust2/build/x86_64-unknown-linux-gnu/stage1/lib/rustlib/x86_64-unknown-linux-gnu/bin:...:/bin" VSLANG="1033" "./fake-linker" "-m64" "/tmp/rustcYqdAZT/symbols.o" "main.main.d17f5fbe6225cf88-cgu.0.rcgu.o" "main.2uoctswmurc6ir5rvoay0p9ke.rcgu.o" "-Wl,--as-needed" "-Wl,-Bstatic" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-B/home/jyn/src/rust2/build/x86_64-unknown-linux-gnu/stage1/lib/rustlib/x86_64-unknown-linux-gnu/bin/gcc-ld" "-fuse-ld=lld" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "/home/jyn/src/rust2/build/x86_64-unknown-linux-gnu/test/run-make/linker-warning/rmake_out" "-L" "/home/jyn/src/rust2/build/x86_64-unknown-linux-gnu/stage1/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "main" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-nodefaultlibs" "run_make_error"
  = note: error: baz

error: aborting due to 1 previous error

=== NEEDLE ===
fake-linker.*run_make_error
assert_not_contains_regex:
=== HAYSTACK ===

=== NEEDLE ===
fake-linker.*run_make_error

------------------------------------------
.

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 377 filtered out; finished in 314.81ms
```
2024-12-14 20:42:23 -05:00
jyn
a4ef751e26 don't show the full linker args unless --verbose is passed
the linker arguments can be *very* long, especially for crates with many dependencies. some parts of them are not very useful. unless specifically requested:
- omit object files specific to the current invocation
- fold rlib files into a single braced argument (in shell expansion format)

this shortens the output significantly without removing too much information.
2024-12-14 20:38:46 -05:00
León Orell Valerian Liehr
0b9e74af2e
Rollup merge of #134113 - jyn514:run-make-contains, r=jieyouxu
run-make: Fix `assert_stderr_not_contains_regex`

It asserted on **stdout**, not stderr.

r? ``@jieyouxu``
2024-12-10 20:16:04 +01:00
jyn
9a6deba8af run-make: Fix assert_stderr_not_contains_regex
It asserted on **stdout**, not stderr.
2024-12-10 04:35:20 -05:00
clubby789
868668e05d Run cargo update and update licenses 2024-12-01 11:06:44 +00:00
Esteban Küber
998ff2f0cd Move the crate-loading test to use diff output 2024-11-29 18:59:24 +00:00
bors
5ec7d6eee7 Auto merge of #132646 - jieyouxu:liberate-aarch64-gnu-debug, r=Kobzol
Liberate `aarch64-gnu-debug` from the shackles of `--test-args=clang`

### Changes

- Drop `--test-args=clang` from `aarch64-gnu-debug` so run-make tests that are `//@ needs-force-clang-based-tests` no longer only run if their test name contains `clang` (which is a very cool footgun).
- Reorganize run-make-suport library slightly to accommodate a raw gcc invocation.
- Fix `tests/run-make/mte-ffi/rmake.rs` to use `gcc` instead of *a* c compiler.

try-job: aarch64-gnu
try-job: aarch64-gnu-debug
2024-11-17 20:51:52 +00:00
Matthias Krüger
8f67b5b349
Rollup merge of #132657 - mustartt:aix-run-make-support, r=jieyouxu
AIX: add run-make support

On AIX, we are required explicit link against `c++` and `c++abi` to support running the run-make test suite.
2024-11-12 18:11:04 +01:00
Jieyou Xu
a6dac708f5 tests/run-make: update mte-ffi to use gcc as the c compiler explicitly 2024-11-12 08:57:57 +00:00
Jieyou Xu
98c771c187 run_make_support: add a gcc wrapper command 2024-11-12 16:20:17 +08:00
onur-ozkan
bc7531089e move src/tools/build_helper into src/build_helper
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-11-11 11:19:11 +03:00
Henry Jiang
405017ac35 refactor flags 2024-11-10 21:52:18 -05:00
Zalathar
8f7f9b93b2 Add a run-make test for rustc --help and similar 2024-11-08 12:46:39 +11:00
Henry Jiang
904e897d07 fix missing use decl 2024-11-05 14:21:08 -05:00
Henry Jiang
966f4b3b0c add run-make support for aix 2024-11-05 12:58:37 -05:00
clubby789
9bb6e0789c Dynamically link run-make support 2024-10-27 14:56:35 +00:00
许杰友 Jieyou Xu (Joe)
ef743af119 run-make-support: add llvm-dis and llvm-objcopy 2024-10-22 19:43:22 +08:00