From 1bf3cb04876d0291103101e10f4192dda6e6a258 Mon Sep 17 00:00:00 2001 From: Simon Rit Date: Sun, 15 Jan 2023 23:12:27 +0100 Subject: [PATCH 1/2] ENH: Build Linux ARM Python packages --- .github/workflows/build-test-package-python-cuda.yml | 5 +++-- .github/workflows/build-test-package.yml | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-test-package-python-cuda.yml b/.github/workflows/build-test-package-python-cuda.yml index 5d4b1bc44..d440750a9 100644 --- a/.github/workflows/build-test-package-python-cuda.yml +++ b/.github/workflows/build-test-package-python-cuda.yml @@ -14,7 +14,7 @@ jobs: max-parallel: 2 matrix: python-version: ["37", "38", "39", "310", "311"] - manylinux-platform: ["_2_28-x64","2014-x64"] + manylinux-platform: ["_2_28-x64","2014-x64","_2_28-aarch64"] steps: - uses: actions/checkout@v3 @@ -24,7 +24,6 @@ jobs: IPP_DOWNLOAD_GIT_TAG=${{ env.itk-python-package-tag }} IPP_DOWNLOAD_ORG=${{ env.itk-python-package-org }} curl -L https://raw.githubusercontent.com/${IPP_DOWNLOAD_ORG:=InsightSoftwareConsortium}/ITKPythonPackage/${IPP_DOWNLOAD_GIT_TAG:=master}/scripts/dockcross-manylinux-download-cache-and-build-module-wheels.sh -O - export ITK_MODULE_NO_CLEANUP=TRUE chmod u+x dockcross-manylinux-download-cache-and-build-module-wheels.sh - name: 'Build 🐍 Python 📦 package' @@ -50,6 +49,8 @@ jobs: rm -rf ITKPythonPackage export MANYLINUX_VERSION=`(echo ${MANYLINUX_PLATFORM} | cut -d '-' -f 1)` export TARGET_ARCH=`(echo ${MANYLINUX_PLATFORM} | cut -d '-' -f 2)` + export ITK_MODULE_NO_CLEANUP=TRUE + export NO_SUDO=TRUE echo "Building for manylinux specialization ${MANYLINUX_VERSION} and target architecture ${TARGET_ARCH}" ./dockcross-manylinux-download-cache-and-build-module-wheels.sh $CMAKE_OPTIONS -c "-DCUDAToolkit_ROOT=/usr/lib64/cuda116 -DCMAKE_CUDA_COMPILER=/usr/lib64/cuda116/bin/nvcc -DRTK_CUDA_VERSION=11.6" -x "libcuda.so;libcuda.so.1;libcudart.so;libcudart.so.11.0;libcublas.so;libcublas.so.11;libcublasLt.so;libcublasLt.so.11;libcufft.so;libcufft.so.10" cp${{ matrix.python-version }} mv *zst ../.. diff --git a/.github/workflows/build-test-package.yml b/.github/workflows/build-test-package.yml index 6aa2806f5..50e69903e 100644 --- a/.github/workflows/build-test-package.yml +++ b/.github/workflows/build-test-package.yml @@ -9,6 +9,6 @@ jobs: python-build-workflow: uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-package-python.yml@e63df7ae8a13af6e1bf5b0bcffd45252e133faad with: - manylinux-platforms: '["_2_28-x64","2014-x64"]' + cmake-options: '-DCMAKE_CXX_FLAGS:STRING=-fno-lto' secrets: pypi_password: ${{ secrets.pypi_password }} From 415f0e20e1f44b056de18b10db670b46bac17026 Mon Sep 17 00:00:00 2001 From: Simon Rit Date: Fri, 20 Jan 2023 06:43:51 +0100 Subject: [PATCH 2/2] ENH: Validate wheel build output Adapted from InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction@5de5a18bd34c267c3b1a275d88fb3b0f1c1965cd --- .../build-test-package-python-cuda.yml | 28 +++++++++++++++++++ .github/workflows/build-test-package.yml | 2 +- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-test-package-python-cuda.yml b/.github/workflows/build-test-package-python-cuda.yml index d440750a9..c3c59a4f1 100644 --- a/.github/workflows/build-test-package-python-cuda.yml +++ b/.github/workflows/build-test-package-python-cuda.yml @@ -55,6 +55,23 @@ jobs: ./dockcross-manylinux-download-cache-and-build-module-wheels.sh $CMAKE_OPTIONS -c "-DCUDAToolkit_ROOT=/usr/lib64/cuda116 -DCMAKE_CUDA_COMPILER=/usr/lib64/cuda116/bin/nvcc -DRTK_CUDA_VERSION=11.6" -x "libcuda.so;libcuda.so.1;libcudart.so;libcudart.so.11.0;libcublas.so;libcublas.so.11;libcublasLt.so;libcublasLt.so.11;libcufft.so;libcufft.so.10" cp${{ matrix.python-version }} mv *zst ../.. + - name: Validate build output + shell: bash + run: | + python -m pip install twine + ls dist/ + + MANYLINUX_PLATFORM=${{ matrix.manylinux-platform }} + MANYLINUX_VERSION=`(echo ${MANYLINUX_PLATFORM} | cut -d '-' -f 1)` + TARGET_ARCH_NAME=`(echo ${MANYLINUX_PLATFORM} | cut -d '-' -f 2)` + if [[ ${TARGET_ARCH_NAME} == "x64" ]]; then + TARGET_ARCH_NAME="x86_64" # Match auditwheel naming convention + fi + WHEEL_PATTERN="dist/itk_*cp${{ matrix.python-version }}*manylinux${MANYLINUX_VERSION}*${TARGET_ARCH_NAME}.whl" + + echo "Searching for wheels matching pattern ${WHEEL_PATTERN}" + python -m twine check ${WHEEL_PATTERN} + - name: Publish Python package as GitHub Artifact uses: actions/upload-artifact@v3 with: @@ -113,6 +130,17 @@ jobs: mkdir -p '${{ github.workspace }}\dist' cp 'dist\*.whl' '${{ github.workspace }}\dist' + - name: Validate build output + shell: bash + run: | + python -m pip install twine + ls dist/ + + WHEEL_PATTERN="dist/itk_*cp3${{ matrix.python-version-minor }}*win*.whl" + echo "Searching for wheels matching pattern ${WHEEL_PATTERN}" + + python -m twine check ${WHEEL_PATTERN} + - name: Publish Python package as GitHub Artifact uses: actions/upload-artifact@v3 with: diff --git a/.github/workflows/build-test-package.yml b/.github/workflows/build-test-package.yml index 50e69903e..f4901a7e2 100644 --- a/.github/workflows/build-test-package.yml +++ b/.github/workflows/build-test-package.yml @@ -7,7 +7,7 @@ jobs: uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-cxx.yml@e63df7ae8a13af6e1bf5b0bcffd45252e133faad python-build-workflow: - uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-package-python.yml@e63df7ae8a13af6e1bf5b0bcffd45252e133faad + uses: InsightSoftwareConsortium/ITKRemoteModuleBuildTestPackageAction/.github/workflows/build-test-package-python.yml@5de5a18bd34c267c3b1a275d88fb3b0f1c1965cd with: cmake-options: '-DCMAKE_CXX_FLAGS:STRING=-fno-lto' secrets: