Skip to content

Merge pull request #1087 from VincentRouvreau/gudhi_3.9.0rc2 #38

Merge pull request #1087 from VincentRouvreau/gudhi_3.9.0rc2

Merge pull request #1087 from VincentRouvreau/gudhi_3.9.0rc2 #38

name: pip packaging windows
on:
release:
types: [published]
# Python 3.8 specific case where NumPy 2.x will not be supported
# numpy~=1.21.4 means any numpy=1.21.*, but also numpy>=1.21.4 (numpy~=1.21 do not work as it means any numpy==1.*)
jobs:
build:
runs-on: windows-latest
name: Build wheels for Python 3.8
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: actions/setup-python@v5
with:
python-version: 3.8
architecture: x64
- name: Install dependencies
run: |
$ErrorActionPreference = 'Stop'
set VCPKG_BUILD_TYPE=release
vcpkg install eigen3 cgal --triplet x64-windows
vcpkg version
ls "C:\vcpkg\installed\x64-windows\bin\"
python -m pip install --user numpy~=1.17.3
python -m pip install --user -r .\ext\gudhi-deploy\build-requirements.txt
python -m pip install --user twine
python -m pip list
- name: Build python wheel and install it
run: |
$ErrorActionPreference = 'Stop'
mkdir build
cd ".\build\"
cmake -DCMAKE_BUILD_TYPE=Release -DFORCE_EIGEN_DEFAULT_DENSE_INDEX_TYPE_TO_INT=ON -DCMAKE_TOOLCHAIN_FILE=c:\vcpkg\scripts\buildsystems\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows ..
cd ".\src\python\"
cp "C:\vcpkg\installed\x64-windows\bin\mpfr*.dll" ".\gudhi\"
cp "C:\vcpkg\installed\x64-windows\bin\gmp*.dll" ".\gudhi\"
python -m build -n -w
ls ".\dist\"
cd ".\dist\"
Get-ChildItem *.whl | ForEach-Object{python -m pip install --user $_.Name}
- name: Test python wheel
run: |
$ErrorActionPreference = 'Stop'
python -m pip install --user numpy --upgrade
python -m pip install --user pytest
python -c "import gudhi; print(gudhi.__version__)"
python -m pytest -v ".\src\python\test\test_alpha_complex.py"
python -m pytest -v ".\src\python\test\test_bottleneck_distance.py"
python -m pytest -v ".\src\python\test\test_cubical_complex.py"
python -m pytest -v ".\src\python\test\test_rips_complex.py"
- name: Publish on PyPi
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
run: python -m twine upload build/src/python/dist/*.whl
# Python 3.9+ specific case where NumPy 2.x will be supported
jobs:

Check failure on line 62 in .github/workflows/pip-packaging-windows.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/pip-packaging-windows.yml

Invalid workflow file

You have an error in your yaml syntax on line 62
build:
runs-on: windows-latest
strategy:
max-parallel: 4
matrix:
python-version: ['3.9', '3.10', '3.11', '3.12']
include:
- python-version: '3.9'
numpy-version: '1.19.3'
- python-version: '3.10'
numpy-version: '1.21.6'
- python-version: '3.11'
numpy-version: '1.23.2'
- python-version: '3.12'
numpy-version: '1.26.0'
name: Build wheels for Python ${{ matrix.python-version }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
architecture: x64
# For python >=3.9, numpy >= 2.0 for package build and ABI compatibility with numpy 1.X and 2.X
# cf. https://numpy.org/doc/stable/dev/depending_on_numpy.html#numpy-2-0-specific-advice
- name: Install dependencies
run: |
$ErrorActionPreference = 'Stop'
set VCPKG_BUILD_TYPE=release
vcpkg install eigen3 cgal --triplet x64-windows
vcpkg version
ls "C:\vcpkg\installed\x64-windows\bin\"
python -m pip install --user numpy>=2.0
python -m pip install --user -r .\ext\gudhi-deploy\build-requirements.txt
python -m pip install --user twine
python -m pip list
- name: Build python wheel and install it
run: |
$ErrorActionPreference = 'Stop'
mkdir build
cd ".\build\"
cmake -DCMAKE_BUILD_TYPE=Release -DFORCE_EIGEN_DEFAULT_DENSE_INDEX_TYPE_TO_INT=ON -DCMAKE_TOOLCHAIN_FILE=c:\vcpkg\scripts\buildsystems\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows ..
cd ".\src\python\"
cp "C:\vcpkg\installed\x64-windows\bin\mpfr*.dll" ".\gudhi\"
cp "C:\vcpkg\installed\x64-windows\bin\gmp*.dll" ".\gudhi\"
python -m build -n -w
ls ".\dist\"
cd ".\dist\"
Get-ChildItem *.whl | ForEach-Object{python -m pip install --user $_.Name}
# Test ABI compatibility with numpy 1.X
- name: Test python wheel
run: |
$ErrorActionPreference = 'Stop'
python -m pip install --user numpy~=${{ matrix.numpy-version }}
python -m pip install --user pytest
python -c "import gudhi; print(gudhi.__version__)"
python -m pytest -v ".\src\python\test\test_alpha_complex.py"
python -m pytest -v ".\src\python\test\test_bottleneck_distance.py"
python -m pytest -v ".\src\python\test\test_cubical_complex.py"
python -m pytest -v ".\src\python\test\test_rips_complex.py"
- name: Publish on PyPi
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
run: python -m twine upload build/src/python/dist/*.whl