# Multi-Architecture / multi-CUPS Build and Test Workflow for cups-filters
#
-# Matrix: 4 architectures x 3 CUPS releases = 12 combinations.
+# Matrix: 4 architectures x 2 CUPS releases = 8 combinations.
# architectures: x86_64, arm64 (native runners); armv7, riscv64 (QEMU)
-# CUPS releases: 2.4.x (distro libcups2-dev), 2.5.x (OpenPrinting/cups
-# master), 3.x (OpenPrinting/libcups master)
+# CUPS releases: 2.4.x (distro libcups2-dev), 2.5.x (OpenPrinting/cups master)
+# CUPS 3.x / libcups3 is intentionally NOT tested: cups-filters is a
+# compatibility layer that exposes libcupsfilters' filter functions as classic
+# CUPS filters, and CUPS 3.x has no filter/backend-executable concept, so
+# cups-filters has no meaning there (confirmed by Till Kamppeter).
# All the per-combination work lives in ci/ci-setup.sh so the legs differ only
# in which CUPS is provided and whether they run under emulation. Each leg
# builds pdfio + libcupsfilters + libppd against the selected CUPS, then
fail-fast: false
matrix:
arch: [x86_64, arm64, armv7, riscv64]
- cups: [system-2x, source-2.5.x, source-3.x]
+ cups: [system-2x, source-2.5.x]
include:
- arch: x86_64
runs-on: ubuntu-latest
runs-on: ${{ matrix.runs-on }}
name: Build & Test (${{ matrix.arch }}, ${{ matrix.cups }})
- # Building CUPS 2.5 / libcups3 from source under QEMU is slow; allow plenty.
+ # Building CUPS 2.5 from source under QEMU is slow; allow plenty.
timeout-minutes: 360
- # The libcups3 (CUPS 3.x) leg is not yet gating: cups-filters has not been
- # ported to libcups3 (the classic backends include the removed
- # cups/backend.h and foomatic-rip uses the libcups2 cups-array API names).
- # Keep the leg visible but non-blocking until the port approach is agreed
- # upstream; the 2.4.x and 2.5.x legs gate as normal.
- continue-on-error: ${{ matrix.cups == 'source-3.x' }}
steps:
- uses: actions/checkout@v4
# ci/ci-setup.sh
#
# CI helper for building cups-filters against several CUPS releases on both
-# native and QEMU-emulated runners. The same source compiles against CUPS
-# 2.4.x, 2.5.x and 3.x; this script provides each of those CUPS builds, then
-# builds the dependency stack (pdfio, libcupsfilters, libppd) and finally
-# cups-filters itself against it.
+# native and QEMU-emulated runners. cups-filters is a CUPS 2.x compatibility
+# layer (classic filters), so it targets CUPS 2.4.x and 2.5.x only -- NOT
+# CUPS 3.x/libcups3, which has no filter-executable concept. This script
+# provides each CUPS build, then the dependency stack (pdfio, libcupsfilters,
+# libppd) and finally cups-filters itself against it.
#
# Subcommands:
# deps install build dependencies
# cups <kind> provide libcups; <kind> is one of:
# system-2x distro libcups2-dev (CUPS 2.4.x)
# source-2.5.x OpenPrinting/cups@master (CUPS 2.5.x)
-# source-3.x OpenPrinting/libcups@master (libcups3)
# pdfio build/install the latest released pdfio
# libcupsfilters <kind> provide libcupsfilters: distro pkg on system-2x,
# OpenPrinting/libcupsfilters@master on the source legs
build_autoconf https://github.com/OpenPrinting/cups.git master "" \
--disable-systemd ${ma:+--libdir=/usr/lib/$ma}
;;
- source-3.x)
- build_autoconf https://github.com/OpenPrinting/libcups.git master \
- "--recurse-submodules"
- ;;
*)
echo "ci-setup: unknown cups kind: $kind" >&2; exit 2 ;;
esac