Skip to content

sdk-var: meta_variscite_bsp_imx: Update to latest #16

sdk-var: meta_variscite_bsp_imx: Update to latest

sdk-var: meta_variscite_bsp_imx: Update to latest #16

Workflow file for this run

# SPDX-License-Identifier: Variscite-Proprietary-License
# Copyright 2025 Variscite Ltd.
#
# Continuous-integration workflow for Debian image builds.
# Runs only on public repositories using GitHub’s free hosted runners.
#
# The workflow has two high-level phases:
# - Prepare a Docker build environment (restore cached image or build it)
# - Use that container to compile U-Boot, Linux, rootfs and images
name: Build all machines - Public
on:
push:
branches:
- LSDK-24.12_DEBIAN-12_LF-6.6.36_var01
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build-flexbuild:
# Skip the entire job if the repository is private
if: github.event.repository.private == false
runs-on: ubuntu-24.04
strategy:
matrix:
machine:
- imx8mm-var-dart
- imx8mp-var-dart
- imx8mn-var-som
- imx95-var-dart
- imx93-var-som
- imx8qxp-var-som
- imx91-var-som
- imx8mq-var-dart
rootfs:
- server
- desktop
steps:
# GitHub-hosted runners expose additional space under /mnt.
# Replace the default workspace with a symlink to gain ~30 GB.
- name: Setup workspace on GitHub-hosted runner using /mnt with more storage
if: "!contains(runner.labels, 'self-hosted')"
run: |
echo "Redirecting workspace to /mnt/work"
sudo mkdir -p /mnt/work
sudo rm -rf "$GITHUB_WORKSPACE"
sudo ln -s /mnt/work "$GITHUB_WORKSPACE"
sudo chown -R $USER:$USER /mnt/work
- name: Refresh APT and install flexbuild deps
run: |
sudo apt-get update -yqq
sudo apt-get install -yqq --no-install-recommends \
binfmt-support qemu-system-common qemu-user-static
- name: Checkout code
uses: actions/checkout@v4
- name: Register QEMU for arm64
uses: docker/setup-qemu-action@v3
with:
platforms: arm64
# Quick sanity-check on available storage
- name: Report disk free space
run: |
echo "=== Filesystem usage ==="
df -h /
echo
echo "=== /mnt usage ==="
df -h /mnt || echo "/mnt not mounted"
- name: Print build information
run: |
echo "Building ${{ matrix.machine }}:${{ matrix.rootfs }}"
echo "flexbuild reference: ${{ inputs['flexbuild-ref'] }}"
############################################################
# Prepare Docker build environment
############################################################
# Build the container from scratch
- name: Build NXP Docker container
run: |
. setup.env || true
echo "FBDIR is '$FBDIR'"
bld docker || true
# Export container name for subsequent steps
- name: Save container name to variable
run: |
. setup.env || true
echo "CONTAINER_NAME=fbdebian" >> $GITHUB_ENV
# Show current Docker state before launching the container
- name: List images and containers pre-run
run: |
echo "=== Docker images ==="
docker images fbdebian || true
echo
echo "=== Containers before run ==="
docker ps -a
# Launch the privileged build container
- name: Run Docker container
run: |
. setup.env || true
echo "Starting container: $CONTAINER_NAME"
docker run -d --name "$CONTAINER_NAME" --privileged --net=host \
-v "$HOME:$HOME" -v "$FBDIR:$FBDIR" -v /lib/modules:/lib/modules -v /dev:/dev \
-v /etc/localtime:/etc/localtime:ro \
--add-host=fbdebian:127.0.0.1 \
-w "$FBDIR" fbdebian:12 tail -f /dev/null
# Confirm container launch
- name: List images and containers post-run
run: |
echo "=== Docker images ==="
docker images fbdebian || true
echo
echo "=== Containers after run ==="
docker ps -a
# Quick health-check
- name: Run test command inside container
run: |
docker exec "$CONTAINER_NAME" echo "Container up"
############################################################
# Build firmware and images inside the container
############################################################
- name: Install host dependencies
run: |
docker exec "$CONTAINER_NAME" /bin/bash -c '
. setup.env || true
time bld host-dep
'
- name: Build U-Boot
run: |
docker exec "$CONTAINER_NAME" /bin/bash -c '
. setup.env || true
bld -r debian:${{ matrix.rootfs }} -m ${{ matrix.machine }} -f sdk-var.yml uboot
'
- name: Build Linux
run: |
docker exec "$CONTAINER_NAME" /bin/bash -c '
. setup.env || true
bld -r debian:${{ matrix.rootfs }} -m ${{ matrix.machine }} -f sdk-var.yml linux
'
- name: Build root filesystem
run: |
docker exec "$CONTAINER_NAME" /bin/bash -c '
. setup.env || true
bld -r debian:${{ matrix.rootfs }} -m ${{ matrix.machine }} -f sdk-var.yml rfs
'
- name: Build applications
run: |
docker exec "$CONTAINER_NAME" /bin/bash -c '
. setup.env || true
bld -r debian:${{ matrix.rootfs }} -m ${{ matrix.machine }} -f sdk-var.yml apps
'
- name: Merge applications into rootfs
run: |
docker exec "$CONTAINER_NAME" /bin/bash -c '
. setup.env || true
bld -r debian:${{ matrix.rootfs }} -m ${{ matrix.machine }} -f sdk-var.yml merge-apps
'
- name: Merge boot partition and rootfs
run: |
docker exec "$CONTAINER_NAME" /bin/bash -c '
. setup.env || true
bld -r debian:${{ matrix.rootfs }} -m ${{ matrix.machine }} -f sdk-var.yml merge-bootpart-rfs
'
- name: Create recovery SD-card image
run: |
docker exec "$CONTAINER_NAME" /bin/bash -c '
. setup.env || true
bld -r debian:${{ matrix.rootfs }} -m ${{ matrix.machine }} -f sdk-var.yml create-recovery-sdcard-image
'