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/install_libssh.sh b/build-scripts/manylinux-container-image/install_libssh.sh index 5fa161dbd..baa8e85b7 100755 --- a/build-scripts/manylinux-container-image/install_libssh.sh +++ b/build-scripts/manylinux-container-image/install_libssh.sh @@ -104,6 +104,7 @@ cmake "${LIB_CLONE_DIR}" \ -DCLIENT_TESTING=OFF \ -DSERVER_TESTING=OFF \ -DUNIT_TESTING=OFF \ + -DWITH_EXAMPLES=OFF \ -DWITH_GSSAPI=ON \ -DWITH_SERVER=OFF \ -DWITH_PCAP=OFF \ diff --git a/build-scripts/manylinux-container-image/install_openssl.sh b/build-scripts/manylinux-container-image/install_openssl.sh index 4db36ef0e..577f2e838 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" 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" diff --git a/docs/changelog-fragments/740.contrib.rst b/docs/changelog-fragments/740.contrib.rst new file mode 100644 index 000000000..815a4d99c --- /dev/null +++ b/docs/changelog-fragments/740.contrib.rst @@ -0,0 +1,3 @@ +The CI infrastructure now produces ``manylinux_2_31_armv7l`` base images +with ``libssh`` and ``openssl`` pre-built -- by :user:`Jakuje` and +:user:`webknjaz`.