88 - " quaddtype-v*"
99 paths :
1010 - " quaddtype/**"
11+ - " .github/workflows/**"
1112 pull_request :
1213 paths :
1314 - " quaddtype/**"
15+ - " .github/workflows/**"
1416 workflow_dispatch :
1517
1618jobs :
@@ -19,12 +21,19 @@ jobs:
1921 runs-on : ubuntu-latest
2022 steps :
2123 - uses : actions/checkout@v3
24+ with :
25+ submodules : recursive
2226
2327 - name : Set up Python
2428 uses : actions/setup-python@v4
2529 with :
2630 python-version : " >=3.10.0"
2731
32+ - name : Verify QuadBLAS submodule
33+ run : |
34+ ls -la quaddtype/numpy_quaddtype/QBLAS/
35+ ls -la quaddtype/numpy_quaddtype/QBLAS/include/quadblas/
36+
2837 - name : Install cibuildwheel
2938 run : pip install cibuildwheel==2.20.0
3039
@@ -34,16 +43,23 @@ jobs:
3443 CIBW_MANYLINUX_X86_64_IMAGE : manylinux_2_28
3544 CIBW_BUILD_VERBOSITY : " 3"
3645 CIBW_BEFORE_ALL : |
46+ yum update -y
47+ yum install -y cmake gcc gcc-c++ make git pkgconfig
48+ # Install SLEEF in container
3749 git clone --branch 3.8 https://github.com/shibatch/sleef.git
3850 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
4055 cmake --build build/ --clean-first -j
4156 cmake --install build --prefix /usr/local
4257 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"
4763 CIBW_REPAIR_WHEEL_COMMAND : |
4864 auditwheel repair -w {dest_dir} --plat manylinux_2_28_x86_64 {wheel}
4965 CIBW_TEST_COMMAND : |
@@ -68,46 +84,59 @@ jobs:
6884
6985 steps :
7086 - uses : actions/checkout@v3
87+ with :
88+ submodules : recursive
7189
7290 - name : Set up Python
7391 uses : actions/setup-python@v4
7492 with :
7593 python-version : " 3.10"
7694
95+ - name : Install dependencies
96+ run : |
97+ brew install cmake libomp git
98+
7799 - name : Install SLEEF
78100 env :
79- MACOSX_DEPLOYMENT_TARGET : " 11.0 "
101+ MACOSX_DEPLOYMENT_TARGET : ${{ matrix.os == 'macos-13' && '13.0' || '14.0' }}
80102 run : |
81103 git clone --branch 3.8 https://github.com/shibatch/sleef.git
82104 cd sleef
83105 cmake -S . -B build \
84106 -DSLEEF_BUILD_QUAD:BOOL=ON \
85107 -DSLEEF_BUILD_SHARED_LIBS:BOOL=ON \
86108 -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' }} \
88110 -DCMAKE_INSTALL_RPATH="@loader_path/../lib" \
89111 -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON
90112 cmake --build build/ --clean-first -j
91113 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+
92120 - name : Install cibuildwheel
93121 run : pip install cibuildwheel==2.20.0
94122
95123 - name : Build wheels
96124 env :
97125 CIBW_BUILD : " cp310-* cp311-* cp312-*"
98126 CIBW_ARCHS_MACOS : ${{ matrix.os == 'macos-13' && 'x86_64' || 'arm64' }}
99- CIBW_BUILD_VERBOSITY : " 1 "
127+ CIBW_BUILD_VERBOSITY : " 3 "
100128 CIBW_ENVIRONMENT : >
101- MACOSX_DEPLOYMENT_TARGET="11.0 "
129+ MACOSX_DEPLOYMENT_TARGET="${{ matrix.os == 'macos-13' && '13.0' || '14.0' }} "
102130 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"
105133 LDFLAGS="-L/usr/local/lib $LDFLAGS"
134+ PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
106135 CIBW_REPAIR_WHEEL_COMMAND : >
107136 delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel}
108137 CIBW_TEST_COMMAND : |
109138 pip install {package}[test]
110- pytest {project}/tests
139+ pytest -s {project}/tests
111140 CIBW_TEST_EXTRAS : " test"
112141 run : |
113142 python -m cibuildwheel --output-dir wheelhouse
@@ -118,6 +147,7 @@ jobs:
118147 path : ./quaddtype/wheelhouse/*.whl
119148 name : wheels-${{ matrix.os }}
120149
150+ # disabling QBLAS optimization for windows due to incompatibility with MSVC
121151 build_wheels_windows :
122152 name : Build wheels on Windows
123153 runs-on : windows-latest
@@ -127,6 +157,8 @@ jobs:
127157
128158 steps :
129159 - uses : actions/checkout@v3
160+ with :
161+ submodules : recursive
130162
131163 - name : Setup MSVC
132164 uses : ilammy/msvc-dev-cmd@v1
@@ -142,6 +174,12 @@ jobs:
142174 - name : Install CMake
143175 uses : lukka/get-cmake@latest
144176
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+
145183 - name : Clone and Build SLEEF
146184 shell : pwsh
147185 run : |
@@ -151,16 +189,6 @@ jobs:
151189 cmake --build build --config Release
152190 cmake --install build --prefix "C:/sleef" --config Release
153191
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-
164192 - name : Install build dependencies
165193 shell : bash -l {0}
166194 run : |
@@ -177,10 +205,17 @@ jobs:
177205 MSSdk : " 1"
178206 CIBW_BEFORE_BUILD : |
179207 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"
180215 CIBW_REPAIR_WHEEL_COMMAND : ' delvewheel repair -w {dest_dir} {wheel} --add-path C:\sleef\bin'
181216 CIBW_TEST_COMMAND : |
182217 pip install {package}[test]
183- python -m pytest -v {project}/test
218+ pytest -s {project}/tests
184219 CIBW_TEST_EXTRAS : test
185220 CIBW_TEST_FAIL_FAST : 1
186221 shell : pwsh
@@ -199,56 +234,21 @@ jobs:
199234 needs : [build_wheels_linux, build_wheels_macos, build_wheels_windows]
200235 runs-on : ubuntu-latest
201236 if : startsWith(github.ref, 'refs/tags/quaddtype-v')
202-
237+
203238 environment :
204239 name : quadtype_release
205240 url : https://pypi.org/p/numpy-quaddtype
206-
241+
207242 permissions :
208- id-token : write # IMPORTANT: mandatory for trusted publishing
209-
243+ id-token : write # IMPORTANT: mandatory for trusted publishing
244+
210245 steps :
211246 - name : Download all workflow run artifacts
212247 uses : actions/download-artifact@v4
213248 with :
214249 path : dist
215-
250+
216251 - name : Publish to PyPI
217252 uses : pypa/gh-action-pypi-publish@release/v1
218253 with :
219254 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