On 28-08-2022 00:04, Liliana Marie Prikler wrote:
Am Samstag, dem 27.08.2022 um 22:01 +0200 schrieb Maxime Devos:
On 27-08-2022 21:54, Liliana Marie Prikler wrote:
* Due to how regularised the Rust build system is, it's feasible
to compile tests even when cross-compiling (*), so cross-compiled
could run the cross-compiled tests on the system they are
cross-compiling for after the cross-compilation to verify their
cross-compiled software.
How exactly does this work without emulating the system in
question?
It works by not performing any work except compilation -- Guix'
responsibility would only be to cross-compile and install the tests
(_not_ running them), you are supposed to install the cross-compiled
thing (including tests) on the target system and run the tests on the
target system.
This doesn't strike me as a rust-specific setup, though.  In principle,
you should be able to do the same with a C/C++ program, but most of the
time "make check" implies both building and running the tests.

The difference between Rust and many C/C++ setups here, is that with Rust it's trivial to only compile and install the tests without running them (currently, antioxidant-build-system compiles+installs and runs the tests in separate phases), whereas in case of C/C++, there usually isn't a convenient '"make install-the-tests-without-running-them" target, rather building and running the tests is combined in a single "make check" as you note.

As I've written previously:

Due to how regularised the Rust build system is, it's feasible
to compile tests even when cross-compiling (*)
but that does not appear to be the case for C/C++, as you've noted with your comments about "make check" both building and running the tests.

Greetings,
Maxime.