Enable test builds with --bootstrap#127909
Conversation
|
For community platforms, this is the cross-build workflow for runtime development/testing: os=linux
arch=riscv64
# ROOTFS_DIR is set
# cross-build product, --bootstrap
./build.sh clr+libs --cross --arch $arch --os $os --bootstrap
# for rebuild (e.g. after editing code), --use-bootstrap
./build.sh clr+libs --cross --arch $arch --os $os --use-bootstrap
# runtime tests cross-build, --use-bootstrap
src/tests/build.sh -cross -$arch -$os -p:LibrariesConfiguration=Debug --use-bootstrap
# libraries tests cross-build, --use-bootstrap
./build.sh libs.tests --cross --arch $arch --os $os --use-bootstrapcc: |
|
Update PR title to match the content? |
Ah, it somehow used cached title from my previous PR. |
f6b1128 to
f6b70d2
Compare
|
So if I am reading this correctly, after this PR, I can:
This is pretty awesome. I gave up trying to do nightly runtime builds / tests more than a year ago because it was such a hassle natively. |
Yes, it exists, e.g. in the build container: $ docker run --rm -v$(pwd):/runtime -w /runtime -e ROOTFS_DIR=/crossrootfs/<xxx> -it <container-urn>
$ os=<yyy>; arch=<xxx>;
$ ./build.sh clr+libs --cross --arch $arch --os $os --bootstrap
$ ./build.sh libs.tests --cross --arch $arch --os $os --use-bootstrap -p:ArchiveTests=truefrom host: # pack and upload testhost to the machine
$ tar -czf testhost_net11.0-<yyy>-Debug-<xxx>.tar.gz artifacts/bin/testhost/net11.0-<yyy>-Debug-<xxx>
$ scp testhost_net11.0-<yyy>-Debug-<xxx>.tar.gz $TargetMachine:/tmp
# copy tests to the machine
$ scp artifacts/helix/tests/linux.AnyCPU.Debug/System.Text.RegularExpressions.Unit.Tests.zip $TargetMachine:/tmp
# usage
$ ssh $TargetMachine
$ mkdir testhost
$ tar -xzf /tmp/testhost_net11.0-<yyy>-Debug-<xxx>.tar.gz -C testhost
$ mkdir regex-tests
$ cd $_
$ unzip System.Text.RegularExpressions.Unit.Tests.zip
$ ./RunTests.sh --runtime-path ~/testhost/artifacts/bin/testhost/net11.0-<yyy>-Debug-<xxx>For runtime tests, after the build, just pack and upload The only thing which doesn't work in general (unrelated to bootstrap) is building / packing individual library tests. e.g. the zip file generated by |
First time we ran the tests (with #127909) and found issues with interpreter tests. 1. clang-21 defaults to rvv baseline, previously clang-18 was defaulting to rv64gc; so we need to pin to our baseline for runtime binaries. This program helped figuring out SIGILL: ```sh $ cat riscv_default_probe.c #if defined(__riscv_v) #error At RVV (__riscv_v) #elif defined(__riscv_b) #error At Bitmanip (__riscv_b) #elif defined(__riscv_zfa) #error At Zfa #elif defined(__riscv_zfh) #error At Zfh #elif defined(__riscv_d) #error At D #elif defined(__riscv_f) #error At F #elif defined(__riscv_c) #error At C #elif defined(__riscv_m) #error At M #elif defined(__riscv_a) #error At A #elif defined(__riscv_i) #error At I #else #error At unknown baseline #endif $ clang-21 --target=riscv64-unknown-linux-gnu -c riscv_default_probe.c riscv_default_probe.c:2:2: error: At RVV (__riscv_v) 2 | #error At RVV (__riscv_v) | ^ # vs. $ clang-18 --target=riscv64-unknown-linux-gnu -c riscv_default_probe.c riscv_default_probe.c:10:2: error: At D 10 | #error At D | ^ ``` 2. Remove negative sign from prolog offset; it was growing in opposite direction. 3. Remove an invalid assert in the RISC-V/LoongArch return classification path. After fixing offset issue, tests progressed to `TestCallingConvention2Rev` and then tripped a debug-only check that is AMD64-specific and not applicable on these targets. Return classification here is already handled by FP-struct info plus size-based integer mapping, so removing the assert preserves intended behavior and unblocks the interpreter calling-convention tests. Fixes #127860
|
Tagging subscribers to this area: @dotnet/runtime-infrastructure |
|
@akoeplinger, @janvorli, it looks like Jeremy is not available, could you please sign off and merge this PR? I am carrying this patch across multiple branches. It fixes testing on community platforms which regressed since the |
janvorli
left a comment
There was a problem hiding this comment.
LGTM, I just have few minor questions. Thank you!
src/tests/build.sh --use-bootstrap --cross --riscv64 ...)Fixes #115622