-
Notifications
You must be signed in to change notification settings - Fork 12.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for test suites emulated in QEMU #39400
Conversation
(rust_highfive has picked a reviewer for you, use r? to override) |
This commit adds support to the build system to execute test suites that cannot run natively but can instead run inside of a QEMU emulator. A proof-of-concept builder was added for the `arm-unknown-linux-gnueabihf` target to show off how this might work. In general the architecture is to have a server running inside of the emulator which a local client connects to. The protocol between the server/client supports compiling tests on the host and running them on the target inside the emulator. Closes rust-lang#33114
e9bd893
to
1747ce2
Compare
I believe this is ready to land in the sense that tests should pass as-is, but I think we should discuss a bit before landing this. For example I think we should answer questions like:
Curious to hear others' thoughts! cc @rust-lang/tools |
It would be nice to have big-endian test results, even if they're not blocking / tier-1. |
Yeah definitely! If I could I'd add a QEMU-emulated builder for basically every platform we support. It's not just a question of desires thought, but also:
We're running quite close to capacity and it took quite awhile to get this image going, so we probably can't add just everything yet. This is what I meant above with (5) of whether we want to add this target, or perhaps another as CI. (e.g. which we'll get the most mileage out of if we're resource constrained) |
According to Travis we can have 35 concurrent jobs total. We currently have 26, this PR adds one more, and #38847 adds another, bringing the total to 28. (just FYI) |
Yeah, I get the resource constraints. It's nice that there's still a little headroom. I suggest some big-endian testing because this is a common case where code that otherwise appears platform independent may actually have portability issues. So adding any BE platform to the mix will improve coverage for all of them. In |
Yes, please, we had a number of actual issues around type hashes being accidentally different between big- and little-endian platforms, which broke cross-compilation. |
If the BE platform also disallowed unaligned access, we’d benefit doubly. |
@bors r+ Looks awesome. Long-term it would be better if all this logic was in cargo-cross or some other tool that others can benefit from. I would not say this automatically makes the platform tier 1. We can have coverage even without offering guarantees. I would like to rework our tier system slightly to decouple from our CI setup - just because we add tests shouldn't mean a platform is automatically in a different support tier. |
📌 Commit 1747ce2 has been approved by |
Add support for test suites emulated in QEMU This commit adds support to the build system to execute test suites that cannot run natively but can instead run inside of a QEMU emulator. A proof-of-concept builder was added for the `arm-unknown-linux-gnueabihf` target to show off how this might work. In general the architecture is to have a server running inside of the emulator which a local client connects to. The protocol between the server/client supports compiling tests on the host and running them on the target inside the emulator. Closes rust-lang#33114
Add support for test suites emulated in QEMU This commit adds support to the build system to execute test suites that cannot run natively but can instead run inside of a QEMU emulator. A proof-of-concept builder was added for the `arm-unknown-linux-gnueabihf` target to show off how this might work. In general the architecture is to have a server running inside of the emulator which a local client connects to. The protocol between the server/client supports compiling tests on the host and running them on the target inside the emulator. Closes rust-lang#33114
Add support for test suites emulated in QEMU This commit adds support to the build system to execute test suites that cannot run natively but can instead run inside of a QEMU emulator. A proof-of-concept builder was added for the `arm-unknown-linux-gnueabihf` target to show off how this might work. In general the architecture is to have a server running inside of the emulator which a local client connects to. The protocol between the server/client supports compiling tests on the host and running them on the target inside the emulator. Closes rust-lang#33114
This commit adds support to the build system to execute test suites that cannot
run natively but can instead run inside of a QEMU emulator. A proof-of-concept
builder was added for the
arm-unknown-linux-gnueabihf
target to show off howthis might work.
In general the architecture is to have a server running inside of the emulator
which a local client connects to. The protocol between the server/client
supports compiling tests on the host and running them on the target inside the
emulator.
Closes #33114