Skip to content

Commit 31ac2ca

Browse files
committed
feature: add manylinux_2_28 image
1 parent f7463ad commit 31ac2ca

9 files changed

+54
-6
lines changed

.github/workflows/build.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ jobs:
3939
platform: "i686"
4040
- policy: "manylinux2010"
4141
platform: "x86_64"
42+
- policy: "manylinux_2_28"
43+
platform: "x86_64"
4244

4345
env:
4446
POLICY: ${{ matrix.policy }}

.travis.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,12 @@ jobs:
3838
env: POLICY="manylinux_2_24" PLATFORM="s390x"
3939
- arch: ppc64le
4040
env: POLICY="manylinux_2_24" PLATFORM="ppc64le"
41+
- arch: arm64-graviton2
42+
virt: vm
43+
group: edge
44+
env: POLICY="manylinux_2_28" PLATFORM="aarch64"
45+
- arch: ppc64le
46+
env: POLICY="manylinux_2_28" PLATFORM="ppc64le"
4147
- arch: arm64-graviton2
4248
virt: vm
4349
group: edge

build.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ elif [ "${POLICY}" == "manylinux_2_24" ]; then
6262
DEVTOOLSET_ROOTPATH=
6363
PREPEND_PATH=
6464
LD_LIBRARY_PATH_ARG=
65+
elif [ "${POLICY}" == "manylinux_2_28" ]; then
66+
BASEIMAGE="${MULTIARCH_PREFIX}almalinux:8"
67+
DEVTOOLSET_ROOTPATH="/opt/rh/gcc-toolset-11/root"
68+
PREPEND_PATH="${DEVTOOLSET_ROOTPATH}/usr/bin:"
69+
LD_LIBRARY_PATH_ARG="${DEVTOOLSET_ROOTPATH}/usr/lib64:${DEVTOOLSET_ROOTPATH}/usr/lib:${DEVTOOLSET_ROOTPATH}/usr/lib64/dyninst:${DEVTOOLSET_ROOTPATH}/usr/lib/dyninst"
6570
elif [ "${POLICY}" == "musllinux_1_1" ]; then
6671
BASEIMAGE="${MULTIARCH_PREFIX}alpine:3.12"
6772
DEVTOOLSET_ROOTPATH=

docker/build_scripts/build-sqlite3.sh

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,11 @@ strip_ /manylinux-rootfs
3030

