diff --git a/.github/ci_scripts/ci_ISSM.sh b/.github/ci_scripts/ci_ISSM.sh deleted file mode 100755 index 9c8dbed5e..000000000 --- a/.github/ci_scripts/ci_ISSM.sh +++ /dev/null @@ -1,97 +0,0 @@ -#!/bin/bash - -# Source config file -if [ $# -ne 1 ]; then - #no config file specified: exit - echo "No config file specified. Exiting..." >&2 # Error message to stderr. - exit 1 -fi -if [ ! -f "$1" ]; then - echo "File $1 not found!" >&2 # Error message to stderr. - exit 1 -fi - -# Initialize test suite variables (to avoid "-eq: unary operator expected") -NUMCPUS_INSTALL=1 -NUMCPUS_RUN=1 - -# Source configuration script -source $1; - -# Number of packages -NUMPACKAGES=$(($(echo ${EXTERNALPACKAGES} | wc -w ) / 2)) -source ${ISSM_DIR}/etc/environment.sh - -for ((i=1;i<=$NUMPACKAGES;i++)); do - NUM1=$((2*$i-1)) - NUM2=$((2*$i)) - PACKAGENAME=$(echo $EXTERNALPACKAGES | cut -d " " -f $NUM1-$NUM1) - PACKAGEINST=$(echo $EXTERNALPACKAGES | cut -d " " -f $NUM2-$NUM2) - - # Install if requested or if previous install has not been successful - cd ${ISSM_DIR}/externalpackages/$PACKAGENAME - - # Do not install package if it already exists - PREFIX=$(egrep "PREFIX=" ./$PACKAGEINST | cut -d'"' -f 2 | envsubst) - echo "======================================================"; - echo " Installing $PACKAGENAME "; - echo "======================================================"; - - ./$PACKAGEINST $NUMCPUS_INSTALL &> compil.log - if [ $? -ne 0 ] && [ "${PACKAGENAME}" != "boost" ]; then - cat compil.log - echo "======================================================"; - echo " ERROR: installation of $PACKAGENAME failed "; - echo "======================================================"; - exit 1; - fi - source ${ISSM_DIR}/etc/environment.sh -done - -# ISSM compilation -cd $ISSM_DIR -echo "======================================================"; -echo " Reconfiguring "; -echo "======================================================"; -autoreconf -ivf -if [ $? -ne 0 ]; then - echo "autoreconf failed!" - exit 1 -fi - -eval "./configure ${ISSM_CONFIG}" -if [ $? -ne 0 ]; then - echo "ISSM configuration failed (see options below)" - echo $ISSM_CONFIG - echo "ISSM configuration failed!" - exit 1 -fi - -# Compile and install ISSM -echo "======================================================" -echo " Compiling ISSM " -echo "======================================================" -make -j $NUMCPUS_INSTALL install -if [ $? -ne 0 ]; then - echo "ISSM_COMPILATION failed!" - exit 1 -fi - -echo "======================================================" -echo " Preparing Test scripts " -echo "======================================================" - -#Prepare MATLAB tests -cat > ${ISSM_DIR}/matlab_ci.m << EOF -% Go to the test directory -cd $ISSM_DIR/test/NightlyRun/ - -% Add ISSM tools to path -addpath('${ISSM_DIR}/src/m/dev'); -devpath; - -% Run tests -runme(${MATLAB_NROPTIONS},'quitonerror',1); -disp('MATLABEXITEDCORRECTLY'); -quit(0); -EOF diff --git a/.github/ci_scripts/github_linux_basic b/.github/ci_scripts/github_linux_basic deleted file mode 100644 index b73e5157b..000000000 --- a/.github/ci_scripts/github_linux_basic +++ /dev/null @@ -1,52 +0,0 @@ -#--------------------# -# ISSM Configuration # -#--------------------# -ISSM_CONFIG='\ - --prefix=${ISSM_DIR} \ - --disable-static \ - --enable-development \ - --enable-debugging \ - --with-numthreads=4 \ - --with-matlab-dir=${MATLAB_PATH} \ - --with-fortran-lib="-L/usr/lib/x86_64-linux-gnu -lgfortran" \ - --with-mpi-include="/usr/lib/x86_64-linux-gnu/openmpi/include/" \ - --with-mpi-libflags="-L/usr/lib/x86_64-linux-gnu/openmpi/lib -lmpi -lmpi_cxx" \ - --with-petsc-dir="/usr/lib/petscdir/petsc-real/" \ - --with-blas-lapack-dir="/usr/lib/petscdir/petsc-real/" \ - --with-metis-dir="/usr/include" \ - --with-scalapack-dir="/usr/lib/x86_64-linux-gnu/" \ - --with-mumps-dir="/usr/lib/petscdir/petsc-real/" \ - --with-triangle-dir="${ISSM_DIR}/externalpackages/triangle/install" \ - --with-m1qn3-dir="${ISSM_DIR}/externalpackages/m1qn3/install" \ - --with-semic-dir="${ISSM_DIR}/externalpackages/semic/install" -' - -# --with-mpi-include="${ISSM_DIR}/externalpackages/petsc/install/include" \ -# --with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \ -# --with-petsc-dir="${ISSM_DIR}/externalpackages/petsc/install" \ -# --with-blas-lapack-dir="${ISSM_DIR}/externalpackages/petsc/install" \ -# --with-metis-dir="${ISSM_DIR}/externalpackages/petsc/install" \ -# --with-scalapack-dir="${ISSM_DIR}/externalpackages/petsc/install" \ -# --with-mumps-dir="${ISSM_DIR}/externalpackages/petsc/install" \ - -#petsc install-3.21-linux.sh - -#-------------------# -# External Packages # -#-------------------# -EXTERNALPACKAGES=" - triangle install-linux.sh - m1qn3 install-linux.sh - semic install.sh -" - -# Number of CPUs used in ISSM compilation -NUMCPUS_INSTALL=8 - -#---------# -# Testing # -#---------# - -# Nightly run options -MATLAB_NROPTIONS="'exclude',[IdFromString('Dakota')],'id',101:110" -PYTHON_NROPTIONS="" diff --git a/.github/workflows/c-cpp-apt.yml b/.github/workflows/c-cpp-apt.yml new file mode 100644 index 000000000..f48ab6ae1 --- /dev/null +++ b/.github/workflows/c-cpp-apt.yml @@ -0,0 +1,89 @@ +name: Compilation CI + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] +env: + ISSM_DIR: ${{ github.workspace }} + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + + - run: echo "The job was automatically triggered by a ${{ github.event_name }} event." + - run: echo "This job is now running on a ${{ runner.os }} server hosted by GitHub!" + - run: echo "The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}." + + - name: Installing MATLAB + id: setup-matlab + uses: matlab-actions/setup-matlab@v2 + with: + release: R2023b + + - name: Installling Open MPI, METIS and PETSc + run: | + sudo apt-get install -y libopenmpi-dev libmetis-dev petsc-dev + + - name: Check out repository code + uses: actions/checkout@v4 + + - name: Install External packages + run: | + cd $ISSM_DIR/externalpackages/triangle && ./install-linux.sh && source $ISSM_DIR/etc/environment.sh + cd $ISSM_DIR/externalpackages/m1qn3 && ./install-linux.sh && source $ISSM_DIR/etc/environment.sh + + - name: Reconfigure ISSM + run: | + autoreconf -ivf + ./configure --prefix=${ISSM_DIR} \ + --disable-static \ + --enable-development \ + --enable-debugging \ + --with-numthreads=4 \ + --with-matlab-dir=${{ steps.setup-matlab.outputs.matlabroot }} \ + --with-fortran-lib="-L/usr/lib/x86_64-linux-gnu -lgfortran" \ + --with-mpi-include="/usr/lib/x86_64-linux-gnu/openmpi/include/" \ + --with-mpi-libflags="-L/usr/lib/x86_64-linux-gnu/openmpi/lib -lmpi -lmpi_cxx" \ + --with-petsc-dir="/usr/lib/petscdir/petsc-real/" \ + --with-blas-lapack-dir="/usr/lib/petscdir/petsc-real/" \ + --with-metis-dir="/usr/include" \ + --with-scalapack-dir="/usr/lib/x86_64-linux-gnu/" \ + --with-mumps-dir="/usr/lib/petscdir/petsc-real/" \ + --with-triangle-dir="${ISSM_DIR}/externalpackages/triangle/install" \ + --with-m1qn3-dir="${ISSM_DIR}/externalpackages/m1qn3/install" + + - name: Compile ISSM + run: make -j8 install + + - name: Prepare MATLAB script + run: | + cat > ${ISSM_DIR}/matlab_ci.m << EOF + % Go to the test directory + cd $ISSM_DIR/test/NightlyRun/ + + % Add ISSM tools to path + addpath('${ISSM_DIR}/src/m/dev'); + devpath; + + % Run tests + runme('exclude',[IdFromString('Dakota')],'id',101:110,'quitonerror',1); + quit(0); + EOF + cat ${ISSM_DIR}/matlab_ci.m + + - name: Get run-matlab-command + run: | + wget -O /usr/local/bin/run-matlab-command https://ssd.mathworks.com/supportfiles/ci/run-matlab-command/v2/glnxa64/run-matlab-command + chmod +x /usr/local/bin/run-matlab-command + + - name: Run MATLAB Command + run: | + source $ISSM_DIR/etc/environment.sh + LD_PRELOAD=/lib/x86_64-linux-gnu/libstdc++.so.6 run-matlab-command "matlab_ci" + + - run: echo "This job's status is ${{ job.status }}."