From dec0c7c8bd10c114970d4fa5a30b0854e67189c5 Mon Sep 17 00:00:00 2001 From: Steve Morley Date: Wed, 13 Aug 2025 10:59:25 -0600 Subject: [PATCH 1/2] upgrade github ci image to ubuntu 24.04 --- .github/workflows/ramscb-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ramscb-ci.yml b/.github/workflows/ramscb-ci.yml index b92168b..a02f83a 100644 --- a/.github/workflows/ramscb-ci.yml +++ b/.github/workflows/ramscb-ci.yml @@ -12,14 +12,14 @@ on: jobs: basic-suite: - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 steps: - name: Install dependencies run: | sudo apt-get update -qq sudo apt-get install -y make gcc g++ gfortran sudo apt-get install -y make libopenmpi-dev openmpi-bin - sudo apt-get install -y libgsl-dev libgsl23 gsl-bin libgsl-dbg + sudo apt-get install -y libgsl-dev libgslcblas0 gsl-bin libgsl-dbg sudo apt-get install -y libnetcdf-dev libnetcdff-dev nco netcdf-bin gfortran --version gsl-config --version From f95362a9be991570ab1fbf62f5bac1a44ab30a44 Mon Sep 17 00:00:00 2001 From: Steve Morley Date: Wed, 13 Aug 2025 13:13:08 -0600 Subject: [PATCH 2/2] Trap DiffNum.pl output, use O0 for test, fix tolerance, use GSL2.5 -Note that tee doesn't work here because the exit code returned will be from tee rather than DiffNum.pl. The usual workarounds seem to mostly require bash and the CI uses dash. -O0 is used here to mitigate optimizer differences from increase in GCC version. -Ubuntu 24.04 has GSL2.7 by default - this reverts to a manual install of 2.5 for testing --- .github/workflows/ramscb-ci.yml | 10 +++++-- Makefile | 52 ++++++++++++++++----------------- 2 files changed, 34 insertions(+), 28 deletions(-) diff --git a/.github/workflows/ramscb-ci.yml b/.github/workflows/ramscb-ci.yml index a02f83a..2481a01 100644 --- a/.github/workflows/ramscb-ci.yml +++ b/.github/workflows/ramscb-ci.yml @@ -19,8 +19,13 @@ jobs: sudo apt-get update -qq sudo apt-get install -y make gcc g++ gfortran sudo apt-get install -y make libopenmpi-dev openmpi-bin - sudo apt-get install -y libgsl-dev libgslcblas0 gsl-bin libgsl-dbg sudo apt-get install -y libnetcdf-dev libnetcdff-dev nco netcdf-bin + wget https://mirror.us-midwest-1.nexcess.net/gnu/gsl/gsl-2.5.tar.gz + tar xzf gsl-2.5.tar.gz + cd gsl-2.5 + ./configure && make && sudo make install + cd .. + export LD_RUN_PATH=$LD_RUN_PATH:/usr/local/lib gfortran --version gsl-config --version - name: Checkout @@ -28,7 +33,8 @@ jobs: - name: ram_test_tr run: | export PERL5LIB=$PERL5LIB:`pwd` - ./Config.pl -install -compiler=gfortran -mpi=openmpi -openmp -ncdf -gsl -O3 + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib + ./Config.pl -install -compiler=gfortran -mpi=openmpi -openmp -ncdf -gsl -O0 make make testCI - name: unit_tests diff --git a/Makefile b/Makefile index 4676738..909ab36 100755 --- a/Makefile +++ b/Makefile @@ -236,30 +236,30 @@ test1_run: cd ${TESTDIR1}; ${MPIRUN} ./ram_scb.exe | tee runlog test1_check: - ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 \ + ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 -r=1e-7 \ ${TESTDIR1}/output_ram/log_d20130317_t000000.log \ ${IMDIR}/output/test1/log.ref \ - > test1.diff - ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 \ + > test1.diff || (cat test1.diff; exit 1;) + ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 -r=1e-7 \ ${TESTDIR1}/output_ram/pressure_d20130317_t001500.dat \ ${IMDIR}/output/test1/pressure.ref \ - >> test1.diff + >> test1.diff || (cat test1.diff; exit 1;) ncdump -v "Flux_H","B_xyz" \ ${TESTDIR1}/output_ram/sat1_d20130317_t000000.nc \ | sed -e '1,/data:/d' > \ ${TESTDIR1}/output_ram/sat1.test - ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 \ + ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 -r=1e-7 \ ${TESTDIR1}/output_ram/sat1.test \ ${IMDIR}/output/test1/sat1.ref \ - >> test1.diff + >> test1.diff || (cat test1.diff; exit 1;) ncdump -v "Flux_H","B_xyz" \ ${TESTDIR1}/output_ram/sat2_d20130317_t000000.nc \ | sed -e '1,/data:/d' > \ ${TESTDIR1}/output_ram/sat2.test - ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 \ + ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 -r=1e-7 \ ${TESTDIR1}/output_ram/sat2.test \ ${IMDIR}/output/test1/sat2.ref \ - >> test1.diff + >> test1.diff || (cat test1.diff; exit 1;) @echo "Test Successful!" #TEST 2---------------------------------- @@ -293,30 +293,30 @@ test2_run: ${MPIRUN} ./ram_scb.exe | tee runlog2; test2_check: - ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 \ + ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 -r=1e-7 \ ${TESTDIR2}/output_ram/pressure_d20130317_t001500.dat \ ${IMDIR}/output/test1/pressure.ref \ - > test2.diff + > test2.diff || (cat test2.diff; exit 1;) ncrcat ${TESTDIR2}/output_ram/sat1_d20130317_t000000.nc \ ${TESTDIR2}/output_ram/sat1_d20130317_t001000.nc \ ${TESTDIR2}/output_ram/sat1.nc ncdump -v "Flux_H","B_xyz" ${TESTDIR2}/output_ram/sat1.nc \ | sed -e '1,/data:/d' > \ ${TESTDIR2}/output_ram/sat1.test - ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 \ + ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 -r=1e-7 \ ${TESTDIR2}/output_ram/sat1.test \ ${IMDIR}/output/test1/sat1.ref \ - >> test2.diff + >> test2.diff || (cat test2.diff; exit 1;) ncrcat ${TESTDIR2}/output_ram/sat2_d20130317_t000000.nc \ ${TESTDIR2}/output_ram/sat2_d20130317_t001000.nc \ ${TESTDIR2}/output_ram/sat2.nc ncdump -v "Flux_H","B_xyz" ${TESTDIR2}/output_ram/sat2.nc \ | sed -e '1,/data:/d' > \ ${TESTDIR2}/output_ram/sat2.test - ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 \ + ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 -r=1e-7 \ ${TESTDIR2}/output_ram/sat2.test \ ${IMDIR}/output/test1/sat2.ref \ - >> test2.diff + >> test2.diff || (cat test2.diff; exit 1;) @echo "Test Successful!" #TEST 3---------------------------------- @@ -344,14 +344,14 @@ test3_run: cd ${TESTDIR3}; ${MPIRUN} ./ram_scb.exe | tee runlog; test3_check: - ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 \ + ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 -r=1e-7 \ ${TESTDIR3}/output_ram/pressure_d20130317_t001500.dat \ ${IMDIR}/output/test3/pressure.ref \ - > test3.diff - ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 \ + > test3.diff || (cat test3.diff; exit 1;) + ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 -r=1e-7 \ ${TESTDIR3}/output_scb/hI_output_d20130317_t001500.dat \ ${IMDIR}/output/test3/hI.ref \ - >> test3.diff + >> test3.diff || (cat test3.diff; exit 1;) @echo "Test Successful!" #TEST 4---------------------------------- @@ -385,34 +385,34 @@ test4_run: ${MPIRUN} ./ram_scb.exe | tee runlog2; test4_check: - ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 \ + ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 -r=1e-7 \ ${TESTDIR4}/output_ram/pressure_d20130317_t001500.dat \ ${IMDIR}/output/test3/pressure.ref \ - > test4.diff - ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 \ + > test4.diff || (cat test4.diff; exit 1;) + ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 -r=1e-7 \ ${TESTDIR4}/output_scb/hI_output_d20130317_t001500.dat \ ${IMDIR}/output/test3/hI.ref \ - >> test4.diff + >> test4.diff || (cat test4.diff; exit 1;) ncrcat ${TESTDIR4}/output_ram/sat1_d20130317_t000000.nc \ ${TESTDIR4}/output_ram/sat1_d20130317_t001000.nc \ ${TESTDIR4}/output_ram/sat1.nc ncdump -v "Flux_H","B_xyz" ${TESTDIR4}/output_ram/sat1.nc \ | sed -e '1,/data:/d' > \ ${TESTDIR4}/output_ram/sat1.test - ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 \ + ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 -r=1e-7 \ ${TESTDIR4}/output_ram/sat1.test \ ${IMDIR}/output/test3/sat1.ref \ - >> test4.diff + >> test4.diff || (cat test4.diff; exit 1;) ncrcat ${TESTDIR4}/output_ram/sat2_d20130317_t000000.nc \ ${TESTDIR4}/output_ram/sat2_d20130317_t001000.nc \ ${TESTDIR4}/output_ram/sat2.nc ncdump -v "Flux_H","B_xyz" ${TESTDIR4}/output_ram/sat2.nc \ | sed -e '1,/data:/d' > \ ${TESTDIR4}/output_ram/sat2.test - ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 \ + ${SCRIPTDIR}/DiffNum.pl -b -a=1e-9 -r=1e-7 \ ${TESTDIR4}/output_ram/sat2.test \ ${IMDIR}/output/test3/sat2.ref \ - >> test4.diff + >> test4.diff || (cat test4.diff; exit 1;) @echo "Test Successful!" #TEST EMIC----------------------------------