Skip to content

Add multi-architecture / multi-CUPS CI and fix build against CUPS 2.5 - #68

Merged
tillkamppeter merged 2 commits into
OpenPrinting:masterfrom
rkt0209:ci-multiarch-multicups
Aug 15, 2026
Merged

Add multi-architecture / multi-CUPS CI and fix build against CUPS 2.5#68
tillkamppeter merged 2 commits into
OpenPrinting:masterfrom
rkt0209:ci-multiarch-multicups

Conversation

@rkt0209

@rkt0209 rkt0209 commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

This adds CI to cups-browsed, which previously had none.

Multi-architecture / multi-CUPS build matrix (.github/workflows/build.yml + ci/ci-setup.sh): 4 architectures × 2 CUPS releases = 8 combinations.

  • Architectures: amd64, arm64 (native runners) and armhf, riscv64 (QEMU-emulated).
  • CUPS releases: 2.4.x (distro libcups2-dev) and 2.5.x (OpenPrinting/cups@master). CUPS 3.x is intentionally excluded, since cups-browsed does not make sense there.

cups-browsed sits on top of the whole stack, so ci/ci-setup.sh builds pdfio, libcupsfilters and libppd from source against the active CUPS before building cups-browsed. The 2.5 leg gets a small cups-config shim backed by pkg-config, since CUPS 2.5 dropped cups-config but cups-browsed's configure.ac still requires it. The source-2.5.x legs are non-blocking (they build against a moving @master), and ci/ci-setup.sh labels failures as UPSTREAM-DEP-FAILED vs CUPS-BROWSED-FAILED.

Fix build against CUPS 2.5. Adding the matrix immediately surfaced that cups-browsed did not compile against CUPS 2.5: it still used pre-2.2 enum aliases that libcups 2.5 removed. This is fixed by switching to the canonical names, which exist in both CUPS 2.4 and 2.5 (IPP_OP_*, IPP_PSTATE_*, IPP_JSTATE_*, HTTP_ENCRYPTION_*), plus a version-guarded shim for the two printer-type flags that have no name valid on both (CUPS_PRINTER_NOT_SHAREDCUPS_PTYPE_NOT_SHARED; CUPS_PRINTER_IMPLICIT0, since implicit classes were removed in 2.5).

All 8 combinations pass. The functional suite (test/run-tests.sh) is not wired into CI yet: it needs a live D-Bus + Avahi/mDNS environment for its DNS-SD queue-creation + print round-trip, which is not reliably available on GitHub runners. Wiring that up is a planned follow-up; this matrix already gives build/link regression coverage across every supported architecture and CUPS release.

@tillkamppeter
tillkamppeter merged commit a543e5f into OpenPrinting:master Aug 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants