Combine build-make/build-meson into build-linux and
build-freebsd-make/build-freebsd-meson into build-freebsd, each with
a build: [make, meson] matrix dimension.
Assisted-by: Claude:claude-opus-4-6
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Use brew install --quiet to suppress warnings about already-installed
packages on the GitHub Actions runner.
Assisted-by: Claude:claude-opus-4-6
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Cirrus CI shut down on 2026-06-01. Replace it with
cross-platform-actions/action which runs FreeBSD in a QEMU VM on
GitHub Actions runners. This preserves the same test matrix: FreeBSD
13.5 and 14.3 with both make and meson build systems.
Explicitly set shell to sh, since FreeBSD 13.x defaults to csh which
doesn't understand POSIX if/then/fi syntax.
Assisted-by: Claude:claude-opus-4-6
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Node.js 20 actions are deprecated and will be forced to Node.js 24 on
June 16, 2026. actions/checkout@v6 has native Node.js 24 support.
Assisted-by: Claude:claude-opus-4-6
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
The codebase already has macOS support (dylib flags in the Makefile,
macOS linker handling in meson.build), but CI only tests Linux,
Windows, and FreeBSD. This means macOS regressions go unnoticed
until a user reports them.
Add a build-macos job that tests both Make and Meson builds on
macos-latest. The runner ships with clang, flex, bison, python3,
and git; only libyaml, swig, meson, ninja, and pkg-config are
installed via Homebrew.
Apple Clang uses -Wsign-compare by default, which trips on some lex
generated code. Suppress the warning for the two flex-generated
objects.
We skip tests for now, because trees.S doesn't work with the MacOS
assembler.
Assisted-by: Claude:claude-opus-4-6
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
MSYS2 has dropped the mingw-w64-i686-swig package, causing the mingw32
CI job to fail during setup. Since the Windows build doesn't enable
Python bindings anyway, conditionally install swig and
python-setuptools-scm only for the 64-bit subsystems.
Assisted-by: Claude:claude-opus-4-6
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Remove some unnecessary package dependencies. Also include testing of the
'ci' branch (so as to test in-progress changes to the CI configuration
itself).
Generated-by: Claude Code 1.0.65 (claude-sonnet-4@20250514)
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
The Ubuntu runner fails with the following message
> E: The repository 'http://security.ubuntu.com/ubuntu mantic-security Release' does not have a Release file.
Ubuntu 23.10 is end-of-life as of July 2024 anyway. So switch to the
latest Ubuntu tag, which is currently 24.04.
See https://discourse.ubuntu.com/t/edubuntu-23-10-has-reached-end-of-life-eol/46325
Signed-off-by: Brandon Maier <brandon.maier@gmail.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
The Ubuntu runner was not building the yaml support as it's using Ubuntu
22 (jammy) which uses libyaml 0.2.2, but the build requires libyaml
0.2.3. Switch to Ubuntu 23 which has libyaml 0.2.5.
This was not detected by the runner as the Yaml feature defaults to
"auto" which turns off if it fails to find the dependency. In the runner
force yaml to enabled so if it fails to build it will trigger a build
failure.
We also force python support for the same reason.
Signed-off-by: Brandon Maier <brandon.maier@collins.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
The last commit, displaying the meson testlog if we fail tests had the
accidentaly side effect of not propagating the failure to show up properly
in github's dashboard. Fix that.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Currently the way we integrate the existing tests into meson means meson
test itself doesn't show any detailed logs of the failures, those just go
to the meson testlog file. As a hack to see what's failing in CI builds,
display that file if the tests fail.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
The SETUPTOOLS_SCM_PRETEND_VERSION was needed as ./setup.py would fail
without it. As setuptools_scm will fail if there is not git repo, and
the github workflow container does not include the source code git repo.
A previous commit added "fallback_version" to setuptools_scm which
instructs it to use the version from VERSION.txt when the git repo is
missing. So this hack is no longer needed.
Signed-off-by: Brandon Maier <brandon.maier@collins.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
set SETUPTOOLS_SCM_PRETEND_VERSION="0" variable because GitHub Actions
does not copy the .git directory into the container. Without that, the
build fails with the following error
LookupError: setuptools-scm was unable to detect version for /__w/dtc/dtc.
Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>