-
Notifications
You must be signed in to change notification settings - Fork 32
Description
Context
The x86-linux-gnu
and x86_64-linux-gnu
build images are based on manylinux2014
. manylinux
is a set of base images maintained by the Python community for building Wheels (which is what precompiled Python packages are called), and you can read more about the project at https://github.com/pypa/manylinux
manylinux2014
is specified at https://peps.python.org/pep-0599/. It is based on CentOS 7 and supports GLIBC_2.17 and above.
CentOS 7 becomes EOL on 2024-06-30 according to https://www.redhat.com/en/topics/linux/centos-linux-eol
Problems we're trying to solve
- I'd like to use a more modern base image. Older versions of packages can cause problems, see for example pkg-config version in x86-linux and x86_64-linux images taking a long time to resolve re2.pc #121 which describes the performance issues of
pkg-config
in these images. - I'd like to unify the linux builds a bit.
- Currently the
x86-linux-gnu
andx86_64-linux-gnu
images are distinct from the other gnu linux images, which useubuntu:20.04
and only support GLIBC_2.29 and above. - And the musl images are built using
ubuntu:20.04
and a cross-compilation stack which supports unclear versions of the musl libc API.
- Currently the
Option A: Move to manylinux_2_28 and musllinux_1_2?
Work in progress here: #124
We'll leave the windows and darwin builds to happen via cross-compilation on a vanilla ubuntu system for now. We've got until 2025-04-23 to get off of ubuntu:20.04
.
Problems doing this would introduce:
- It means we would support GLIBC_2.28 for all versions of gnu linux, an improvement on arm and aarch, but a worse situation for x86 support.
- Though, to be fair, I don't know that any older versions of GLIBC receive production support from distro vendors anymore? So maybe this is OK.
- It doesn't look like
manylinux_2_28
supports 32-bit linux anymore, see the contents of https://quay.io/organization/pypa, so we would likely have to drop 32-bit support- Though based on Nokogiri's download stats which has x86-linux at 0.02% of downloads since 2021-01, this might be a non-issue?
Option B: Move to ubuntu:20.04 for everything?
Work in progress here: #126
- manylinux_2_28 works for x86_64
- but does not provide support for 32-bit linux
- and non-x86 images are pinned to that platform so they don't easily cross-compile
- ubuntu 20.04 seems to support building against glibc 2.29
- not much worse than 2.28
- much lower complexity since we unify the image build process
Let's give it a try.