Commit graph

1389 commits

Author SHA1 Message Date
Zalathar
cc58cf6443 Fix blessing of rmake tests 2024-08-13 17:11:39 +10:00
Ben Kimock
03b6c2f2d4 Fix and enable disabled codegen-units tests 2024-08-10 14:03:27 -04:00
Matthias Krüger
b817900087
Rollup merge of #128384 - dheaton-arm:mte-test, r=jieyouxu
Add tests to ensure MTE tags are preserved across FFI boundaries

Added run-make tests to verify that, between a Rust-C FFI boundary in both directions, any MTE tags included in a pointer are preserved for the following pointer types, as well as any information stored using TBI:
- int
- float
- string
- function

try-job: aarch64-gnu
2024-08-07 19:35:05 +02:00
Oneirical
7d1a97fae9 rewrite pgo-indirect-call-promotion to rmake 2024-08-07 12:57:34 -04:00
Matthias Krüger
47a795bbd3
Rollup merge of #128161 - EtomicBomb:just-compiletest, r=notriddle
nested aux-build in tests/rustdoc/ tests

* Fixes bug that prevented using nested aux-build in `tests/rustdoc/` tests. Before, `fn document` and the auxiliary builder disagreed about where to find the nested aux-build source file (`auxiliary/auxiliary/aux.rs` vs `auxiliary/aux.rs`), preventing them from building. Picked the latter in line with other builders in compiletest.
* Adds `//@ doc-flags` header, which forwards flags to rustdoc and not rustc.
* Adds `//@ unique-doc-out-dir` header, which sets the --out-dir for the rustdoc invocation to a unique directory: `<root out dir>/docs/<test name>/doc`
* Changes working directory of the rustdoc invocation to the root out directory (common among all aux-builds). Prior art: exec_compiled_test in runtest.rs
* Adds tests that use nested aux builds and new headers

