Skip to content

Enable test builds with --bootstrap#127909

Merged
akoeplinger merged 13 commits into
dotnet:mainfrom
am11:feature/tests-build-with-bootstrap
May 29, 2026
Merged

Enable test builds with --bootstrap#127909
akoeplinger merged 13 commits into
dotnet:mainfrom
am11:feature/tests-build-with-bootstrap

Conversation

@am11

@am11 am11 commented May 7, 2026

Copy link
Copy Markdown
Member

Fixes #115622

@github-actions github-actions Bot added the area-Infrastructure-coreclr Only use for closed issues label May 7, 2026
@dotnet-policy-service dotnet-policy-service Bot added the community-contribution Indicates that the PR has been added by a community member label May 7, 2026
@am11

am11 commented May 7, 2026

Copy link
Copy Markdown
Member Author

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-bootstrap

cc:
riscv64: @clamp03, @dotnet/samsung
loongarch64: @LuckyXu-HF, @shushanhf
illumos: @gwr
FreeBSD: @Thefrank, @sec
Haiku: @trungnt2910
OpenBSD: @sethjackson

@am11 am11 requested a review from jkoritzinsky May 7, 2026 12:38
@jkotas

jkotas commented May 7, 2026

Copy link
Copy Markdown
Member

Update PR title to match the content?

@am11 am11 changed the title Inline remaining usages of OpenProcess on Unix Enable test builds with --bootstrap May 7, 2026
@am11

am11 commented May 7, 2026

Copy link
Copy Markdown
Member Author

Update PR title to match the content?

Ah, it somehow used cached title from my previous PR.

@am11 am11 force-pushed the feature/tests-build-with-bootstrap branch from f6b1128 to f6b70d2 Compare May 7, 2026 23:06
@Thefrank

Thefrank commented May 8, 2026

Copy link
Copy Markdown
Contributor

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.

@am11

am11 commented May 8, 2026

Copy link
Copy Markdown
Member Author

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=true

from 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 artifacts/tests/coreclr/<yyy>.<xxx>.Debug to remove machine and after extraction, and then e.g. to run interpreter tests: CORE_ROOT=$(pwd)/artifacts/tests/coreclr/<yyy>.<xxx>.Debug/Tests/Core_Root DOTNET_TieredCompilation=0 artifacts/tests/coreclr/<yyy>.<xxx>.Debug/JIT/Interpreter/InterpreterTester/InterpreterTester.sh


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 ./dotnet.sh build -p:UseBootstrap=true -p:ArchiveTests=true -p:TargetOS=$os -p:TargetArchitecture=$arch -p:CrossBuild=true src/libraries/System.Formats.Nrbf/tests misses xunit.console.runtimeconfig.json etc. so it's unusble. Perhaps we need to pass more properties? I just built the. whole libs.tests subset which is exercised in the CI.

janvorli pushed a commit that referenced this pull request May 12, 2026
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
@jkotas jkotas added area-Infrastructure and removed area-Infrastructure-coreclr Only use for closed issues labels May 24, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @dotnet/runtime-infrastructure
See info in area-owners.md if you want to be subscribed.

@am11

am11 commented May 29, 2026

Copy link
Copy Markdown
Member Author

@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 --bootstrap work. Thanks!

@janvorli janvorli left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, I just have few minor questions. Thank you!

Comment thread src/libraries/tests.proj
Comment thread src/tests/build.proj
@akoeplinger akoeplinger merged commit 185fbc3 into dotnet:main May 29, 2026
190 checks passed
@am11 am11 deleted the feature/tests-build-with-bootstrap branch May 29, 2026 18:31
@dotnet-milestone-bot dotnet-milestone-bot Bot added this to the 11.0-preview6 milestone May 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-Infrastructure community-contribution Indicates that the PR has been added by a community member

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

bootstrap: libs.tests subsets fails

5 participants