From f08f8866662802a36fb0d58a3e77b9ccd30a895b Mon Sep 17 00:00:00 2001 From: Eric Xu Date: Sat, 21 Feb 2026 20:04:46 -0600 Subject: [PATCH] ci: add glibc 2.41 prebuilds for Debian 13/Raspberry Pi OS Adds a new build_glibc_241 job that uses Debian Trixie containers to produce prebuilt binaries for systems with glibc 2.41+. This enables @discordjs/opus to work out-of-the-box on: - Debian 13 (Trixie) - Raspberry Pi OS Trixie - Future Ubuntu releases with glibc 2.41+ The job builds for both x64 and arm64 architectures across Node.js versions 20, 22, 24, and 25. --- .github/workflows/build.yml | 39 +++++++++++++++++++++ .github/workflows/release.yml | 64 +++++++++++++++++++++++++++++++++++ 2 files changed, 103 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6b292f8b..f8a7e264 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -76,3 +76,42 @@ jobs: - name: Stop container run: docker rm -f runner + + build_glibc_241: + name: Build node ${{ matrix.node }} on ${{ matrix.arch }} (glibc 2.41) + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: + - os: ubuntu-latest + arch: x64 + node: 22 + - os: ubuntu-24.04-arm + arch: arm64 + node: 22 + steps: + - name: Checkout repository + uses: actions/checkout@v6 + with: + submodules: true + + - name: Setup container + run: | + docker run --name runner --rm -it -d -v $PWD:/node-opus -w /node-opus debian:trixie + + - name: Setup env with Node v${{ matrix.node }} + run: | + docker exec runner apt-get update + docker exec runner apt-get install -y curl build-essential python3 git ca-certificates + docker exec runner bash -c "curl -fsSL https://deb.nodesource.com/setup_${{ matrix.node }}.x | bash -" + docker exec runner apt-get install -y nodejs + + - name: Install dependencies + run: docker exec runner npm install --build-from-source + + - name: Package prebuild + run: docker exec runner npm run build + + - name: Stop container + run: docker rm -f runner diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 658eeac6..3504fedc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -45,6 +45,70 @@ jobs: with: path: 'build/stage/**/*.tar.gz' + build_glibc_241: + name: Prebuild node ${{ matrix.node }} on ${{ matrix.arch }} (glibc 2.41) + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: + - os: ubuntu-latest + arch: x64 + node: 20 + - os: ubuntu-latest + arch: x64 + node: 22 + - os: ubuntu-latest + arch: x64 + node: 24 + - os: ubuntu-latest + arch: x64 + node: 25 + - os: ubuntu-24.04-arm + arch: arm64 + node: 20 + - os: ubuntu-24.04-arm + arch: arm64 + node: 22 + - os: ubuntu-24.04-arm + arch: arm64 + node: 24 + - os: ubuntu-24.04-arm + arch: arm64 + node: 25 + steps: + - name: Checkout repository + uses: actions/checkout@v6 + with: + submodules: true + + - name: Setup container + run: | + docker run --name runner --rm -it -d -v $PWD:/node-opus -w /node-opus debian:trixie + + - name: Setup env with Node v${{ matrix.node }} + run: | + docker exec runner apt-get update + docker exec runner apt-get install -y curl build-essential python3 git ca-certificates + docker exec runner bash -c "curl -fsSL https://deb.nodesource.com/setup_${{ matrix.node }}.x | bash -" + docker exec runner apt-get install -y nodejs + + - name: Install dependencies + run: docker exec runner npm install --build-from-source + + - name: Package prebuild + run: docker exec runner npm run build + + - name: Stop container + run: docker rm -f runner + + - name: Upload prebuild asset + uses: icrawl/action-artifact@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + path: 'build/stage/**/*.tar.gz' + build_musl: name: Prebuild node ${{ matrix.node }} on ${{ matrix.os }} (musl) runs-on: ${{ matrix.os }}