Skip to content

Commit a094dda

Browse files
jamestjspclaude
andcommitted
fix: publish CI — scipy-openblas32 prefix, OpenBLAS bundled LAPACK, sdist venv
- meson.build: track OpenBLAS provider to assume bundled LAPACK (skip conflicting system liblapack), detect scipy_ symbol prefix - build.yml: use venv for sdist (system install permission denied) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent f9839f6 commit a094dda

File tree

2 files changed

+18
-17
lines changed

2 files changed

+18
-17
lines changed

.github/workflows/build.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,14 +94,14 @@ jobs:
9494

9595
- name: Install deps
9696
run: |
97-
uv pip install --system --break-system-packages scipy-openblas32
97+
uv venv
98+
uv pip install scipy-openblas32 build
9899
mkdir -p /tmp/openblas
99-
python -c "import scipy_openblas32 as sc; open('/tmp/openblas/openblas.pc','w').write(sc.get_pkg_config())"
100+
.venv/bin/python -c "import scipy_openblas32 as sc; open('/tmp/openblas/openblas.pc','w').write(sc.get_pkg_config())"
100101
101102
- name: Build sdist
102103
run: |
103-
uv pip install --system --break-system-packages build
104-
PKG_CONFIG_PATH=/tmp/openblas python -m build --sdist
104+
PKG_CONFIG_PATH=/tmp/openblas .venv/bin/python -m build --sdist
105105
106106
- uses: actions/upload-artifact@v4
107107
with:

meson.build

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,18 @@ cc = meson.get_compiler('c')
1515
blas_opt = get_option('blas')
1616
lapack_opt = get_option('lapack')
1717

18+
blas_is_openblas = false
19+
1820
if blas_opt == 'auto'
19-
# Try multiple BLAS implementations in order
2021
blas_dep = dependency('openblas', required: false)
22+
if blas_dep.found()
23+
blas_is_openblas = true
24+
endif
2125
if not blas_dep.found()
2226
blas_dep = dependency('scipy-openblas', required: false)
27+
if blas_dep.found()
28+
blas_is_openblas = true
29+
endif
2330
endif
2431
if not blas_dep.found()
2532
blas_dep = dependency('blas', required: false)
@@ -28,7 +35,6 @@ if blas_opt == 'auto'
2835
blas_dep = dependency('Accelerate', required: false)
2936
endif
3037
if not blas_dep.found()
31-
# Final fallback: try to find BLAS library directly
3238
blas_dep = cc.find_library('blas', required: true)
3339
endif
3440
else
@@ -41,13 +47,9 @@ if lapack_opt == 'auto'
4147
lapack_dep = dependency('Accelerate', required: false)
4248
endif
4349
if not lapack_dep.found()
44-
# Check if BLAS bundles LAPACK (e.g., OpenBLAS) BEFORE trying system liblapack.
45-
# On musllinux, system liblapack depends on system openblas which conflicts
46-
# with scipy-openblas32 at link time. Test all naming conventions since
47-
# convention detection hasn't run yet.
48-
if cc.has_function('dgesv_', dependencies: [blas_dep]) or cc.has_function('dgesv', dependencies: [blas_dep]) or cc.has_function('DGESV', dependencies: [blas_dep])
50+
if blas_is_openblas
4951
lapack_dep = blas_dep
50-
message('LAPACK bundled in BLAS library')
52+
message('LAPACK bundled in OpenBLAS')
5153
else
5254
lapack_dep = cc.find_library('lapack', required: true)
5355
endif
@@ -59,20 +61,19 @@ endif
5961
# Detect BLAS/LAPACK symbol naming convention
6062
blas_lapack_deps = [blas_dep, lapack_dep]
6163

62-
# Try lowercase with underscore (most common: gfortran)
63-
if cc.has_function('dgemm_', dependencies: blas_lapack_deps)
64+
if cc.has_function('scipy_dgemm_', dependencies: blas_lapack_deps)
65+
fc_defines = ['-DSLC_FC_SCIPY_OPENBLAS']
66+
message('BLAS/LAPACK uses scipy-openblas32 prefix: scipy_dgemm_')
67+
elif cc.has_function('dgemm_', dependencies: blas_lapack_deps)
6468
fc_defines = ['-DSLC_FC_LOWER_US']
6569
message('BLAS/LAPACK uses lowercase with underscore: dgemm_')
66-
# Try lowercase only (some compilers)
6770
elif cc.has_function('dgemm', dependencies: blas_lapack_deps)
6871
fc_defines = ['-DSLC_FC_LOWER']
6972
message('BLAS/LAPACK uses lowercase: dgemm')
70-
# Try uppercase (old style)
7173
elif cc.has_function('DGEMM', dependencies: blas_lapack_deps)
7274
fc_defines = ['-DSLC_FC_UPPER']
7375
message('BLAS/LAPACK uses uppercase: DGEMM')
7476
else
75-
# Default to lowercase with underscore
7677
fc_defines = ['-DSLC_FC_LOWER_US']
7778
warning('Could not detect BLAS/LAPACK naming convention, defaulting to dgemm_')
7879
endif

0 commit comments

Comments
 (0)