5
5
branches :
6
6
- main
7
7
tags :
8
- - " v*"
8
+ - " quaddtype-v*"
9
+ paths :
10
+ - " quaddtype/**"
9
11
pull_request :
12
+ paths :
13
+ - " quaddtype/**"
14
+ workflow_dispatch :
10
15
11
16
jobs :
12
17
build_wheels_linux :
@@ -29,40 +34,27 @@ jobs:
29
34
CIBW_MANYLINUX_X86_64_IMAGE : manylinux_2_28
30
35
CIBW_BUILD_VERBOSITY : " 3"
31
36
CIBW_BEFORE_ALL : |
32
- yum install -y wget
33
- wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh
34
- bash miniconda.sh -b -p /root/miniconda
35
- export PATH="/root/miniconda/bin:$PATH"
36
- conda config --set always_yes yes --set changeps1 no
37
- conda update -q conda
38
- conda info -a
39
- conda config --add channels conda-forge
40
- conda config --set channel_priority strict
41
- conda create -n build_env python=3.10
42
- source activate build_env
43
- conda install -y sleef
37
+ git clone https://github.com/shibatch/sleef.git
38
+ cd sleef
39
+ cmake -S . -B build -DSLEEF_BUILD_QUAD:BOOL=ON -DSLEEF_BUILD_SHARED_LIBS:BOOL=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON
40
+ cmake --build build/ --clean-first -j
41
+ cmake --install build --prefix /usr/local
44
42
CIBW_ENVIRONMENT : >
45
- LD_LIBRARY_PATH="/root/miniconda/envs/build_env/lib:$LD_LIBRARY_PATH"
46
- LIBRARY_PATH="/root/miniconda/envs/build_env/lib:$LIBRARY_PATH"
47
- CFLAGS="-I/root/miniconda/envs/build_env/include $CFLAGS"
48
- CXXFLAGS="-I/root/miniconda/envs/build_env/include $CXXFLAGS"
49
- LDFLAGS="-L/root/miniconda/envs/build_env/lib $LDFLAGS"
50
- SLEEF_PATH="/root/miniconda/envs/build_env"
51
- CIBW_REPAIR_WHEEL_COMMAND : >
43
+ CFLAGS="-I/usr/local/include $CFLAGS"
44
+ CXXFLAGS="-I/usr/local/include $CXXFLAGS"
45
+ LDFLAGS="-L/usr/local/lib64 $LDFLAGS"
46
+ LD_LIBRARY_PATH="/usr/local/lib64:$LD_LIBRARY_PATH"
47
+ CIBW_REPAIR_WHEEL_COMMAND : |
52
48
auditwheel repair -w {dest_dir} --plat manylinux_2_28_x86_64 {wheel}
53
49
CIBW_TEST_COMMAND : |
54
- python -c "import os; print('SLEEF_PATH:', os.environ.get('SLEEF_PATH', 'Not set'))"
55
- python -c "import platform; print('Python version:', platform.python_version())"
56
- python -c "import sys; print('sys.platform:', sys.platform)"
57
- python -c "import quaddtype; print('quaddtype imported successfully')"
58
50
pip install {package}[test]
59
51
pytest {project}/tests
60
52
CIBW_TEST_EXTRAS : " test"
61
53
run : |
62
54
python -m cibuildwheel --output-dir wheelhouse
63
55
working-directory : ./quaddtype
64
56
65
- - uses : actions/upload-artifact@v3
57
+ - uses : actions/upload-artifact@v4
66
58
with :
67
59
path : ./quaddtype/wheelhouse/*.whl
68
60
name : wheels-linux
@@ -80,59 +72,48 @@ jobs:
80
72
- name : Set up Python
81
73
uses : actions/setup-python@v4
82
74
with :
83
- python-version : " >=3.10.0"
84
-
85
- - name : Setup Miniconda
86
- uses : conda-incubator/setup-miniconda@v3
87
- with :
88
- auto-update-conda : true
89
75
python-version : " 3.10"
90
- channels : conda-forge
91
76
92
77
- name : Install SLEEF
93
- shell : bash -l {0}
78
+ env :
79
+ MACOSX_DEPLOYMENT_TARGET : " 11.0"
94
80
run : |
95
- conda install -y -c conda-forge sleef
96
- echo $CONDA_PREFIX
97
- echo "SLEEF_PATH=$CONDA_PREFIX" >> $GITHUB_ENV
98
-
81
+ git clone https://github.com/shibatch/sleef.git
82
+ cd sleef
83
+ cmake -S . -B build \
84
+ -DSLEEF_BUILD_QUAD:BOOL=ON \
85
+ -DSLEEF_BUILD_SHARED_LIBS:BOOL=ON \
86
+ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
87
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 \
88
+ -DCMAKE_INSTALL_RPATH="@loader_path/../lib" \
89
+ -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON
90
+ cmake --build build/ --clean-first -j
91
+ sudo cmake --install build --prefix /usr/local
99
92
- name : Install cibuildwheel
100
93
run : pip install cibuildwheel==2.20.0
101
94
102
95
- name : Build wheels
103
96
env :
104
- CIBW_BUILD_VERBOSITY : " 1 "
97
+ CIBW_BUILD : " cp310-* cp311-* cp312-* "
105
98
CIBW_ARCHS_MACOS : ${{ matrix.os == 'macos-13' && 'x86_64' || 'arm64' }}
106
- CIBW_SKIP : " pp* cp36-* cp37-* cp38-* cp39-* cp313-* "
99
+ CIBW_BUILD_VERBOSITY : " 1 "
107
100
CIBW_ENVIRONMENT : >
108
- SLEEF_PATH="${{ env.SLEEF_PATH }}"
109
- DYLD_LIBRARY_PATH="${{ env.SLEEF_PATH }}/lib:$DYLD_LIBRARY_PATH"
110
- LIBRARY_PATH="${{ env.SLEEF_PATH }}/lib:$LIBRARY_PATH"
111
- CFLAGS="-I${{ env.SLEEF_PATH }}/include $CFLAGS"
112
- CXXFLAGS="-I${{ env.SLEEF_PATH }}/include $CXXFLAGS"
113
- LDFLAGS="-L${{ env.SLEEF_PATH }}/lib $LDFLAGS"
114
- MACOSX_DEPLOYMENT_TARGET="10.13"
115
- CIBW_REPAIR_WHEEL_COMMAND : " delocate-wheel -w {dest_dir} -v {wheel}"
101
+ MACOSX_DEPLOYMENT_TARGET="11.0"
102
+ DYLD_LIBRARY_PATH="/usr/local/lib:$DYLD_LIBRARY_PATH"
103
+ CFLAGS="-I/usr/local/include $CFLAGS"
104
+ CXXFLAGS="-I/usr/local/include $CXXFLAGS"
105
+ LDFLAGS="-L/usr/local/lib $LDFLAGS"
106
+ CIBW_REPAIR_WHEEL_COMMAND : >
107
+ delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel}
116
108
CIBW_TEST_COMMAND : |
117
- python -c "import os; print('SLEEF_PATH:', os.environ.get('SLEEF_PATH', 'Not set'))"
118
- python -c "import platform; print('Python version:', platform.python_version())"
119
- python -c "import sys; print('sys.platform:', sys.platform)"
120
- python -c "import quaddtype; print('quaddtype imported successfully')"
121
109
pip install {package}[test]
122
110
pytest {project}/tests
123
111
CIBW_TEST_EXTRAS : " test"
124
112
run : |
125
- echo "SLEEF_PATH: $SLEEF_PATH"
126
- ls $SLEEF_PATH/include/sleef*
127
- echo "PATH: $PATH"
128
- which python
129
- python --version
130
- which pip
131
- pip --version
132
- cd quaddtype
133
113
python -m cibuildwheel --output-dir wheelhouse
114
+ working-directory : ./quaddtype
134
115
135
- - uses : actions/upload-artifact@v3
116
+ - uses : actions/upload-artifact@v4
136
117
with :
137
118
path : ./quaddtype/wheelhouse/*.whl
138
119
name : wheels-${{ matrix.os }}
@@ -171,20 +152,16 @@ jobs:
171
152
conda config --add channels conda-forge
172
153
conda config --set channel_priority strict
173
154
conda install -y sleef numpy
174
- conda list
175
- if [ ! -f "$CONDA_PREFIX/Library/include/sleef.h" ]; then
176
- echo "sleef.h not found. Installation may have failed."
177
- exit 1
178
- fi
179
- ls -l "$CONDA_PREFIX/Library/include/sleef.h"
180
- ls -l "$CONDA_PREFIX/Library/lib/sleef"*
181
155
182
- - name : Set environment variables
156
+ - name : Setup build environment
183
157
shell : pwsh
184
158
run : |
185
- echo "CONDA_PREFIX=$env:CONDA_PREFIX" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
186
- $numpy_path = python -c "import numpy; import os; print(os.path.abspath(numpy.get_include()).replace(os.sep, '/'))"
187
- echo "NUMPY_INCLUDE_DIR=$numpy_path" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
159
+ $env:INCLUDE += ";$env:CONDA_PREFIX\Library\include"
160
+ $env:LIB += ";$env:CONDA_PREFIX\Library\lib"
161
+ $env:PATH = "$env:CONDA_PREFIX\Library\bin;$env:PATH"
162
+ echo "INCLUDE=$env:INCLUDE" >> $env:GITHUB_ENV
163
+ echo "LIB=$env:LIB" >> $env:GITHUB_ENV
164
+ echo "PATH=$env:PATH" >> $env:GITHUB_ENV
188
165
189
166
- name : Install build dependencies
190
167
shell : bash -l {0}
@@ -194,36 +171,27 @@ jobs:
194
171
195
172
- name : Build wheels
196
173
env :
197
- CONDA_PREFIX : ${{ env.CONDA_PREFIX }}
174
+ CIBW_BUILD : " cp310-* cp311-* cp312-* "
198
175
CIBW_SKIP : " pp* cp36-* cp37-* cp38-* cp39-* cp313-*"
199
176
CIBW_ARCHS_WINDOWS : ${{ matrix.architecture == 'x86' && 'x86' || 'AMD64' }}
200
- CIBW_BUILD_VERBOSITY : " 1"
201
- SLEEF_INCLUDE_DIR : ${{ env.CONDA_PREFIX }}\Library\include
202
- SLEEF_LIBRARY : ${{ env.CONDA_PREFIX }}\Library\lib
177
+ CIBW_BUILD_VERBOSITY : " 3"
203
178
DISTUTILS_USE_SDK : " 1"
204
179
MSSdk : " 1"
205
- NUMPY_INCLUDE_DIR : ${{ env.NUMPY_INCLUDE_DIR }}
206
- CIBW_ENVIRONMENT : >-
207
- NUMPY_INCLUDE_DIR="${{ env.NUMPY_INCLUDE_DIR }}"
208
- SLEEF_INCLUDE_DIR="${{ env.CONDA_PREFIX }}/Library/include"
209
- SLEEF_LIBRARY="${{ env.CONDA_PREFIX }}/Library/lib"
210
- CIBW_BEFORE_BUILD : pip install meson meson-python ninja numpy
180
+ CIBW_BEFORE_BUILD : |
181
+ pip install meson meson-python ninja numpy
211
182
CIBW_REPAIR_WHEEL_COMMAND : " delvewheel repair -w {dest_dir} {wheel}"
212
183
CIBW_TEST_COMMAND : |
213
- python -c "import platform; print('Python version:', platform.python_version())"
214
- python -c "import sys; print('sys.platform:', sys.platform)"
215
- python -c "import quaddtype; print('quaddtype imported successfully')"
216
184
pip install {package}[test]
217
- pytest {project}\tests -v || (echo "Tests failed" && exit 1)
218
- CIBW_TEST_EXTRAS : " test"
185
+ python -m pytest -v {project}/test
186
+ CIBW_TEST_EXTRAS : test
219
187
CIBW_TEST_FAIL_FAST : 1
220
188
shell : pwsh
221
189
run : |
222
190
python -m cibuildwheel --output-dir wheelhouse
223
191
if (-not (Test-Path wheelhouse/*.whl)) { throw "Wheel was not created" }
224
192
working-directory : ./quaddtype
225
193
226
- - uses : actions/upload-artifact@v3
194
+ - uses : actions/upload-artifact@v4
227
195
with :
228
196
path : ./quaddtype/wheelhouse/*.whl
229
197
name : wheels-windows-${{ matrix.architecture }}
@@ -232,10 +200,10 @@ jobs:
232
200
name : Publish to TestPyPI
233
201
needs : [build_wheels_linux, build_wheels_macos, build_wheels_windows]
234
202
runs-on : ubuntu-latest
235
- if : startsWith(github.ref, 'refs/tags/')
203
+ if : startsWith(github.ref, 'refs/tags/quaddtype-v ')
236
204
steps :
237
205
- name : Download all workflow run artifacts
238
- uses : actions/download-artifact@v2
206
+ uses : actions/download-artifact@v4
239
207
with :
240
208
path : dist
241
209
- name : Publish to TestPyPI
@@ -250,14 +218,14 @@ jobs:
250
218
name : Create Release
251
219
needs : [build_wheels_linux, build_wheels_macos, build_wheels_windows]
252
220
runs-on : ubuntu-latest
253
- if : startsWith(github.ref, 'refs/tags/')
221
+ if : startsWith(github.ref, 'refs/tags/quaddtype-v ')
254
222
255
223
steps :
256
224
- name : Checkout code
257
225
uses : actions/checkout@v2
258
226
259
227
- name : Download all workflow run artifacts
260
- uses : actions/download-artifact@v2
228
+ uses : actions/download-artifact@v4
261
229
with :
262
230
path : artifacts
263
231
0 commit comments