Skip to content

Prune zephyr manifest #113

Prune zephyr manifest

Prune zephyr manifest #113

Workflow file for this run

name: ci
on:
pull_request:
push:
branches:
- main
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Lint
run: |
make fmt
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
# Install only packages NOT pre-installed on ubuntu-latest
# Pre-installed: git, cmake, make, gcc, g++, wget, file, python3
# See: https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2204-Readme.md
- name: Install minimal Zephyr dependencies
run: |
sudo apt-get update -qq
sudo apt-get install -y --no-install-recommends \
ninja-build \
gperf \
ccache \
device-tree-compiler \
xz-utils \
libmagic1
env:
DEBIAN_FRONTEND: noninteractive
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
cache: 'pip'
cache-dependency-path: 'requirements.txt'
# Cache both workspace AND SDK together
- name: Cache Zephyr workspace and SDK
id: cache-zephyr
uses: actions/cache@v4
with:
path: |
lib/zephyr-workspace
~/zephyr-sdk-0.17.2
key: zephyr-minimal-${{ hashFiles('west.yml') }}-${{ runner.os }}-v2
restore-keys: |
zephyr-minimal-${{ hashFiles('west.yml') }}-${{ runner.os }}-
zephyr-minimal-
- name: Setup minimal Zephyr environment
if: steps.cache-zephyr.outputs.cache-hit != 'true'
run: |
make zephyr-setup
env:
PIP_DISABLE_PIP_VERSION_CHECK: 1
PIP_NO_COMPILE: 1
- name: Verify Zephyr setup (from cache or fresh)
run: |
# Activate venv and check west
source fprime-venv/bin/activate
west --version
echo "Workspace modules:"
west list | wc -l
echo "SDK toolchain:"
ls -la ~/zephyr-sdk-0.17.2/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc || echo "Not found"
- name: Display setup statistics
run: |
echo "=== Zephyr Setup Statistics ==="
echo "Cache hit: ${{ steps.cache-zephyr.outputs.cache-hit }}"
echo "Workspace size: $(du -sh lib/zephyr-workspace 2>/dev/null | cut -f1 || echo 'N/A')"
echo "SDK size: $(du -sh ~/zephyr-sdk-0.17.2 2>/dev/null | cut -f1 || echo 'N/A')"
echo "Modules count: $(find lib/zephyr-workspace/modules lib/zephyr-workspace/bootloader -name '.git' -type d 2>/dev/null | wc -l)"
- name: Build for PROVES Flight Control Board v5c
run: |
make build
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: firmware-v5c
path: |
build-artifacts/zephyr.uf2
build-artifacts/zephyr.elf
build-artifacts/zephyr.hex
build-artifacts/zephyr.bin
retention-days: 30
- name: Display build statistics
if: success()
run: |
echo "=== Build Statistics ==="
if [ -f build-artifacts/zephyr.uf2 ]; then
echo "Firmware size: $(ls -lh build-artifacts/zephyr.uf2 | awk '{print $5}')"
fi
echo ""
echo "Memory usage:"
cat build-fprime-automatic-zephyr/zephyr/zephyr.stat 2>/dev/null || echo "Stats not available"