-
Notifications
You must be signed in to change notification settings - Fork 67
128 lines (125 loc) · 5.25 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
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:
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