Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,14 @@ jobs:
build-matrix:
name: Build & Test (${{ matrix.arch }}, ${{ matrix.cups }})
runs-on: ${{ matrix.runs-on }}
# The source-* legs build their CUPS / libcupsfilters from OpenPrinting
# @master, an unpinned moving target: a transient breakage there (e.g.
# libcups master failing its own `make install`) reddens the leg through no
# fault of libppd. Keep the distro system-2x leg required (blocking), but
# let the source-@master legs report without blocking the PR. ci-setup.sh
# annotates each failure as UPSTREAM-DEP-FAILED vs LIBPPD-FAILED so a real
# libppd regression on these legs is still visible even while non-blocking.
continue-on-error: ${{ matrix.cups != 'system-2x' }}
# Building CUPS / libcupsfilters from source under QEMU is slow; allow plenty.
timeout-minutes: 360

Expand Down
22 changes: 22 additions & 0 deletions ci/ci-setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,28 @@
# runners; it detects which automatically.
set -eu

# Classify a failure so CI (and humans) can tell an upstream-dependency
# breakage apart from a real libppd failure. Each invocation of this script
# handles exactly one subcommand, so $1 identifies which side failed:
# providing the CUPS / libcupsfilters stack (built from @master on the
# source-* legs, an unpinned moving target) vs building/testing libppd itself.
# The source-* matrix legs are non-blocking precisely because of the former
# class of transient upstream breakage; this label makes the distinction
# explicit on both native and emulated legs (they run the same script).
_subcmd="${1:-}"
_classify_failure() {
rc=$?
[ "$rc" -eq 0 ] && exit 0
case "$_subcmd" in
cups|pdfio|libcupsfilters)
echo "::error::UPSTREAM-DEP-FAILED: '$_subcmd' failed while building the CUPS/libcupsfilters stack (from @master on the source-* legs). This is an upstream-dependency breakage, not a libppd bug." ;;
build-libppd)
echo "::error::LIBPPD-FAILED: libppd build/test failed." ;;
esac
exit "$rc"
}
trap _classify_failure EXIT

PDFIO_VER=1.6.4
LIBCUPSFILTERS_URL="${LIBCUPSFILTERS_URL:-https://github.com/OpenPrinting/libcupsfilters.git}"
LIBCUPSFILTERS_REF="${LIBCUPSFILTERS_REF:-master}"
Expand Down
Loading