Merge pull request #863 from hjmjohnson/master

ENH: Adding initial manylinux_2_34-x64 support.
This commit is contained in:
Matt McCormick
2025-03-05 12:40:57 -05:00
committed by GitHub
10 changed files with 108 additions and 9 deletions

View File

@ -1373,11 +1373,11 @@ jobs:
cd ninja
./../tools/dockcross-cmake-builder.sh ${{ matrix.arch_name.image }} ${{ matrix.arch_name.ninja_arg }}
# Updated on 12/09/2022
# Updated on 04/04/2025 (Use openSSL_1_1_1w to fix error: implicit declaration of function 'memcmp')
- name: openssl build test
if: ${{ matrix.arch_name.openssl == 'yes' && (matrix.arch_name.multiarch == 'yes' || env.HOST_ARCH == 'amd64') }}
run: |
git clone --depth 1 --branch OpenSSL_1_1_1q https://github.com/openssl/openssl.git
git clone --depth 1 --branch OpenSSL_1_1_1w https://github.com/openssl/openssl.git
cd openssl
wget https://raw.githubusercontent.com/mavlink/MAVSDK/main/third_party/openssl/dockcross-android.patch
patch -p 0 < dockcross-android.patch

View File

@ -49,7 +49,7 @@ STANDARD_IMAGES := android-arm android-arm64 android-x86 android-x86_64 \
# Generated Dockerfiles.
GEN_IMAGES := android-arm android-arm64 \
linux-i686 linux-x86 linux-x64 linux-x64-clang linux-arm64 linux-arm64-musl linux-arm64-full \
manylinux_2_28-x64 \
manylinux_2_28-x64 manylinux_2_34-x64 \
manylinux2014-x64 manylinux2014-x86 \
manylinux2014-aarch64 linux-arm64-lts \
web-wasm web-wasi web-wasi-emulated-threads web-wasi-threads linux-mips linux-mips-uclibc linux-mips-lts windows-arm64 windows-armv7 \
@ -68,11 +68,11 @@ MULTIARCH_IMAGES := linux-arm64 \
GEN_IMAGE_DOCKERFILES = $(addsuffix /Dockerfile,$(GEN_IMAGES))
# These images are expected to have explicit rules for *both* build and testing
NON_STANDARD_IMAGES := manylinux_2_28-x64 manylinux2014-x64 manylinux2014-x86 \
NON_STANDARD_IMAGES := manylinux_2_28-x64 manylinux_2_34-x64 manylinux2014-x64 manylinux2014-x86 \
manylinux2014-aarch64 web-wasm web-wasi-emulated-threads web-wasi-threads
# Docker composite files
DOCKER_COMPOSITE_SOURCES = common.docker common.debian common.manylinux2014 common.manylinux_2_28 common.buildroot \
DOCKER_COMPOSITE_SOURCES = common.docker common.debian common.manylinux2014 common.manylinux_2_28 common.manylinux_2_34 common.buildroot \
common.crosstool common.webassembly common.windows common-manylinux.crosstool common.dockcross \
common.label-and-env
DOCKER_COMPOSITE_FOLDER_PATH = common/
@ -128,6 +128,7 @@ $(GEN_IMAGE_DOCKERFILES) Dockerfile: %Dockerfile: %Dockerfile.in $(DOCKER_COMPOS
-e '/common.docker/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.docker' \
-e '/common.debian/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.debian' \
-e '/common.manylinux_2_28/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.manylinux_2_28' \
-e '/common.manylinux_2_34/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.manylinux_2_34' \
-e '/common.manylinux2014/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.manylinux2014' \
-e '/common.crosstool/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.crosstool' \
-e '/common.buildroot/ r $(DOCKER_COMPOSITE_FOLDER_PATH)common.buildroot' \
@ -230,6 +231,26 @@ manylinux_2_28-x64.test: manylinux_2_28-x64
&& chmod +x $(BIN)/dockcross-manylinux_2_28-x64
$(BIN)/dockcross-manylinux_2_28-x64 -i $(ORG)/manylinux_2_28-x64:latest /opt/python/cp310-cp310/bin/python test/run.py
#
# manylinux_2_34-x64
#
manylinux_2_34-x64: manylinux_2_34-x64/Dockerfile
mkdir -p $@/imagefiles && cp -r imagefiles $@/
$(DOCKER) build -t $(ORG)/manylinux_2_34-x64:$(TAG) \
-t $(ORG)/manylinux_2_34-x64:latest \
--build-arg IMAGE=$(ORG)/manylinux_2_34-x64 \
--build-arg VERSION=$(TAG) \
--build-arg VCS_REF=`git rev-parse --short HEAD` \
--build-arg VCS_URL=`git config --get remote.origin.url` \
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
-f manylinux_2_34-x64/Dockerfile .
rm -rf $@/imagefiles
manylinux_2_34-x64.test: manylinux_2_34-x64
$(DOCKER) run $(RM) $(ORG)/manylinux_2_34-x64:latest > $(BIN)/dockcross-manylinux_2_34-x64 \
&& chmod +x $(BIN)/dockcross-manylinux_2_34-x64
$(BIN)/dockcross-manylinux_2_34-x64 -i $(ORG)/manylinux_2_34-x64:latest /opt/python/cp310-cp310/bin/python test/run.py
#
# manylinux2014-x64
#

View File

@ -116,6 +116,7 @@ The dockcross script will execute the given command-line inside the container, a
| dockcross/linux-m68k-uclibc | m68k | GCC + uclibc | Linux |
| dockcross/linux-xtensa-uclibc | xtensa | GCC + uclibc | Linux |
| dockcross/manylinux_2_28-x64 | x86_64 | GCC | Linux |
| dockcross/manylinux_2_34-x64 | x86_64 | GCC | Linux |
| dockcross/manylinux2014-x86 | x86 | GCC | Linux |
| dockcross/manylinux2014-x64 | x86_64 | GCC | Linux |
| dockcross/linux-i686 | x86 | GCC | Linux |
@ -384,6 +385,12 @@ Standalone Linux i686 cross compiler.
Docker [manylinux_2_28](https://github.com/pypa/manylinux) image for building Linux x86_64 / amd64 [Python wheel packages](http://pythonwheels.com/). It includes Python 3.6, 3.7, 3.8, 3.9, 3.10 and 3.11. Also has support for the dockcross script, and it has installations of CMake, Ninja, and [scikit-build](http://scikit-build.org). For CMake, it sets **MANYLINUX_2_28** to \"TRUE\" in the toolchain.
### dockcross/manylinux_2_34-x64
![Docker Image Size (tag)](https://img.shields.io/docker/image-size/dockcross/manylinux_2_34-x64/latest) ![Docker Pulls](https://img.shields.io/docker/pulls/dockcross/manylinux_2_34-x64)
Docker [manylinux_2_34](https://github.com/pypa/manylinux) image for building Linux x86_64 / amd64 [Python wheel packages](http://pythonwheels.com/). It includes Python 3.8.10+, 3.9.5+, 3.10.0+. Also has support for the dockcross script, and it has installations of CMake, Ninja, and [scikit-build](http://scikit-build.org). For CMake, it sets **MANYLINUX_2_34** to \"TRUE\" in the toolchain.
### dockcross/manylinux2014-x64
![Docker Image Size (tag)](https://img.shields.io/docker/image-size/dockcross/manylinux2014-x64/latest) ![Docker Pulls](https://img.shields.io/docker/pulls/dockcross/manylinux2014-x64)

View File

@ -16,6 +16,7 @@ RUN \
wget \
nasm \
zip \
libatomic \
&& \
yum clean all && \
# Remove sudo provided by devtoolset since it doesn't work with

View File

@ -0,0 +1,30 @@
RUN \
set -x && \
yum upgrade -y almalinux-release && \
yum -y install \
gpg \
python3-devel \
zlib-devel \
gettext \
openssh-clients \
wget \
nasm \
zip \
&& \
yum clean all
# Image build scripts
COPY \
manylinux-common/install-python-packages.sh \
/buildscripts/
RUN \
set -x && \
# Remove sudo provided by devtoolset since it doesn't work with
# our sudo wrapper calling gosu.
rm -f /opt/rh/gcc-toolset-14/root/usr/bin/sudo && \
/buildscripts/install-python-packages.sh && \
rm -rf /buildscripts
# Runtime scripts
COPY manylinux-common/pre_exec.sh /dockcross/

View File

@ -1,5 +1,5 @@
# Recent versions address yum functionality
FROM quay.io/pypa/manylinux2014_i686:2024-07-20-e0def9a
FROM quay.io/pypa/manylinux2014_i686:2025-02-23-361da4c
LABEL maintainer="Matt McCormick matt@mmmccormick.com"

View File

@ -1,5 +1,5 @@
# Recent versions address yum functionality
FROM quay.io/pypa/manylinux_2_28_x86_64:2024-07-20-e0def9a
FROM quay.io/pypa/manylinux_2_28_x86_64:2025-02-15-d68c3fb
LABEL maintainer="Matt McCormick matt@mmmccormick.com"
@ -12,7 +12,7 @@ ENV DEFAULT_DOCKCROSS_IMAGE=dockcross/manylinux_2_28-x64
#include "common.docker"
ENV CROSS_TRIPLE=x86_64-linux-gnu
ENV CROSS_ROOT=/opt/rh/gcc-toolset-12/root/bin/
ENV CROSS_ROOT=/opt/rh/gcc-toolset-14/root/bin/
ENV AS=${CROSS_ROOT}/as \
AR=${CROSS_ROOT}/ar \
CC=${CROSS_ROOT}/gcc \

View File

@ -5,7 +5,7 @@ set(CMAKE_SYSTEM_PROCESSOR x86_64)
set(MANYLINUX_2_28 TRUE)
set(CROSS_ROOT /opt/rh/gcc-toolset-12/root/bin/)
set(CROSS_ROOT /opt/rh/gcc-toolset-14/root/bin/)
set(CMAKE_C_COMPILER ${CROSS_ROOT}/gcc)
set(CMAKE_CXX_COMPILER ${CROSS_ROOT}/g++)
set(CMAKE_Fortran_COMPILER ${CROSS_ROOT}/gfortran)

View File

@ -0,0 +1,29 @@
# Recent versions address yum functionality
FROM quay.io/pypa/manylinux_2_34_x86_64:2025-02-02-9ae4a5a
LABEL maintainer="Matt McCormick matt@mmmccormick.com"
ENV DEFAULT_DOCKCROSS_IMAGE=dockcross/manylinux_2_34-x64
#include "common.manylinux_2_34"
#include "common.dockcross"
#include "common.docker"
ENV CROSS_TRIPLE=x86_64-linux-gnu
ENV CROSS_ROOT=/opt/rh/gcc-toolset-14/root/bin/
ENV AS=${CROSS_ROOT}/as \
AR=${CROSS_ROOT}/ar \
CC=${CROSS_ROOT}/gcc \
CPP=${CROSS_ROOT}/cpp \
CXX=${CROSS_ROOT}/g++ \
LD=${CROSS_ROOT}/ld \
FC=${CROSS_ROOT}/gfortran
COPY linux-x64/${CROSS_TRIPLE}-noop.sh /usr/bin/${CROSS_TRIPLE}-noop
COPY manylinux_2_34-x64/Toolchain.cmake ${CROSS_ROOT}/../lib/
ENV CMAKE_TOOLCHAIN_FILE=${CROSS_ROOT}/../lib/Toolchain.cmake
#include "common.label-and-env"

View File

@ -0,0 +1,11 @@
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_CROSSCOMPILING FALSE)
set(CMAKE_SYSTEM_VERSION 1)
set(CMAKE_SYSTEM_PROCESSOR x86_64)
set(MANYLINUX_2_34 TRUE)
set(CROSS_ROOT /opt/rh/gcc-toolset-14/root/bin/)
set(CMAKE_C_COMPILER ${CROSS_ROOT}/gcc)
set(CMAKE_CXX_COMPILER ${CROSS_ROOT}/g++)
set(CMAKE_Fortran_COMPILER ${CROSS_ROOT}/gfortran)