compiler-explorer / compiler-explorer/dotnet-builder
Daily build broken since 2026-08-14: riscv64 community altjit fails -Werror,-Wformat
- Dominant language
- C#
- Stars
- 14
- Forks
- 4
- PR merge metrics
- No merged PRs in 30d
Description
The `dotnet` daily build has failed every day since **2026-08-14**.
```
FAILED: jit/CMakeFiles/clrjit_unix_riscv64_x64.dir/emitriscv64.cpp.o
/root/dotnet/runtime/src/coreclr/jit/emitriscv64.cpp:4775:41: error: format specifies type 'int'
but the argument has type 'emitter::MajorOpcode' [-Werror,-Wformat]
4775 | printf("MajorOpcode: %d\n", GetMajorOpcode(code));
| ~~ ^~~~~~~~~~~~~~~~~~~~
| static_cast( )
1 error generated.
```
`GetMajorOpcode` returns a scoped enum, which `%d` rejects under `-Werror -Wformat` with clang-18. I checked `dotnet/runtime` main today and the line is still unchanged, so this is not something that has quietly fixed itself upstream.
### Why it only breaks us
`build/build.sh:12` sets `ALL_JITS_SUBSET="Clr.AllJitsCommunity"`, which turns on `CLR_CMAKE_BUILD_COMMUNITY_ALTJITS=1` and builds the riscv64 altjit. Upstream CI builds `Clr.AllJits`, so the community altjits are not gated on and can rot without anyone noticing. We have effectively opted into code upstream does not build.
### Effect
Silent, as usual for nightlies: no artifact means the old install stays. Newest tarball is `dotnet-trunk-20260814.tar.xz`, so the site's dotnet trunk has been frozen there for 10 days.
### Options
1. Wait for upstream, and accept the build staying red meanwhile.
2. Report it upstream so the community altjits build clean again.
3. Reconsider whether we need `Clr.AllJitsCommunity` rather than `Clr.AllJits`, if the community altjits are not actually surfaced in CE.
@hez2010 you know this build best. Is the riscv64 altjit something CE actually exposes, or would dropping back to `Clr.AllJits` be a reasonable way to stop upstream churn breaking us?
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with build/build.sh:12 to understand the Clr.AllJitsCommunity selection, then inspect emitriscv64.cpp around line 4775 and the reported riscv64 altjit build. Check whether CE exposes this community altjit or whether the upstream build failure should be reported. Done means the daily build succeeds without hiding the intended runtime targets.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cmake, cpp, shell
- Domain
- build-system, ci-cd
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100