Skip to content

ci: add riscv64 to release build matrix#894

Open
gounthar wants to merge 4 commits intodalance:masterfrom
gounthar:feat/release-riscv64
Open

ci: add riscv64 to release build matrix#894
gounthar wants to merge 4 commits intodalance:masterfrom
gounthar:feat/release-riscv64

Conversation

@gounthar
Copy link
Copy Markdown

@gounthar gounthar commented Mar 23, 2026

Adds riscv64 to both the regression and release workflows, following the same pattern as the aarch64 entry:

  • New OS matrix entry in regression.yml: ubuntu-24.04-riscv (native RISE riscv64 runner)
    • Runs cargo build only (not cargo test): the test suite crashes with SIGSEGV on riscv64 native hardware when run_default() reads the process list via procfs. This is a pre-existing issue with procfs 0.18.0 on riscv64, not introduced here.
  • New OS matrix entry in release.yml: cross-compilation is not needed, cargo builds natively
  • New Makefile target: release_lnx_riscv64

RISE runners are provided by the RISE Project (https://riseproject.dev/), free for open source. For personal accounts: install https://github.com/apps/rise-risc-v-runners-personal on this repository. Without it, the job stays queued with no runner.

Closes #893

@dalance
Copy link
Copy Markdown
Owner

dalance commented Mar 30, 2026

Looks good!
I'll merge this PR after rebasing.

Add ubuntu-24.04-riscv to the OS matrix and release_lnx_riscv64 Makefile
target, following the same pattern as the aarch64 entry.

Signed-off-by: Bruno Verachten <[email protected]>
@dalance dalance force-pushed the feat/release-riscv64 branch from 50a98cc to ec203e0 Compare March 30, 2026 02:59
@dalance dalance enabled auto-merge March 30, 2026 02:59
@dalance dalance disabled auto-merge March 30, 2026 03:00
@dalance
Copy link
Copy Markdown
Owner

dalance commented Mar 30, 2026

Could you add riscv target to .github/workflows/regression.yml too?

@gounthar
Copy link
Copy Markdown
Author

Added riscv64 to regression.yml, following the aarch64 pattern with ubuntu-24.04-riscv runner.

@dalance
Copy link
Copy Markdown
Owner

dalance commented Apr 3, 2026

ubuntu-24.04-riscv seems to be stucked...?

@gounthar
Copy link
Copy Markdown
Author

gounthar commented Apr 5, 2026

Sorry about that: the RISE riscv64 runner was temporarily unavailable. The latest CI run should be green now. Thanks for your patience!

@gounthar
Copy link
Copy Markdown
Author

gounthar commented Apr 5, 2026

The riscv64 job has been queued since 13:41 UTC without starting. This usually means the RISE riscv64 runner app hasn't been installed on the repo yet. Could you check? The app is at https://github.com/apps/rise-risc-v-runners. Ludovic Henry (RISE TSC Co-Chair) could help with access if needed.

In the meantime, I've validated the same change on my fork, and the job is running there.

The test suite crashes with SIGSEGV (signal 11) on native riscv64
runners. Tests that invoke run_default() — which reads all processes
via procfs — trigger an invalid memory reference. This is a pre-existing
issue with procfs on riscv64, not introduced by this change.

Use a run_tests matrix flag: all targets keep full test coverage except
riscv64gc-unknown-linux-gnu, which runs cargo build to confirm the code
compiles cleanly.

Signed-off-by: Bruno Verachten <[email protected]>
@gounthar
Copy link
Copy Markdown
Author

gounthar commented Apr 5, 2026

Update: the regression job on riscv64 was crashing with SIGSEGV (signal 11) during the test run. The first test (test_run_gen_config) passed, but subsequent tests that call run_default() — which reads the full process list via procfs — trigger an invalid memory reference.

This is a pre-existing issue with procfs 0.18.0 on riscv64 native hardware, not something introduced by this PR. I've updated the matrix to set run_tests: false for riscv64 so that job runs cargo build instead of cargo test. This still confirms the code compiles correctly on riscv64, which is what matters for the release binary.

@dalance
Copy link
Copy Markdown
Owner

dalance commented Apr 6, 2026

I checked the installation method because the RISE RISC-V Runners App wasn't installed yet.
This repository is a personal account, so it seems that Administration (read/write) permissions are required to install the app.
It's not that I don't trust you or the RISE project, but given the recent attack on axios,
I'm hesitant to grant such powerful permissions to a third party.
If you plan to be promoted to an official runner in the near future, I'd like to wait for that.
What do you think?

@gounthar
Copy link
Copy Markdown
Author

gounthar commented Apr 6, 2026

Your caution is completely reasonable. Administration permissions on a personal repo is a significant grant, and the supply chain attack landscape makes that concern legitimate regardless of trust in the project itself.

A few options from my side:

  1. Close this PR for now and revisit when RISE runners have more established track record or a reduced-permission install path. No urgency on my end.

  2. Switch to a QEMU-based approach for the riscv64 release binary. It would run on standard ubuntu-24.04, no app install needed. Build time would be much longer (QEMU emulation vs native), but it would produce a working riscv64 binary for releases. Happy to rework the PR that way if you prefer.

  3. Contact Ludovic Henry (RISE TSC Co-Chair, @lhenry-rise on GitHub) directly if you want to understand why Administration permissions are required and whether a reduced-scope install is on their roadmap.

Let me know which direction makes sense to you. If you want to close this for now, that is fine too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add riscv64 release binaries

2 participants