Skip to content

kernel size: rework kernel-image-size into a sound two-ended interval #162

kernel size: rework kernel-image-size into a sound two-ended interval

kernel size: rework kernel-image-size into a sound two-ended interval #162

Workflow file for this run

name: build
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Install dependencies
# shellcheck lets `make check`'s lint guards run tests/check-shellcheck
# over all shipped shell scripts (extra/ + tests/); it soft-skips when absent.
run: sudo apt-get update && sudo apt-get install -y zlib1g-dev gcc-i686-linux-gnu shellcheck
- name: Build
run: make
- name: Run unit + integration tests
run: make check
# Build the 32-bit x86 binary too (auto-static when cross-compiling), so the
# end-to-end step also covers the x86_32 fixture. If the static link is
# unavailable the i686 fixture just skips below — never fatal.
- name: Build i686
run: make build CC=i686-linux-gnu-gcc || true
# End-to-end over the REAL binary on the x86 fixtures, run NATIVELY (no
# qemu): the only CI coverage of main() + the engine bridge + the renderers,
# which `make check` compiles out under -DKASLD_TESTING. Foreign-arch
# fixtures need qemu and are skipped here (the cross job build-checks them).
- name: End-to-end replay (x86, native)
run: KASLD_NATIVE=1 tests/replay tests/fixtures/x86_64/* tests/fixtures/x86_32/*
# Compile- and test-gate every released arch on push/PR (matrix + steps in
# _cross-build.yml, shared with release.yml so the arch set can't drift).
# run_test_cross runs the engine tests for each arch under qemu-user, so
# arch-gated rule bodies are verified — not just compiled — on every push.
# Pinned for deterministic PR builds + a stable cache; bump periodically.
# release.yml tracks the latest cross-tools release instead.
cross-compile:
uses: ./.github/workflows/_cross-build.yml
with:
toolchain_version: '20260515'
package: false
run_test_cross: true