diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5a2f5b8..0628db8 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -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 diff --git a/Makefile b/Makefile index 048dd45..1eb2bfc 100644 --- a/Makefile +++ b/Makefile @@ -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 # diff --git a/README.md b/README.md index 08a6239..6322579 100644 --- a/README.md +++ b/README.md @@ -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) diff --git a/common/common.manylinux2014 b/common/common.manylinux2014 index f361e96..a05531b 100644 --- a/common/common.manylinux2014 +++ b/common/common.manylinux2014 @@ -16,6 +16,7 @@ RUN \ wget \ nasm \ zip \ + libatomic \ && \ yum clean all && \ # Remove sudo provided by devtoolset since it doesn't work with diff --git a/common/common.manylinux_2_34 b/common/common.manylinux_2_34 new file mode 100644 index 0000000..d55b32c --- /dev/null +++ b/common/common.manylinux_2_34 @@ -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/ diff --git a/manylinux2014-x86/Dockerfile.in b/manylinux2014-x86/Dockerfile.in index 1f3710a..6a3528b 100644 --- a/manylinux2014-x86/Dockerfile.in +++ b/manylinux2014-x86/Dockerfile.in @@ -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" diff --git a/manylinux_2_28-x64/Dockerfile.in b/manylinux_2_28-x64/Dockerfile.in index 25eec31..821a4a2 100644 --- a/manylinux_2_28-x64/Dockerfile.in +++ b/manylinux_2_28-x64/Dockerfile.in @@ -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 \ diff --git a/manylinux_2_28-x64/Toolchain.cmake b/manylinux_2_28-x64/Toolchain.cmake index 82e4309..7b93e7d 100644 --- a/manylinux_2_28-x64/Toolchain.cmake +++ b/manylinux_2_28-x64/Toolchain.cmake @@ -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) diff --git a/manylinux_2_34-x64/Dockerfile.in b/manylinux_2_34-x64/Dockerfile.in new file mode 100644 index 0000000..df76bae --- /dev/null +++ b/manylinux_2_34-x64/Dockerfile.in @@ -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" diff --git a/manylinux_2_34-x64/Toolchain.cmake b/manylinux_2_34-x64/Toolchain.cmake new file mode 100644 index 0000000..bafac17 --- /dev/null +++ b/manylinux_2_34-x64/Toolchain.cmake @@ -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)