fix(ci): pin deb builds to ubuntu-22.04 and enforce the fleet glibc floor
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>
This commit is contained in:
@@ -18,7 +18,15 @@ env:
|
|||||||
jobs:
|
jobs:
|
||||||
build-deb:
|
build-deb:
|
||||||
name: Build .deb for ${{ matrix.target }}
|
name: Build .deb for ${{ matrix.target }}
|
||||||
runs-on: ubuntu-latest
|
# PINNED, not ubuntu-latest: the binaries link against this runner's
|
||||||
|
# (multiarch) glibc, so the runner sets the MINIMUM glibc the .debs demand
|
||||||
|
# at install time. ubuntu-latest moved to 24.04/glibc 2.39 and the packages
|
||||||
|
# stopped installing on Debian 12/RPi OS bookworm (glibc 2.36). 22.04 links
|
||||||
|
# 2.35, which bookworm satisfies. The "enforce glibc floor" step below
|
||||||
|
# turns any future violation into a red build instead of a fleet-wide apt
|
||||||
|
# failure — if this pin ever has to move past bookworm's glibc, that step
|
||||||
|
# is the contract to renegotiate first.
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
@@ -159,6 +167,22 @@ jobs:
|
|||||||
mkdir -p debs
|
mkdir -p debs
|
||||||
cp target/${{ matrix.target }}/debian/*.deb debs/
|
cp target/${{ matrix.target }}/debian/*.deb debs/
|
||||||
|
|
||||||
|
- name: Enforce glibc floor (Debian 12 / RPi OS bookworm fleet)
|
||||||
|
run: |
|
||||||
|
# The fleet's oldest supported glibc. A .deb that demands newer libc6
|
||||||
|
# than this will not install on the Pis — fail HERE, not at apt time.
|
||||||
|
FLOOR="2.36"
|
||||||
|
fail=0
|
||||||
|
for deb in debs/*.deb; do
|
||||||
|
req=$(dpkg-deb -f "$deb" Depends | grep -oE 'libc6 \(>= [0-9.]+\)' | grep -oE '[0-9.]+' || true)
|
||||||
|
echo "$deb -> libc6 >= ${req:-none}"
|
||||||
|
if [ -n "$req" ] && [ "$(printf '%s\n' "$req" "$FLOOR" | sort -V | tail -1)" != "$FLOOR" ]; then
|
||||||
|
echo "::error::$deb requires libc6 >= $req, exceeding the fleet floor $FLOOR (bookworm). The build runner's glibc is too new — see the runs-on pin comment."
|
||||||
|
fail=1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
exit $fail
|
||||||
|
|
||||||
- name: List generated packages
|
- name: List generated packages
|
||||||
run: ls -lh debs/
|
run: ls -lh debs/
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user