-
Notifications
You must be signed in to change notification settings - Fork 66
142 lines (140 loc) · 7.68 KB
/
pip-packaging-linux.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
130
131
132
133
134
135
136
137
138
139
140
141
142
name: pip packaging linux
on:
release:
types: [published]
jobs:
build:
name: build pip wheel
runs-on: ubuntu-latest
# cf. https://github.com/GUDHI/gudhi-deploy/blob/main/Dockerfile_for_pip
container: gudhi/pip_for_gudhi:2024.10.02
steps:
# Should use actions/checkout@v4, but requires node20, not available for quay.io/pypa/manylinux2014_x86_64
- uses: actions/checkout@v3
with:
submodules: true
# 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.*)
- name: Build wheel for Python 3.8
run: |
mkdir build_38
cd build_38
cmake -DCMAKE_BUILD_TYPE=Release -DPython_EXECUTABLE=$PYTHON38/bin/python ..
cd src/python
$PYTHON38/bin/python -m build -n -w
auditwheel repair dist/*.whl
- name: Install and test wheel for Python 3.8
run: |
$PYTHON38/bin/python -m pip install --user pytest build_38/src/python/dist/*.whl
$PYTHON38/bin/python -m pip install numpy --upgrade
$PYTHON38/bin/python -c "import gudhi; print(gudhi.__version__)"
$PYTHON38/bin/python -m pytest -v src/python/test/test_alpha_complex.py
$PYTHON38/bin/python -m pytest -v src/python/test/test_delaunay_complex.py
$PYTHON38/bin/python -m pytest -v src/python/test/test_bottleneck_distance.py
$PYTHON38/bin/python -m pytest -v src/python/test/test_cubical_complex.py
$PYTHON38/bin/python -m pytest -v src/python/test/test_rips_complex.py
- name: Build wheel for Python 3.9
run: |
mkdir build_39
cd build_39
cmake -DCMAKE_BUILD_TYPE=Release -DPython_EXECUTABLE=$PYTHON39/bin/python ..
cd src/python
$PYTHON39/bin/python -m build -n -w
auditwheel repair dist/*.whl
# For python >=3.9, numpy >= 2.0 is used to package and test ABI compatibility with numpy 1.X
# cf. https://numpy.org/doc/stable/dev/depending_on_numpy.html#numpy-2-0-specific-advice
# gudhi requires numpy >= 1.15.0, but minimal numpy version for python 3.9 is 1.19.3 for instance
# numpy~=1.19.3 means any numpy=1.19.*, but also numpy>=1.19.3 (numpy~=1.19 do not work as it means any numpy==1.*)
- name: Install and test wheel for Python 3.9
run: |
$PYTHON39/bin/python -m pip install --user pytest build_39/src/python/dist/*.whl
$PYTHON39/bin/python -m pip install numpy~=1.19.3
$PYTHON39/bin/python -c "import gudhi; print(gudhi.__version__)"
$PYTHON39/bin/python -m pytest -v src/python/test/test_alpha_complex.py
$PYTHON39/bin/python -m pytest -v src/python/test/test_delaunay_complex.py
$PYTHON39/bin/python -m pytest -v src/python/test/test_bottleneck_distance.py
$PYTHON39/bin/python -m pytest -v src/python/test/test_cubical_complex.py
$PYTHON39/bin/python -m pytest -v src/python/test/test_rips_complex.py
- name: Build wheel for Python 3.10
run: |
mkdir build_310
cd build_310
cmake -DCMAKE_BUILD_TYPE=Release -DPython_EXECUTABLE=$PYTHON310/bin/python ..
cd src/python
$PYTHON310/bin/python -m build -n -w
auditwheel repair dist/*.whl
- name: Install and test wheel for Python 3.10
run: |
$PYTHON310/bin/python -m pip install --user pytest build_310/src/python/dist/*.whl
$PYTHON310/bin/python -m pip install numpy~=1.21.6
$PYTHON310/bin/python -c "import gudhi; print(gudhi.__version__)"
$PYTHON310/bin/python -m pytest -v src/python/test/test_alpha_complex.py
$PYTHON310/bin/python -m pytest -v src/python/test/test_delaunay_complex.py
$PYTHON310/bin/python -m pytest -v src/python/test/test_bottleneck_distance.py
$PYTHON310/bin/python -m pytest -v src/python/test/test_cubical_complex.py
$PYTHON310/bin/python -m pytest -v src/python/test/test_rips_complex.py
- name: Build wheel for Python 3.11
run: |
mkdir build_311
cd build_311
cmake -DCMAKE_BUILD_TYPE=Release -DPython_EXECUTABLE=$PYTHON311/bin/python ..
cd src/python
$PYTHON311/bin/python -m build -n -w
auditwheel repair dist/*.whl
- name: Install and test wheel for Python 3.11
run: |
$PYTHON311/bin/python -m pip install --user pytest build_311/src/python/dist/*.whl
$PYTHON311/bin/python -m pip install numpy~=1.23.2
$PYTHON311/bin/python -c "import gudhi; print(gudhi.__version__)"
$PYTHON311/bin/python -m pytest -v src/python/test/test_alpha_complex.py
$PYTHON311/bin/python -m pytest -v src/python/test/test_delaunay_complex.py
$PYTHON311/bin/python -m pytest -v src/python/test/test_bottleneck_distance.py
$PYTHON311/bin/python -m pytest -v src/python/test/test_cubical_complex.py
$PYTHON311/bin/python -m pytest -v src/python/test/test_rips_complex.py
- name: Build wheel for Python 3.12
run: |
mkdir build_312
cd build_312
cmake -DCMAKE_BUILD_TYPE=Release -DPython_EXECUTABLE=$PYTHON312/bin/python ..
cd src/python
$PYTHON312/bin/python -m build -n -w
auditwheel repair dist/*.whl
- name: Install and test wheel for Python 3.12
run: |
$PYTHON312/bin/python -m pip install --user pytest build_312/src/python/dist/*.whl
$PYTHON312/bin/python -m pip install numpy~=1.26.0
$PYTHON312/bin/python -c "import gudhi; print(gudhi.__version__)"
$PYTHON312/bin/python -m pytest -v src/python/test/test_alpha_complex.py
$PYTHON312/bin/python -m pytest -v src/python/test/test_delaunay_complex.py
$PYTHON312/bin/python -m pytest -v src/python/test/test_bottleneck_distance.py
$PYTHON312/bin/python -m pytest -v src/python/test/test_cubical_complex.py
$PYTHON312/bin/python -m pytest -v src/python/test/test_rips_complex.py
- name: Build wheel for Python 3.13
run: |
mkdir build_313
cd build_313
cmake -DCMAKE_BUILD_TYPE=Release -DPython_EXECUTABLE=$PYTHON313/bin/python ..
cd src/python
$PYTHON313/bin/python -m build -n -w
auditwheel repair dist/*.whl
- name: Install and test wheel for Python 3.13
run: |
$PYTHON313/bin/python -m pip install --user pytest build_313/src/python/dist/*.whl
$PYTHON313/bin/python -m pip install numpy~=1.26.0
$PYTHON313/bin/python -c "import gudhi; print(gudhi.__version__)"
$PYTHON313/bin/python -m pytest -v src/python/test/test_alpha_complex.py
$PYTHON313/bin/python -m pytest -v src/python/test/test_delaunay_complex.py
$PYTHON313/bin/python -m pytest -v src/python/test/test_bottleneck_distance.py
$PYTHON313/bin/python -m pytest -v src/python/test/test_cubical_complex.py
$PYTHON313/bin/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: |
$PYTHON38/bin/python -m twine upload build_38/src/python/wheelhouse/*.whl
$PYTHON38/bin/python -m twine upload build_39/src/python/wheelhouse/*.whl
$PYTHON38/bin/python -m twine upload build_310/src/python/wheelhouse/*.whl
$PYTHON38/bin/python -m twine upload build_311/src/python/wheelhouse/*.whl
$PYTHON38/bin/python -m twine upload build_312/src/python/wheelhouse/*.whl
$PYTHON38/bin/python -m twine upload build_313/src/python/wheelhouse/*.whl