These changes provide useful capabilities for writing rustdoc tests on their own. They are also needed to test the implementation for the [mergable-rustdoc-cross-crate-info](https://github.com/rust-lang/rfcs/pull/3662) RFC.

try-job: x86_64-msvc
2024-08-03 11:17:42 +02:00
bors
70591dc15d Auto merge of #127060 - Oneirical:testificate, r=jieyouxu
Migrate `symbol-visibility` `run-make` test to rmake

Part of #121876 and the associated [Google Summer of Code project](https://blog.rust-lang.org/2024/05/01/gsoc-2024-selected-projects.html).

Pretty scary!

- The expected number of symbols on each check has been changed slightly to reflect the differences between `llvm_readobj` and `nm`, as I think the former will print hidden symbols once and visible symbols twice, while the latter will only print visible symbols.
- The original test ran the same exact checks on `cdylib` twice, for seemingly no reason. I have removed it.
- This may be possible to optimize some more? `llvm_readobj` could get called only once for each library type, and the regex could avoid being created repeatedly. I am not sure if these kinds of considerations are important for a `run-make` test.

Demands a Windows try-job.

try-job: x86_64-mingw
2024-08-01 05:42:09 +00:00
dheaton-arm
732037c75b Remove redundant information and simplify only condition 2024-07-31 09:27:48 +01:00
EtomicBomb
bd23e0eb26 canonicalize path in another place to fix #128411 2024-07-31 00:20:56 +00:00
Oneirical
689bb118ce rewrite symbol-visibility to rmake 2024-07-30 13:07:54 -04:00
bors
006c8df322 Auto merge of #124339 - oli-obk:supports_feature, r=wesleywiser
allow overwriting the output of `rustc --version`

Our wonderful bisection folk [have to work around](https://github.com/rust-lang/rust/issues/123276#issuecomment-2075001510) crates that do incomplete nightly/feature detection, as otherwise the bisection just points to where the feature detection breaks, and not to the actual breakage they are looking for.

This is also annoying behaviour to nightly users who did not opt-in to those nightly features. Most nightly users want to be in control of the nightly breakage they get, by

* choosing when to update rustc
* choosing when to update dependencies
* choosing which nightly features they are willing to take the breakage for

The reason this breakage occurs is that the build script of some crates run `rustc --version`, and if the version looks like nightly or dev, it will enable nightly features. These nightly features may break in random ways whenever we change something in nightly, so every release of such a crate will only work with a small range of nightly releases. This causes bisection to fail whenever it tries an unsupported nightly, even though that crate is not related to the bisection at all, but is just an unrelated dependency.

This PR (and the policy I want to establish with this FCP) is only for situations like the `version_check`'s `supports_feature` function. It is explicitly not for `autocfg` or similar feature-detection-by-building-rust-code, irrespective of my opinions on it and the similarity of nightly breakage that can occur with such schemes. These cause much less breakage, but should the breakage become an issue, they should get covered by this policy, too.

This PR allows changing the version and release strings reported by `rustc --version` via the `RUSTC_OVERRIDE_VERSION_STRING` env var. The bisection issue is then fixed by https://github.com/rust-lang/cargo-bisect-rustc/pull/335.

I mainly want to establish a compiler team policy:

> We do not consider feature detection on nightly (on stable via compiler version numbering is fine) a valid use case that we need to support, and if it causes problems, we are at liberty to do what we deem best - either actively working to prevent it or to actively ignore it. We may try to work with responsive and cooperative authors, but are not obligated to.

Should they subvert the workarounds that nightly users or cargo-bisect-rustc can use, we should be able to land rustc PRs that target the specific crates that cause issues for us and outright replace their build script's logic to disable nightly detection.

I am not including links to crates, PRs or issues here, as I don't actually care about the specific use cases and don't want to make it trivial to go there and leave comments. This discussion is going to be interesting enough on its own, without branching out.
2024-07-30 15:25:31 +00:00
Oli Scherer
cbab16feaf Test RUSTC_OVERRIDE_VERSION_STRING 2024-07-30 14:08:02 +00:00
Michael Howell
583bf1e5bf Fix tidy call in runtest with custom HTML element 2024-07-29 08:46:01 -07:00
EtomicBomb
f91da72cb7 merge conflicts; fix rebase duplicating imports 2024-07-29 14:41:09 +00:00
EtomicBomb
12d87ee237 file_stem and comment per notriddle 2024-07-29 14:34:35 +00:00
EtomicBomb
d8211def61 ordering and wrapping cross-crate-info tests 2024-07-29 14:34:34 +00:00
EtomicBomb
794434ec63 initial implementation of rustdoc nested aux-build 2024-07-29 14:33:56 +00:00
Nicholas Nethercote
84ac80f192 Reformat use declarations.
The previous commit updated `rustfmt.toml` appropriately. This commit is
the outcome of running `x fmt --all` with the new formatting options.
2024-07-29 08:26:52 +10:00
Oneirical
e175b83fd5 rewrite incr-foreign-head-span to rmake 2024-07-25 11:08:07 -04:00
Matthias Krüger
20e86c9f2d
Rollup merge of #128100 - GuillaumeGomez:run-make-path, r=Kobzol,jieyouxu
Allow to pass a full path for `run-make` tests

It's common (at least for me) to pass a full path to a `run-make` test (including the `rmake.rs` file) and to see that it isn't found, which is a bit frustrating.

With these changes, we can now optionally pass the `rmake.rs` (or even `Makefile`) at the end of the path.

cc ```@jieyouxu```
r? ```@Kobzol```
2024-07-24 05:05:35 +02:00
Guillaume Gomez
0728c155a3 Allow to pass a full path for run-make tests 2024-07-23 20:14:33 +02:00
Matthias Krüger
9d4daf8869
Rollup merge of #125886 - GuillaumeGomez:migrate-run-make-issue-15460, r=jieyouxu
Migrate run make issue 15460

Part of https://github.com/rust-lang/rust/issues/121876.

r? `@jieyouxu`

try-job: x86_64-msvc
try-job: aarch64-apple
try-job: x86_64-gnu-llvm-18
2024-07-23 19:42:34 +02:00
Matthias Krüger
3ab435b705
Rollup merge of #127962 - jieyouxu:cleanup-dll-compiletest, r=fmease
Cleanup compiletest dylib name calculation

Use `std::env::consts::{DLL_PREFIX, DLL_EXTENSION}` for dylib name calculation which is more accurate for the various different platforms, and is more likely to be looked at by target maintainers.

cc ``@bzEq`` (as this impacts how compiletest handles AIX dll extensions)
2024-07-23 13:06:55 +02:00
Guillaume Gomez
7e0c203f2d Add new MSVC_LIB_PATH runtest environment variable to know location of the msvc_lib binary 2024-07-22 23:22:53 +02:00
Matthias Krüger
ae28d5c9e7
Rollup merge of #127958 - jieyouxu:compiletest-rmake-cleanup, r=Kobzol
Cleanup rmake.rs setup in compiletest

While debugging rmake.rs tests I realized that the rmake.rs setup itself in compiletest is very messy and confused. Now that I know some of the bootstrap steps and the rmake.rs tests themselves better, I realized there are cleanups that are possible:

- Rework how `source_root` and `build_root` are calculated. They should now be less fragile then before.
- Shuffle around path calculations to make them more logically grouped and closer to eventual use site(s).
- Cleanup executable extension calculation with `std::env::consts::EXE_EXTENSION`.
- Cleanup various dylib search path handling: renamed variables to better reflect their purpose, minimized mutability scope of said variables.
- Prune useless env vars passed to both `rustc` and recipe binary commands.
- Vastly improve the documentation for the setup of rmake.rs tests, including assumed bootstrap-provided build layouts, rmake.rs test layout, dylib search paths, intended purpose of passed env vars and the `COMPILETEST_FORCE_STAGE0=1 ./x test run-make --stage 0` stage0 sysroot special handling.

This PR is best reviewed commit-by-commit.

Fixes https://github.com/rust-lang/rust/issues/127920.

r? bootstrap (or Kobzol, or Mark, or T-compiler)

try-job: aarch64-apple
try-job: armhf-gnu
try-job: dist-x86_64-linux
try-job: test-various
try-job: x86_64-mingw
try-job: x86_64-msvc
try-job: x86_64-gnu-llvm-18
2024-07-20 19:28:59 +02:00
许杰友 Jieyou Xu (Joe)
a8463bea91 compiletest/rmake: simplify path calculations 2024-07-20 09:21:57 +00:00
许杰友 Jieyou Xu (Joe)
2c867d0b5f compiletest/rmake: avoid double test directory for rmake.rs tests
This is important for other tests that have various things like modes,
revisions and the like. These features are not supported in run-make
tests, so we don't need the double layering.
2024-07-20 09:20:47 +00:00
许杰友 Jieyou Xu (Joe)
c863525374 compiletest/rmake: improve comments 2024-07-20 09:20:47 +00:00
许杰友 Jieyou Xu (Joe)
3e77f7c9a5 compiletest/rmake: prune unused RUST_BUILD_STAGE and explain env vars passed to recipes 2024-07-20 09:20:32 +00:00
León Orell Valerian Liehr
25be41cfb8
Update jsondocck directives to follow ui_test-style 2024-07-19 16:54:16 +02:00
许杰友 Jieyou Xu (Joe)
993d83af71 compiletest/rmake: cleanup stage_std_path and recipe_dylib_search_paths handling 2024-07-19 14:04:58 +00:00
许杰友 Jieyou Xu (Joe)
aa22102f2f compiletest/rmake: better explain why stage0 sysroot is needed if forced stage0 2024-07-19 14:04:58 +00:00
许杰友 Jieyou Xu (Joe)
2383e9dd4f compiletest/rmake: prune useless env vars and explain passed rustc options and env vars 2024-07-19 14:04:58 +00:00
许杰友 Jieyou Xu (Joe)
f5488f0c4b compiletest/rmake: rename cmd to rustc 2024-07-19 14:04:58 +00:00
许杰友 Jieyou Xu (Joe)
cf5edfe3f9 compiletest/rmake: cleanup rmake exe extension calculation 2024-07-19 14:04:58 +00:00
许杰友 Jieyou Xu (Joe)
9f2a660f86 compiletest/rmake: cleanup library search paths 2024-07-19 14:04:58 +00:00
许杰友 Jieyou Xu (Joe)
49ca9ff0ac compiletest/rmake: cleanup dylib search paths related calculations 2024-07-19 14:04:58 +00:00
许杰友 Jieyou Xu (Joe)
01ed951f8b compiletest/rmake: improve clarity of support_lib_{path,deps,deps_deps} calculations 2024-07-19 14:04:58 +00:00
许杰友 Jieyou Xu (Joe)
2eb8810d32 compiletest/rmake: move stage_std_path and recipe_bin closer to use site 2024-07-19 14:04:58 +00:00
许杰友 Jieyou Xu (Joe)
6ca31099e3 compiletest/rmake: improve stage explanation 2024-07-19 14:04:58 +00:00
许杰友 Jieyou Xu (Joe)
23f32f44dd compiletest/rmake: make {source,build}_root path calculation more robust for rmake.rs setup 2024-07-19 14:04:58 +00:00
许杰友 Jieyou Xu (Joe)
1b4972bc28 compiletest/rmake: adjust docs for rmake.rs setup and add FIXMEs 2024-07-19 13:53:56 +00:00
许杰友 Jieyou Xu (Joe)
3855c54413 compiletest: cleanup dylib name calculation 2024-07-19 13:45:20 +00:00
Kai Luo
ec805d17eb Revert format change 2024-07-19 13:02:51 +08:00
Kai Luo
c72df9ddf9 AIX uses .a as dylib's suffix 2024-07-19 12:40:09 +08:00
Zalathar
08a2992d6b compiletest: Better error message for bad normalize-* headers 2024-07-11 21:51:20 +10:00
Zalathar
b6773591ee Require a colon in //@ normalize-*: headers 2024-07-11 12:23:45 +10:00
Oneirical
4c9eeda36d rewrite used-cdylib-macos to rmake 2024-06-28 16:28:57 -04:00
Michael Goulet
46e43984d1
Rollup merge of #126413 - matthiaskrgr:crshmsg, r=oli-obk
compiletest: make the crash test error message abit more informative

r?  ```@oli-obk```
2024-06-24 15:51:02 -04:00
Matthias Krüger
8ffb5f936a compiletest: make the crash test error message abit more informative 2024-06-24 15:18:50 +02:00
Guillaume Gomez
51fedf65ff Remove commands duplication between compiletest and tests/rustdoc 2024-06-24 11:10:17 +02:00