Build and test against CUPS 2.4, 2.5 and 3.x across 4 architectures#76
Merged
tillkamppeter merged 6 commits intoJun 19, 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 brings libppd up to the multi-CUPS testing standard: it now builds and passes its test suite against CUPS 2.4 (distro libcups2), CUPS 2.5 (OpenPrinting/cups master) and 3.x (OpenPrinting/libcups master), on amd64, arm64, armhf and riscv64 — a 12-combination CI matrix.
Since libppd needs libcupsfilters too, the source-CUPS legs build libcupsfilters (and pdfio) from master against the active CUPS.
CI / build system
.github/workflows/build.yml: 4 arch × 3 CUPS matrix (amd64/arm64 native, armhf/riscv64 under QEMU); runsmake check+ the downstream DESTDIR autopkgtest for every combination.ci/ci-setup.sh: per-combination setup — provisions each CUPS, pdfio and libcupsfilters from source where needed, then configures and tests libppd.configure.ac: detect CUPS 2.5 viapkg-config cups(2.5 dropped cups-config), keeping the existing cups3 and cups-config paths.libppd.pc.in: export@CUPS_CFLAGS@so downstream consumers find CUPS headers when CUPS is installed from source.Source-portability fixes
*_CFLAGS, which Automake ignores for C++ sources, dropping the CUPS include path on source-installed CUPS — switched to*_CXXFLAGS.cups_bool_tenum, colliding with libppd's helper alias — renamed the alias toppd_bool_t.cupsParseOptions()is 4-arg on libcups3; added the translation inlibcups2-private.h(2.5 →cupsParseOptions2, 2.4 → 3-arg form).Test-data / environment fixes
ppdFilterUniversalnow defaults the text→PDF charset dir fromCUPS_DATADIR(libcupsfilters master no longer falls back to it), and the test harness seeds the charset files into the staged data dir.CUPS_DATADIR, fontpath) now check the matching env var before the compiled-in path, for sandboxed/relocated installs.LANG-switching localization cases are guarded for libcups2 only: libcups3'scupsLangDefault()caches the language, so mid-process locale switching no longer applies (test_ppd_localize still covers localization on libcups3).Notes for upstream review
CUPS_DATADIRfallback — affects any caller that doesn't set the data dir.cupsLangDefault()caches the language; run-time locale switching is no longer honored.