From 45276f217e5f5bd6cc1ab1fd76bbfbe7445029a8 Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 4 Jul 2026 02:32:33 +0200 Subject: [PATCH] ci: add feature-complete build job to guarantee all modules compile The linux matrix ran every distro with features in `auto` mode, so any module whose dependency was missing from the image was silently skipped and never compiled. Three modules (privacy/pipewire, gps, wwan) were built by no CI job at all, and several others only on one or two distros. Add a dedicated `build-full` job (Debian image) that installs the missing dependencies inline and force-enables every optional feature, turning a broken include or a missing dep into a hard build error instead of a silent skip. Drop `debian` from the auto matrix since `build-full` uses the same image and builds a strict superset. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/linux.yml | 66 ++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 12a995d7..69f670cd 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -14,10 +14,12 @@ jobs: distro: - alpine - archlinux - - debian - fedora - opensuse - gentoo + # NOTE: debian is intentionally omitted here — it is covered by the + # dedicated `build-full` job below, which uses the same Debian image + # but force-enables *every* optional module (a strict superset). cpp_std: [c++20] runs-on: ubuntu-latest @@ -32,3 +34,65 @@ jobs: run: ninja -C build - name: test run: make test + + # Feature-complete build: force-enable *every* optional module so a broken + # #include or regression in any module fails CI loudly, instead of being + # silently skipped by an `auto` feature when its dependency is absent. + # Runs on a Debian image with all optional dependencies installed inline + # (including pipewire/gps/wwan, which no CI image otherwise ships). + build-full: + runs-on: ubuntu-latest + container: + image: alexays/waybar:debian + + steps: + - uses: actions/checkout@v6 + - name: install extra dependencies + # Deps not present in the base image, required to build the modules + # that are otherwise never compiled by CI. + run: | + apt-get update + apt-get install --no-install-recommends --no-install-suggests -y \ + libpipewire-0.3-dev \ + libgps-dev \ + libmm-glib-dev \ + libevdev-dev \ + libsystemd-dev \ + libepoxy-dev \ + libfftw3-dev + - name: configure + # Every feature forced to `enabled`/`true`: any missing dependency or + # broken module is now a hard configure/build error, not a silent skip. + run: | + meson setup build \ + -Dcpp_std=c++20 \ + -Dexperimental=true \ + -Dman-pages=enabled \ + -Dlibcxx=false \ + -Dlibinput=enabled \ + -Dlibnl=enabled \ + -Dlibudev=enabled \ + -Dlibevdev=enabled \ + -Dpulseaudio=enabled \ + -Dupower_glib=enabled \ + -Dpipewire=enabled \ + -Dmpris=enabled \ + -Dsystemd=enabled \ + -Ddbusmenu-gtk=enabled \ + -Dmpd=enabled \ + -Drfkill=enabled \ + -Dsndio=enabled \ + -Dlogind=enabled \ + -Dtests=enabled \ + -Djack=enabled \ + -Dwireplumber=enabled \ + -Dcava=enabled \ + -Dgps=enabled \ + -Dwwan=enabled \ + -Dniri=true \ + -Dmango=true \ + -Dlogin-proxy=true + - name: build + run: ninja -C build + - name: test + run: make test