Skip to content

Commit

Permalink
manylinux: Fix selection of manylinux to build
Browse files Browse the repository at this point in the history
So that more recent manylinux2010 and 2014  wheels are made in
addition to the older manylinux1 builds.
  • Loading branch information
illume committed Oct 30, 2021
1 parent 958e211 commit adfdc1b
Show file tree
Hide file tree
Showing 6 changed files with 97 additions and 81 deletions.
8 changes: 5 additions & 3 deletions .github/workflows/manylinux.yml
Expand Up @@ -33,12 +33,14 @@ jobs:
fail-fast: false # if a particular matrix build fails, don't skip the rest
matrix:
arch: ['x64', 'x86', 'aarch64']
tag: ['-', '-manylinux-'] # one tag for CPython builds, and another for PyPy
tag: ['-manylinux1-', '-manylinux2010-', -manylinux2014-]

exclude:
# no pypy builds on aarch64 for now
# aarch64 only with manylinux2014 for now
- arch: 'aarch64'
tag: '-manylinux-'
tag: '-manylinux1-'
- arch: 'aarch64'
tag: '-manylinux2010-'

steps:
- uses: actions/checkout@v2.3.4
Expand Down
92 changes: 53 additions & 39 deletions buildconfig/manylinux-build/Makefile
@@ -1,87 +1,101 @@
REPO_ROOT = $(abspath ../..)

wheels-manylinux-x64:
wheels-manylinux1-x64:
docker run --rm -v ${REPO_ROOT}:/io pygame/manylinux1_base_x86_64 /io/buildconfig/manylinux-build/build-wheels.sh

wheels-manylinux-x86:
wheels-manylinux1-x86:
docker run --rm -v ${REPO_ROOT}:/io pygame/manylinux1_base_i686 /io/buildconfig/manylinux-build/build-wheels.sh

wheels-x64:
wheels-manylinux2010-x64:
docker run --rm -v ${REPO_ROOT}:/io pygame/manylinux2010_base_x86_64 /io/buildconfig/manylinux-build/build-wheels.sh buildpypy

wheels-x86:
wheels-manylinux2010-x86:
docker run --rm -v ${REPO_ROOT}:/io pygame/manylinux2010_base_i686 /io/buildconfig/manylinux-build/build-wheels.sh buildpypy

wheels-aarch64:
wheels-manylinux2014-x64:
docker run --rm -v ${REPO_ROOT}:/io pygame/manylinux2014_base_x86_64 /io/buildconfig/manylinux-build/build-wheels.sh buildpypy

wheels-manylinux2014-x86:
docker run --rm -v ${REPO_ROOT}:/io pygame/manylinux2014_base_i686 /io/buildconfig/manylinux-build/build-wheels.sh buildpypy

wheels-manylinux2014-aarch64:
docker run --rm -v ${REPO_ROOT}:/io pygame/manylinux2014_base_aarch64 /io/buildconfig/manylinux-build/build-wheels.sh

wheels: wheels-x64 wheels-x86 wheels-aarch64
wheels-manylinux: wheels-manylinux-x64 wheels-manylinux-x86
wheels: wheels-manylinux1-x64 wheels-manylinux1-x86 wheels-manylinux2010-x64 wheels-manylinux2010-x86 wheels-manylinux2014-x64 wheels-manylinux2014-x86 wheels-manylinux2014-aarch64



base-image-manylinux-x64:
base-image-manylinux1-x64:
docker build --build-arg BASE_IMAGE=manylinux1_x86_64 --build-arg BASE_IMAGE2=manylinux1_x86_64 -t pygame/manylinux1_base_x86_64 -f docker_base/Dockerfile-x86_64 docker_base

base-image-manylinux-x86:
base-image-manylinux1-x86:
docker build --build-arg BASE_IMAGE=manylinux1_i686 --build-arg BASE_IMAGE2=manylinux1_i686 -t pygame/manylinux1_base_i686 -f docker_base/Dockerfile-i686 docker_base

base-images-manylinux: base-image-manylinux-x64 base-image-manylinux-x86


base-image-manylinux2010-x64:
docker build -t pygame/manylinux2010_base_x86_64 -f docker_base/Dockerfile-x86_64 docker_base --build-arg BASE_IMAGE=manylinux2010_x86_64 --build-arg BASE_IMAGE2=manylinux2010_x86_64 --progress=plain

