ci: Add builds and release on riscv64#1718
Conversation
|
To run the riscv64 jobs running on |
|
And the workflow that passed on my fork where the app is installed: https://github.com/luhenry/ccache/actions/runs/23955765959 |
|
@jrosdahl 👋 thanks for all the amazing work on ccache! For me to make your life easier, would it help if I broke out this PR into 2 pieces:
Happy to submit different PR or rework the change however to make your life easier. Thank you 🙏 |
afe91eb to
7120d88
Compare
|
Thanks for the PR! I would prefer not having to add a CI dependency to external runners. The cross-compilation for glibc part is uncontroversial, so yes, please split out the native build parts for now. |
I fully understand, and will split it. Would you be open to have a musl-static build on QEMU? It wouldn’t require external runners, but it would be quite slow. |
|
Using QEMU to build musl-statis would look like this: luhenry/ccache@master...luhenry:ccache:musl-static. And a CI run: https://github.com/luhenry/ccache/actions/runs/24285089891/job/70913019233#logs |
Such a slow job would be unfortunate. I guess it might be acceptable to not have it enabled by default but just run it on tags and release branches if the risk that it doesn't work is low enough. Just a sanity check: so you do need a riscv64 static binary (the glibc "mostly static" isn't enough)? |
(cherry picked from commit 564105b)
Would it be possible to create and use a custom container image with a musl cross toolchain (hosting it on GHCR)? Or is there already such a container that could be used? |
It takes 20min on QEMU on GitHub-hosted runners. I’ll see to enable it on tags and releaS branches only.
It’s all about convergence and “working the same”. For example, |
|
OK, let's go with the QEMU job for now. |
This adds building, testing, and releasing of ccache on Linux/riscv64. The runners are made available through the RISE RISC-V Runners GitHub app, and with using
runs-on: ubuntu-24.04-riscv.This will unblock projects using ccache on GitHub Actions to target riscv64, since the actions/setup-ccache only advertises architectures that ccache releases for. For example, I ran into that issue with Llama.cpp when trying to use the same mechanism across all platforms.
Please find more information about RISE at https://riseproject.dev/ and check out the RISE RISC-V Runners documentation.