8
8
- " quaddtype-v*"
9
9
paths :
10
10
- " quaddtype/**"
11
+ - " .github/workflows/**"
11
12
pull_request :
12
13
paths :
13
14
- " quaddtype/**"
15
+ - " .github/workflows/**"
14
16
workflow_dispatch :
15
17
16
18
jobs :
@@ -19,12 +21,19 @@ jobs:
19
21
runs-on : ubuntu-latest
20
22
steps :
21
23
- uses : actions/checkout@v3
24
+ with :
25
+ submodules : recursive
22
26
23
27
- name : Set up Python
24
28
uses : actions/setup-python@v4
25
29
with :
26
30
python-version : " >=3.10.0"
27
31
32
+ - name : Verify QuadBLAS submodule
33
+ run : |
34
+ ls -la quaddtype/numpy_quaddtype/QBLAS/
35
+ ls -la quaddtype/numpy_quaddtype/QBLAS/include/quadblas/
36
+
28
37
- name : Install cibuildwheel
29
38
run : pip install cibuildwheel==2.20.0
30
39
@@ -34,16 +43,23 @@ jobs:
34
43
CIBW_MANYLINUX_X86_64_IMAGE : manylinux_2_28
35
44
CIBW_BUILD_VERBOSITY : " 3"
36
45
CIBW_BEFORE_ALL : |
46
+ yum update -y
47
+ yum install -y cmake gcc gcc-c++ make git pkgconfig
48
+ # Install SLEEF in container
37
49
git clone --branch 3.8 https://github.com/shibatch/sleef.git
38
50
cd sleef
39
- cmake -S . -B build -DSLEEF_BUILD_QUAD:BOOL=ON -DSLEEF_BUILD_SHARED_LIBS:BOOL=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON
51
+ cmake -S . -B build \
52
+ -DSLEEF_BUILD_QUAD:BOOL=ON \
53
+ -DSLEEF_BUILD_SHARED_LIBS:BOOL=ON \
54
+ -DCMAKE_POSITION_INDEPENDENT_CODE=ON
40
55
cmake --build build/ --clean-first -j
41
56
cmake --install build --prefix /usr/local
42
57
CIBW_ENVIRONMENT : >
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"
58
+ CFLAGS="-I/usr/local/include -I{project}/numpy_quaddtype/QBLAS/include $CFLAGS"
59
+ CXXFLAGS="-I/usr/local/include -I{project}/numpy_quaddtype/QBLAS/include -fext-numeric-literals $CXXFLAGS"
60
+ LDFLAGS="-L/usr/local/lib64 -L/usr/local/lib -Wl,-rpath,/usr/local/lib64 -Wl,-rpath,/usr/local/lib -fopenmp $LDFLAGS"
61
+ LD_LIBRARY_PATH="/usr/local/lib64:/usr/local/lib:$LD_LIBRARY_PATH"
62
+ PKG_CONFIG_PATH="/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
47
63
CIBW_REPAIR_WHEEL_COMMAND : |
48
64
auditwheel repair -w {dest_dir} --plat manylinux_2_28_x86_64 {wheel}
49
65
CIBW_TEST_COMMAND : |
@@ -68,46 +84,59 @@ jobs:
68
84
69
85
steps :
70
86
- uses : actions/checkout@v3
87
+ with :
88
+ submodules : recursive
71
89
72
90
- name : Set up Python
73
91
uses : actions/setup-python@v4
74
92
with :
75
93
python-version : " 3.10"
76
94
95
+ - name : Install dependencies
96
+ run : |
97
+ brew install cmake libomp git
98
+
77
99
- name : Install SLEEF
78
100
env :
79
- MACOSX_DEPLOYMENT_TARGET : " 11.0 "
101
+ MACOSX_DEPLOYMENT_TARGET : ${{ matrix.os == 'macos-13' && '13.0' || '14.0' }}
80
102
run : |
81
103
git clone --branch 3.8 https://github.com/shibatch/sleef.git
82
104
cd sleef
83
105
cmake -S . -B build \
84
106
-DSLEEF_BUILD_QUAD:BOOL=ON \
85
107
-DSLEEF_BUILD_SHARED_LIBS:BOOL=ON \
86
108
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
87
- -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 \
109
+ -DCMAKE_OSX_DEPLOYMENT_TARGET=${{ matrix.os == 'macos-13' && '13.0' || '14.0' }} \
88
110
-DCMAKE_INSTALL_RPATH="@loader_path/../lib" \
89
111
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON
90
112
cmake --build build/ --clean-first -j
91
113
sudo cmake --install build --prefix /usr/local
114
+
115
+ - name : Verify QuadBLAS submodule
116
+ run : |
117
+ ls -la quaddtype/numpy_quaddtype/QBLAS/
118
+ ls -la quaddtype/numpy_quaddtype/QBLAS/include/quadblas/
119
+
92
120
- name : Install cibuildwheel
93
121
run : pip install cibuildwheel==2.20.0
94
122
95
123
- name : Build wheels
96
124
env :
97
125
CIBW_BUILD : " cp310-* cp311-* cp312-*"
98
126
CIBW_ARCHS_MACOS : ${{ matrix.os == 'macos-13' && 'x86_64' || 'arm64' }}
99
- CIBW_BUILD_VERBOSITY : " 1 "
127
+ CIBW_BUILD_VERBOSITY : " 3 "
100
128
CIBW_ENVIRONMENT : >
101
- MACOSX_DEPLOYMENT_TARGET="11.0 "
129
+ MACOSX_DEPLOYMENT_TARGET="${{ matrix.os == 'macos-13' && '13.0' || '14.0' }} "
102
130
DYLD_LIBRARY_PATH="/usr/local/lib:$DYLD_LIBRARY_PATH"
103
- CFLAGS="-I/usr/local/include $CFLAGS"
104
- CXXFLAGS="-I/usr/local/include $CXXFLAGS"
131
+ CFLAGS="-I/usr/local/include -I{project}/numpy_quaddtype/QBLAS/include $CFLAGS"
132
+ CXXFLAGS="-I/usr/local/include -I{project}/numpy_quaddtype/QBLAS/include $CXXFLAGS"
105
133
LDFLAGS="-L/usr/local/lib $LDFLAGS"
134
+ PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
106
135
CIBW_REPAIR_WHEEL_COMMAND : >
107
136
delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel}
108
137
CIBW_TEST_COMMAND : |
109
138
pip install {package}[test]
110
- pytest {project}/tests
139
+ pytest -s {project}/tests
111
140
CIBW_TEST_EXTRAS : " test"
112
141
run : |
113
142
python -m cibuildwheel --output-dir wheelhouse
@@ -118,6 +147,7 @@ jobs:
118
147
path : ./quaddtype/wheelhouse/*.whl
119
148
name : wheels-${{ matrix.os }}
120
149
150
+ # disabling QBLAS optimization for windows due to incompatibility with MSVC
121
151
build_wheels_windows :
122
152
name : Build wheels on Windows
123
153
runs-on : windows-latest
@@ -127,6 +157,8 @@ jobs:
127
157
128
158
steps :
129
159
- uses : actions/checkout@v3
160
+ with :
161
+ submodules : recursive
130
162
131
163
- name : Setup MSVC
132
164
uses : ilammy/msvc-dev-cmd@v1
@@ -142,6 +174,12 @@ jobs:
142
174
- name : Install CMake
143
175
uses : lukka/get-cmake@latest
144
176
177
+ - name : Verify QuadBLAS submodule
178
+ shell : pwsh
179
+ run : |
180
+ Get-ChildItem quaddtype/numpy_quaddtype/QBLAS/
181
+ Get-ChildItem quaddtype/numpy_quaddtype/QBLAS/include/quadblas/
182
+
145
183
- name : Clone and Build SLEEF
146
184
shell : pwsh
147
185
run : |
@@ -151,16 +189,6 @@ jobs:
151
189
cmake --build build --config Release
152
190
cmake --install build --prefix "C:/sleef" --config Release
153
191
154
- - name : Setup build environment
155
- shell : pwsh
156
- run : |
157
- $env:INCLUDE += ";C:\sleef\include"
158
- $env:LIB += ";C:\sleef\lib"
159
- $env:PATH = "C:\sleef\bin;$env:PATH"
160
- echo "INCLUDE=$env:INCLUDE" >> $env:GITHUB_ENV
161
- echo "LIB=$env:LIB" >> $env:GITHUB_ENV
162
- echo "PATH=$env:PATH" >> $env:GITHUB_ENV
163
-
164
192
- name : Install build dependencies
165
193
shell : bash -l {0}
166
194
run : |
@@ -177,10 +205,17 @@ jobs:
177
205
MSSdk : " 1"
178
206
CIBW_BEFORE_BUILD : |
179
207
pip install meson meson-python ninja numpy
208
+ CIBW_ENVIRONMENT : >
209
+ INCLUDE="C:/sleef/include;{project}/numpy_quaddtype/QBLAS/include;$INCLUDE"
210
+ LIB="C:/sleef/lib;$LIB"
211
+ PATH="C:/sleef/bin;$PATH"
212
+ CFLAGS="/IC:/sleef/include /I{project}/numpy_quaddtype/QBLAS/include /DDISABLE_QUADBLAS $CFLAGS"
213
+ CXXFLAGS="/IC:/sleef/include /I{project}/numpy_quaddtype/QBLAS/include /DDISABLE_QUADBLAS $CXXFLAGS"
214
+ LDFLAGS="C:/sleef/lib/sleef.lib C:/sleef/lib/sleefquad.lib $LDFLAGS"
180
215
CIBW_REPAIR_WHEEL_COMMAND : ' delvewheel repair -w {dest_dir} {wheel} --add-path C:\sleef\bin'
181
216
CIBW_TEST_COMMAND : |
182
217
pip install {package}[test]
183
- python -m pytest -v {project}/test
218
+ pytest -s {project}/tests
184
219
CIBW_TEST_EXTRAS : test
185
220
CIBW_TEST_FAIL_FAST : 1
186
221
shell : pwsh
@@ -199,56 +234,21 @@ jobs:
199
234
needs : [build_wheels_linux, build_wheels_macos, build_wheels_windows]
200
235
runs-on : ubuntu-latest
201
236
if : startsWith(github.ref, 'refs/tags/quaddtype-v')
202
-
237
+
203
238
environment :
204
239
name : quadtype_release
205
240
url : https://pypi.org/p/numpy-quaddtype
206
-
241
+
207
242
permissions :
208
- id-token : write # IMPORTANT: mandatory for trusted publishing
209
-
243
+ id-token : write # IMPORTANT: mandatory for trusted publishing
244
+
210
245
steps :
211
246
- name : Download all workflow run artifacts
212
247
uses : actions/download-artifact@v4
213
248
with :
214
249
path : dist
215
-
250
+
216
251
- name : Publish to PyPI
217
252
uses : pypa/gh-action-pypi-publish@release/v1
218
253
with :
219
254
packages-dir : dist/*
220
-
221
- # With the current setup, we are not creating a release on GitHub.
222
- # create_release:
223
- # name: Create Release
224
- # needs: [build_wheels_linux, build_wheels_macos, build_wheels_windows]
225
- # runs-on: ubuntu-latest
226
- # if: startsWith(github.ref, 'refs/tags/quaddtype-v')
227
-
228
- # steps:
229
- # - name: Checkout code
230
- # uses: actions/checkout@v2
231
-
232
- # - name: Download all workflow run artifacts
233
- # uses: actions/download-artifact@v4
234
- # with:
235
- # path: artifacts
236
-
237
- # - name: Create Release
238
- # id: create_release
239
- # uses: actions/create-release@v1
240
- # env:
241
- # GITHUB_TOKEN: ${{ secrets.QUADDTYPE_GITHUB_TOKEN }}
242
- # with:
243
- # tag_name: ${{ github.ref }}
244
- # release_name: Release ${{ github.ref }}
245
- # draft: false
246
- # prerelease: false
247
-
248
- # - name: Upload Release Assets
249
- # uses: softprops/action-gh-release@v1
250
- # if: startsWith(github.ref, 'refs/tags/')
251
- # with:
252
- # files: ./artifacts/**/*.whl
253
- # env:
254
- # GITHUB_TOKEN: ${{ secrets.QUADDTYPE_GITHUB_TOKEN }}
0 commit comments