@@ -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