Skip to content

ci: Implement multi-architecture build and test workflow#135

Merged
tillkamppeter merged 14 commits intoOpenPrinting:masterfrom
rkt0209:master
Mar 9, 2026
Merged

ci: Implement multi-architecture build and test workflow#135
tillkamppeter merged 14 commits intoOpenPrinting:masterfrom
rkt0209:master

Conversation

@rkt0209
Copy link
Copy Markdown
Contributor

@rkt0209 rkt0209 commented Mar 8, 2026

Overview

This PR introduces a comprehensive, multi-architecture GitHub Actions CI workflow for libcupsfilters. It ensures that the library successfully builds and passes its test suite across a matrix of different architectures, helping catch platform-specific regressions early.

Architectures Covered

The matrix strategy runs the build and test pipeline on four architectures:

  • x86_64: Native (Ubuntu latest)
  • arm64: Native (Ubuntu 24.04 ARM runner)
  • armhf (armv7): Emulated via QEMU (uraimo/run-on-arch-action@v3)
  • riscv64: Emulated via QEMU (uraimo/run-on-arch-action@v3)

Implementation Details & Fixes

To ensure a stable and reliable CI environment, this workflow includes several critical configurations:

  • Source Dependencies: Before building libcupsfilters, the CI dynamically fetches, compiles, and installs pdfio (v1.6.2) from source.
  • Comprehensive Dependencies: Added a complete list of required apt-get packages to prevent ./autogen.sh and ./configure from failing. This resolves previous missing package errors by explicitly adding autopoint, gettext, libjxl-dev, liblcms2-dev, libexif-dev, and other required image/PDF libraries.
  • Strict QEMU Error Handling: Emulated run blocks are wrapped with set -ex to prevent silent build failures from cascading into downstream commands.
  • Robust Directory Tracking: Implemented explicit workspace directory tracking ($REPO_DIR) to prevent navigation bugs when compiling external dependencies in /tmp.
  • Artifact Collection: The workflow unconditionally (always()) uploads all *.log and test-suite.log files as GitHub Artifacts. This ensures diagnostic data is always available to developers, even if make check fails inside the emulator.

Testing

All four architectures (native and emulated) have been tested and are successfully passing the autogen.sh, configure, make, and make check steps.

@tillkamppeter tillkamppeter merged commit c040517 into OpenPrinting:master Mar 9, 2026
7 checks passed
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