roc-streaming / roc-toolkit

Real-time audio streaming over the network.
https://roc-streaming.org
Mozilla Public License 2.0
1.06k stars 213 forks source link

Add mips and mipsel toolchains to CI #359

Closed gavv closed 11 months ago

gavv commented 4 years ago

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:

  1. 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.

  2. Add a new group of jobs linux-mips to .github/workflows/build.yml and a new directory scripts/ci/linux-mips.

  3. 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.

  4. Update documentation:

gavv commented 11 months ago

Issue description is a bit outdated, I've created a more up-to-date one.