Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
102 changes: 102 additions & 0 deletions .github/workflows/build-macos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
name: build-macos
on: [push, pull_request]
jobs:

macos_latest_cmake:
runs-on: macos-latest
name: macOS CMake ${{ matrix.python }} Python
strategy:
fail-fast: false
matrix:
include:
- python: without
- python: with
steps:
- name: Clone and check out repository code
uses: actions/checkout@v7
with:
fetch-depth: 0
ref: ${{github.event.pull_request.head.ref}} # Branch where changes are implemented.
repository: ${{github.event.pull_request.head.repo.full_name}} # Repo where changes are implemented.
- name: Check commit
run: |
git log -1
- name: Install brew dependencies
run: |
if [ "${{ matrix.python }}" == "with" ]; then
# Unlink and re-link to prevent errors when github mac runner images
# install python outside of brew, for example:
# https://github.com/orgs/Homebrew/discussions/3895
# https://github.com/actions/setup-python/issues/577
# https://github.com/actions/runner-images/issues/6459
# https://github.com/actions/runner-images/issues/6507
# https://github.com/actions/runner-images/issues/2322
brew list -1 | grep python | while read formula; do brew unlink $formula; brew link --overwrite $formula; done
fi
brew reinstall gcc # brings gfortran on path
brew install cmake open-mpi eigen veclibfort $([ "${{ matrix.python }}" == "with" ] && echo "boost-python3 python3 numpy" || echo " ")
- name: Setup environment
run: |
if [ "${{ matrix.python }}" == "without" ]; then
# use MPI compiler wrappers
echo "FC=mpif90" >> $GITHUB_ENV
echo "CC=mpicc" >> $GITHUB_ENV
echo "CXX=mpic++" >> $GITHUB_ENV
else
# use compiler drivers directly
echo "FC=gfortran" >> $GITHUB_ENV
echo "CC=clang" >> $GITHUB_ENV
echo "CXX=clang++" >> $GITHUB_ENV
fi
- name: Configure
run: |
mkdir -p build
cd build
export CFLAGS="-Qunused-arguments"
export CXXFLAGS="-Qunused-arguments"
export VECLIBFORT_PREFIX=$(brew --prefix veclibfort)
cmake \
-DBLAS_LIBRARIES="${VECLIBFORT_PREFIX}/lib/libvecLibFort.dylib" \
-DLAPACK_LIBRARIES="${VECLIBFORT_PREFIX}/lib/libvecLibFort.dylib" \
-DEXAMPLES=ON -DICB=ON -DEIGEN=ON -DMPI=ON \
$([ "${{ matrix.python }}" == "with" ] && echo "-DPYTHON3=ON" || echo "") \
..
- name: Build
run: |
cd build
make all
- name: Run tests
run: |
cd build
CTEST_OUTPUT_ON_FAILURE=1 make test

