diff --git a/.github/workflows/build-manylinux-container-images.yml b/.github/workflows/build-manylinux-container-images.yml index 8c67d4f45..fb5292797 100644 --- a/.github/workflows/build-manylinux-container-images.yml +++ b/.github/workflows/build-manylinux-container-images.yml @@ -38,17 +38,15 @@ jobs: - ARCH: ppc64le # Build containers for s390x - ARCH: s390x - # There are no base containers for these archs - # at https://quay.io/organization/pypa. - # Build containers for armv7l (ARM v7) - # - ARCH: armv7l - # QEMU_ARCH: arm/v7 - # Build containers for ppc64 - # - ARCH: ppc64 YEAR: - _2_24 - _2_28 - _2_34 + include: + - IMAGE: + ARCH: armv7l + HOST_OS: ubuntu-24.04-arm + YEAR: _2_31 # There are no base images prior to 2.31 for this arch env: LIBSSH_VERSION: 0.11.1 @@ -78,7 +76,7 @@ jobs: Set up QEMU ${{ env.QEMU_ARCH }} arch emulation with Podman if: >- - !contains(fromJSON('["aarch64", "amd64"]'), env.QEMU_ARCH) + !contains(fromJSON('["aarch64", "amd64", "armv7l"]'), env.QEMU_ARCH) run: > sudo podman run --rm --privileged diff --git a/build-scripts/manylinux-container-image/Dockerfile b/build-scripts/manylinux-container-image/Dockerfile index 37a78edf0..dfe9d2b7e 100644 --- a/build-scripts/manylinux-container-image/Dockerfile +++ b/build-scripts/manylinux-container-image/Dockerfile @@ -27,8 +27,6 @@ RUN \ fi ADD build_utils.sh /root/build_utils.sh -ADD install_perl.sh /root/install_perl.sh -RUN ./install_perl.sh "${RELEASE}" ADD install_libffi.sh /root/install_libffi.sh RUN ./install_libffi.sh "${RELEASE}" ADD install_openssl.sh /root/install_openssl.sh diff --git a/build-scripts/manylinux-container-image/install_libssh.sh b/build-scripts/manylinux-container-image/install_libssh.sh index 5fa161dbd..518c5454f 100755 --- a/build-scripts/manylinux-container-image/install_libssh.sh +++ b/build-scripts/manylinux-container-image/install_libssh.sh @@ -39,7 +39,7 @@ fi # make[2]: *** [examples/libssh_scp] Error 1 # make[1]: *** [examples/CMakeFiles/libssh_scp.dir/all] Error 2 # make: *** [all] Error 2 -export LDFLAGS="-pthread -ldl" +export LDFLAGS="-pthread" # NOTE: `PKG_CONFIG_PATH` is necessary for `cmake` to be able to locate # NOTE: C-headers files `*.h`. Otherwise, the error is: diff --git a/build-scripts/manylinux-container-image/install_openssl.sh b/build-scripts/manylinux-container-image/install_openssl.sh index 4db36ef0e..22c6e9f0d 100755 --- a/build-scripts/manylinux-container-image/install_openssl.sh +++ b/build-scripts/manylinux-container-image/install_openssl.sh @@ -21,6 +21,11 @@ BUILD_FLAGS="$OPENSSL_BUILD_FLAGS" if [[ "$1" =~ '^manylinux1_.*$' ]]; then PATH=/opt/perl/bin:$PATH fi +# Can't use `$(uname -m) = "armv7l"` because that returns what kernel we're +# using, and we build for armv7l with an ARM64 host. +if [ "$(readelf -h /proc/self/exe | grep -o 'Machine:.* ARM')" ]; then + BUILD_FLAGS="$OPENSSL_BUILD_FLAGS_ARMV7L" +fi if [ "$(readelf -h /proc/self/exe | grep -o 'Machine:.* S/390')" ]; then BUILD_FLAGS="$OPENSSL_BUILD_FLAGS_S390X" export CFLAGS="$CFLAGS -march=z10" @@ -32,4 +37,4 @@ make -j4 # https://github.com/openssl/openssl/issues/6685#issuecomment-403838728 make install_sw install_ssldirs popd -rm -rf openssl* +rm -rf ${OPENSSL_VERSION} diff --git a/build-scripts/manylinux-container-image/install_perl.sh b/build-scripts/manylinux-container-image/install_perl.sh deleted file mode 100755 index 27e70a9f6..000000000 --- a/build-scripts/manylinux-container-image/install_perl.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -set -xe - -unset RELEASE - -# Get script directory -MY_DIR=$(dirname "${BASH_SOURCE[0]}") - -# Get build utilities -source $MY_DIR/build_utils.sh - -PERL_SHA256="e6c185c9b09bdb3f1b13f678999050c639859a7ef39c8cad418448075f5918af" -PERL_VERSION="5.24.1" - -if [[ "$1" =~ "^manylinux1_*" ]]; then - fetch_source "perl-${PERL_VERSION}.tar.gz" "https://www.cpan.org/src/5.0" - check_sha256sum "perl-${PERL_VERSION}.tar.gz" ${PERL_SHA256} - - tar zxf perl-$PERL_VERSION.tar.gz && \ - cd perl-$PERL_VERSION && \ - ./Configure -des -Dprefix=/opt/perl && \ - make -j && make install -fi diff --git a/build-scripts/manylinux-container-image/openssl-version.sh b/build-scripts/manylinux-container-image/openssl-version.sh index e9d5e95f1..df84da34c 100644 --- a/build-scripts/manylinux-container-image/openssl-version.sh +++ b/build-scripts/manylinux-container-image/openssl-version.sh @@ -3,5 +3,6 @@ export OPENSSL_SHA256="344d0a79f1a9b08029b0744e2cc401a43f9c90acd1044d09a530b4885 # We need a base set of flags because on Windows using MSVC # enable-ec_nistp_64_gcc_128 doesn't work since there's no 128-bit type export OPENSSL_BUILD_FLAGS_WINDOWS="no-ssl3 no-ssl3-method no-zlib no-shared no-module no-comp no-dynamic-engine no-apps no-docs no-sm2-precomp no-atexit" +export OPENSSL_BUILD_FLAGS_ARMV7L="linux-armv4 ${OPENSSL_BUILD_FLAGS_WINDOWS}" export OPENSSL_BUILD_FLAGS_S390X="${OPENSSL_BUILD_FLAGS_WINDOWS}" export OPENSSL_BUILD_FLAGS="${OPENSSL_BUILD_FLAGS_WINDOWS} enable-ec_nistp_64_gcc_128"