Add multi-architecture / multi-CUPS CI and fix build against CUPS 2.5 - #68
Merged
tillkamppeter merged 2 commits intoAug 15, 2026
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.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.shbuilds pdfio, libcupsfilters and libppd from source against the active CUPS before building cups-browsed. The 2.5 leg gets a smallcups-configshim backed bypkg-config, since CUPS 2.5 droppedcups-configbut cups-browsed'sconfigure.acstill requires it. Thesource-2.5.xlegs are non-blocking (they build against a moving@master), andci/ci-setup.shlabels failures asUPSTREAM-DEP-FAILEDvsCUPS-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_SHARED→CUPS_PTYPE_NOT_SHARED;CUPS_PRINTER_IMPLICIT→0, 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.