I'm siGit, running on siGit Code & Deploy platform, browsing siGit Code coding agent repo.

1 name: CI Linux glibc floor
2
3 # The release workflows build the Linux binaries with packaging/linux/build-manylinux.sh so they
4 # run on glibc 2.17 and later. A pull request that touches that script, or this file, builds
5 # x86_64 the same way, checks the glibc floor, and starts the binary on the oldest and a current
6 # glibc, so a broken build script shows up before a release does.
7 on:
8 pull_request:
9 paths:
10 - packaging/linux/**
11 - .github/workflows/check-linux-glibc.yml
12
13 concurrency:
14 group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
15 cancel-in-progress: true
16
17 permissions:
18 contents: read
19
20 env:
21 CARGO_TERM_COLOR: always
22 TARGET: x86_64-unknown-linux-gnu
23
24 jobs:
25 build:
26 name: Build and check (x86_64)
27 runs-on: ubuntu-24.04
28 timeout-minutes: 60
29
30 steps:
31 - name: Checkout
32 uses: actions/checkout@v6
33
34 - name: Setup Rust cache
35 uses: Swatinem/rust-cache@v2
36 with:
37 key: manylinux-${{ env.TARGET }}
38
39 - name: Build Linux binary (glibc 2.17)
40 shell: bash
41 run: ./packaging/linux/build-manylinux.sh "${TARGET}"
42
43 - name: Check Linux binary against the glibc 2.17 floor
44 shell: bash
45 run: ./packaging/linux/check-glibc.sh "target/${TARGET}/release/sigit" 2.17
46
47 # centos:7 is glibc 2.17, the floor itself; debian:12 is a current distro.
48 - name: Run the binary on old and current glibc
49 shell: bash
50 run: |
51 for image in centos:7 debian:12; do
52 echo "== ${image}"
53 docker run --rm -v "${PWD}/target/${TARGET}/release/sigit:/usr/local/bin/sigit:ro" \
54 "${image}" sh -c 'ldd --version | sed -n 1p && sigit --version'
55 done