ENH: Update to pyproject.toml #120
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: 'Package ITKCudaCommon with CUDA' | |
on: [push,pull_request] | |
env: | |
itk-wheel-tag: 'v5.4.0' | |
itk-python-package-tag: '12af8e3b5be219e859266d28cc324d29af6489af' | |
itk-python-package-org: 'SimonRit' | |
jobs: | |
build-windows-cuda-python-packages: | |
runs-on: self-hosted-windows | |
strategy: | |
max-parallel: 2 | |
matrix: | |
python3-minor-version: ["11"] | |
cuda-version: ["116"] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
path: "im" | |
- name: 'Reduce source path length' | |
shell: bash | |
run: | | |
# Move ITKPythonBuilds archive to the checked-out source | |
if test -f ../../im/ITKPythonBuilds-windows.zip; then | |
mv ../../im/*.zip im | |
fi | |
rm -fr ../../im | |
# Move checked-out source to a shorter path to avoid Windows path length issues | |
mv im ../../ | |
- name: 'Fetch build script' | |
shell: pwsh | |
run: | | |
cd ../../im | |
$ITKPYTHONPACKAGE_TAG = "${{ env.itk-python-package-tag }}" | |
$ITKPYTHONPACKAGE_ORG = "${{ env.itk-python-package-org }}" | |
$SCRIPT_UPSTREAM = "https://raw.githubusercontent.com/$ITKPYTHONPACKAGE_ORG/ITKPythonPackage/$ITKPYTHONPACKAGE_TAG/scripts/windows-download-cache-and-build-module-wheels.ps1" | |
echo "Fetching $SCRIPT_UPSTREAM" | |
(new-object net.webclient).DownloadString($SCRIPT_UPSTREAM) > windows-download-cache-and-build-module-wheels.ps1 | |
- name: 'Build 🐍 Python 📦 package' | |
shell: pwsh | |
run: | | |
if (Test-Path dist) { rm dist -r -fo } | |
cd ../../im | |
& "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\Launch-VsDevShell.ps1" -Arch amd64 -SkipAutomaticLocation | |
$env:CC="cl.exe" | |
$env:CXX="cl.exe" | |
$env:ITK_PACKAGE_VERSION = "${{ env.itk-wheel-tag }}" | |
$env:ITKPYTHONPACKAGE_TAG = "${{ env.itk-python-package-tag }}" | |
$env:ITKPYTHONPACKAGE_ORG = "${{ env.itk-python-package-org }}" | |
$env:ITK_MODULE_PREQ = "${{ env.itk-module-deps }}" | |
$CUDA_VERSION = "${{ matrix.cuda-version }}" | |
$CUDA_VERSION_MAJOR=$CUDA_VERSION.substring(0,2) | |
$CUDA_VERSION_MINOR=$CUDA_VERSION.substring(2,$CUDA_VERSION.Length-2) | |
$env:CUDA_PATH = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}" | |
$env:Path = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}\bin;" + $env:Path | |
$LIBCUDART= (Get-Item "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}\bin\cudart64*dll" ).Name | |
((Get-Content -Path pyproject.toml) -replace "itk-cudacommon","itk-cudacommon-cuda${CUDA_VERSION}") | Set-Content -Path pyproject.toml | |
./windows-download-cache-and-build-module-wheels.ps1 "${{ matrix.python3-minor-version }}" -setup_options "--lib-paths ""C:/Program\ Files/NVIDIA\ GPU\ Computing\ Toolkit/CUDA/v${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}/bin"" --exclude-libs ""nvcuda.dll;${LIBCUDART}""" -cmake_options """-DCUDACOMMON_CUDA_VERSION=${CUDA_VERSION_MAJOR}.${CUDA_VERSION_MINOR}"" ""-DITK_USE_PYTHON_LIMITED_API=FALSE""" | |
mkdir -p '${{ github.workspace }}\dist' | |
cp 'dist\*.whl' '${{ github.workspace }}\dist' | |
- name: Validate build output | |
shell: pwsh | |
run: | | |
python -m pip install twine | |
ls dist/ | |
$WHEEL_PATTERN = "dist/itk_*cp3${{ matrix.python3-minor-version }}*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@v4 | |
with: | |
name: WindowsWheel3${{ matrix.python3-minor-version }}-cuda${{ matrix.cuda-version }} | |
path: dist/*.whl | |
publish-python-packages-to-pypi: | |
needs: | |
- build-windows-cuda-python-packages | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Download Python Packages | |
uses: actions/download-artifact@v4 | |
- name: Prepare packages for upload | |
run: | | |
ls -R | |
for d in */; do | |
mv ${d}/*.whl . | |
done | |
mkdir dist | |
mv *.whl dist/ | |
ls dist | |
- name: Publish 🐍 Python 📦 package to PyPI | |
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') | |
uses: pypa/[email protected] | |
with: | |
skip_existing: true | |
user: __token__ | |
password: ${{ secrets.pypi_password }} |