-
Notifications
You must be signed in to change notification settings - Fork 67
129 lines (126 loc) · 5.4 KB
/
pip-packaging-windows.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
name: pip packaging windows
on:
release:
types: [published]
jobs:
# 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.*)
wheels_3_8:
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_delaunay_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
wheels:
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_delaunay_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