Automates the build of multiple packages forming the /Brain
. The software built is for Ziloo
To clone the repository remember submodules and use git clone --recurse-submodules https://github.com/experientials/build-template
.
The aim is to produce software that can be run on embedded systems:
Allwinner V831 / Sipeed Maix II (Tina Linux)
Allwinner V833 / Sipeed Maix IIS (Tina Linux)
Rockchip RV1126 (Primary target)
Raspberry Pi 3+ (Raspbian or OpenWRT?)
The two main options intended to be used in the finished product are V833 and RV1126. The other platforms are intended to be experimental.
In order to test and develop software that is abstracted from the hardware Docker containers are run on Mac OS and Linux.
In the ultimate system:
A single git repository holds multiple directories under /Brain
with CMake.txt
or Cargo.toml
.
These directories are compiled as projects to produce binaries. The binaries are combined with static
files and bundled into packages.
The main
branch contains the latest successful change.
Changes are pushed to the stage
branch. On new pushes the CI kicks in building a new release.
If successfully built the changes are merged into the main
branch.
Tests verify the packages installed in the system responding to video and audio input as expected. A video is run and an expected event log compared with the one recorded during the run.
A public package repository hosts(webhost) all packages from successful builds in a structure usable by
OpenWRT or Alpine Linux installation.
The package repository is divided into streams alpha
, beta
and stable
. New releases start in the alpha stream, as they prove stability on real devices they are introduced in the beta and stable streams.
A dedicated uboot codebase is held in a sub-repository and built together with the packages.
In order to understand and develop consider the following.
Virtual Camera on Linux Webcamoid akvcam, Virtual camera driver for Linux Wiki.
GitHub Actions are used to trigger building, testing and release.
Docker Buildx Doc Github Action
Rust builds with Cargo Chef Multi stage docker Cross-compiling static Rust binaries in Docker for Raspberry Pi
Musl libc must be used to compile packages.
OpenWRT RPi Download Buildroot UVC Driver Opkg package manager
Buildroot Documentation
U-Boot Intro Documentation