base-image-x64:
docker build -t pygame/manylinux2010_base_x86_64 -f docker_base/Dockerfile-x86_64 docker_base --build-arg BASE_IMAGE=manylinux2010_x86_64 --build-arg BASE_IMAGE2=manylinux2010_x86_64

base-image-x86:
base-image-manylinux2010-x86:
docker build -t pygame/manylinux2010_base_i686 -f docker_base/Dockerfile-i686 docker_base --build-arg BASE_IMAGE=manylinux2010_i686 --build-arg BASE_IMAGE2=manylinux2010_i686

base-image-aarch64:
docker build -t pygame/manylinux2014_base_aarch64 -f docker_base/Dockerfile-aarch64 docker_base --build-arg BASE_IMAGE=manylinux2014_aarch64 --build-arg BASE_IMAGE2=manylinux2014_aarch64

base-images: base-image-x64 base-image-x86 base-image-aarch64

base-image-manylinux2014-x64:
docker build -t pygame/manylinux2014_base_x86_64 -f docker_base/Dockerfile-x86_64 docker_base --build-arg BASE_IMAGE=manylinux2014_x86_64 --build-arg BASE_IMAGE2=manylinux2014_x86_64 --progress=plain

base-image-manylinux2014-x86:
docker build -t pygame/manylinux2014_base_i686 -f docker_base/Dockerfile-i686 docker_base --build-arg BASE_IMAGE=manylinux2014_i686 --build-arg BASE_IMAGE2=manylinux2014_i686

base-image-manylinux2014-aarch64:
docker build -t pygame/manylinux2014_base_aarch64 -f docker_base/Dockerfile-aarch64 docker_base --build-arg BASE_IMAGE=manylinux2014_aarch64 --build-arg BASE_IMAGE2=manylinux2014_aarch64

push-manylinux-x64:
docker push pygame/manylinux1_base_x86_64
# base-images: base-image-manylinux1-x64 base-image-manylinux1-x86 base-image-manylinux2010-x64 base-image-manylinux2010-x86 base-image-manylinux2014-x64 base-image-manylinux2014-x86 base-image-aarch64
base-images: base-image-manylinux2010-x64 base-image-manylinux2010-x86 base-image-manylinux2014-x64 base-image-manylinux2014-x86 base-image-manylinux2014-aarch64

push-manylinux-x86:
docker push pygame/manylinux1_base_i686

push-manylinux: push-manylinux-x64 push-manylinux-x86
# push-manylinux1-x64:
# docker push pygame/manylinux1_base_x86_64

# push-manylinux1-x86:
# docker push pygame/manylinux1_base_i686

push-x64:
push-manylinux2010-x64:
docker push pygame/manylinux2010_base_x86_64

push-x86:
push-manylinux2010-x86:
docker push pygame/manylinux2010_base_i686

push-aarch64:
push-manylinux2014-x64:
docker push pygame/manylinux2014_base_x86_64

push-manylinux2014-x86:
docker push pygame/manylinux2014_base_i686

push-manylinux2014-aarch64:
docker push pygame/manylinux2014_base_aarch64

push: push-x64 push-x86 push-aarch64

# push: push-manylinux1-x64 push-manylinux1-x86 push-manylinux2010-x64 push-manylinux2010-x86 push-manylinux2014-x64 push-manylinux2014-x86
push: push-manylinux2010-x64 push-manylinux2010-x86 push-manylinux2014-x64 push-manylinux2014-x86 push-manylinux2014-aarch64



pull-manylinux-x64:
pull-manylinux1-x64:
docker pull pygame/manylinux1_base_x86_64

pull-manylinux-x86:
pull-manylinux1-x86:
docker pull pygame/manylinux1_base_i686

pull-manylinux: pull-manylinux-x64 pull-manylinux-x86
pull-manylinux2010-x64:
docker pull pygame/manylinux1_base_x86_64

pull-manylinux2010-x86:
docker pull pygame/manylinux2010_base_i686

pull-x64:
docker pull pygame/manylinux2010_base_x86_64
pull-manylinux2014-x64:
docker pull pygame/manylinux1_base_x86_64

