Skip to content

Commit 9f5826c

Browse files
committed
ci(native): fix linux-x86-64 rebuild on manylinux_2_28
GitHub now forces actions onto Node 24 (glibc >= 2.27), which cannot run inside the manylinux2014 (glibc 2.17) container the linux-x86-64 native build used; actions/checkout failed before compilation. The old Node-20-glibc-217 override only patched /__e/node20, not /__e/node24. Switch the job to quay.io/pypa/manylinux_2_28_x86_64 (glibc 2.28, runs stock Node 24) and drop the Node hack, nasm src.rpm rebuild, and manual CMake download, mirroring the linux-aarch64 job that already builds on manylinux_2_28.
1 parent 7dfedfe commit 9f5826c

1 file changed

Lines changed: 11 additions & 37 deletions

File tree

.github/workflows/rebuild_native_libs.yml

Lines changed: 11 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -68,57 +68,31 @@ jobs:
6868
key: nativelibs-osx-${{ github.sha }}
6969
build-all-linux-x86-64:
7070
runs-on: ubuntu-latest
71-
# manylinux2014 is a container with new-ish compilers and tools, but old glibc - 2.17
72-
# 2.17 is old enough to be compatible with most Linux distributions out there
71+
# manylinux_2_28 (glibc 2.28) replaces the previous manylinux2014 (glibc
72+
# 2.17) container: GitHub Actions now forces actions (checkout, cache) onto
73+
# Node 24, whose binary requires glibc >= 2.27, so it can no longer run
74+
# inside the glibc-2.17 image (the old Node-20-glibc-217 override hack only
75+
# patched /__e/node20, not /__e/node24). 2.28 still runs stock Node 24 and
76+
# matches the linux-aarch64 job, which already ships glibc-2.28 binaries.
7377
container:
74-
image: quay.io/pypa/manylinux2014_x86_64
75-
volumes:
76-
- /node20217:/node20217
77-
- /node20217:/__e/node20
78+
image: quay.io/pypa/manylinux_2_28_x86_64
7879
steps:
79-
- name: Install tools, most are needed to build nasm
80-
run: |
81-
ldd --version
82-
yum update -y
83-
yum install 'perl(Env)' perl-Font-TTF perl-Sort-Versions gcc wget perf asciidoc xmlto ghostscript adobe-source-sans-pro-fonts adobe-source-code-pro-fonts rpm-build zstd curl -y
84-
- name: Build nasm
85-
# we need nasm 2.14+ due to this bug https://bugzilla.nasm.us/show_bug.cgi?id=3392205
86-
# manylinux2014 distribution includes nasm 2.10
87-
# the nasm project itself provides RPMs, but they built against a newer glibc and other dependencies too
88-
# thus we take src.rpm from nasm project and rebuild it in the manylinux2014 container
89-
# this way we get a nasm binary that is compatible with the manylinux2014 environment
90-
run: |
91-
wget https://www.nasm.us/pub/nasm/releasebuilds/2.16.03/linux/nasm-2.16.03-0.fc39.src.rpm
92-
rpmbuild --rebuild ./nasm-2.16.03-0.fc39.src.rpm
93-
rpm -i ~/rpmbuild/RPMS/x86_64/nasm-2.16.03-0.el7.x86_64.rpm
94-
- name: Install Node.js 20 glibc2.17
95-
# A hack to override default nodejs 20 to a build compatible with older glibc.
96-
# Inspired by https://github.com/pytorch/test-infra/pull/5959 If it's good for pytorch, it's good for us too! :)
97-
# Q: Why do we need this hack at all? A: Because many github actions, include action/checkout@v4, depend on nodejs 20.
98-
# GitHub Actions runner provides a build of nodejs 20 that requires a newer glibc than manylinux2014 has.
99-
# Thus we download a build of nodejs 20 that is compatible with manylinux2014 and override the default one.
100-
run: |
101-
curl -LO https://unofficial-builds.nodejs.org/download/release/v20.9.0/node-v20.9.0-linux-x64-glibc-217.tar.xz
102-
tar -xf node-v20.9.0-linux-x64-glibc-217.tar.xz --strip-components 1 -C /node20217
103-
ldd /__e/node20/bin/node
10480
- uses: actions/checkout@v4
10581
with:
10682
submodules: true
107-
- name: Install up-to-date CMake
83+
- name: Install tooling
10884
run: |
109-
wget -nv https://github.com/Kitware/CMake/releases/download/v3.29.2/cmake-3.29.2-linux-x86_64.tar.gz
110-
tar -zxf cmake-3.29.2-linux-x86_64.tar.gz
111-
echo "PATH=`pwd`/cmake-3.29.2-linux-x86_64/bin/:$PATH" >> "$GITHUB_ENV"
85+
yum update -y
86+
yum install wget nasm zstd -y
11287
- name: Install GraalVM JDK 25 (for jni.h)
11388
run: |
114-
wget -nv -O graalvm.tar.gz https://download.oracle.com/graalvm/25/latest/graalvm-jdk-25_linux-x64_bin.tar.gz
89+
wget -v --timeout=180 -O graalvm.tar.gz https://download.oracle.com/graalvm/25/latest/graalvm-jdk-25_linux-x64_bin.tar.gz
11590
mkdir graalvm
11691
tar xfz graalvm.tar.gz -C graalvm --strip-components=1
11792
echo "JAVA_HOME=`pwd`/graalvm" >> "$GITHUB_ENV"
11893
- name: Generate Makefiles
11994
run: |
12095
cd ./core
121-
# git submodule update --init
12296
cmake -DCMAKE_BUILD_TYPE=Release -B cmake-build-release -S.
12397
- name: Build linux-x86-64 CXX Library
12498
run: |

0 commit comments

Comments
 (0)