Skip to content

ci: build Linux plugin inside debian:stable-slim for GLIBC compatibility#122

Open
RobinDavid with Copilot wants to merge 2 commits into
mainfrom
copilot/support-debian-stable-libc-version
Open

ci: build Linux plugin inside debian:stable-slim for GLIBC compatibility#122
RobinDavid with Copilot wants to merge 2 commits into
mainfrom
copilot/support-debian-stable-libc-version

Conversation

Copilot AI commented Jun 28, 2026

Copy link
Copy Markdown
Contributor

Binaries compiled on ubuntu-latest link against a newer GLIBC than what Debian stable ships, making the plugin unusable on Debian-stable systems.

Changes

  • Container per job: warm-cache, cpp-tests, and build jobs now run Linux steps inside docker.io/library/debian:stable-slim via GitHub Actions container: at the job level. macOS paths are unaffected.

  • Build toolchain from apt: A new "Install build dependencies (Linux)" step installs cmake, ninja-build, g++/gcc, git, liblzma-dev, ccache, wget, etc. from Debian's package repos inside the container (no sudo — root in container). The setup-cmake and setup-ninja GitHub Actions steps are skipped for Linux since their host-installed binaries are not accessible inside the container. Debian stable ships cmake 3.25.x, well above the project's cmake_minimum_required(VERSION 3.13).

  • Isolated cache keys: Introduced a platform matrix variable (linux-debian-stable / macos-latest) used in fetchcontent- and ccache- cache keys so Debian-compiled objects don't collide with any pre-existing Ubuntu-built caches.

  • No sudo: All sudo apt-get calls in Linux steps removed (container runs as root).

strategy:
  matrix:
    include:
      - os: ubuntu-latest
        platform: linux-debian-stable
        container: docker.io/library/debian:stable-slim
      - os: macos-latest
        platform: macos-latest
runs-on: ${{ matrix.os }}
container: ${{ matrix.container }}

…compatibility

Run the warm-cache, cpp-tests, and build jobs for Linux inside a
docker.io/library/debian:stable-slim container so the produced .so
binaries link against Debian stable's GLIBC, matching the compatibility
goal requested in #51.

Key changes:
- Add `container: docker.io/library/debian:stable-slim` to the Linux
  variants of warm-cache, cpp-tests, and build jobs.
- Install cmake, ninja, g++/gcc, liblzma-dev, ccache, wget and other
  build tools via apt-get inside the container (no sudo, running as root).
- Skip the jwlawson/actions-setup-cmake and seanmiddleditch/gha-setup-ninja
  setup actions for Linux; the container's apt-provided cmake/ninja are
  sufficient (Debian stable ships cmake 3.25.x, well above the 3.13 minimum).
- Update FetchContent and ccache cache keys to use `matrix.platform`
  (linux-debian-stable / macos-latest) so Debian and Ubuntu caches
  remain isolated and don't pollute each other.
- Remove all `sudo apt-get` invocations from Linux steps (root in container).
Copilot AI changed the title [WIP] Add support for Debian stable LIBC version ci: build Linux plugin inside debian:stable-slim for GLIBC compatibility Jun 28, 2026
Copilot AI requested a review from RobinDavid June 28, 2026 20:08
@RobinDavid RobinDavid marked this pull request as ready for review June 28, 2026 20:19
@RobinDavid

Copy link
Copy Markdown
Collaborator

@patacca this in theory address the issue #51 but I am not so sure about it 😁

@RobinDavid

Copy link
Copy Markdown
Collaborator

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