roc-toolkit
roc-toolkit copied to clipboard
Add mips and mipsel toolchains to CI
People are using are using Roc on OpenWrt/MIPS, but OpenWrt and MIPS are not covered with our CI. We should fill this gap.
Here is the documentation for our CI: https://roc-streaming.org/toolkit/docs/development/continuous_integration.html
Here are some similar tasks: #307, #353.
Steps:
-
Add docker images with toolchains. We can start with mips and mipsel. It'd be also nice to have mips64el. Our images for toolchains are located here: https://github.com/roc-streaming/dockerfiles/.
We can start with any available toolchain for mips. Since OpenWrt boxes are a known real use case, we can start with an OpenWrt toolchain, e.g.
mips-openwrt-linux-uclibc
. AFAIK, OpenWrt SDK provides prebuilt toolchains, so we can just package it into a docker container like we're doing it here.After merging a PR to dockerfiles repo, docker hub will build the toolchain images which we can use on CI and recommend to users in documentation.
-
Add a new group of jobs
linux-mips
to.github/workflows/build.yml
and a new directoryscripts/ci/linux-mips
. -
Add a script to the new directory for each mips toolchain we decided to support. The script should cross-compile Roc using the toolchain, and, ideally, run unit tests using qemu-user, just like we do it for ARM.
-
Update documentation:
- https://roc-streaming.org/toolkit/docs/portability/supported_platforms.html
- https://roc-streaming.org/toolkit/docs/portability/cross_compiling.html
- https://roc-streaming.org/toolkit/docs/development/continuous_integration.html