Skip to content

fix(ci): pin deb builds to ubuntu-22.04 and enforce the fleet glibc floor - #41

Merged
jasonwitty merged 3 commits into
masterfrom
fix/deb-glibc-floor
Aug 23, 2026
Merged

jasonwitty merged 3 commits into
masterfrom
fix/deb-glibc-floor

Conversation

@jasonwitty

Copy link
Copy Markdown
Owner

The v1.60.0 debs demand libc6 (>= 2.39) and fail to install on Raspberry Pi OS / Debian 12 bookworm (glibc 2.36).

Root cause: the cross-compiled binaries link against the build runner's multiarch glibc, so the runner determines the minimum glibc at install time. ubuntu-latest migrated 22.04 → 24.04 (glibc 2.35 → 2.39) between the 1.50.x releases and this one.

Fix:

  1. Pin the build-deb job to ubuntu-22.04 (glibc 2.35 ≤ bookworm's 2.36) — restores the environment the 1.50.x debs were built in.
  2. New enforce-glibc-floor step: reads each built .deb's computed libc6 requirement and fails the run if it exceeds 2.36 — so the next silent runner migration (22.04 retires ~2027) becomes a red build with a pointed error instead of fleet-wide apt breakage. Comparison logic unit-checked (2.34 ok / 2.36 ok / 2.39 fail).

This PR itself exercises the full fix: the PR trigger builds all four targets, and the new gate must pass on every produced package.

After merge, re-cutting v1.60.0 (delete tag + release, re-tag on master) rebuilds and republishes the debs with the correct floor — nothing has consumed the broken ones, and cargo isn't published yet, so the version can stay.

🤖 Generated with Claude Code

jasonwitty and others added 3 commits August 23, 2026 08:59
…loor

The v1.60.0 debs failed to install on Raspberry Pi OS bookworm:

  socktop : Depends: libc6 (>= 2.39) but 2.36-9+rpt2+deb12u14 is to be installed

Cross-compiled binaries link against the RUNNER's (multiarch) glibc, so
the runner picks the minimum glibc the packages demand. ubuntu-latest
migrated from 22.04 (glibc 2.35) to 24.04 (glibc 2.39) between the
1.50.x releases and now, silently raising the requirement past the
Debian-12 fleet.

Pin the build job to ubuntu-22.04 (2.35 — satisfied by bookworm's 2.36)
and add a post-build gate that reads each .deb's computed libc6
requirement and fails the run if it exceeds the fleet floor, so the next
runner migration turns into a red build instead of a fleet-wide apt
error.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The floor gate's second grep matched the trailing digit of the package
name before the version ('libc6 (>= 2.34)' -> '6'), failing every
target. sed capture group instead; verified against realistic Depends
strings.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The 1.60.0 debs were built against glibc 2.39 and never installed on the
bookworm fleet; rather than force-moving the tag, the rebuilt release
ships as 1.60.1. Nothing was published to crates.io at 1.60.0.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@jasonwitty

Copy link
Copy Markdown
Owner Author

Added the 1.60.1 bump to this PR per Jason: all three crates + the client's connector dep + CHANGELOG heading (with a note explaining the 1.60.0→1.60.1 gap). Binaries verified reporting 1.60.1; suite green. Merge → tag v1.60.1 → the pipeline builds gated debs and publishes normally — no tag surgery needed.

@jasonwitty
jasonwitty merged commit fe3ef7f into master Aug 23, 2026
8 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.

1 participant