pull-x86:
pull-manylinux2014-x86:
docker pull pygame/manylinux2010_base_i686

pull-aarch64:
pull-manylinux2014-aarch64:
docker pull pygame/manylinux2014_base_aarch64

pull: pull-x64 pull-x86 pull-aarch64
pull: pull-manylinux1-x64 pull-manylinux1-x86 pull-manylinux2010-x64 pull-manylinux2010-x86 pull-manylinux2014-x64 pull-manylinux2014-x86 pull-manylinux2014-aarch64
# pull: pull-manylinux2010-x64 pull-manylinux2010-x86 pull-manylinux2014-x64 pull-manylinux2014-x86 pull-aarch64
15 changes: 8 additions & 7 deletions buildconfig/manylinux-build/build-wheels.sh
@@ -1,14 +1,15 @@
#!/bin/bash
set -e -x

if [ `uname -m` == "aarch64" ]; then
export SUPPORTED_PYTHONS="cp36-cp36m cp37-cp37m cp38-cp38 cp39-cp39 cp310-cp310"
else
export SUPPORTED_PYTHONS="cp27-cp27mu cp35-cp35m cp36-cp36m cp37-cp37m cp38-cp38 cp39-cp39"
fi

if [[ "$1" == "buildpypy" ]]; then
export SUPPORTED_PYTHONS="pp27-pypy_75 pp37-pypy37_pp75 cp310-cp310"
export SUPPORTED_PYTHONS="cp27-cp27mu cp35-cp35m cp36-cp36m cp37-cp37m cp38-cp38 cp39-cp39 cp310-cp310 pp27-pypy_75 pp37-pypy37_pp75"
else
if [ `uname -m` == "aarch64" ]; then
export SUPPORTED_PYTHONS="cp36-cp36m cp37-cp37m cp38-cp38 cp39-cp39 cp310-cp310"
else
export SUPPORTED_PYTHONS="cp27-cp27mu cp35-cp35m cp36-cp36m cp37-cp37m cp38-cp38 cp39-cp39"
fi
fi


Expand Down Expand Up @@ -39,7 +40,7 @@ for PYVER in $SUPPORTED_PYTHONS; do
PYTHON="/opt/python/${PYVER}/bin/pypy"
fi

${PYTHON} -m pip wheel --global-option="build_ext" --global-option="-j4" -vvv /io/ -w wheelhouse/
${PYTHON} -m pip wheel -global-option="build_ext" --global-option="-j4" -vvv /io/ -w wheelhouse/
done

# Bundle external shared libraries into the wheels
Expand Down
19 changes: 9 additions & 10 deletions buildconfig/manylinux-build/docker_base/Dockerfile-aarch64
@@ -1,6 +1,6 @@
ARG BASE_IMAGE=manylinux2014_aarch64
FROM quay.io/pypa/$BASE_IMAGE
ENV MAKEFLAGS="-j 8"
ENV MAKEFLAGS="-j 16"

# Set up repoforge
COPY RPM-GPG-KEY.dag.txt /tmp/
Expand All @@ -12,7 +12,7 @@ RUN rpm --import /tmp/RPM-GPG-KEY.dag.txt
#RUN rpm -i /tmp/${RPMFORGE_FILE}

# Install SDL and portmidi dependencies
RUN yum install -y libX11-devel\
RUN yum install -y zlib-devel libX11-devel\
mesa-libGLU-devel audiofile-devel \
java-1.7.0-openjdk-devel jpackage-utils \
giflib-devel dbus-devel \
Expand All @@ -24,14 +24,14 @@ RUN yum install -y libcap-devel libxkbcommon-devel
ADD brotli /brotli_build/
RUN ["bash", "/brotli_build/build-brotli.sh"]

ADD bzip2 /bzip2_build/
RUN ["bash", "/bzip2_build/build-bzip2.sh"]
#ADD bzip2 /bzip2_build/
#RUN ["bash", "/bzip2_build/build-bzip2.sh"]

ADD zlib-ng /zlib-ng_build/
RUN ["bash", "/zlib-ng_build/build-zlib-ng.sh"]
#ADD zlib-ng /zlib-ng_build/
#RUN ["bash", "/zlib-ng_build/build-zlib-ng.sh"]

