mirror of
https://github.com/outbackdingo/UltraGrid.git
synced 2026-03-21 10:40:21 +00:00
Some features that are used by x86_64 Linux build are disabled, for the rest dependencies are installed. disabled: - CUDA features (except of NV Jetson usually there is no CUDA) - lavc vdpau (similar to CUDA, it is primarliy NV-focused API) - Qt GUI - Cineform (doesn't compile on ARM) dependencies installed: - libsdl2-ttf-dev - libsdl2-mixer-dev - libva-dev
97 lines
3.9 KiB
YAML
97 lines
3.9 KiB
YAML
name: ARM builds
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- arm-build
|
|
schedule:
|
|
- cron: '0 4 * * 2' # Tuesday at 4:00 UTC
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
Build:
|
|
if: github.repository == 'CESNET/UltraGrid' || github.event.schedule == null
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
arch: [armhf, arm64]
|
|
include:
|
|
- arch: armhf
|
|
repo: http://mirrordirector.raspbian.org/raspbian/
|
|
keyring: /etc/apt/trusted.gpg
|
|
qemu_bin_arch: arm
|
|
deb_release: bullseye
|
|
- arch: arm64
|
|
repo: https://deb.debian.org/debian
|
|
keyring: /usr/share/keyrings/debian-archive-keyring.gpg
|
|
qemu_bin_arch: aarch64
|
|
deb_release: bullseye
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Init environment variables
|
|
run: . .github/scripts/environment.sh
|
|
- name: Prepare
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install binfmt-support curl qemu qemu-user-static
|
|
|
|
- name: Fetch SDKs ETags
|
|
id: etags
|
|
run: |
|
|
echo "ndi=$($GITHUB_WORKSPACE/.github/scripts/get-etags.sh https://downloads.ndi.tv/SDK/NDI_SDK_Linux/Install_NDI_SDK_v5_Linux.tar.gz)" >> $GITHUB_OUTPUT
|
|
- name: Cache NDI
|
|
id: cache-ndi
|
|
uses: actions/cache@main
|
|
with:
|
|
path: /var/tmp/Install_NDI_SDK_Linux.tar.gz
|
|
key: cache-ndi-${{ runner.os }}-${{ steps.etags.outputs.ndi }}
|
|
- name: Download NDI
|
|
if: steps.cache-ndi.outputs.cache-hit != 'true'
|
|
run: curl -L https://downloads.ndi.tv/SDK/NDI_SDK_Linux/Install_NDI_SDK_v5_Linux.tar.gz -o /var/tmp/Install_NDI_SDK_Linux.tar.gz
|
|
|
|
- name: Cache Environment
|
|
id: cache-bootstrap
|
|
uses: actions/cache@main
|
|
with:
|
|
path: '~/chroot.tar'
|
|
key: cache-bootstrap-${{ matrix.arch }}-${{ hashFiles('.github/scripts/Linux/arm/bootstrap.sh', '.github/scripts/Linux/install_others.sh') }}
|
|
- name: Debootstrap
|
|
if: steps.cache-bootstrap.outputs.cache-hit != 'true'
|
|
run: |
|
|
sudo apt install debootstrap debian-archive-keyring
|
|
sudo rm -rf ~/chroot
|
|
sudo mkdir -p ~/chroot/var/tmp
|
|
sudo mv /var/tmp/*NDI* ~/chroot/var/tmp
|
|
wget http://archive.raspbian.org/raspbian.public.key -O - | sudo apt-key add -q
|
|
sudo debootstrap --keyring=${{ matrix.keyring }} --arch ${{ matrix.arch }} ${{ matrix.deb_release }} ~/chroot ${{ matrix.repo }}
|
|
sudo cp -r $GITHUB_WORKSPACE/.github ~/chroot/
|
|
sudo cp /usr/bin/qemu-${{ matrix.qemu_bin_arch }}-static ~/chroot/usr/bin/
|
|
sudo chroot ~/chroot /.github/scripts/Linux/arm/bootstrap.sh ${{ matrix.arch }}
|
|
cd ~ && sudo tar cf chroot.tar chroot # Create archive for caching. Needs to be created as root, therefore created manually.
|
|
- name: Extract Cached Environment
|
|
if: steps.cache-bootstrap.outputs.cache-hit == 'true'
|
|
run: |
|
|
cd ~
|
|
sudo tar xf chroot.tar
|
|
- name: Build
|
|
run: |
|
|
sudo cp -ar $GITHUB_WORKSPACE ~/chroot/UltraGrid
|
|
env | grep -v '^\(HOME\)\|\(USER\)' | sed -e "s/=/='/" -e "s/$/'/" | sudo tee ~/chroot/envvars
|
|
echo "FEATURES=\"$FEATURES\"" | sudo tee -a ~/chroot/envvars
|
|
sudo chroot ~/chroot /bin/sh -ec "set -a; . /envvars; set +a; cd UltraGrid; .github/scripts/Linux/arm/build.sh"
|
|
- name: Upload Release Asset
|
|
id: upload-release-asset
|
|
if: github.repository == 'CESNET/UltraGrid'
|
|
run: |
|
|
sudo apt install jq
|
|
sudo .github/scripts/replace-asset.sh GITHUB_REPOSITORY=$GITHUB_REPOSITORY GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} continuous ~/chroot/UltraGrid/UltraGrid-latest-${{ matrix.arch }}.AppImage application/x-appimage Linux%20${{ matrix.arch }}%20build
|
|
- name: Upload Build
|
|
if: steps.upload-release-asset.conclusion == 'skipped'
|
|
uses: actions/upload-artifact@main
|
|
with:
|
|
name: UltraGrid CI ${{ matrix.arch }} build
|
|
path: '~/chroot/UltraGrid/UltraGrid-latest-${{ matrix.arch }}.AppImage'
|
|
|
|
# vi: set expandtab sw=2:
|