Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
7e60150
Trying to download libkrylov
cvanaret May 27, 2026
0460484
Fixed archive extension
cvanaret May 27, 2026
68f6078
Use unzip on Windows
cvanaret May 27, 2026
de29654
Fix
cvanaret May 27, 2026
c95de00
Fix
cvanaret May 27, 2026
eb35843
Install MSYS2 unzip (Windows)
cvanaret May 27, 2026
cd074ca
Install unzip in CIBW_BEFORE_BUILD_WINDOWS
cvanaret May 27, 2026
c511d37
Fixed delvewheel
cvanaret May 27, 2026
c570e2a
Trying to fix the cibuildwheel workflow
cvanaret May 27, 2026
584f53c
Fixed syntax
cvanaret May 27, 2026
3937462
Do not download libkrylov on Windows
cvanaret May 27, 2026
3a5c87c
Fix
cvanaret May 27, 2026
ef4412a
Reset wheel workflow
cvanaret May 27, 2026
ff5f38b
Added a functional test for libkrylov based on Alexis' example
cvanaret May 27, 2026
0431f4f
Removed ASAN/UBSAN from standard unit tests + added unit test workflo…
cvanaret May 27, 2026
49b071e
Linked Krylov on Windows
cvanaret May 27, 2026
f10309f
Include krylov.h header with <>
cvanaret May 27, 2026
5f88330
Added CMake variable KRYLOV_INCLUDE_DIR
cvanaret May 27, 2026
8ded80a
Unzip libkrylov.zip you moron!
cvanaret May 27, 2026
6885352
Set PATH (Windows)
cvanaret May 27, 2026
46c0e75
Bumped libkrylov version
cvanaret Jun 3, 2026
13b270d
Install unzip (Windows)
cvanaret Jun 3, 2026
9bbbf0b
Fixed Install unzip (Windows)
cvanaret Jun 3, 2026
768c317
Linked libkrylov in wheels workflow
cvanaret Jun 3, 2026
6cd76b9
Added LD_LIBRARY_PATH for Linux build
cvanaret Jun 3, 2026
68afa55
Updated manylinux version
cvanaret Jun 3, 2026
aa1ebe4
Update manylinux version for aarch64 + require Python >=3.9
cvanaret Jun 3, 2026
ffd0df7
Bumped Krylov.jl version
cvanaret Jun 3, 2026
9806c95
Updated CIBW_MANYLINUX_X86_64_IMAGE and CIBW_MANYLINUX_AARCH64_IMAGE
cvanaret Jun 3, 2026
a9def4b
Bumped libkrylov version
cvanaret Jun 3, 2026
856837a
Set AUDITWHEEL_PLAT and test Linux wheels separately
cvanaret Jun 4, 2026
325174c
Added CIBW_REPAIR_WHEEL_COMMAND_MACOS
cvanaret Jun 4, 2026
3d7be5b
Updated CMakeLists + fixed CIBW_ENVIRONMENT_WINDOWS
cvanaret Jun 4, 2026
6a89887
Dropped DYLD_LIBRARY_PATH
cvanaret Jun 4, 2026
5389b84
Added target_link_options(unopy PRIVATE -static-libgcc -static-libstd…
cvanaret Jun 4, 2026
ebad39d
Fixes for macOS
cvanaret Jun 4, 2026
c2491c4
Fixed CMake for macOS
cvanaret Jun 4, 2026
ae1fc1d
Resumed target_link_options(unopy PRIVATE -static-libgcc -static-libs…
cvanaret Jun 4, 2026
130aef5
Diagnose Windows DLL (temporary)
cvanaret Jun 4, 2026
40fdfaf
Force Store artifacts
cvanaret Jun 4, 2026
5358f40
Fix
cvanaret Jun 4, 2026
3eea0f1
Find and inspect wheel (temporary)
cvanaret Jun 4, 2026
18ec6e8
Fixed Inspect + test wheel (Windows)
cvanaret Jun 4, 2026
4d65dc7
CIBW_BEFORE_ALL_WINDOWS
cvanaret Jun 4, 2026
f8bc77c
Added --no-mangle-all and temp ditched >=python3.10
cvanaret Jun 4, 2026
0931636
Fixed selector + Inspect wheel (Windows)
cvanaret Jun 4, 2026
9c354fc
Build wheel for cp311
cvanaret Jun 4, 2026
99f82a9
Inspect wheel layout (Windows)
cvanaret Jun 4, 2026
ff5433c
Updated CMake and __init__.py
cvanaret Jun 4, 2026
2c4ca99
Do not link libstdc++.a
cvanaret Jun 4, 2026
b04fe70
Install matching MinGW (GCC 14.2.0 posix-seh-msvcrt)
cvanaret Jun 4, 2026
5b65c32
Fix
cvanaret Jun 4, 2026
d795844
Fixed CMake
cvanaret Jun 4, 2026
1388f13
Fixed CIBW_REPAIR_WHEEL_COMMAND_WINDOWS
cvanaret Jun 4, 2026
c85f01b
Test wheel (Windows)
cvanaret Jun 4, 2026
d82a6e8
Added test_libkrylov() in unopy
cvanaret Jun 4, 2026
9019c08
Removed CIBW_TEST_SKIP
cvanaret Jun 4, 2026
0f13b62
Added test file for wheels
cvanaret Jun 4, 2026
58c7969
Improved print in test_krylov_solvers()
cvanaret Jun 4, 2026
55c0303
Re-enable all Windows wheels
cvanaret Jun 4, 2026
1a5b850
Fixed test-linux-wheels
cvanaret Jun 4, 2026
aea8119
Install numpy
cvanaret Jun 4, 2026
bf5e2ae
Linked libkrylov to Fortran tests + builds
cvanaret Jun 4, 2026
ecbc36a
Forgot -lkrylov in gfortran command
cvanaret Jun 4, 2026
1aa2668
Linked libkrylov to Intel build
cvanaret Jun 8, 2026
9641c9f
Upgrade the interface for Krylov.jl
amontoison Jun 28, 2026
be24cd8
Fixed unit tests with ASAN/UBSAN
cvanaret Jun 28, 2026
3517bd7
Use the official repository of Krylov.jl
amontoison Jun 28, 2026
1bdbfb0
Use Krylov.jl v0.10.8
amontoison Jun 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .github/workflows/Fortran-tests-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,15 @@ jobs:
cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} \
-DMUMPS_INCLUDE_DIR=${{github.workspace}}/dependencies/include \
-DMETIS_INCLUDE_DIR=${{github.workspace}}/dependencies/include \
-DKRYLOV_INCLUDE_DIR=${{github.workspace}}/dependencies/include \
-DBQPD=${{github.workspace}}/dependencies/lib/libbqpd.a \
-DMUMPS_LIBRARY=${{github.workspace}}/dependencies/lib/libdmumps.a \
-DMUMPS_COMMON_LIBRARY=${{github.workspace}}/dependencies/lib/libmumps_common.a \
-DMUMPS_PORD_LIBRARY=${{github.workspace}}/dependencies/lib/libpord.a \
-DMUMPS_MPISEQ_LIBRARY=${{github.workspace}}/dependencies/lib/libmpiseq.a \
-DHIGHS=${{github.workspace}}/dependencies/lib/libhighs.a \
-DMETIS_LIBRARY=${{github.workspace}}/dependencies/lib/libmetis.a \
-DKRYLOV=${{github.workspace}}/dependencies/lib/libkrylov.so \
-DBLAS_LIBRARIES="${{github.workspace}}/dependencies/lib/libblas.a;${{github.workspace}}/dependencies/lib/libcblas.a" \
-DLAPACK_LIBRARIES=${{github.workspace}}/dependencies/lib/liblapack.a \
-DBUILD_STATIC_LIBS=ON \
Expand All @@ -61,7 +63,7 @@ jobs:

- name: Compile Fortran tests
working-directory: ${{github.workspace}}/interfaces/Fortran
run: gfortran example_uno.f90 -o example_uno -L../../build -luno -L${{github.workspace}}/dependencies/lib -lhighs -ldmumps -lmumps_common -lmpiseq -lpord -lmetis -lbqpd -llapack -lcblas -lblas -lstdc++
run: gfortran example_uno.f90 -o example_uno -L../../build -luno -L${{github.workspace}}/dependencies/lib -lhighs -ldmumps -lmumps_common -lmpiseq -lpord -lmetis -lbqpd -lkrylov -llapack -lcblas -lblas -lstdc++

- name: Run Fortran tests
working-directory: ${{github.workspace}}/interfaces/Fortran
Expand Down
95 changes: 84 additions & 11 deletions .github/workflows/build-python-wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,9 @@ concurrency:
cancel-in-progress: true

env:
CIBW_TEST_COMMAND: python {project}/interfaces/Python/example/example_hs015.py
CIBW_TEST_COMMAND: >
python {project}/interfaces/Python/tests/run_wheel_tests.py
CIBW_TEST_REQUIRES: numpy

jobs:
build_wheels:
Expand All @@ -52,6 +54,11 @@ jobs:
with:
python-version: "3.11"

- name: Install unzip (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: C:/msys64/usr/bin/bash -lc "pacman -Sy --noconfirm --needed unzip"

- run: pip install cibuildwheel
if: runner.os != 'Windows'

Expand All @@ -72,17 +79,41 @@ jobs:
echo "LIBGFORTRAN_FOLDER=$LIBGFORTRAN_FOLDER" >> $GITHUB_ENV
echo "OPENMP_LIB=$(brew --prefix libomp)/lib/libomp.dylib" >> $GITHUB_ENV

- name: Install matching MinGW (GCC 14.2.0 posix-seh-msvcrt)
if: runner.os == 'Windows'
shell: pwsh
run: |
$url = "https://github.com/niXman/mingw-builds-binaries/releases/download/14.2.0-rt_v12-rev0/x86_64-14.2.0-release-posix-seh-msvcrt-rt_v12-rev0.7z"
Invoke-WebRequest $url -OutFile mingw.7z
7z x mingw.7z -oC:\mingw1420 -y # clean dir, NOT C:\mingw64
# the archive contains a top-level mingw64\ folder, so the compiler ends up at:
C:\mingw1420\mingw64\bin\gcc --version
C:\mingw1420\mingw64\bin\g++ --version

- name: Put 14.2 toolchain first on PATH (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: echo "C:\mingw1420\mingw64\bin" | Out-File -FilePath $env:GITHUB_PATH -Append

- name: Build wheels (Linux)
if: runner.os == 'Linux'
run: cibuildwheel --output-dir ${{github.workspace}}/wheelhouse
env:
CIBW_BUILD: ${{ matrix.sys.build }}
CIBW_SKIP: cp*-*_i686 *-win32
CIBW_ENVIRONMENT_LINUX:
CIBW_SKIP: cp38-* *_i686 *-win32
CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_34
CIBW_MANYLINUX_AARCH64_IMAGE: manylinux_2_34
CIBW_ENVIRONMENT_LINUX: >
CMAKE_GENERATOR=Ninja
CMAKE_BUILD_PARALLEL_LEVEL=$(nproc)
LD_LIBRARY_PATH=/project/dependencies/lib:/project/dependencies/lib/julia
AUDITWHEEL_PLAT=manylinux_2_35_$(uname -m)
# Linux wheels need glibc 2.35; test them in a separate job
CIBW_TEST_SKIP: "*-manylinux_*"
CIBW_BEFORE_ALL_LINUX:
bash dependencies/scripts/download_dependencies.sh
CIBW_REPAIR_WHEEL_COMMAND_LINUX: >
auditwheel repair --exclude libkrylov.so --exclude 'libjulia*.so*' --exclude 'libopenlibm*.so*' -w {dest_dir} {wheel}

- name: Build wheels (macOS)
if: startsWith(matrix.sys.os, 'macos')
Expand Down Expand Up @@ -114,36 +145,78 @@ jobs:
CMAKE_TOOLCHAIN_FILE=/tmp/clang_toolchain.cmake
CMAKE_GENERATOR=Ninja
CMAKE_BUILD_PARALLEL_LEVEL=$(sysctl -n hw.logicalcpu)
CIBW_CONFIG_SETTINGS_MACOS: >
cmake.define.KRYLOV=dependencies/lib/libkrylov.dylib
CIBW_REPAIR_WHEEL_COMMAND_MACOS: >
delocate-wheel --require-archs {delocate_archs} --ignore-missing-dependencies -w {dest_dir} -v {wheel}

- name: Build wheels (Windows)
if: runner.os == 'Windows'
run: cibuildwheel --output-dir ${{github.workspace}}/wheelhouse
shell: pwsh
env:
CIBW_SKIP: cp314t-* cp*-*_i686 *-win32
CIBW_BEFORE_BUILD_WINDOWS: >
CIBW_BEFORE_ALL_WINDOWS: >
C:/msys64/usr/bin/bash -lc "cd \"$(cygpath -u '{package}')\" && ./dependencies/scripts/download_dependencies.sh" &&
pwsh -Command "Get-ChildItem -Path '{package}/dependencies' -Recurse |
ForEach-Object { $_.LastWriteTime = Get-Date }"
CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: >
pwsh -Command "$env:SOURCE_DATE_EPOCH='315532800';
delvewheel repair --add-path 'C:/msys64/mingw64/bin;dependencies/bin;dependencies/lib' -w {dest_dir} {wheel}"
delvewheel repair --no-mangle-all --add-path 'dependencies/bin;dependencies/lib' -w {dest_dir} {wheel}"
CIBW_ENVIRONMENT_WINDOWS: >
CMAKE_BUILD_PARALLEL_LEVEL=$(nproc)
CMAKE_GENERATOR="MinGW Makefiles"
CMAKE_MAKE_PROGRAM=C:/mingw64/bin/mingw32-make.exe
CMAKE_C_COMPILER=C:/mingw64/bin/gcc.exe
CMAKE_CXX_COMPILER=C:/mingw64/bin/g++.exe
CMAKE_Fortran_COMPILER=C:/mingw64/bin/gfortran.exe
CMAKE_MAKE_PROGRAM=C:/mingw1420/mingw64/bin/mingw32-make.exe
CMAKE_C_COMPILER=C:/mingw1420/mingw64/bin/gcc.exe
CMAKE_CXX_COMPILER=C:/mingw1420/mingw64/bin/g++.exe
CMAKE_Fortran_COMPILER=C:/mingw1420/mingw64/bin/gfortran.exe
CIBW_CONFIG_SETTINGS_WINDOWS: >
cmake.define.METIS_LIBRARY=dependencies/bin/libmetis.dll
cmake.define.KRYLOV=dependencies/bin/libkrylov.dll
cmake.define.AUXILIARY_LIBRARIES=dependencies/lib/libstdc++.a

- name: Store artifacts
uses: actions/upload-artifact@v4
if: success() || failure()
with:
name: cibw-wheels-${{ matrix.sys.os }}-${{ strategy.job-index }}
path: wheelhouse/*.whl
path: ${{ github.workspace }}/wheelhouse/*.whl
if-no-files-found: warn

# test the Linux wheels with glibc ≥ 2.35
test-linux-wheels:
name: Test Linux wheels (${{ matrix.runs-on }})
needs: build_wheels
runs-on: ${{ matrix.runs-on }}
strategy:
fail-fast: false
matrix:
include:
- runs-on: ubuntu-24.04
pattern: cibw-wheels-ubuntu-latest-*
- runs-on: ubuntu-24.04-arm
pattern: cibw-wheels-ubuntu-22.04-arm-*

steps:
- uses: actions/checkout@v4

- uses: actions/download-artifact@v4
with:
pattern: ${{ matrix.pattern }}
path: wheelhouse
merge-multiple: true

- uses: actions/setup-python@v5
with: { python-version: '3.11' }

- name: Run tests
shell: bash
run: |
ls -R wheelhouse || { echo "no wheels downloaded"; exit 1; }
python -m pip install numpy
python -m pip install --no-index --find-links "$GITHUB_WORKSPACE/wheelhouse" --only-binary=:all: unopy
cd "$RUNNER_TEMP" # run from outside the repo so 'import unopy' hits the wheel, not the source
python "$GITHUB_WORKSPACE/interfaces/Python/tests/run_wheel_tests.py"

build_sdist:
name: Build source distribution
Expand Down Expand Up @@ -275,4 +348,4 @@ jobs:

- name: Run example
working-directory: ${{github.workspace}}/interfaces/Python/example
run: python example_hs015.py
run: python example_hs015.py
4 changes: 4 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,7 @@ jobs:
-DCMAKE_FORTRAN_COMPILER=gfortran \
-DMUMPS_INCLUDE_DIR=${{github.workspace}}/dependencies/include \
-DMETIS_INCLUDE_DIR=${{github.workspace}}/dependencies/include \
-DKRYLOV_INCLUDE_DIR=${{github.workspace}}/dependencies/include \
-DBQPD=${{github.workspace}}/dependencies/lib/libbqpd.a \
-DMETIS_LIBRARY=${{github.workspace}}/dependencies/lib/libmetis.a \
-DMUMPS_LIBRARY=${{github.workspace}}/dependencies/lib/libdmumps.a \
Expand All @@ -201,6 +202,7 @@ jobs:
-DBLAS_LIBRARIES="${{github.workspace}}/dependencies/lib/libcblas.a;${{github.workspace}}/dependencies/lib/libblas.a" \
-DLAPACK_LIBRARIES=${{github.workspace}}/dependencies/lib/liblapack.a \
-DHIGHS=${{github.workspace}}/dependencies/lib/libhighs.a \
-DKRYLOV=${{github.workspace}}/dependencies/lib/libkrylov.so \
-DBUILD_STATIC_LIBS=ON \
-DBUILD_SHARED_LIBS=ON

Expand All @@ -214,6 +216,7 @@ jobs:
-DCMAKE_FORTRAN_COMPILER=ifx \
-DMUMPS_INCLUDE_DIR=${{github.workspace}}/dependencies/include \
-DMETIS_INCLUDE_DIR=${{github.workspace}}/dependencies/include \
-DKRYLOV_INCLUDE_DIR=${{github.workspace}}/dependencies/include \
-DBQPD=${{github.workspace}}/dependencies/lib/libbqpd.a \
-DMETIS_LIBRARY=${{github.workspace}}/dependencies/lib/libmetis.a \
-DMUMPS_LIBRARY=${{github.workspace}}/dependencies/lib/libdmumps.a \
Expand All @@ -223,6 +226,7 @@ jobs:
-DBLAS_LIBRARIES="${{github.workspace}}/dependencies/lib/libcblas.a;${{github.workspace}}/dependencies/lib/libblas.a" \
-DLAPACK_LIBRARIES=${{github.workspace}}/dependencies/lib/liblapack.a \
-DHIGHS=${{github.workspace}}/dependencies/lib/libhighs.a \
-DKRYLOV=${{github.workspace}}/dependencies/lib/libkrylov.so \
-DBUILD_STATIC_LIBS=ON \
-DBUILD_SHARED_LIBS=ON

Expand Down
Loading
Loading