ADD libjpegturbo /libjpegturbo_build/
RUN ["bash", "/libjpegturbo_build/build-libjpegturbo.sh"]
RUN ["bash", "/libjpegturbo_build/build-jpeg-turbo.sh"]

ADD libpng /libpng_build/
RUN ["bash", "/libpng_build/build-png.sh"]
Expand All @@ -51,11 +51,10 @@ RUN ["bash", "/opus_build/build-opus.sh"]
ADD freetype /freetype_build/
RUN ["bash", "/freetype_build/build-freetype.sh"]

RUN ["rm", "-f", "/lib64/libasound*"]
RUN ["rm", "-f", "/lib/libasound*"]
ADD alsa /alsa_build/
RUN ["bash", "/alsa_build/build-alsa.sh"]
# Replace yum-installed libasound with the one we just compiled.
RUN ["rm", "/lib64/libasound.so.2.0.0"]
RUN ["ln", "-s", "/usr/lib/libasound.so.2.0.0", "/lib64/"]

ADD ogg /ogg_build/
RUN ["bash", "/ogg_build/build-ogg.sh"]
Expand Down
20 changes: 10 additions & 10 deletions buildconfig/manylinux-build/docker_base/Dockerfile-i686
@@ -1,6 +1,6 @@
ARG BASE_IMAGE=manylinux1_i686
FROM quay.io/pypa/$BASE_IMAGE
ENV MAKEFLAGS="-j 4"
ENV MAKEFLAGS="-j 16"

# Set up repoforge
COPY RPM-GPG-KEY.dag.txt /tmp/
Expand All @@ -12,7 +12,7 @@ RUN rpm --import /tmp/RPM-GPG-KEY.dag.txt
#RUN rpm -i /tmp/${RPMFORGE_FILE}

# Install SDL and portmidi dependencies
RUN linux32 yum install -y libX11-devel \
RUN linux32 yum install -y zlib-devel libX11-devel \
mesa-libGLU-devel audiofile-devel \
java-1.7.0-openjdk-devel jpackage-utils \
giflib-devel
Expand All @@ -25,14 +25,14 @@ RUN linux32 yum install -y libcap-devel libxkbcommon-devel
ADD brotli /brotli_build/
RUN ["linux32", "bash", "/brotli_build/build-brotli.sh"]

ADD bzip2 /bzip2_build/
RUN ["linux32", "bash", "/bzip2_build/build-bzip2.sh"]
#ADD bzip2 /bzip2_build/
#RUN ["linux32", "bash", "/bzip2_build/build-bzip2.sh"]

ADD zlib-ng /zlib-ng_build/
RUN ["linux32", "bash", "/zlib-ng_build/build-zlib-ng.sh"]
#ADD zlib-ng /zlib-ng_build/
#RUN ["linux32", "bash", "/zlib-ng_build/build-zlib-ng.sh"]

ADD libjpegturbo /libjpegturbo_build/
RUN ["linux32", "bash", "/libjpegturbo_build/build-libjpegturbo.sh"]
RUN ["linux32", "bash", "/libjpegturbo_build/build-jpeg-turbo.sh"]

ADD libpng /libpng_build/
RUN ["linux32", "bash", "/libpng_build/build-png.sh"]
Expand All @@ -52,11 +52,10 @@ RUN ["linux32", "bash", "/opus_build/build-opus.sh"]
ADD freetype /freetype_build/
RUN ["linux32", "bash", "/freetype_build/build-freetype.sh"]

# Replace yum-installed libasound with the one we just compiled.
RUN ["linux32", "rm", "-f", "/usr/lib/libasound*"]
ADD alsa /alsa_build/
RUN ["linux32", "bash", "/alsa_build/build-alsa.sh"]
# Replace yum-installed libasound with the one we just compiled.
RUN ["rm", "/lib/libasound.so.2.0.0"]
RUN ["ln", "-s", "/usr/lib/libasound.so.2.0.0", "/lib/"]

