diff --git a/.github/workflows/ci-trilinos.yml b/.github/workflows/ci-trilinos.yml new file mode 100644 index 0000000..4770fef --- /dev/null +++ b/.github/workflows/ci-trilinos.yml @@ -0,0 +1,94 @@ +name: github-Linux-trilinos + +on: + pull_request: + types: [ opened, reopened, synchronize ] + paths-ignore: + - 'logos/**' + - 'helper_scripts/**' + - 'docker_scripts/**' + - 'docs/**' + - '**/*.md' + push: # for direct quick fixes + branches: + - 'main' + - 'develop' + paths-ignore: + - 'logos/**' + - 'helper_scripts/**' + - 'docker_scripts/**' + - 'docs/**' + - '**/*.md' + +concurrency: + group: ${ {github.event_name }}-${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{github.event_name == 'pull_request'}} + +jobs: + CI-trilinos: + name: Trilinos + strategy: + matrix: + image: + - ubuntu-gnu-trilinos-11 + tag: + - ef73d14 + - 702aac5 + - trilinos-release-14-4-0 + build_type: + - Release + - Debug + epetra_toggle: + - ON + - OFF + + runs-on: ubuntu-latest + container: ghcr.io/pressio/${{ matrix.image }}:${{ matrix.tag }} + + env: + eigen_version: 3.4.0 + num_cpus: 4 + trilinos_dir: /home/pressio_builds/trilinos/install + + steps: + - uses: actions/checkout@v4 + + - name: Preparing environment + run: | + sed -i -e '$alocalhost slots=4' /etc/openmpi/openmpi-default-hostfile \ + && wget https://gitlab.com/libeigen/eigen/-/archive/${{ env.eigen_version }}/eigen-${{ env.eigen_version }}.tar.gz \ + && mkdir -p /eigen \ + && tar -xf eigen-${{ env.eigen_version }}.tar.gz -C /eigen + + - name: Configure + run: | + cmake -B builddir \ + -D CMAKE_BUILD_TYPE:STRING=${{ matrix.build_type }} \ + -D CMAKE_VERBOSE_MAKEFILE:BOOL=ON \ + -D CMAKE_C_COMPILER:FILEPATH=/usr/bin/mpicc \ + -D CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/mpic++ \ + -D MPI_Fortran_COMPILER:FILEPATH=/usr/bin/mpif90 \ + -D PRESSIO_OPS_ENABLE_TESTS:BOOL=ON \ + -D PRESSIO_ENABLE_TPL_EIGEN:BOOL=ON \ + -D PRESSIO_ENABLE_TPL_MPI:BOOL=ON \ + -D PRESSIO_ENABLE_TPL_TRILINOS:BOOL=ON \ + -D PRESSIO_ENABLE_EPETRA:BOOL=${{ matrix.epetra_toggle }} \ + -D PRESSIO_ENABLE_TPL_KOKKOS:BOOL=ON \ + -D PRESSIO_ENABLE_TPL_BLAS:BOOL=ON \ + -D PRESSIO_ENABLE_TPL_LAPACK:BOOL=ON \ + -D PRESSIO_ENABLE_DEBUG_PRINT=ON \ + -D EIGEN_INCLUDE_DIR=/eigen/eigen-${{ env.eigen_version }} \ + -D Trilinos_DIR=${{ env.trilinos_dir }}/lib/cmake/Trilinos \ + -D CMAKE_INSTALL_PREFIX:PATH=../install \ + -D CMAKE_CXX_FLAGS='-Wall -Werror' + + - name: Build + run: cmake --build builddir -j $num_cpus --target install + + - name: Test + working-directory: builddir + run: | + export LD_LIBRARY_PATH=${{ env.trilinos_dir }}/lib + export OMPI_ALLOW_RUN_AS_ROOT=1 + export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1 + ctest -j $num_cpus --output-on-failure