3131
# Install
3232
cp -rlf /manylinux-rootfs/* /
33-
ldconfig /
33+
if [ "${BASE_POLICY}" == "musllinux" ]; then
34+
ldconfig /
35+
elif [ "${BASE_POLICY}" == "manylinux" ]; then
36+
ldconfig
37+
fi
3438

3539
# Clean-up for runtime
3640
rm -rf /manylinux-rootfs/usr/local/share

docker/build_scripts/install-build-packages.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ set -exuo pipefail
88
# if a devel package is added to COMPILE_DEPS,
99
# make sure the corresponding library is added to RUNTIME_DEPS if applicable
1010

11-
if [ "${AUDITWHEEL_POLICY}" == "manylinux2010" ] || [ "${AUDITWHEEL_POLICY}" == "manylinux2014" ]; then
11+
if [ "${AUDITWHEEL_POLICY}" == "manylinux2010" ] || [ "${AUDITWHEEL_POLICY}" == "manylinux2014" ] || [ "${AUDITWHEEL_POLICY}" == "manylinux_2_28" ]; then
1212
PACKAGE_MANAGER=yum
1313
COMPILE_DEPS="bzip2-devel ncurses-devel readline-devel tk-devel gdbm-devel libpcap-devel xz-devel openssl openssl-devel keyutils-libs-devel krb5-devel libcom_err-devel libidn-devel curl-devel uuid-devel libffi-devel kernel-headers"
1414
if [ "${AUDITWHEEL_POLICY}" == "manylinux2010" ]; then

docker/build_scripts/install-libxcrypt.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ if [ "$BASE_POLICY" == "musllinux" ]; then
1414
echo "Skip libxcrypt installation on musllinux"
1515
exit 0
1616
fi
17+
if [ "${AUDITWHEEL_POLICY}" == "manylinux_2_28" ]; then
18+
echo "Skip libxcrypt installation on manylinux_2_28"
19+
exit 0
20+
fi
1721

1822
# We need perl 5.14+
1923
if ! perl -e 'use 5.14.0' &> /dev/null; then

docker/build_scripts/install-runtime-packages.sh

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ source $MY_DIR/build_utils.sh
3232

3333

3434
# MANYLINUX_DEPS: Install development packages (except for libgcc which is provided by gcc install)
35-
if [ "${AUDITWHEEL_POLICY}" == "manylinux2010" ] || [ "${AUDITWHEEL_POLICY}" == "manylinux2014" ]; then
35+
if [ "${AUDITWHEEL_POLICY}" == "manylinux2010" ] || [ "${AUDITWHEEL_POLICY}" == "manylinux2014" ] || [ "${AUDITWHEEL_POLICY}" == "manylinux_2_28" ]; then
3636
MANYLINUX_DEPS="glibc-devel libstdc++-devel glib2-devel libX11-devel libXext-devel libXrender-devel mesa-libGL-devel libICE-devel libSM-devel zlib-devel expat-devel"
3737
elif [ "${AUDITWHEEL_POLICY}" == "manylinux_2_24" ]; then
3838
MANYLINUX_DEPS="libc6-dev libstdc++-6-dev libglib2.0-dev libx11-dev libxext-dev libxrender-dev libgl1-mesa-dev libice-dev libsm-dev libz-dev libexpat1-dev"
@@ -44,7 +44,7 @@ else
4444
fi
4545

4646
# RUNTIME_DEPS: Runtime dependencies. c.f. install-build-packages.sh
47-
if [ "${AUDITWHEEL_POLICY}" == "manylinux2010" ] || [ "${AUDITWHEEL_POLICY}" == "manylinux2014" ]; then
47+
if [ "${AUDITWHEEL_POLICY}" == "manylinux2010" ] || [ "${AUDITWHEEL_POLICY}" == "manylinux2014" ] || [ "${AUDITWHEEL_POLICY}" == "manylinux_2_28" ]; then
4848
RUNTIME_DEPS="zlib bzip2 expat ncurses readline tk gdbm libpcap xz openssl keyutils-libs libkadm5 libcom_err libidn libcurl uuid libffi"
4949
if [ "${AUDITWHEEL_POLICY}" == "manylinux2010" ]; then
5050
RUNTIME_DEPS="${RUNTIME_DEPS} db4"
@@ -120,6 +120,22 @@ elif [ "${AUDITWHEEL_POLICY}" == "manylinux_2_24" ]; then
120120
apt-get upgrade -qq -y
121121
apt-get install -qq -y --no-install-recommends ca-certificates gpg curl locales
122122
TOOLCHAIN_DEPS="binutils gcc g++ gfortran"
123+
elif [ "${AUDITWHEEL_POLICY}" == "manylinux_2_28" ]; then
124+
PACKAGE_MANAGER=dnf
125+
BASETOOLS="${BASETOOLS} curl glibc-locale-source glibc-langpack-en hardlink hostname libcurl libxcrypt which"
126+
# See https://unix.stackexchange.com/questions/41784/can-yum-express-a-preference-for-x86-64-over-i386-packages
127+
echo "multilib_policy=best" >> /etc/yum.conf
128+
# Error out if requested packages do not exist
129+
echo "skip_missing_names_on_install=False" >> /etc/yum.conf
130+
# Make sure that locale will not be removed
131+
sed -i '/^override_install_langs=/d' /etc/yum.conf
132+
dnf -y upgrade
133+
dnf -y install dnf-plugins-core
134+
dnf config-manager --set-enabled powertools # for yasm
135+
TOOLCHAIN_DEPS="gcc-toolset-11-binutils gcc-toolset-11-gcc gcc-toolset-11-gcc-c++ gcc-toolset-11-gcc-gfortran"
136+
if [ "${AUDITWHEEL_ARCH}" == "x86_64" ]; then
137+
TOOLCHAIN_DEPS="${TOOLCHAIN_DEPS} yasm"
138+
fi
123139
elif [ "${AUDITWHEEL_POLICY}" == "musllinux_1_1" ]; then
124140
TOOLCHAIN_DEPS="binutils gcc g++ gfortran"
125141
BASETOOLS="${BASETOOLS} curl util-linux"
@@ -136,6 +152,8 @@ elif [ "${PACKAGE_MANAGER}" == "apt" ]; then
136152
apt-get install -qq -y --no-install-recommends ${BASETOOLS} ${TOOLCHAIN_DEPS} ${MANYLINUX_DEPS} ${RUNTIME_DEPS}
137153
elif [ "${PACKAGE_MANAGER}" == "apk" ]; then
138154
apk add --no-cache ${BASETOOLS} ${TOOLCHAIN_DEPS} ${MANYLINUX_DEPS} ${RUNTIME_DEPS}
155+
elif [ "${PACKAGE_MANAGER}" == "dnf" ]; then
156+
dnf -y install --allowerasing ${BASETOOLS} ${TOOLCHAIN_DEPS} ${MANYLINUX_DEPS} ${RUNTIME_DEPS}
139157
else
140158
echo "Not implemented"
141159
exit 1

docker/build_scripts/update-system-packages.sh

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ elif [ "${AUDITWHEEL_POLICY}" == "manylinux_2_24" ]; then
3333
find /etc/ssl/certs -name 'DST_Root_CA_X3.pem' -delete
3434
update-ca-certificates
3535
fi
36+
elif [ "${AUDITWHEEL_POLICY}" == "manylinux_2_28" ]; then
37+
dnf -y upgrade
38+
dnf clean all
39+
rm -rf /var/cache/yum
3640
elif [ "${AUDITWHEEL_POLICY}" == "musllinux_1_1" ]; then
3741
apk upgrade --no-cache
3842
else
@@ -53,7 +57,7 @@ if [ "${BASE_POLICY}" == "manylinux" ]; then
5357
if localedef --list-archive | grep -sq -v -i ^en_US.utf8; then
5458
localedef --list-archive | grep -v -i ^en_US.utf8 | xargs localedef --delete-from-archive
5559
fi
56-
if [ "${AUDITWHEEL_POLICY}" == "manylinux2014" ] || [ "${AUDITWHEEL_POLICY}" == "manylinux2010" ]; then
60+
if [ "${AUDITWHEEL_POLICY}" == "manylinux2010" ] || [ "${AUDITWHEEL_POLICY}" == "manylinux2014" ] || [ "${AUDITWHEEL_POLICY}" == "manylinux_2_28" ]; then
5761
mv -f ${LOCALE_ARCHIVE} ${LOCALE_ARCHIVE}.tmpl
5862
build-locale-archive --install-langs="en_US.utf8"
5963
elif [ "${AUDITWHEEL_POLICY}" == "manylinux_2_24" ]; then
@@ -99,5 +103,10 @@ fi
99103
if [ -f /usr/local/lib/libcrypt.so.1 ]; then
100104
# Remove libcrypt to only use installed libxcrypt instead
101105
find /lib* /usr/lib* \( -name 'libcrypt.a' -o -name 'libcrypt.so' -o -name 'libcrypt.so.*' -o -name 'libcrypt-2.*.so' \) -delete
106+
fi
107+
108+
if [ "${BASE_POLICY}" == "musllinux" ]; then
109+
ldconfig /
110+
elif [ "${BASE_POLICY}" == "manylinux" ]; then
102111
ldconfig
103112
fi

tests/run_tests.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ set -exuo pipefail
66
# Get script directory
77
MY_DIR=$(dirname "${BASH_SOURCE[0]}")
88

9-
if [ "${AUDITWHEEL_POLICY}" == "manylinux2010" ] || [ "${AUDITWHEEL_POLICY}" == "manylinux2014" ]; then
9+
if [ "${AUDITWHEEL_POLICY}" == "manylinux2010" ] || [ "${AUDITWHEEL_POLICY}" == "manylinux2014" ] || [ "${AUDITWHEEL_POLICY}" == "manylinux_2_28" ]; then
1010
PACKAGE_MANAGER=yum
1111
elif [ "${AUDITWHEEL_POLICY}" == "manylinux_2_24" ]; then
1212
export DEBIAN_FRONTEND=noninteractive

0 commit comments

Comments
 (0)