diff --git a/.github/workflows/emulated.yml b/.github/workflows/emulated.yml index b31ba33f..d660d636 100644 --- a/.github/workflows/emulated.yml +++ b/.github/workflows/emulated.yml @@ -1,113 +1,113 @@ -name: arpack-ng-emu -on: - workflow_dispatch: - push: - pull_request: - -concurrency: ci-arch-emu-${{ github.ref }} - -jobs: - - alpine: - runs-on: ubuntu-latest - - defaults: - run: - # Use emulated shell as default - shell: alpine.sh {0} - - strategy: - # Allow other runners in the matrix to continue if some fail - fail-fast: false - - matrix: - # For available CPU architectures, see: - # https://github.com/marketplace/actions/setup-alpine-linux-environment - arch: [x86, aarch64, armv7, ppc64le, riscv64, s390x] - - name: alpine (${{ matrix.arch }}) - - steps: - - name: checkout repository - uses: actions/checkout@v4 - - - name: install dependencies - uses: jirutka/setup-alpine@v1 - with: - arch: ${{ matrix.arch }} - packages: > - bash - build-base - ccache - cmake - gfortran - eigen-dev - lapack-dev - - - name: prepare ccache - # create key with human readable timestamp - # used in action/cache/restore and action/cache/save steps - id: ccache-prepare - run: | - echo "key=ccache:alpine:${{ matrix.arch }}:${{ github.ref }}:$(date +"%Y-%m-%d_%H-%M-%S"):${{ github.sha }}" >> $GITHUB_OUTPUT - - - name: restore ccache - # setup the GitHub cache used to maintain the ccache from one job to the next - uses: actions/cache/restore@v4 - with: - # location of the ccache of the chroot in the root file system - path: /home/runner/rootfs/alpine-latest-${{ matrix.arch }}/home/runner/.ccache - key: ${{ steps.ccache-prepare.outputs.key }} - # Prefer caches from the same branch. Fall back to caches from the default branch. - restore-keys: | - ccache:alpine:${{ matrix.arch }}:${{ github.ref }} - ccache:alpine:${{ matrix.arch }} - - - name: configure ccache - env: - CCACHE_MAX: ${{ matrix.ccache-max }} - run: | - test -d ~/.ccache || mkdir ~/.ccache - echo "max_size = 20M" >> ~/.ccache/ccache.conf - echo "compression = true" >> ~/.ccache/ccache.conf - ccache -s - which ccache - - - name: configure - run: | - echo "gcc --version" - gcc --version - echo "gcc -dumpmachine" - gcc -dumpmachine - echo " " - mkdir -p ${GITHUB_WORKSPACE}/build && cd ${GITHUB_WORKSPACE}/build - cmake \ - -DEXAMPLES=ON \ - -DMPI=OFF \ - -DICB=ON \ - -DEIGEN=ON \ - -DCMAKE_C_COMPILER_LAUNCHER="ccache" \ - -DCMAKE_CXX_COMPILER_LAUNCHER="ccache" \ - .. - - - name: build - run: | - cd ${GITHUB_WORKSPACE}/build - cmake --build . - - - name: ccache status - continue-on-error: true - run: ccache -s - - - name: save ccache - # Save the cache after we are done (successfully) building - # This helps to retain the ccache even if the subsequent steps are failing. - uses: actions/cache/save@v4 - with: - path: /home/runner/rootfs/alpine-latest-${{ matrix.arch }}/home/runner/.ccache - key: ${{ steps.ccache-prepare.outputs.key }} - - - name: test - run: | - cd ${GITHUB_WORKSPACE}/build - ctest . || ctest . --rerun-failed --output-on-failure +#name: arpack-ng-emu +#on: +# workflow_dispatch: +# push: +# pull_request: +# +#concurrency: ci-arch-emu-${{ github.ref }} +# +#jobs: +# +# alpine: +# runs-on: ubuntu-latest +# +# defaults: +# run: +# # Use emulated shell as default +# shell: alpine.sh {0} +# +# strategy: +# # Allow other runners in the matrix to continue if some fail +# fail-fast: false +# +# matrix: +# # For available CPU architectures, see: +# # https://github.com/marketplace/actions/setup-alpine-linux-environment +# arch: [x86, aarch64, armv7, ppc64le, riscv64, s390x] +# +# name: alpine (${{ matrix.arch }}) +# +# steps: +# - name: checkout repository +# uses: actions/checkout@v4 +# +# - name: install dependencies +# uses: jirutka/setup-alpine@v1 +# with: +# arch: ${{ matrix.arch }} +# packages: > +# bash +# build-base +# ccache +# cmake +# gfortran +# eigen-dev +# lapack-dev +# +# - name: prepare ccache +# # create key with human readable timestamp +# # used in action/cache/restore and action/cache/save steps +# id: ccache-prepare +# run: | +# echo "key=ccache:alpine:${{ matrix.arch }}:${{ github.ref }}:$(date +"%Y-%m-%d_%H-%M-%S"):${{ github.sha }}" >> $GITHUB_OUTPUT +# +# - name: restore ccache +# # setup the GitHub cache used to maintain the ccache from one job to the next +# uses: actions/cache/restore@v4 +# with: +# # location of the ccache of the chroot in the root file system +# path: /home/runner/rootfs/alpine-latest-${{ matrix.arch }}/home/runner/.ccache +# key: ${{ steps.ccache-prepare.outputs.key }} +# # Prefer caches from the same branch. Fall back to caches from the default branch. +# restore-keys: | +# ccache:alpine:${{ matrix.arch }}:${{ github.ref }} +# ccache:alpine:${{ matrix.arch }} +# +# - name: configure ccache +# env: +# CCACHE_MAX: ${{ matrix.ccache-max }} +# run: | +# test -d ~/.ccache || mkdir ~/.ccache +# echo "max_size = 20M" >> ~/.ccache/ccache.conf +# echo "compression = true" >> ~/.ccache/ccache.conf +# ccache -s +# which ccache +# +# - name: configure +# run: | +# echo "gcc --version" +# gcc --version +# echo "gcc -dumpmachine" +# gcc -dumpmachine +# echo " " +# mkdir -p ${GITHUB_WORKSPACE}/build && cd ${GITHUB_WORKSPACE}/build +# cmake \ +# -DEXAMPLES=ON \ +# -DMPI=OFF \ +# -DICB=ON \ +# -DEIGEN=ON \ +# -DCMAKE_C_COMPILER_LAUNCHER="ccache" \ +# -DCMAKE_CXX_COMPILER_LAUNCHER="ccache" \ +# .. +# +# - name: build +# run: | +# cd ${GITHUB_WORKSPACE}/build +# cmake --build . +# +# - name: ccache status +# continue-on-error: true +# run: ccache -s +# +# - name: save ccache +# # Save the cache after we are done (successfully) building +# # This helps to retain the ccache even if the subsequent steps are failing. +# uses: actions/cache/save@v4 +# with: +# path: /home/runner/rootfs/alpine-latest-${{ matrix.arch }}/home/runner/.ccache +# key: ${{ steps.ccache-prepare.outputs.key }} +# +# - name: test +# run: | +# cd ${GITHUB_WORKSPACE}/build +# ctest . || ctest . --rerun-failed --output-on-failure diff --git a/.github/workflows/jobs.yml b/.github/workflows/jobs.yml index ee9f1a6f..0f42d7e2 100644 --- a/.github/workflows/jobs.yml +++ b/.github/workflows/jobs.yml @@ -1,55 +1,55 @@ name: arpack-ng on: [push, pull_request] jobs: - ubuntu_latest_cmake: - runs-on: ubuntu-latest - steps: - - name: Clone and check out repository code - uses: actions/checkout@v2 - 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: Run job - run: | - mkdir build - cd build - cmake -DEXAMPLES=ON -DMPI=ON -DICB=ON -DEIGEN=ON .. - make all - CTEST_OUTPUT_ON_FAILURE=1 make test - make package_source - ubuntu_latest_cmake_install: - runs-on: ubuntu-latest - steps: - - name: Clone and check out repository code - uses: actions/checkout@v2 - 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: Run job - run: | - mkdir build - cd build - cmake .. - bash ./tstCMakeInstall.sh - bash ./tstCMakeInstall.sh 64- - bash ./tstCMakeInstall.sh -ILP64 - bash ./tstCMakeInstall.sh 64-ILP64 +# ubuntu_latest_cmake: +# runs-on: ubuntu-latest +# steps: +# - name: Clone and check out repository code +# uses: actions/checkout@v2 +# 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: Run job +# run: | +# mkdir build +# cd build +# cmake -DEXAMPLES=ON -DMPI=ON -DICB=ON -DEIGEN=ON .. +# make all +# CTEST_OUTPUT_ON_FAILURE=1 make test +# make package_source +# ubuntu_latest_cmake_install: +# runs-on: ubuntu-latest +# steps: +# - name: Clone and check out repository code +# uses: actions/checkout@v2 +# 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: Run job +# run: | +# mkdir build +# cd build +# cmake .. +# bash ./tstCMakeInstall.sh +# bash ./tstCMakeInstall.sh 64- +# bash ./tstCMakeInstall.sh -ILP64 +# bash ./tstCMakeInstall.sh 64-ILP64 ubuntu_latest_autotools: runs-on: ubuntu-latest steps: @@ -72,282 +72,286 @@ jobs: ./configure --enable-mpi --enable-icb --enable-eigen make all make check - make distcheck - ubuntu_latest_autotools_install: - runs-on: ubuntu-latest - steps: - - name: Clone and check out repository code - uses: actions/checkout@v2 - 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 automake autoconf pkg-config libtool - - name: Run job - run: | - ./bootstrap - ./configure - bash ./tstAutotoolsInstall.sh - bash ./tstAutotoolsInstall.sh 64- - bash ./tstAutotoolsInstall.sh -ILP64 - bash ./tstAutotoolsInstall.sh 64-ILP64 - ubuntu_latest_cmake_python: - runs-on: ubuntu-latest - steps: - - name: Clone and check out repository code - uses: actions/checkout@v2 - 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 cmake libeigen3-dev - - name: Install python dependencies - run: sudo apt-get -y install python3-minimal python3-pip python3-numpy - - name: Build boost-python for python3 (not provided by apt-cache) - 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: Run job - run: | - mkdir build - cd build - cmake -DEXAMPLES=ON -DMPI=ON -DICB=ON -DEIGEN=ON -DPYTHON3=ON .. - make all - CTEST_OUTPUT_ON_FAILURE=1 make test - ubuntu_latest_autotools_ilp64: - runs-on: ubuntu-latest - steps: - - name: Clone and check out repository code - uses: actions/checkout@v2 - 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 automake autoconf pkg-config libtool libeigen3-dev - - name: Install Intel MKL (ILP64 blas/lapack) - run: echo yes | sudo apt-get -y install intel-mkl libmkl-dev - - name: Run job - run: | - ./bootstrap - ./configure --enable-icb --with-blas=mkl_gf_ilp64 --with-lapack=mkl_gf_ilp64 - make all - make check - env: - FFLAGS: "-DMKL_ILP64 -I/usr/include/mkl" - FCFLAGS: "-DMKL_ILP64 -I/usr/include/mkl" - LIBS: "-Wl,--no-as-needed -L/usr/lib/x86_64-linux-gnu -lmkl_sequential -lmkl_core -lpthread -lm -ldl" - INTERFACE64: "1" - macos_latest_cmake: - runs-on: macos-latest - steps: - - name: Clone and check out repository code - uses: actions/checkout@v2 - 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 cmake mpich eigen - - name: Run job - run: | - mkdir -p build - cd build - export FC=mpif90 # Uses gfortran. - export FFLAGS="-ff2c -fno-second-underscore" - export CC=mpicc # Uses clang. - export CFLAGS="-Qunused-arguments" - export CXX=mpic++ # Uses clang++. - export CXXFLAGS="-Qunused-arguments" - cmake -DBLA_VENDOR=Apple -DEXAMPLES=ON -DICB=ON -DEIGEN=ON -DMPI=ON .. - make all - CTEST_OUTPUT_ON_FAILURE=1 make test - macos_latest_cmake_python: - runs-on: macos-latest - steps: - - name: Clone and check out repository code - uses: actions/checkout@v2 - 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: | - # 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 - brew reinstall gcc # brings gfortran on path - brew install cmake eigen boost-python3 python3 numpy - - name: Run job - run: | - mkdir -p build - cd build - export FC=gfortran - export FFLAGS="-ff2c -fno-second-underscore" - export CC=clang - export CFLAGS="-Qunused-arguments" - export CXX=clang++ - export CXXFLAGS="-Qunused-arguments" - cmake -DBLA_VENDOR=Apple -DEXAMPLES=ON -DICB=ON -DEIGEN=ON -DPYTHON3=ON .. - make all - CTEST_OUTPUT_ON_FAILURE=1 make test - macos_latest_autotools: - runs-on: macos-latest - steps: - - name: Clone and check out repository code - uses: actions/checkout@v2 - 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 pkg-config mpich eigen - - name: Run job - run: | - ./bootstrap - LIBS="-framework Accelerate" FFLAGS="-ff2c -fno-second-underscore" FCFLAGS="-ff2c -fno-second-underscore" \ - ./configure --enable-icb --enable-eigen --enable-mpi - make all - make check - 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@v2 - 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 - export PATH="${GITHUB_WORKSPACE}/build":$PATH # add libarpack.dll to msys2 path for tests that run in different directory - cd build - ctest - - name: Re-run tests - if: always() && (steps.run-ctest.outcome == 'failure') - timeout-minutes: 60 + - name: Debug job run: | - if [[ ${{ matrix.mpi }} == ON ]]; then - export PATH="/c/Program Files/Microsoft MPI/Bin":$PATH # add mpiexec to msys2 path - fi - export PATH="${GITHUB_WORKSPACE}/build":$PATH # add libarpack.dll to msys2 path for tests that run in different directory - 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::" + cat ./EXAMPLES/MATRIX_MARKET/arpackmm.run.log + cat ./EXAMPLES/MATRIX_MARKET/test-suite.log +# make distcheck +# ubuntu_latest_autotools_install: +# runs-on: ubuntu-latest +# steps: +# - name: Clone and check out repository code +# uses: actions/checkout@v2 +# 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 automake autoconf pkg-config libtool +# - name: Run job +# run: | +# ./bootstrap +# ./configure +# bash ./tstAutotoolsInstall.sh +# bash ./tstAutotoolsInstall.sh 64- +# bash ./tstAutotoolsInstall.sh -ILP64 +# bash ./tstAutotoolsInstall.sh 64-ILP64 +# ubuntu_latest_cmake_python: +# runs-on: ubuntu-latest +# steps: +# - name: Clone and check out repository code +# uses: actions/checkout@v2 +# 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 cmake libeigen3-dev +# - name: Install python dependencies +# run: sudo apt-get -y install python3-minimal python3-pip python3-numpy +# - name: Build boost-python for python3 (not provided by apt-cache) +# 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: Run job +# run: | +# mkdir build +# cd build +# cmake -DEXAMPLES=ON -DMPI=ON -DICB=ON -DEIGEN=ON -DPYTHON3=ON .. +# make all +# CTEST_OUTPUT_ON_FAILURE=1 make test +# ubuntu_latest_autotools_ilp64: +# runs-on: ubuntu-latest +# steps: +# - name: Clone and check out repository code +# uses: actions/checkout@v2 +# 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 automake autoconf pkg-config libtool libeigen3-dev +# - name: Install Intel MKL (ILP64 blas/lapack) +# run: echo yes | sudo apt-get -y install intel-mkl libmkl-dev +# - name: Run job +# run: | +# ./bootstrap +# ./configure --enable-icb --with-blas=mkl_gf_ilp64 --with-lapack=mkl_gf_ilp64 +# make all +# make check +# env: +# FFLAGS: "-DMKL_ILP64 -I/usr/include/mkl" +# FCFLAGS: "-DMKL_ILP64 -I/usr/include/mkl" +# LIBS: "-Wl,--no-as-needed -L/usr/lib/x86_64-linux-gnu -lmkl_sequential -lmkl_core -lpthread -lm -ldl" +# INTERFACE64: "1" +# macos_latest_cmake: +# runs-on: macos-latest +# steps: +# - name: Clone and check out repository code +# uses: actions/checkout@v2 +# 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 cmake mpich eigen +# - name: Run job +# run: | +# mkdir -p build +# cd build +# export FC=mpif90 # Uses gfortran. +# export FFLAGS="-ff2c -fno-second-underscore" +# export CC=mpicc # Uses clang. +# export CFLAGS="-Qunused-arguments" +# export CXX=mpic++ # Uses clang++. +# export CXXFLAGS="-Qunused-arguments" +# cmake -DBLA_VENDOR=Apple -DEXAMPLES=ON -DICB=ON -DEIGEN=ON -DMPI=ON .. +# make all +# CTEST_OUTPUT_ON_FAILURE=1 make test +# macos_latest_cmake_python: +# runs-on: macos-latest +# steps: +# - name: Clone and check out repository code +# uses: actions/checkout@v2 +# 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: | +# # 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 +# brew reinstall gcc # brings gfortran on path +# brew install cmake eigen boost-python3 python3 numpy +# - name: Run job +# run: | +# mkdir -p build +# cd build +# export FC=gfortran +# export FFLAGS="-ff2c -fno-second-underscore" +# export CC=clang +# export CFLAGS="-Qunused-arguments" +# export CXX=clang++ +# export CXXFLAGS="-Qunused-arguments" +# cmake -DBLA_VENDOR=Apple -DEXAMPLES=ON -DICB=ON -DEIGEN=ON -DPYTHON3=ON .. +# make all +# CTEST_OUTPUT_ON_FAILURE=1 make test +# macos_latest_autotools: +# runs-on: macos-latest +# steps: +# - name: Clone and check out repository code +# uses: actions/checkout@v2 +# 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 pkg-config mpich eigen +# - name: Run job +# run: | +# ./bootstrap +# LIBS="-framework Accelerate" FFLAGS="-ff2c -fno-second-underscore" FCFLAGS="-ff2c -fno-second-underscore" \ +# ./configure --enable-icb --enable-eigen --enable-mpi +# make all +# make check +# 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@v2 +# 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 +# export PATH="${GITHUB_WORKSPACE}/build":$PATH # add libarpack.dll to msys2 path for tests that run in different directory +# 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 +# export PATH="${GITHUB_WORKSPACE}/build":$PATH # add libarpack.dll to msys2 path for tests that run in different directory +# 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::"