ADD ogg /ogg_build/
RUN ["linux32", "bash", "/ogg_build/build-ogg.sh"]
Expand Down Expand Up @@ -96,3 +95,4 @@ RUN ["linux32", "bash", "/portmidi_build/build-portmidi.sh"]
ADD pypy /pypy_build/
ARG BASE_IMAGE2=manylinux1_i686
RUN if [ "$BASE_IMAGE2" = "manylinux2010_i686" ] ; then linux32 bash /pypy_build/getpypy32.sh ; else echo "no pypy on manylinux1" ; fi
RUN if [ "$BASE_IMAGE2" = "manylinux2014_i686" ] ; then linux32 bash /pypy_build/getpypy32.sh ; else echo "no pypy on manylinux1" ; fi
24 changes: 12 additions & 12 deletions buildconfig/manylinux-build/docker_base/Dockerfile-x86_64
@@ -1,6 +1,6 @@
ARG BASE_IMAGE=manylinux1_x86_64
FROM quay.io/pypa/$BASE_IMAGE
ENV MAKEFLAGS="-j 4"
ENV MAKEFLAGS="-j 16"

# Set up repoforge
COPY RPM-GPG-KEY.dag.txt /tmp/
Expand All @@ -12,10 +12,10 @@ RUN rpm --import /tmp/RPM-GPG-KEY.dag.txt
#RUN rpm -i /tmp/${RPMFORGE_FILE}

# Install SDL and portmidi dependencies
RUN yum install -y libX11-devel\
RUN yum install -y zlib-devel libX11-devel\
mesa-libGLU-devel audiofile-devel \
java-1.7.0-openjdk-devel jpackage-utils \
mikmod-devel smpeg-devel giflib-devel dbus-devel \
jpackage-utils \
mikmod-devel giflib-devel dbus-devel \
dejavu-sans-fonts fontconfig \
libXcursor-devel libXi-devel libXxf86vm-devel \
libXrandr-devel libXinerama-devel libXcomposite-devel mesa-libGLU-devel xz
Expand All @@ -24,14 +24,14 @@ RUN yum install -y libcap-devel libxkbcommon-devel
ADD brotli /brotli_build/
RUN ["bash", "/brotli_build/build-brotli.sh"]

ADD bzip2 /bzip2_build/
RUN ["bash", "/bzip2_build/build-bzip2.sh"]
#ADD bzip2 /bzip2_build/
#RUN ["bash", "/bzip2_build/build-bzip2.sh"]

ADD zlib-ng /zlib-ng_build/
RUN ["bash", "/zlib-ng_build/build-zlib-ng.sh"]
#ADD zlib-ng /zlib-ng_build/
#RUN ["bash", "/zlib-ng_build/build-zlib-ng.sh"]

ADD libjpegturbo /libjpegturbo_build/
RUN ["bash", "/libjpegturbo_build/build-libjpegturbo.sh"]
RUN ["bash", "/libjpegturbo_build/build-jpeg-turbo.sh"]

ADD libpng /libpng_build/
RUN ["bash", "/libpng_build/build-png.sh"]
Expand All @@ -51,11 +51,10 @@ RUN ["bash", "/opus_build/build-opus.sh"]
ADD freetype /freetype_build/
RUN ["bash", "/freetype_build/build-freetype.sh"]

RUN ["rm", "-f", "/lib64/libasound*"]
RUN ["rm", "-f", "/lib/libasound*"]
ADD alsa /alsa_build/
RUN ["bash", "/alsa_build/build-alsa.sh"]
# Replace yum-installed libasound with the one we just compiled.
RUN ["rm", "/lib64/libasound.so.2.0.0"]
RUN ["ln", "-s", "/usr/lib/libasound.so.2.0.0", "/lib64/"]

ADD ogg /ogg_build/
RUN ["bash", "/ogg_build/build-ogg.sh"]
Expand Down Expand Up @@ -98,4 +97,5 @@ RUN echo "$BASE_IMAGE"
ADD pypy /pypy_build/
ARG BASE_IMAGE2=manylinux1_x86_64
RUN if [ "$BASE_IMAGE2" = "manylinux2010_x86_64" ] ; then bash /pypy_build/getpypy64.sh ; else echo "no pypy on manylinux1" ; fi
RUN if [ "$BASE_IMAGE2" = "manylinux2014_x86_64" ] ; then bash /pypy_build/getpypy64.sh ; else echo "no pypy on manylinux1" ; fi

0 comments on commit adfdc1b

Please sign in to comment.