From f000a6bd17694f76d193a02c64794e59f8080e35 Mon Sep 17 00:00:00 2001 From: rem1776 Date: Fri, 14 Apr 2023 11:37:36 -0400 Subject: [PATCH 01/23] add dockerfile for new CI image, update workflows --- .github/workflows/Dockerfile.gnu | 50 +++++++++++++++++++ ...untu_gnu.yml => build_test_centos_gnu.yml} | 7 ++- .github/workflows/version.yml | 4 +- 3 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/Dockerfile.gnu rename .github/workflows/{build_ubuntu_gnu.yml => build_test_centos_gnu.yml} (79%) diff --git a/.github/workflows/Dockerfile.gnu b/.github/workflows/Dockerfile.gnu new file mode 100644 index 0000000000..c9c7d85bc8 --- /dev/null +++ b/.github/workflows/Dockerfile.gnu @@ -0,0 +1,50 @@ +# base from spack org +# needs a shell cmd to run interactively +# TODO could be a little slimmer (remove gcc base+deps if possible) +FROM spack/centos-stream:v0.19.1 + +# arguments to specify versions to build (--build-arg name=val) +ARG gcc_version=12.2.0 +ARG netcdfc_version=4.9.0 +ARG netcdff_version=4.6.0 +ARG libyaml_version=0.2.5 +ARG mpich_version=4.0.2 + +# copy over spack environment template yaml +COPY spack.env . + +# install comp version needed via spack +# set up spack template yaml file with desired versions +# install all dependencies +RUN spack install gcc@${gcc_version} && \ + source /opt/spack/share/spack/setup-env.sh && \ + spack load gcc@${gcc_version} && \ + spack compiler find && \ + sed "s/COMPILER/gcc@$gcc_version/" spack.env > spack.yaml && \ + sed -i "s/NETCDF_C_VERSION/$netcdfc_version/" spack.yaml && \ + sed -i "s/NETCDF_F_VERSION/$netcdff_version/" spack.yaml && \ + sed -i "s/LIBYAML_VERSION/$libyaml_version/" spack.yaml && \ + sed -i "s/MPI_LIB/mpich@$mpich_version/" spack.yaml && \ + spack env activate -d . && \ + spack -e . concretize -f > deps.log && \ + spack env activate . && spack install + +# flag/lib vars need nc/nf-config to get path with spack hash +# can't run commands in ENV so sets them in a entrypoint script +# shell expansions are escaped in order to run in the entrypoint (except for gcc_version) +# TODO is there a spack command to get install directory? would be better than hardcoding libyaml paths +RUN echo "#!/usr/bin/bash" > /root/env.sh && \ + echo "source /opt/spack/share/spack/setup-env.sh" >>/root/env.sh && \ + echo "spack load gcc@${gcc_version} mpich netcdf-c netcdf-fortran libyaml" >>/root/env.sh && \ + echo "export LIBYAML_PATH=\$(find /opt/spack/opt/spack/linux-centos8-haswell/gcc-${gcc_version} -maxdepth 1 -type d -name libyaml\*)" >> /root/env.sh && \ + echo "export FC=mpifort CC=mpicc" >>/root/env.sh && \ + echo "export FCFLAGS=\"\$(nf-config --fflags) -g\"" >>/root/env.sh && \ + echo "export CFLAGS=\"\$(nc-config --cflags) -I\${LIBYAML_PATH}/include -g\"" >>/root/env.sh && \ + echo "export LDFLAGS=\"\$(nc-config --libs) \$(nf-config --flibs) -L\${LIBYAML_PATH}/lib \"" >>/root/env.sh && \ + echo "export LD_LIBRARY_PATH=\"\$(nc-config --prefix)/lib:\$(nf-config --prefix)/lib:\${LD_LIBRARY_PATH}\"" >>/root/env.sh && \ + echo "export LD_LIBRARY_PATH=\"\${LIBYAML_PATH}/lib:\${LD_LIBRARY_PATH}\"" >>/root/env.sh && \ + echo "ulimit -s unlimited" >>/root/env.sh && \ + echo "exec \"\$@\"" >>/root/env.sh && \ + chmod +x /root/env.sh + +ENTRYPOINT ["/root/env.sh"] diff --git a/.github/workflows/build_ubuntu_gnu.yml b/.github/workflows/build_test_centos_gnu.yml similarity index 79% rename from .github/workflows/build_ubuntu_gnu.yml rename to .github/workflows/build_test_centos_gnu.yml index f4dc48225f..9479d05d2e 100644 --- a/.github/workflows/build_ubuntu_gnu.yml +++ b/.github/workflows/build_test_centos_gnu.yml @@ -1,3 +1,5 @@ +# 'main' required ci, does a distcheck (builds, tests, check install) +# image created off dockerfile in repo, compile/link flags are set there name: Build libFMS test with autotools on: [push, pull_request] @@ -13,10 +15,11 @@ jobs: conf-flags: [--disable-openmp, --enable-mixed-mode, --disable-setting-flags, --with-mpi=no] input-flag: [--with-yaml, --enable-test-input=/home/unit_tests_input] container: - image: noaagfdl/hpc-me.ubuntu-minimal:gnu-input + image: ryanmulhall/fms-ci-centos-gnu:12.2.0 env: TEST_VERBOSE: 1 DISTCHECK_CONFIGURE_FLAGS: "${{ matrix.conf-flags }} ${{ matrix.input-flag }}" + SKIP_TESTS: "test_mosaic2.1" # gcc12 bug will rm this when fix pr is in steps: - name: Checkout code uses: actions/checkout@v2 @@ -25,7 +28,7 @@ jobs: - name: Configure the build if: ${{ matrix.conf-flags != '--disable-setting-flags' }} run: ./configure ${DISTCHECK_CONFIGURE_FLAGS} || cat config.log - - name: Configure the build with compiler flags + - name: Configure the build with explicit required flags if: ${{ matrix.conf-flags == '--disable-setting-flags' }} run: ./configure ${DISTCHECK_CONFIGURE_FLAGS} FCFLAGS="-fdefault-real-8 -fdefault-double-8 -fcray-pointer -ffree-line-length-none -I/usr/include $FCFLAGS" || cat config.log - name: Build the library diff --git a/.github/workflows/version.yml b/.github/workflows/version.yml index 1e71236386..31641aea69 100644 --- a/.github/workflows/version.yml +++ b/.github/workflows/version.yml @@ -1,3 +1,5 @@ +# appends -dev to the version upon release and opens pr +# CI won't run on generated PR, easiest workaround is to close + reopen on: release: types: [published] @@ -16,4 +18,4 @@ jobs: branch-suffix: timestamp # add a timestamp to branch name delete-branch: true # delete afer merge title: Append dev to version number post-release - body: automated change, adds '-dev' to the version number upon releases + body: automated change, adds '-dev' to the version number upon releases. This PR will need to be closed and reopened to run CI testing. From 1b2f5d82cd2b93af5bf515ac6ea78b1b75471c04 Mon Sep 17 00:00:00 2001 From: rem1776 Date: Wed, 26 Apr 2023 17:10:12 -0400 Subject: [PATCH 02/23] Add (hopefully) finished dockerfile and spack setup file --- .github/workflows/Dockerfile.gnu | 67 +++++++++++++++++--------------- .github/workflows/spack.env | 17 ++++++++ 2 files changed, 52 insertions(+), 32 deletions(-) create mode 100644 .github/workflows/spack.env diff --git a/.github/workflows/Dockerfile.gnu b/.github/workflows/Dockerfile.gnu index c9c7d85bc8..517dcef410 100644 --- a/.github/workflows/Dockerfile.gnu +++ b/.github/workflows/Dockerfile.gnu @@ -1,50 +1,53 @@ -# base from spack org -# needs a shell cmd to run interactively -# TODO could be a little slimmer (remove gcc base+deps if possible) -FROM spack/centos-stream:v0.19.1 +# FMS CI image recipefile for GNU +# Runs on centos stream (builder has same base from redhat registry) +# +# arguments to specify versions to build can be given to docker or changed here (--build-arg name=val) +FROM spack/centos-stream:v0.19.1 as builder -# arguments to specify versions to build (--build-arg name=val) ARG gcc_version=12.2.0 ARG netcdfc_version=4.9.0 ARG netcdff_version=4.6.0 ARG libyaml_version=0.2.5 ARG mpich_version=4.0.2 -# copy over spack environment template yaml -COPY spack.env . +COPY spack.env /opt/deps/spack.env -# install comp version needed via spack -# set up spack template yaml file with desired versions -# install all dependencies RUN spack install gcc@${gcc_version} && \ source /opt/spack/share/spack/setup-env.sh && \ spack load gcc@${gcc_version} && \ spack compiler find && \ - sed "s/COMPILER/gcc@$gcc_version/" spack.env > spack.yaml && \ + sed "s/COMPILER/gcc@$gcc_version/" /opt/deps/spack.env > spack.yaml && \ sed -i "s/NETCDF_C_VERSION/$netcdfc_version/" spack.yaml && \ sed -i "s/NETCDF_F_VERSION/$netcdff_version/" spack.yaml && \ sed -i "s/LIBYAML_VERSION/$libyaml_version/" spack.yaml && \ sed -i "s/MPI_LIB/mpich@$mpich_version/" spack.yaml && \ spack env activate -d . && \ spack -e . concretize -f > deps.log && \ - spack env activate . && spack install - -# flag/lib vars need nc/nf-config to get path with spack hash -# can't run commands in ENV so sets them in a entrypoint script -# shell expansions are escaped in order to run in the entrypoint (except for gcc_version) -# TODO is there a spack command to get install directory? would be better than hardcoding libyaml paths -RUN echo "#!/usr/bin/bash" > /root/env.sh && \ - echo "source /opt/spack/share/spack/setup-env.sh" >>/root/env.sh && \ - echo "spack load gcc@${gcc_version} mpich netcdf-c netcdf-fortran libyaml" >>/root/env.sh && \ - echo "export LIBYAML_PATH=\$(find /opt/spack/opt/spack/linux-centos8-haswell/gcc-${gcc_version} -maxdepth 1 -type d -name libyaml\*)" >> /root/env.sh && \ - echo "export FC=mpifort CC=mpicc" >>/root/env.sh && \ - echo "export FCFLAGS=\"\$(nf-config --fflags) -g\"" >>/root/env.sh && \ - echo "export CFLAGS=\"\$(nc-config --cflags) -I\${LIBYAML_PATH}/include -g\"" >>/root/env.sh && \ - echo "export LDFLAGS=\"\$(nc-config --libs) \$(nf-config --flibs) -L\${LIBYAML_PATH}/lib \"" >>/root/env.sh && \ - echo "export LD_LIBRARY_PATH=\"\$(nc-config --prefix)/lib:\$(nf-config --prefix)/lib:\${LD_LIBRARY_PATH}\"" >>/root/env.sh && \ - echo "export LD_LIBRARY_PATH=\"\${LIBYAML_PATH}/lib:\${LD_LIBRARY_PATH}\"" >>/root/env.sh && \ - echo "ulimit -s unlimited" >>/root/env.sh && \ - echo "exec \"\$@\"" >>/root/env.sh && \ - chmod +x /root/env.sh - -ENTRYPOINT ["/root/env.sh"] + spack install --fail-fast + +RUN find -L /opt/view/* -type f -exec readlink -f '{}' \; | \ + xargs file -i | \ + grep 'charset=binary' | \ + grep 'x-executable\|x-arcive\|x-sharedlib' | \ + awk -F: '{print $1}' | xargs strip -s + +# copy built software to base from first image +FROM quay.io/centos/centos:stream + + +COPY --from=builder /opt/deps/ /opt/deps/ +COPY --from=builder /opt/spack/opt/spack/linux-centos8-haswell/gcc-8.5.0/ /opt/spack/opt/spack/linux-centos8-haswell/gcc-8.5.0/ + +# wasn't able to get the shell option working with the other RUN syntax +# just needs to extend the glob for exceptions +#RUN ["bash", "-O", "extglob", "ln -s /opt/deps/linux-centos8-haswell/gcc-12.2.0/*/lib/!(pkgconfig|cmake) /usr/local/lib"] +SHELL ["/bin/bash", "-o", "extglob", "-c"] + +RUN ln -s /opt/deps/linux-centos8-haswell/gcc-12.2.0/*/bin/* /usr/local/bin && \ + ln -s /opt/deps/linux-centos8-haswell/gcc-12.2.0/*/include/* /usr/local/include && \ + dnf install -y autoconf automake make cmake binutils glibc-devel + +ENV FC="mpifort" +ENV CC="mpicc" +ENV FCFLAGS="-I/usr/local/include" +ENV CFLAGS="-I/usr/local/include" diff --git a/.github/workflows/spack.env b/.github/workflows/spack.env new file mode 100644 index 0000000000..56f7ef0fca --- /dev/null +++ b/.github/workflows/spack.env @@ -0,0 +1,17 @@ +# template for spack environment yaml +# uppercase words get replaced before activating +spack: + specs: + - MPI_LIB + - netcdf-c@NETCDF_C_VERSION ^MPI_LIB + - netcdf-fortran@NETCDF_F_VERSION + - libyaml@LIBYAML_VERSION + view: true + concretizer: + unify: true + packages: + all: + compiler: [ COMPILER ] + config: + install_tree: /opt/deps + view: /opt/view From a0eeec6ff0ed24faa72ab3cfe6e90074f963cfe6 Mon Sep 17 00:00:00 2001 From: rem1776 Date: Thu, 27 Apr 2023 08:50:00 -0400 Subject: [PATCH 03/23] fix extended glob issues with shell statement --- .github/workflows/Dockerfile.gnu | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/Dockerfile.gnu b/.github/workflows/Dockerfile.gnu index 517dcef410..f34fc83bc7 100644 --- a/.github/workflows/Dockerfile.gnu +++ b/.github/workflows/Dockerfile.gnu @@ -34,16 +34,16 @@ RUN find -L /opt/view/* -type f -exec readlink -f '{}' \; | \ # copy built software to base from first image FROM quay.io/centos/centos:stream - COPY --from=builder /opt/deps/ /opt/deps/ COPY --from=builder /opt/spack/opt/spack/linux-centos8-haswell/gcc-8.5.0/ /opt/spack/opt/spack/linux-centos8-haswell/gcc-8.5.0/ # wasn't able to get the shell option working with the other RUN syntax # just needs to extend the glob for exceptions #RUN ["bash", "-O", "extglob", "ln -s /opt/deps/linux-centos8-haswell/gcc-12.2.0/*/lib/!(pkgconfig|cmake) /usr/local/lib"] -SHELL ["/bin/bash", "-o", "extglob", "-c"] +SHELL ["/bin/bash", "-O", "extglob", "-c"] -RUN ln -s /opt/deps/linux-centos8-haswell/gcc-12.2.0/*/bin/* /usr/local/bin && \ +RUN ln -s /opt/deps/linux-centos8-haswell/gcc-12.2.0/*/lib/!(pkgconfig|cmake) /usr/local/lib && \ + ln -s /opt/deps/linux-centos8-haswell/gcc-12.2.0/*/bin/* /usr/local/bin && \ ln -s /opt/deps/linux-centos8-haswell/gcc-12.2.0/*/include/* /usr/local/include && \ dnf install -y autoconf automake make cmake binutils glibc-devel From 6d96f6236d81d6cad070e4c35a7e23cfb9270d0d Mon Sep 17 00:00:00 2001 From: rem1776 Date: Thu, 27 Apr 2023 09:19:22 -0400 Subject: [PATCH 04/23] license + some cleanup --- .github/workflows/Dockerfile.gnu | 24 +++++++++++++++++---- .github/workflows/build_test_centos_gnu.yml | 3 +-- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/.github/workflows/Dockerfile.gnu b/.github/workflows/Dockerfile.gnu index f34fc83bc7..6e96769572 100644 --- a/.github/workflows/Dockerfile.gnu +++ b/.github/workflows/Dockerfile.gnu @@ -1,3 +1,21 @@ +#*********************************************************************** +#* GNU Lesser General Public License +#* +#* This file is part of the GFDL Flexible Modeling System (FMS). +#* +#* FMS is free software: you can redistribute it and/or modify it under +#* the terms of the GNU Lesser General Public License as published by +#* the Free Software Foundation, either version 3 of the License, or (at +#* your option) any later version. +#* +#* FMS is distributed in the hope that it will be useful, but WITHOUT +#* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +#* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +#* for more details. +#* +#* You should have received a copy of the GNU Lesser General Public +#* License along with FMS. If not, see . +#*********************************************************************** # FMS CI image recipefile for GNU # Runs on centos stream (builder has same base from redhat registry) # @@ -22,7 +40,7 @@ RUN spack install gcc@${gcc_version} && \ sed -i "s/LIBYAML_VERSION/$libyaml_version/" spack.yaml && \ sed -i "s/MPI_LIB/mpich@$mpich_version/" spack.yaml && \ spack env activate -d . && \ - spack -e . concretize -f > deps.log && \ + spack -e . concretize -f > /opt/deps/deps.log && \ spack install --fail-fast RUN find -L /opt/view/* -type f -exec readlink -f '{}' \; | \ @@ -37,9 +55,7 @@ FROM quay.io/centos/centos:stream COPY --from=builder /opt/deps/ /opt/deps/ COPY --from=builder /opt/spack/opt/spack/linux-centos8-haswell/gcc-8.5.0/ /opt/spack/opt/spack/linux-centos8-haswell/gcc-8.5.0/ -# wasn't able to get the shell option working with the other RUN syntax -# just needs to extend the glob for exceptions -#RUN ["bash", "-O", "extglob", "ln -s /opt/deps/linux-centos8-haswell/gcc-12.2.0/*/lib/!(pkgconfig|cmake) /usr/local/lib"] +# extends glob patterns for exceptions SHELL ["/bin/bash", "-O", "extglob", "-c"] RUN ln -s /opt/deps/linux-centos8-haswell/gcc-12.2.0/*/lib/!(pkgconfig|cmake) /usr/local/lib && \ diff --git a/.github/workflows/build_test_centos_gnu.yml b/.github/workflows/build_test_centos_gnu.yml index 9479d05d2e..ddfb6b8d58 100644 --- a/.github/workflows/build_test_centos_gnu.yml +++ b/.github/workflows/build_test_centos_gnu.yml @@ -19,7 +19,6 @@ jobs: env: TEST_VERBOSE: 1 DISTCHECK_CONFIGURE_FLAGS: "${{ matrix.conf-flags }} ${{ matrix.input-flag }}" - SKIP_TESTS: "test_mosaic2.1" # gcc12 bug will rm this when fix pr is in steps: - name: Checkout code uses: actions/checkout@v2 @@ -32,7 +31,7 @@ jobs: if: ${{ matrix.conf-flags == '--disable-setting-flags' }} run: ./configure ${DISTCHECK_CONFIGURE_FLAGS} FCFLAGS="-fdefault-real-8 -fdefault-double-8 -fcray-pointer -ffree-line-length-none -I/usr/include $FCFLAGS" || cat config.log - name: Build the library - run: make distcheck + run: make -k distcheck if: ${{ matrix.conf-flags != '--with-mpi=no' }} - name: Build the library (without test suite for serial build) run: make From b1cb9782205bc77b6ca0b6fe1add0ace184e2c86 Mon Sep 17 00:00:00 2001 From: rem1776 Date: Thu, 27 Apr 2023 11:04:44 -0400 Subject: [PATCH 05/23] update for input file option --- .github/workflows/Dockerfile.gnu | 4 ++++ .github/workflows/build_test_centos_gnu.yml | 2 +- .github/workflows/spack.env | 6 +++--- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/Dockerfile.gnu b/.github/workflows/Dockerfile.gnu index 6e96769572..08b6c08fe2 100644 --- a/.github/workflows/Dockerfile.gnu +++ b/.github/workflows/Dockerfile.gnu @@ -55,6 +55,10 @@ FROM quay.io/centos/centos:stream COPY --from=builder /opt/deps/ /opt/deps/ COPY --from=builder /opt/spack/opt/spack/linux-centos8-haswell/gcc-8.5.0/ /opt/spack/opt/spack/linux-centos8-haswell/gcc-8.5.0/ +# input files used with --enable-input-tests +# need to be on the dev boxes if building +COPY /home/fms_test_input /home/fms_test_input + # extends glob patterns for exceptions SHELL ["/bin/bash", "-O", "extglob", "-c"] diff --git a/.github/workflows/build_test_centos_gnu.yml b/.github/workflows/build_test_centos_gnu.yml index ddfb6b8d58..e8b1653dd1 100644 --- a/.github/workflows/build_test_centos_gnu.yml +++ b/.github/workflows/build_test_centos_gnu.yml @@ -13,7 +13,7 @@ jobs: strategy: matrix: conf-flags: [--disable-openmp, --enable-mixed-mode, --disable-setting-flags, --with-mpi=no] - input-flag: [--with-yaml, --enable-test-input=/home/unit_tests_input] + input-flag: [--with-yaml, --enable-test-input=/home/fms_test_input] container: image: ryanmulhall/fms-ci-centos-gnu:12.2.0 env: diff --git a/.github/workflows/spack.env b/.github/workflows/spack.env index 56f7ef0fca..4a793629a6 100644 --- a/.github/workflows/spack.env +++ b/.github/workflows/spack.env @@ -1,8 +1,8 @@ -# template for spack environment yaml -# uppercase words get replaced before activating +# template for spack environment yaml +# uppercase words get replaced before activating spack: specs: - - MPI_LIB + - MPI_LIB - netcdf-c@NETCDF_C_VERSION ^MPI_LIB - netcdf-fortran@NETCDF_F_VERSION - libyaml@LIBYAML_VERSION From 51a735d1bd6f5dd1dee8a3545d1dbf7bd5900e76 Mon Sep 17 00:00:00 2001 From: rem1776 Date: Thu, 27 Apr 2023 13:12:59 -0400 Subject: [PATCH 06/23] fix input test and m4 dependency --- .github/workflows/Dockerfile.gnu | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/Dockerfile.gnu b/.github/workflows/Dockerfile.gnu index 08b6c08fe2..aef722e0c0 100644 --- a/.github/workflows/Dockerfile.gnu +++ b/.github/workflows/Dockerfile.gnu @@ -57,7 +57,7 @@ COPY --from=builder /opt/spack/opt/spack/linux-centos8-haswell/gcc-8.5.0/ /opt/ # input files used with --enable-input-tests # need to be on the dev boxes if building -COPY /home/fms_test_input /home/fms_test_input +COPY ./fms_test_input /home/fms_test_input # extends glob patterns for exceptions SHELL ["/bin/bash", "-O", "extglob", "-c"] @@ -65,7 +65,7 @@ SHELL ["/bin/bash", "-O", "extglob", "-c"] RUN ln -s /opt/deps/linux-centos8-haswell/gcc-12.2.0/*/lib/!(pkgconfig|cmake) /usr/local/lib && \ ln -s /opt/deps/linux-centos8-haswell/gcc-12.2.0/*/bin/* /usr/local/bin && \ ln -s /opt/deps/linux-centos8-haswell/gcc-12.2.0/*/include/* /usr/local/include && \ - dnf install -y autoconf automake make cmake binutils glibc-devel + dnf install -y autoconf automake make cmake binutils glibc-devel m4 libtool pkg-config ENV FC="mpifort" ENV CC="mpicc" From 2e34751bc892cb584ff5b1fcfb7d78cce1d6723e Mon Sep 17 00:00:00 2001 From: rem1776 Date: Wed, 28 Jun 2023 13:24:46 -0400 Subject: [PATCH 07/23] fix wrong autoconf --- .github/workflows/Dockerfile.gnu | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/Dockerfile.gnu b/.github/workflows/Dockerfile.gnu index aef722e0c0..19ffbd9a4a 100644 --- a/.github/workflows/Dockerfile.gnu +++ b/.github/workflows/Dockerfile.gnu @@ -43,7 +43,7 @@ RUN spack install gcc@${gcc_version} && \ spack -e . concretize -f > /opt/deps/deps.log && \ spack install --fail-fast -RUN find -L /opt/view/* -type f -exec readlink -f '{}' \; | \ +RUN find -L /opt/deps/* -type f -exec readlink -f '{}' \; | \ xargs file -i | \ grep 'charset=binary' | \ grep 'x-executable\|x-arcive\|x-sharedlib' | \ @@ -63,9 +63,9 @@ COPY ./fms_test_input /home/fms_test_input SHELL ["/bin/bash", "-O", "extglob", "-c"] RUN ln -s /opt/deps/linux-centos8-haswell/gcc-12.2.0/*/lib/!(pkgconfig|cmake) /usr/local/lib && \ - ln -s /opt/deps/linux-centos8-haswell/gcc-12.2.0/*/bin/* /usr/local/bin && \ + ln -s /opt/deps/linux-centos8-haswell/gcc-12.2.0/*/bin/!(autoreconf|pkgconfig|cmake) /usr/local/bin && \ ln -s /opt/deps/linux-centos8-haswell/gcc-12.2.0/*/include/* /usr/local/include && \ - dnf install -y autoconf automake make cmake binutils glibc-devel m4 libtool pkg-config + dnf install -y autoconf automake make binutils m4 libtool pkg-config libtool ENV FC="mpifort" ENV CC="mpicc" From 406eabf0d544e769b7d0ccd64cf18263e5a8f65e Mon Sep 17 00:00:00 2001 From: rem1776 Date: Wed, 28 Jun 2023 13:41:28 -0400 Subject: [PATCH 08/23] add autogen to dnf installs --- .github/workflows/Dockerfile.gnu | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Dockerfile.gnu b/.github/workflows/Dockerfile.gnu index 19ffbd9a4a..3bc432cb1f 100644 --- a/.github/workflows/Dockerfile.gnu +++ b/.github/workflows/Dockerfile.gnu @@ -65,7 +65,7 @@ SHELL ["/bin/bash", "-O", "extglob", "-c"] RUN ln -s /opt/deps/linux-centos8-haswell/gcc-12.2.0/*/lib/!(pkgconfig|cmake) /usr/local/lib && \ ln -s /opt/deps/linux-centos8-haswell/gcc-12.2.0/*/bin/!(autoreconf|pkgconfig|cmake) /usr/local/bin && \ ln -s /opt/deps/linux-centos8-haswell/gcc-12.2.0/*/include/* /usr/local/include && \ - dnf install -y autoconf automake make binutils m4 libtool pkg-config libtool + dnf install -y autoconf automake make binutils m4 libtool pkg-config libtool autogen ENV FC="mpifort" ENV CC="mpicc" From 75df5488e8f44bd37e79210303feb212a9c0afe7 Mon Sep 17 00:00:00 2001 From: rem1776 Date: Fri, 30 Jun 2023 14:01:13 -0400 Subject: [PATCH 09/23] try different base --- .github/workflows/build_test_centos_gnu.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build_test_centos_gnu.yml b/.github/workflows/build_test_centos_gnu.yml index e8b1653dd1..70820192f0 100644 --- a/.github/workflows/build_test_centos_gnu.yml +++ b/.github/workflows/build_test_centos_gnu.yml @@ -7,23 +7,22 @@ on: [push, pull_request] jobs: build: runs-on: ubuntu-latest - defaults: - run: - shell: bash strategy: matrix: conf-flags: [--disable-openmp, --enable-mixed-mode, --disable-setting-flags, --with-mpi=no] input-flag: [--with-yaml, --enable-test-input=/home/fms_test_input] container: - image: ryanmulhall/fms-ci-centos-gnu:12.2.0 + image: ryanmulhall/fms-ubuntu-gnu:12.2.0 env: TEST_VERBOSE: 1 DISTCHECK_CONFIGURE_FLAGS: "${{ matrix.conf-flags }} ${{ matrix.input-flag }}" steps: - name: Checkout code uses: actions/checkout@v2 + - name: print env + run: env - name: Prepare GNU autoconf for build - run: autoreconf -if + run: autoreconf -if || env - name: Configure the build if: ${{ matrix.conf-flags != '--disable-setting-flags' }} run: ./configure ${DISTCHECK_CONFIGURE_FLAGS} || cat config.log From 495af0112f540797044a5d03dbb9c7673a48ce02 Mon Sep 17 00:00:00 2001 From: rem1776 Date: Mon, 10 Jul 2023 18:19:56 -0400 Subject: [PATCH 10/23] switch to rocky base --- .github/workflows/Dockerfile.gnu | 33 ++++++++++++++------------------ .github/workflows/spack.env | 2 +- 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/.github/workflows/Dockerfile.gnu b/.github/workflows/Dockerfile.gnu index 3bc432cb1f..88f5540aff 100644 --- a/.github/workflows/Dockerfile.gnu +++ b/.github/workflows/Dockerfile.gnu @@ -20,7 +20,7 @@ # Runs on centos stream (builder has same base from redhat registry) # # arguments to specify versions to build can be given to docker or changed here (--build-arg name=val) -FROM spack/centos-stream:v0.19.1 as builder +FROM spack/rockylinux9:latest as builder ARG gcc_version=12.2.0 ARG netcdfc_version=4.9.0 @@ -30,7 +30,9 @@ ARG mpich_version=4.0.2 COPY spack.env /opt/deps/spack.env -RUN spack install gcc@${gcc_version} && \ +# perl's download kept timing out +RUN sed -i 's/connect_timeout: 10/connect_timeout: 600/' /opt/spack/etc/spack/defaults/config.yaml && \ + spack install gcc@${gcc_version} && \ source /opt/spack/share/spack/setup-env.sh && \ spack load gcc@${gcc_version} && \ spack compiler find && \ @@ -43,31 +45,24 @@ RUN spack install gcc@${gcc_version} && \ spack -e . concretize -f > /opt/deps/deps.log && \ spack install --fail-fast -RUN find -L /opt/deps/* -type f -exec readlink -f '{}' \; | \ - xargs file -i | \ - grep 'charset=binary' | \ - grep 'x-executable\|x-arcive\|x-sharedlib' | \ - awk -F: '{print $1}' | xargs strip -s - # copy built software to base from first image -FROM quay.io/centos/centos:stream +FROM rockylinux:9 +COPY --from=builder /opt/view/ /opt/view/ COPY --from=builder /opt/deps/ /opt/deps/ -COPY --from=builder /opt/spack/opt/spack/linux-centos8-haswell/gcc-8.5.0/ /opt/spack/opt/spack/linux-centos8-haswell/gcc-8.5.0/ # input files used with --enable-input-tests # need to be on the dev boxes if building COPY ./fms_test_input /home/fms_test_input -# extends glob patterns for exceptions -SHELL ["/bin/bash", "-O", "extglob", "-c"] - -RUN ln -s /opt/deps/linux-centos8-haswell/gcc-12.2.0/*/lib/!(pkgconfig|cmake) /usr/local/lib && \ - ln -s /opt/deps/linux-centos8-haswell/gcc-12.2.0/*/bin/!(autoreconf|pkgconfig|cmake) /usr/local/bin && \ - ln -s /opt/deps/linux-centos8-haswell/gcc-12.2.0/*/include/* /usr/local/include && \ - dnf install -y autoconf automake make binutils m4 libtool pkg-config libtool autogen +RUN dnf install -y autoconf make automake m4 libtool pkg-config ENV FC="mpifort" ENV CC="mpicc" -ENV FCFLAGS="-I/usr/local/include" -ENV CFLAGS="-I/usr/local/include" +ENV MPICH_FC="/opt/view/bin/gfortran" +ENV MPICH_CC="/opt/view/bin/gcc" +ENV FCFLAGS="-I/opt/view/include" +ENV CFLAGS="-I/opt/view/include" +ENV LDFLAGS="-L/opt/view/lib" +ENV LD_LIBRARY_PATH="/opt/view/lib:/opt/view/lib64:/usr/local/lib:/usr/local/lib64" +ENV PATH="/opt/view/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin" diff --git a/.github/workflows/spack.env b/.github/workflows/spack.env index 4a793629a6..69a3bdcbd0 100644 --- a/.github/workflows/spack.env +++ b/.github/workflows/spack.env @@ -2,11 +2,11 @@ # uppercase words get replaced before activating spack: specs: + - COMPILER - MPI_LIB - netcdf-c@NETCDF_C_VERSION ^MPI_LIB - netcdf-fortran@NETCDF_F_VERSION - libyaml@LIBYAML_VERSION - view: true concretizer: unify: true packages: From 6302dc38d1a20aa6d2e93257dcab7319b9d3b0a1 Mon Sep 17 00:00:00 2001 From: rem1776 Date: Wed, 12 Jul 2023 17:09:19 -0400 Subject: [PATCH 11/23] renames workflow files to have some consistency --- ...build_test_centos_gnu.yml => github_autotools_gnu.yml} | 8 ++++---- .../{intel_pr.yml => github_autotools_intel.yml} | 0 .../{build_cmake_gnu.yml => github_cmake_gnu.yml} | 0 .github/workflows/{coupler.yml => github_coupler_gnu.yml} | 0 ...lelWorks_intel_tag.yml => parallelworks_am4_intel.yml} | 0 5 files changed, 4 insertions(+), 4 deletions(-) rename .github/workflows/{build_test_centos_gnu.yml => github_autotools_gnu.yml} (86%) rename .github/workflows/{intel_pr.yml => github_autotools_intel.yml} (100%) rename .github/workflows/{build_cmake_gnu.yml => github_cmake_gnu.yml} (100%) rename .github/workflows/{coupler.yml => github_coupler_gnu.yml} (100%) rename .github/workflows/{am4_regression_parallelWorks_intel_tag.yml => parallelworks_am4_intel.yml} (100%) diff --git a/.github/workflows/build_test_centos_gnu.yml b/.github/workflows/github_autotools_gnu.yml similarity index 86% rename from .github/workflows/build_test_centos_gnu.yml rename to .github/workflows/github_autotools_gnu.yml index 70820192f0..c58732ed42 100644 --- a/.github/workflows/build_test_centos_gnu.yml +++ b/.github/workflows/github_autotools_gnu.yml @@ -12,7 +12,7 @@ jobs: conf-flags: [--disable-openmp, --enable-mixed-mode, --disable-setting-flags, --with-mpi=no] input-flag: [--with-yaml, --enable-test-input=/home/fms_test_input] container: - image: ryanmulhall/fms-ubuntu-gnu:12.2.0 + image: ryanmulhall/fms-ci-rocky-gnu:12.2.0 env: TEST_VERBOSE: 1 DISTCHECK_CONFIGURE_FLAGS: "${{ matrix.conf-flags }} ${{ matrix.input-flag }}" @@ -22,13 +22,13 @@ jobs: - name: print env run: env - name: Prepare GNU autoconf for build - run: autoreconf -if || env + run: autoreconf -if - name: Configure the build if: ${{ matrix.conf-flags != '--disable-setting-flags' }} - run: ./configure ${DISTCHECK_CONFIGURE_FLAGS} || cat config.log + run: ./configure ${DISTCHECK_CONFIGURE_FLAGS} - name: Configure the build with explicit required flags if: ${{ matrix.conf-flags == '--disable-setting-flags' }} - run: ./configure ${DISTCHECK_CONFIGURE_FLAGS} FCFLAGS="-fdefault-real-8 -fdefault-double-8 -fcray-pointer -ffree-line-length-none -I/usr/include $FCFLAGS" || cat config.log + run: ./configure ${DISTCHECK_CONFIGURE_FLAGS} FCFLAGS="-fdefault-real-8 -fdefault-double-8 -fcray-pointer -ffree-line-length-none -I/opt/view/include $FCFLAGS" - name: Build the library run: make -k distcheck if: ${{ matrix.conf-flags != '--with-mpi=no' }} diff --git a/.github/workflows/intel_pr.yml b/.github/workflows/github_autotools_intel.yml similarity index 100% rename from .github/workflows/intel_pr.yml rename to .github/workflows/github_autotools_intel.yml diff --git a/.github/workflows/build_cmake_gnu.yml b/.github/workflows/github_cmake_gnu.yml similarity index 100% rename from .github/workflows/build_cmake_gnu.yml rename to .github/workflows/github_cmake_gnu.yml diff --git a/.github/workflows/coupler.yml b/.github/workflows/github_coupler_gnu.yml similarity index 100% rename from .github/workflows/coupler.yml rename to .github/workflows/github_coupler_gnu.yml diff --git a/.github/workflows/am4_regression_parallelWorks_intel_tag.yml b/.github/workflows/parallelworks_am4_intel.yml similarity index 100% rename from .github/workflows/am4_regression_parallelWorks_intel_tag.yml rename to .github/workflows/parallelworks_am4_intel.yml From 00b7ed8c58ae2e7d54849798c50cd2a86da0545a Mon Sep 17 00:00:00 2001 From: rem1776 Date: Thu, 13 Jul 2023 08:27:26 -0400 Subject: [PATCH 12/23] forgot to install zip --- .github/workflows/Dockerfile.gnu | 2 +- .github/workflows/github_autotools_gnu.yml | 2 -- .github/workflows/{update_docs.yml => github_doc_site.yml} | 0 .github/workflows/{lint_fms.yml => github_linter.yml} | 0 4 files changed, 1 insertion(+), 3 deletions(-) rename .github/workflows/{update_docs.yml => github_doc_site.yml} (100%) rename .github/workflows/{lint_fms.yml => github_linter.yml} (100%) diff --git a/.github/workflows/Dockerfile.gnu b/.github/workflows/Dockerfile.gnu index 88f5540aff..dedefbbddd 100644 --- a/.github/workflows/Dockerfile.gnu +++ b/.github/workflows/Dockerfile.gnu @@ -55,7 +55,7 @@ COPY --from=builder /opt/deps/ /opt/deps/ # need to be on the dev boxes if building COPY ./fms_test_input /home/fms_test_input -RUN dnf install -y autoconf make automake m4 libtool pkg-config +RUN dnf install -y autoconf make automake m4 libtool pkg-config zip ENV FC="mpifort" ENV CC="mpicc" diff --git a/.github/workflows/github_autotools_gnu.yml b/.github/workflows/github_autotools_gnu.yml index c58732ed42..c6e83572f5 100644 --- a/.github/workflows/github_autotools_gnu.yml +++ b/.github/workflows/github_autotools_gnu.yml @@ -19,8 +19,6 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v2 - - name: print env - run: env - name: Prepare GNU autoconf for build run: autoreconf -if - name: Configure the build diff --git a/.github/workflows/update_docs.yml b/.github/workflows/github_doc_site.yml similarity index 100% rename from .github/workflows/update_docs.yml rename to .github/workflows/github_doc_site.yml diff --git a/.github/workflows/lint_fms.yml b/.github/workflows/github_linter.yml similarity index 100% rename from .github/workflows/lint_fms.yml rename to .github/workflows/github_linter.yml From 5d63c4f3ad005012f6e8316559b2ac856ea12d44 Mon Sep 17 00:00:00 2001 From: rem1776 Date: Thu, 13 Jul 2023 09:28:50 -0400 Subject: [PATCH 13/23] add back --disable-setting-flags and move deprecated io flag --- .github/workflows/github_autotools_gnu.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/github_autotools_gnu.yml b/.github/workflows/github_autotools_gnu.yml index 7934fa31de..29ebcd4b84 100644 --- a/.github/workflows/github_autotools_gnu.yml +++ b/.github/workflows/github_autotools_gnu.yml @@ -9,9 +9,8 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - conf-flag: [--disable-openmp, --enable-mixed-mode, --with-mpi=no] + conf-flag: [ --enable-deprecated-io, --disable-openmp, --enable-mixed-mode, --disable-setting-flags, --with-mpi=no] input-flag: [--with-yaml, --enable-test-input=/home/unit_tests_input] - io-flag: [ --enable-deprecated-io, --disable-deprecated-io] exclude: - conf-flag: --with-mpi=no input-flag: --enable-test-input=/home/unit_tests_input @@ -27,6 +26,9 @@ jobs: run: autoreconf -if - name: Configure the build run: ./configure ${DISTCHECK_CONFIGURE_FLAGS} + - name: Configure the build with compiler flags + if: ${{ matrix.conf-flags == '--disable-setting-flags' }} + run: ./configure ${DISTCHECK_CONFIGURE_FLAGS} FCFLAGS="-fdefault-real-8 -fdefault-double-8 -fcray-pointer -ffree-line-length-none -I/usr/include $FCFLAGS" - name: Build the library run: make distcheck if: ${{ matrix.conf-flag != '--with-mpi=no' }} From 799d8b10fea7e1007d2807929cee4d11446f379e Mon Sep 17 00:00:00 2001 From: rem1776 Date: Thu, 13 Jul 2023 09:44:52 -0400 Subject: [PATCH 14/23] fix copy path + linter --- .github/workflows/Dockerfile.gnu | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/Dockerfile.gnu b/.github/workflows/Dockerfile.gnu index dedefbbddd..ede01b284d 100644 --- a/.github/workflows/Dockerfile.gnu +++ b/.github/workflows/Dockerfile.gnu @@ -46,14 +46,14 @@ RUN sed -i 's/connect_timeout: 10/connect_timeout: 600/' /opt/spack/etc/spack/de spack install --fail-fast # copy built software to base from first image -FROM rockylinux:9 +FROM rockylinux:9 COPY --from=builder /opt/view/ /opt/view/ COPY --from=builder /opt/deps/ /opt/deps/ # input files used with --enable-input-tests # need to be on the dev boxes if building -COPY ./fms_test_input /home/fms_test_input +COPY ./fms_test_input /home/unit_tests_input RUN dnf install -y autoconf make automake m4 libtool pkg-config zip From f49d8b443948273f74befbc0a994a195daef1f26 Mon Sep 17 00:00:00 2001 From: rem1776 Date: Thu, 13 Jul 2023 15:39:07 -0400 Subject: [PATCH 15/23] move to 12.3.0 --- .github/workflows/Dockerfile.gnu | 2 +- .github/workflows/github_autotools_gnu.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/Dockerfile.gnu b/.github/workflows/Dockerfile.gnu index ede01b284d..3506c2b9ee 100644 --- a/.github/workflows/Dockerfile.gnu +++ b/.github/workflows/Dockerfile.gnu @@ -22,7 +22,7 @@ # arguments to specify versions to build can be given to docker or changed here (--build-arg name=val) FROM spack/rockylinux9:latest as builder -ARG gcc_version=12.2.0 +ARG gcc_version=12.3.0 ARG netcdfc_version=4.9.0 ARG netcdff_version=4.6.0 ARG libyaml_version=0.2.5 diff --git a/.github/workflows/github_autotools_gnu.yml b/.github/workflows/github_autotools_gnu.yml index 29ebcd4b84..ed4389279d 100644 --- a/.github/workflows/github_autotools_gnu.yml +++ b/.github/workflows/github_autotools_gnu.yml @@ -15,7 +15,7 @@ jobs: - conf-flag: --with-mpi=no input-flag: --enable-test-input=/home/unit_tests_input container: - image: ryanmulhall/fms-ci-rocky-gnu:12.2.0 + image: ryanmulhall/fms-ci-rocky-gnu:12.3.0 env: TEST_VERBOSE: 1 DISTCHECK_CONFIGURE_FLAGS: "${{ matrix.conf-flag }} ${{ matrix.input-flag }} ${{ matrix.io-flag }}" From 76ea041aecc7e79c07008163457039e221cff8f3 Mon Sep 17 00:00:00 2001 From: rem1776 Date: Fri, 14 Jul 2023 17:03:30 -0400 Subject: [PATCH 16/23] add missed conditional --- .github/workflows/github_autotools_gnu.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/github_autotools_gnu.yml b/.github/workflows/github_autotools_gnu.yml index ed4389279d..007b8fc062 100644 --- a/.github/workflows/github_autotools_gnu.yml +++ b/.github/workflows/github_autotools_gnu.yml @@ -25,6 +25,7 @@ jobs: - name: Prepare GNU autoconf for build run: autoreconf -if - name: Configure the build + if: ${{ matrix.conf-flags != '--disable-setting-flags' }} run: ./configure ${DISTCHECK_CONFIGURE_FLAGS} - name: Configure the build with compiler flags if: ${{ matrix.conf-flags == '--disable-setting-flags' }} From 70e1746f333849a5ea1ddf9f94d52f52b2a4a96d Mon Sep 17 00:00:00 2001 From: rem1776 Date: Fri, 14 Jul 2023 17:18:06 -0400 Subject: [PATCH 17/23] fix typo --- .github/workflows/github_autotools_gnu.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/github_autotools_gnu.yml b/.github/workflows/github_autotools_gnu.yml index 007b8fc062..85b9a5c70b 100644 --- a/.github/workflows/github_autotools_gnu.yml +++ b/.github/workflows/github_autotools_gnu.yml @@ -25,11 +25,11 @@ jobs: - name: Prepare GNU autoconf for build run: autoreconf -if - name: Configure the build - if: ${{ matrix.conf-flags != '--disable-setting-flags' }} - run: ./configure ${DISTCHECK_CONFIGURE_FLAGS} + if: ${{ matrix.conf-flag != '--disable-setting-flags' }} + run: ./configure ${DISTCHECK_CONFIGURE_FLAGS} || cat config.log - name: Configure the build with compiler flags - if: ${{ matrix.conf-flags == '--disable-setting-flags' }} - run: ./configure ${DISTCHECK_CONFIGURE_FLAGS} FCFLAGS="-fdefault-real-8 -fdefault-double-8 -fcray-pointer -ffree-line-length-none -I/usr/include $FCFLAGS" + if: ${{ matrix.conf-flag == '--disable-setting-flags' }} + run: ./configure ${DISTCHECK_CONFIGURE_FLAGS} FCFLAGS="-fdefault-real-8 -fdefault-double-8 -fcray-pointer -ffree-line-length-none -I/usr/include $FCFLAGS" || cat config.log - name: Build the library run: make distcheck if: ${{ matrix.conf-flag != '--with-mpi=no' }} From 78aba4fbeca704145b1518bc065b3eea42c19361 Mon Sep 17 00:00:00 2001 From: rem1776 Date: Fri, 14 Jul 2023 17:31:18 -0400 Subject: [PATCH 18/23] add skip flag for mpp domains failure --- .github/workflows/github_autotools_gnu.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/github_autotools_gnu.yml b/.github/workflows/github_autotools_gnu.yml index 85b9a5c70b..5aca75fcb2 100644 --- a/.github/workflows/github_autotools_gnu.yml +++ b/.github/workflows/github_autotools_gnu.yml @@ -10,7 +10,7 @@ jobs: strategy: matrix: conf-flag: [ --enable-deprecated-io, --disable-openmp, --enable-mixed-mode, --disable-setting-flags, --with-mpi=no] - input-flag: [--with-yaml, --enable-test-input=/home/unit_tests_input] + input-flag: [--with-yaml, --enable-test-input=/home/unit_tests_input] exclude: - conf-flag: --with-mpi=no input-flag: --enable-test-input=/home/unit_tests_input @@ -19,6 +19,7 @@ jobs: env: TEST_VERBOSE: 1 DISTCHECK_CONFIGURE_FLAGS: "${{ matrix.conf-flag }} ${{ matrix.input-flag }} ${{ matrix.io-flag }}" + SKIP_TESTS: "test_mpp_domains.14" # temporary workaround for gnu bug steps: - name: Checkout code uses: actions/checkout@v2 From 8f4fbee9077f5f9c969ac30d64b115da848ae65f Mon Sep 17 00:00:00 2001 From: rem1776 Date: Wed, 26 Jul 2023 17:15:25 -0400 Subject: [PATCH 19/23] temporary skips for fixes --- .github/workflows/github_autotools_gnu.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/github_autotools_gnu.yml b/.github/workflows/github_autotools_gnu.yml index 5aca75fcb2..68e855a814 100644 --- a/.github/workflows/github_autotools_gnu.yml +++ b/.github/workflows/github_autotools_gnu.yml @@ -19,7 +19,7 @@ jobs: env: TEST_VERBOSE: 1 DISTCHECK_CONFIGURE_FLAGS: "${{ matrix.conf-flag }} ${{ matrix.input-flag }} ${{ matrix.io-flag }}" - SKIP_TESTS: "test_mpp_domains.14" # temporary workaround for gnu bug + SKIP_TESTS: "test_mpp_domains.14 test_horiz_interp2.9 test_horiz_interp2.10" # temporary till fixes are in steps: - name: Checkout code uses: actions/checkout@v2 From 36fbeb7ca50da98fcd7c5d63fc3fdddc3e69cd91 Mon Sep 17 00:00:00 2001 From: Ryan Mulhall <35538242+rem1776@users.noreply.github.com> Date: Thu, 27 Jul 2023 08:11:16 -0400 Subject: [PATCH 20/23] fix skip name --- .github/workflows/github_autotools_gnu.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/github_autotools_gnu.yml b/.github/workflows/github_autotools_gnu.yml index 68e855a814..a405838dce 100644 --- a/.github/workflows/github_autotools_gnu.yml +++ b/.github/workflows/github_autotools_gnu.yml @@ -19,7 +19,7 @@ jobs: env: TEST_VERBOSE: 1 DISTCHECK_CONFIGURE_FLAGS: "${{ matrix.conf-flag }} ${{ matrix.input-flag }} ${{ matrix.io-flag }}" - SKIP_TESTS: "test_mpp_domains.14 test_horiz_interp2.9 test_horiz_interp2.10" # temporary till fixes are in + SKIP_TESTS: "test_mpp_domains2.14 test_horiz_interp2.9 test_horiz_interp2.10" # temporary till fixes are in steps: - name: Checkout code uses: actions/checkout@v2 From fc8c5303c817c76b427126d35d02fbb7aae89069 Mon Sep 17 00:00:00 2001 From: Ryan Mulhall <35538242+rem1776@users.noreply.github.com> Date: Thu, 27 Jul 2023 08:58:04 -0400 Subject: [PATCH 21/23] Update github_autotools_gnu.yml --- .github/workflows/github_autotools_gnu.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/github_autotools_gnu.yml b/.github/workflows/github_autotools_gnu.yml index a405838dce..eb5e9d131b 100644 --- a/.github/workflows/github_autotools_gnu.yml +++ b/.github/workflows/github_autotools_gnu.yml @@ -19,7 +19,7 @@ jobs: env: TEST_VERBOSE: 1 DISTCHECK_CONFIGURE_FLAGS: "${{ matrix.conf-flag }} ${{ matrix.input-flag }} ${{ matrix.io-flag }}" - SKIP_TESTS: "test_mpp_domains2.14 test_horiz_interp2.9 test_horiz_interp2.10" # temporary till fixes are in + SKIP_TESTS: "test_mpp_domains2.14 test_horiz_interp2.9 test_horiz_interp2.10 test_yaml_parser.5" # temporary till fixes are in steps: - name: Checkout code uses: actions/checkout@v2 From 7e75e69a3904902f556169b5b09e2f3961dcc0b2 Mon Sep 17 00:00:00 2001 From: Ryan Mulhall <35538242+rem1776@users.noreply.github.com> Date: Thu, 27 Jul 2023 09:46:58 -0400 Subject: [PATCH 22/23] use noaa docker account --- .github/workflows/github_autotools_gnu.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/github_autotools_gnu.yml b/.github/workflows/github_autotools_gnu.yml index eb5e9d131b..e1b1c131b7 100644 --- a/.github/workflows/github_autotools_gnu.yml +++ b/.github/workflows/github_autotools_gnu.yml @@ -15,7 +15,7 @@ jobs: - conf-flag: --with-mpi=no input-flag: --enable-test-input=/home/unit_tests_input container: - image: ryanmulhall/fms-ci-rocky-gnu:12.3.0 + image: noaagfdl/fms-ci-rocky-gnu:12.3.0 env: TEST_VERBOSE: 1 DISTCHECK_CONFIGURE_FLAGS: "${{ matrix.conf-flag }} ${{ matrix.input-flag }} ${{ matrix.io-flag }}" From 4e9bcd8603a59435220eb19007f68957e262b64e Mon Sep 17 00:00:00 2001 From: rem1776 Date: Thu, 27 Jul 2023 13:58:24 -0400 Subject: [PATCH 23/23] update CI readme --- .github/workflows/github_autotools_gnu.yml | 2 +- CI.md | 22 ++++++++++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/.github/workflows/github_autotools_gnu.yml b/.github/workflows/github_autotools_gnu.yml index 68e855a814..05d2f3a273 100644 --- a/.github/workflows/github_autotools_gnu.yml +++ b/.github/workflows/github_autotools_gnu.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - conf-flag: [ --enable-deprecated-io, --disable-openmp, --enable-mixed-mode, --disable-setting-flags, --with-mpi=no] + conf-flag: [ --disable-openmp, --enable-mixed-mode, --disable-setting-flags, --with-mpi=no] input-flag: [--with-yaml, --enable-test-input=/home/unit_tests_input] exclude: - conf-flag: --with-mpi=no diff --git a/CI.md b/CI.md index 225b25129b..89b4db256e 100644 --- a/CI.md +++ b/CI.md @@ -8,24 +8,30 @@ Required CI for pull requests are listed first. ## Pull Request CI and checks ### Build libFMS with autotools + Required GNU build test for all pull requests/pushes. Runs `make distcheck` after configuring via GNU autotools. +Runs on a container image with spack installed dependencies, on top a rocky linux base. + +Dockerfile for image is stored at .github/workflows/Dockerfile.gnu for more specific information on the CI environment. + Container environment: -gcc v7.3.0 -mpich v3.3a2 -netcdf v4.6.0 -netcdf-fortran v4.4.4 +gcc v12.3.0 +mpich v4.0.2 +netcdf v4.9.0 +netcdf-fortran v4.6.0 autoconf v2.69 +libyaml v0.2.5 -container hosted at [noaagfdl/ubuntu_libfms_gnu:latest](https://hub.docker.com/r/noaagfdl/ubuntu_libfms_gnu) - -`./configure` flags: -- `--enable-openmp` +`./configure` flags tested: - `--disable-openmp` - `--enable-mixed-mode` +- `--with-mpi=no` (disables unit testing) - `--disable-setting-flags` - `--with-yaml` +- `--enable-test-input=/home/unit_tests_input` + ### Build libfms with cmake Required GNU build test for all pull requests/pushes.