macos_latest_autotools:
runs-on: macos-latest
name: macOS autotools
steps:
- name: Clone and check out repository code
uses: actions/checkout@v7
with:
fetch-depth: 0
ref: ${{github.event.pull_request.head.ref}} # Branch where changes are implemented.
repository: ${{github.event.pull_request.head.repo.full_name}} # Repo where changes are implemented.
- name: Check commit
run: |
git log -1
- name: Install brew dependencies
run: |
brew reinstall gcc # brings gfortran on path
brew install autoconf automake libtool pkgconfig open-mpi eigen veclibfort
- name: Configure
run: |
./bootstrap
export VECLIBFORT_PREFIX=$(brew --prefix veclibfort)
BLAS_LIBS="-L${VECLIBFORT_PREFIX}/lib -lvecLibFort" \
LAPACK_LIBS="-L${VECLIBFORT_PREFIX}/lib -lvecLibFort" \
./configure --enable-icb --enable-eigen --enable-mpi
- name: Build
run: |
make all
- name: Run checks
run: |
make check
102 changes: 102 additions & 0 deletions .github/workflows/build-mingw.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
name: build-mingw
on: [push, pull_request]
jobs:
windows_latest_cmake:
runs-on: windows-latest
name: MinGW-w64 ${{ matrix.msystem }} INTERFACE64=${{ matrix.int64 }}/MPI=${{ matrix.mpi }}
strategy:
fail-fast: false
matrix:
msystem: [UCRT64, CLANG64]
int64: [ON, OFF]
mpi: [ON, OFF]
exclude:
- int64: ON
mpi: ON
defaults:
run:
# Use MSYS2 as default shell
shell: msys2 {0}
steps:
- name: Install MSYS2 build environment
uses: msys2/setup-msys2@v2
with:
update: true
msystem: ${{ matrix.msystem }}
install: >-
base-devel
git
pacboy: >-
cmake:p
ninja:p
cc:p
fc:p
eigen3:p
- name: Install OpenBLAS and MS-MPI from MSYS2
run: |
if [[ ${{ matrix.int64 }} != ON ]]; then
pacboy -S openblas:p --noconfirm
else
pacboy -S openblas64:p --noconfirm
fi
if [[ ${{ matrix.mpi }} = ON ]]; then
# This installs only the link library.
# The actual library will be installed in the next step.
pacboy -S msmpi:p --noconfirm
fi
- name: Install MS-MPI (for mpiexec)
uses: mpi4py/setup-mpi@v1
- name: Clone and check out repository code
uses: actions/checkout@v7
with:
fetch-depth: 0
ref: ${{github.event.pull_request.head.ref}} # Branch where changes are implemented.
repository: ${{github.event.pull_request.head.repo.full_name}} # Repo where changes are implemented.
- name: Check commit
run: |
git log -1
- name: Run job
run: |
mkdir -p build && cd build
echo "::group::Configure"
if [[ ${{ matrix.int64 }} == ON ]]; then
_blas_lib_flag="-DBLAS_LIBRARIES=openblas_64"
fi
cmake \
-GNinja \
-DICB=ON \
-DEIGEN=ON \
-DEXAMPLES=ON \
-DMPI=${{ matrix.mpi }} \
-DINTERFACE64=${{ matrix.int64 }} \
${_blas_lib_flag} \
..
echo "::endgroup::"
echo "::group::Build"
cmake --build . -v
echo "::endgroup::"
- name: Run tests
id: run-ctest
run: |
if [[ ${{ matrix.mpi }} == ON ]]; then
export PATH="/c/Program Files/Microsoft MPI/Bin":$PATH # add mpiexec to msys2 path
fi
cd build
ctest
- name: Re-run tests
if: always() && (steps.run-ctest.outcome == 'failure')
timeout-minutes: 60
run: |
if [[ ${{ matrix.mpi }} == ON ]]; then
export PATH="/c/Program Files/Microsoft MPI/Bin":$PATH # add mpiexec to msys2 path
fi
cd build
echo "::group::Re-run ctest"
ctest --rerun-failed --output-on-failure || true
echo "::endgroup::"
echo "::group::Log from these tests"
[ ! -f Testing/Temporary/LastTest.log ] || cat Testing/Temporary/LastTest.log
echo "::endgroup::"
echo "::group::Content of arpackmm.run.log"
[ ! -f EXAMPLES/MATRIX_MARKET/arpackmm.run.log ] || cat EXAMPLES/MATRIX_MARKET/arpackmm.run.log
echo "::endgroup::"
173 changes: 173 additions & 0 deletions .github/workflows/build-ubuntu.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
name: build-ubuntu
on: [push, pull_request]
jobs:

ubuntu_latest_cmake:
runs-on: ubuntu-latest
name: Ubuntu CMake ${{ matrix.tests }} tests ${{ matrix.install }} install ${{ matrix.python }} Python
strategy:
fail-fast: false
matrix:
include:
- tests: with
install: without
python: without
- tests: without
install: with
python: without
- tests: with
install: without
python: with
steps:
- name: Clone and check out repository code
uses: actions/checkout@v7
with:
fetch-depth: 0
ref: ${{github.event.pull_request.head.ref}} # Branch where changes are implemented.
repository: ${{github.event.pull_request.head.repo.full_name}} # Repo where changes are implemented.
- name: Check commit
run: |
git log -1
- name: Update OS
run: sudo apt-get update
- name: Install apt-get dependencies
run: sudo apt-get install -y gfortran gcc g++ openmpi-bin libopenmpi-dev libblas-dev liblapack-dev libeigen3-dev cmake
- name: Install python dependencies
if: matrix.python == 'with'
run: sudo apt-get -y install python3-minimal python3-pip python3-numpy
- name: Build boost-python for python3 (not provided by apt-cache)
if: matrix.python == 'with'
run : |
sudo apt-get -y install wget
wget https://sourceforge.net/projects/boost/files/boost/1.79.0/boost_1_79_0.tar.gz
tar -xf boost_1_79_0.tar.gz
cd boost_1_79_0
./bootstrap.sh --with-libraries=python --with-python=/usr/bin/python3 --with-toolset=gcc
sudo ./b2 toolset=gcc install
sudo apt-get install locate
sudo updatedb
- name: Configure
run: |
mkdir build
cd build
cmake \
$([ "${{ matrix.tests }}" == "with" ] && echo "-DEXAMPLES=ON -DMPI=ON -DICB=ON -DEIGEN=ON" || echo "") \
$([ "${{ matrix.python }}" == "with" ] && echo "-DPYTHON3=ON" || echo "") \
..
- name: Build and install
if: matrix.install == 'with'
run: |
cd build
bash ./tstCMakeInstall.sh
- name: Build and install '64-'
if: matrix.install == 'with'
run: |
cd build
bash ./tstCMakeInstall.sh 64-
- name: Build and install '-ILP64'
if: matrix.install == 'with'
run: |
cd build
bash ./tstCMakeInstall.sh -ILP64
- name: Build and install '64-ILP64'
if: matrix.install == 'with'
run: |
cd build
bash ./tstCMakeInstall.sh 64-ILP64
- name: Build
if: matrix.tests == 'with'
run: |
cd build
make all
- name: Run tests
if: matrix.tests == 'with'
run: |
cd build
CTEST_OUTPUT_ON_FAILURE=1 make test
- name: Create source package
if: matrix.tests == 'with'
run: |
cd build
make package_source

ubuntu_latest_autotools:
runs-on: ubuntu-latest
name: Ubuntu autotools ${{ matrix.tests }} tests ${{ matrix.install }} install using ${{ matrix.blas }}
strategy:
fail-fast: false
matrix:
include:
- tests: with
install: without
blas: BLAS
configure-flags: --enable-mpi --enable-icb --enable-eigen
- tests: without
install: with
blas: BLAS
configure-flags:
- tests: with
install: without
blas: MKL
configure-flags: --enable-icb --with-blas=mkl_gf_ilp64 --with-lapack=mkl_gf_ilp64
steps:
- name: Clone and check out repository code
uses: actions/checkout@v7
with:
fetch-depth: 0
ref: ${{github.event.pull_request.head.ref}} # Branch where changes are implemented.
repository: ${{github.event.pull_request.head.repo.full_name}} # Repo where changes are implemented.
- name: Check commit
run: |
git log -1
- name: Update OS
run: sudo apt-get update
- name: Install apt-get dependencies
run: |
sudo apt-get install -y \
gfortran gcc g++ openmpi-bin libopenmpi-dev \
$([ "${{ matrix.blas }}" != "BLAS" ] || echo "libblas-dev liblapack-dev") \
libeigen3-dev automake autoconf pkg-config libtool
if [ "${{ matrix.blas }}" == "MKL" ]; then
echo "::group::Install Intel MKL (ILP64 BLAS/LAPACK)"
echo yes | sudo apt-get -y install intel-mkl libmkl-dev
echo "::endgroup::"
fi
- name: Setup environment for MKL
if: matrix.blas == 'MKL'
run: |
echo "FFLAGS=-DMKL_ILP64 -I/usr/include/mkl" >> $GITHUB_ENV
echo "FCFLAGS=-DMKL_ILP64 -I/usr/include/mkl" >> $GITHUB_ENV
echo "LIBS=-Wl,--no-as-needed -L/usr/lib/x86_64-linux-gnu -lmkl_sequential -lmkl_core -lpthread -lm -ldl" >> $GITHUB_ENV
echo "INTERFACE64=1" >> $GITHUB_ENV
- name: Configure
run: |
./bootstrap
./configure ${{ matrix.configure-flags }}
- name: Build and install
if: matrix.install == 'with'
run: |
bash ./tstAutotoolsInstall.sh
- name: Build and install '64-'
if: matrix.install == 'with'
run: |
bash ./tstAutotoolsInstall.sh 64-
- name: Build and install '-ILP64'
if: matrix.install == 'with'
run: |
bash ./tstAutotoolsInstall.sh -ILP64
- name: Build and install '64-ILP64'
if: matrix.install == 'with'
run: |
bash ./tstAutotoolsInstall.sh 64-ILP64
- name: Build
if: matrix.tests == 'with'
run: |
make all
- name: Run checks
if: matrix.tests == 'with'
run: |
make check
- name: Run distchecks
if: matrix.tests == 'with' && matrix.blas != 'MKL'
run: |
make distcheck
Loading
Loading