5252 strategy :
5353 fail-fast : false
5454 matrix :
55- os : [ubuntu-latest, macos-13, windows-latest]
56- python-version : ['3.8', '3.9', '3.10', '3.11', '3.12']
57- # python-version: ['3.11']
55+ os : [ubuntu-latest, macos-15-intel, windows-latest]
56+ python-version : ['3.9', '3.10', '3.11', '3.12']
5857
5958 steps :
6059 - uses : actions/checkout@v4
@@ -96,10 +95,13 @@ jobs:
9695 if : runner.os == 'Windows'
9796 shell : bash
9897 run : |
99- # Install MinGW-w64 via Chocolatey (provides gcc for Cython compilation)
100- choco install mingw -y --no-progress
101- echo "MinGW installed"
102- gcc --version
98+ # MinGW-w64 is pre-installed on windows-latest runner
99+ echo "Checking MinGW..."
100+ gcc --version || (echo "MinGW not found, installing..." && choco install mingw -y --no-progress)
101+ # Find MinGW bin directory and add to PATH
102+ MINGW_BIN=$(dirname "$(which gcc)")
103+ echo "MinGW bin: $MINGW_BIN"
104+ echo "$MINGW_BIN" >> $GITHUB_PATH
103105 # Verify vendor libraries exist (these are checked into the repo)
104106 echo "Checking vendor libraries..."
105107 ls -la vendor/superlu/lib/ || echo "WARNING: SuperLU libs not found"
@@ -127,9 +129,8 @@ jobs:
127129 # Build wheels using cibuildwheel
128130 - name : Build wheels
129131 env :
130- CIBW_BUILD : ' cp38-* cp39-* cp310-* cp311-* cp312-*'
131- # CIBW_BUILD: 'cp311-*'
132- CIBW_SKIP : ' *-musllinux* pp*'
132+ CIBW_BUILD : ' cp39-* cp310-* cp311-* cp312-*'
133+ CIBW_SKIP : ' *-musllinux*'
133134 # Add this to ensure extensions are built
134135 CIBW_BEFORE_BUILD : >
135136 pip install numpy cython
@@ -149,18 +150,18 @@ jobs:
149150 GITHUB_ACTIONS=true
150151 CFLAGS='-O3'
151152 CXXFLAGS='-O3'
152- MACOSX_DEPLOYMENT_TARGET=13 .0
153+ MACOSX_DEPLOYMENT_TARGET=15 .0
153154 # manylinux configuration - install required packages
154155 CIBW_MANYLINUX_X86_64_IMAGE : manylinux2014
155156 CIBW_BEFORE_ALL_LINUX : |
156157 yum install -y epel-release || true
157158 yum install -y openblas-devel SuperLU-devel suitesparse-devel ||
158159 yum install -y openblas-devel superlu-devel suitesparse-devel ||
159160 (apt-get update && apt-get install -y libsuitesparse-dev libsuperlu-dev libopenblas-dev)
160-
161+
161162 # Check SuperLU header location
162163 find /usr -name "slu_ddefs.h" || echo "SuperLU headers not found"
163-
164+
164165 # If header is found, create a symlink in a standard location
165166 HEADER_PATH=$(find /usr -name "slu_ddefs.h" | head -1)
166167 if [ -n "$HEADER_PATH" ]; then
@@ -179,15 +180,16 @@ jobs:
179180 mkdir -p $HOME/homebrew_libs/openblas/lib;
180181 ln -sf $OPENBLAS_PREFIX/lib/libopenblas.dylib $HOME/homebrew_libs/openblas/lib/;
181182 echo "Created symlink in $HOME/homebrew_libs/openblas/lib/"
182- # Windows configuration - use vendor libraries from the repo
183+ # Windows configuration - use vendor libraries from the repo with MinGW
183184 CIBW_ARCHS_WINDOWS : ' AMD64'
184185 CIBW_ENVIRONMENT_WINDOWS : >
185186 CI=true
186187 GITHUB_ACTIONS=true
187188 SPARSE_NUMBA_SKIP_UMFPACK=1
188189 DISTUTILS_USE_SDK=0
189190 CIBW_BEFORE_BUILD_WINDOWS : >
190- pip install numpy cython &&
191+ pip install numpy cython setuptools &&
192+ python -c "import distutils, os; f=os.path.join(os.path.dirname(distutils.__file__),'distutils.cfg'); open(f,'w').write('[build]\ncompiler=mingw32\n[build_ext]\ncompiler=mingw32\n')" &&
191193 gcc --version
192194
193195 run : |
@@ -211,9 +213,6 @@ jobs:
211213 matrix :
212214 include :
213215 # Linux x86_64
214- - os : ubuntu-latest
215- python-version : ' 3.8'
216- wheel-suffix : ' manylinux_2_17_x86_64.manylinux2014_x86_64'
217216 - os : ubuntu-latest
218217 python-version : ' 3.9'
219218 wheel-suffix : ' manylinux_2_17_x86_64.manylinux2014_x86_64'
@@ -226,26 +225,20 @@ jobs:
226225 - os : ubuntu-latest
227226 python-version : ' 3.12'
228227 wheel-suffix : ' manylinux_2_17_x86_64.manylinux2014_x86_64'
229- # macOS x86_64
230- - os : macos-13 # This is x86_64
231- python-version : ' 3.8'
232- wheel-suffix : ' macosx_13_0_x86_64' # Changed to match deployment target
233- - os : macos-13
228+ # macOS x86_64 (Intel)
229+ - os : macos-15-intel
234230 python-version : ' 3.9'
235- wheel-suffix : ' macosx_13_0_x86_64 '
236- - os : macos-13
231+ wheel-suffix : ' macosx_15_0_x86_64 '
232+ - os : macos-15-intel
237233 python-version : ' 3.10'
238- wheel-suffix : ' macosx_13_0_x86_64 '
239- - os : macos-13
234+ wheel-suffix : ' macosx_15_0_x86_64 '
235+ - os : macos-15-intel
240236 python-version : ' 3.11'
241- wheel-suffix : ' macosx_13_0_x86_64 '
242- - os : macos-13
237+ wheel-suffix : ' macosx_15_0_x86_64 '
238+ - os : macos-15-intel
243239 python-version : ' 3.12'
244- wheel-suffix : ' macosx_13_0_x86_64 '
240+ wheel-suffix : ' macosx_15_0_x86_64 '
245241 # Windows x86_64
246- - os : windows-latest
247- python-version : ' 3.8'
248- wheel-suffix : ' win_amd64'
249242 - os : windows-latest
250243 python-version : ' 3.9'
251244 wheel-suffix : ' win_amd64'
@@ -285,7 +278,7 @@ jobs:
285278 brew install suite-sparse superlu openblas
286279
287280 - name : Inspect linux wheel contents
288- if : runner.so == 'Linux'
281+ if : runner.os == 'Linux'
289282 run : |
290283 python -m pip install wheel-inspect
291284 PYTHON_VERSION_NO_DOT=$(echo ${{ matrix.python-version }} | tr -d '.')
@@ -294,7 +287,7 @@ jobs:
294287 unzip -l $WHEEL_FILE | grep "cy_.*wrapper"
295288
296289 - name : Inspect macOS wheel contents
297- if : runner.so == 'macOS'
290+ if : runner.os == 'macOS'
298291 run : |
299292 python -m pip install wheel-inspect
300293 PYTHON_VERSION_NO_DOT=$(echo ${{ matrix.python-version }} | tr -d '.')
@@ -406,7 +399,6 @@ jobs:
406399 upload_pypi :
407400 needs : [check_duplicate, build_wheels, build_sdist, test_installation]
408401 if : ${{ needs.check_duplicate.outputs.should_run == 'true' && needs.check_duplicate.outputs.is_tag == 'true' }}
409- # if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
410402 runs-on : ubuntu-latest
411403 environment : pypi
412404 permissions :
@@ -447,4 +439,4 @@ jobs:
447439 - name : Publish to PyPI
448440 uses : pypa/gh-action-pypi-publish@release/v1
449441 with :
450- packages-dir : final_dist/
442+ packages-dir : final_dist/
0 commit comments