From 4656e9f5232fda114e4882b10026725478143e3b Mon Sep 17 00:00:00 2001 From: Rahul Mahajan Date: Fri, 18 Aug 2023 16:22:12 -0400 Subject: [PATCH] Add Github Action on macOS and clang (#842) Adds a github action for macOS with clang. Uses v3 of cache in the workflows. Removes old and broken workflows. Fixes #756. --- .github/workflows/Intel1.yml | 202 --------- .github/workflows/Intel_nceplibs.yml | 197 --------- .github/workflows/Linux_nceplibs.yml | 125 ------ .github/workflows/Linux_versions.yml | 383 ------------------ .github/workflows/Linux_versions_ext.yml | 367 ----------------- .github/workflows/developer.yml | 350 ---------------- .github/workflows/linux-mac-nceplibs-mpi.yml | 259 ------------ .github/workflows/macos_clang.yaml | 97 +++++ .github/workflows/netcdf-versions.yml | 186 --------- .../workflows/{gcc.yaml => ubuntu_gcc.yaml} | 7 +- .../{intel.yaml => ubuntu_intel.yaml} | 3 +- ci/spack.yaml | 4 +- 12 files changed, 104 insertions(+), 2076 deletions(-) delete mode 100644 .github/workflows/Intel1.yml delete mode 100644 .github/workflows/Intel_nceplibs.yml delete mode 100644 .github/workflows/Linux_nceplibs.yml delete mode 100644 .github/workflows/Linux_versions.yml delete mode 100644 .github/workflows/Linux_versions_ext.yml delete mode 100644 .github/workflows/developer.yml delete mode 100644 .github/workflows/linux-mac-nceplibs-mpi.yml create mode 100644 .github/workflows/macos_clang.yaml delete mode 100644 .github/workflows/netcdf-versions.yml rename .github/workflows/{gcc.yaml => ubuntu_gcc.yaml} (91%) rename .github/workflows/{intel.yaml => ubuntu_intel.yaml} (95%) diff --git a/.github/workflows/Intel1.yml b/.github/workflows/Intel1.yml deleted file mode 100644 index 0cf71f245..000000000 --- a/.github/workflows/Intel1.yml +++ /dev/null @@ -1,202 +0,0 @@ -# UFS_UTILS test workflow. -# -# This workflow tests UFS_UTILS with the Intel compiler. -# -# Ed Hartnett 12/14/22 -name: Intel1 -on: - push: - branches: - - develop - paths-ignore: - - README.md - pull_request: - branches: - - develop - paths-ignore: - - README.md - -# Use custom shell with -l so .bash_profile is sourced which loads intel/oneapi/setvars.sh -# without having to do it in manually every step. -defaults: - run: - shell: bash -leo pipefail {0} - -jobs: - Intel: - runs-on: ubuntu-latest - env: - CC: icc - FC: ifort - - steps: - - # See https://software.intel.com/content/www/us/en/develop/articles/oneapi-repo-instructions.html - - name: install-intel - run: | - cd /tmp - wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB - sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB - rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB - echo "deb https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list - sudo apt-get update - sudo apt-get install intel-oneapi-dev-utilities intel-oneapi-mpi-devel intel-oneapi-openmp intel-oneapi-compiler-fortran intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic - echo "source /opt/intel/oneapi/setvars.sh" >> ~/.bash_profile - - - name: cache-netcdf - id: cache-netcdf - uses: actions/cache@v2 - with: - path: ~/netcdf - key: Intel-netcdf-c-$4.7.4-{{ runner.os }}-intel3 - - - name: build-hdf5 - if: steps.cache-netcdf.outputs.cache-hit != 'true' - run: | - export CC=mpiicc - wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.7/src/hdf5-1.10.7.tar.gz &> /dev/null - tar -xzf hdf5-1.10.7.tar.gz - pushd hdf5-1.10.7 - ./configure --prefix=${HOME}/netcdf --enable-parallel --disable-tools --disable-fortran --disable-cxx --enable-parallel-tests --disable-shared --disable-shared --enable-static - make -j2 - make install - - - name: build-netcdf-c - if: steps.cache-netcdf.outputs.cache-hit != 'true' - run: | - export CC=mpiicc - export CPPFLAGS=-I${HOME}/netcdf/include - export LDFLAGS=-L${HOME}/netcdf/lib - wget https://github.com/Unidata/netcdf-c/archive/refs/tags/v4.7.4.tar.gz &> /dev/null - tar -xzf v4.7.4.tar.gz - pushd netcdf-c-4.7.4 - ./configure --prefix=${HOME}/netcdf --disable-dap --disable-utilities --disable-shared - make -j2 - make install - - - name: build-netcdf-fortran - if: steps.cache-netcdf.outputs.cache-hit != 'true' - run: | - export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${HOME}/netcdf/lib" - export PATH="${HOME}/netcdf/bin:$PATH" - export CC=mpiicc - export FC=mpiifort - export CPPFLAGS=-I${HOME}/netcdf/include - export LDFLAGS=-L${HOME}/netcdf/lib - export LIBS=`nc-config --libs` - wget https://github.com/Unidata/netcdf-fortran/archive/v4.5.3.tar.gz &> /dev/null - tar -xzf v4.5.3.tar.gz - pushd netcdf-fortran-4.5.3 - ./configure --prefix=${HOME}/netcdf --disable-shared - make -j2 - make install - - - name: cache-esmf - id: cache-esmf - uses: actions/cache@v2 - with: - path: ~/esmf - key: Intel-esmf-8.2.0-${{ runner.os }}-intel3 - - - name: build-esmf - if: steps.cache-esmf.outputs.cache-hit != 'true' - run: | - pushd ~ - export ESMF_DIR=~/esmf-ESMF_8_2_0 - wget https://github.com/esmf-org/esmf/archive/ESMF_8_2_0.tar.gz &> /dev/null - tar zxf ESMF_8_2_0.tar.gz - cd esmf-ESMF_8_2_0 - export ESMF_COMM=intelmpi - export ESMF_INSTALL_BINDIR=bin - export ESMF_INSTALL_LIBDIR=lib - export ESMF_INSTALL_MODDIR=mod - export ESMF_COMPILER=intel - export ESMF_INSTALL_PREFIX=~/esmf - export ESMF_NETCDF=split - export ESMF_NETCDF_INCLUDE=${HOME}/netcdf/include - export ESMF_NETCDF_LIBPATH=${HOME}/netcdf/lib - export ESMF_NETCDF_LIBS="-lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lz" - make -j2 - make install - - - name: cache-jasper - id: cache-jasper - uses: actions/cache@v2 - with: - path: ~/jasper - key: Intel-jasper-2.0.25-${{ runner.os }}-intel3 - - - name: build-jasper - if: steps.cache-jasper.outputs.cache-hit != 'true' - run: | - wget https://github.com/jasper-software/jasper/archive/version-2.0.25.tar.gz &> /dev/null - tar zxf version-2.0.25.tar.gz - cd jasper-version-2.0.25 - mkdir build-jasper && cd build-jasper - cmake .. -DCMAKE_INSTALL_PREFIX=~/jasper -DJAS_ENABLE_SHARED=OFF - make -j2 - make install - - - name: checkout-nceplibs - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS - path: nceplibs - - - name: cache-nceplibs - id: cache-nceplibs - uses: actions/cache@v2 - with: - path: ~/nceplibs - key: Intel-nceplibs-1.4.0-${{ runner.os }}-intel3 - - - name: build-nceplibs - if: steps.cache-nceplibs.outputs.cache-hit != 'true' - run: | - export ESMFMKFILE=~/esmf/lib/esmf.mk - wget https://github.com/NOAA-EMC/NCEPLIBS/archive/v1.4.0.tar.gz &> /dev/null - tar zxf v1.4.0.tar.gz - cd NCEPLIBS-1.4.0 - mkdir build && cd build - cmake .. -DCMAKE_PREFIX_PATH='~;~/jasper;~/netcdf' -DCMAKE_INSTALL_PREFIX='~/nceplibs' -DFLAT=ON - make -j2 - - - name: checkout-ufs-utils - uses: actions/checkout@v2 - with: - path: ufs_utils - submodules: recursive - - - name: cache-data - id: cache-data - uses: actions/cache@v2 - with: - path: ~/data - key: data-1 - - - name: build - run: | - export ESMFMKFILE=~/esmf/lib/esmf.mk - cd ufs_utils - mkdir build && cd build - export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:~/jasper/lib;~/jasper/lib64" - cmake -DTEST_FILE_DIR=/home/runner/data -DCMAKE_PREFIX_PATH='~;~/jasper;~/nceplibs;~/netcdf' .. - make -j2 - - - name: test - run: | - cd ufs_utils/build - ctest --rerun-failed --output-on-failure - - - name: cache-data - if: steps.cache-data.outputs.cache-hit != 'true' - run: | - mkdir ~/data - cp ufs_utils/build/tests/chgres_cube/data/* ~/data - cp ufs_utils/build/tests/sfc_climo_gen/data/* ~/data - cp ufs_utils/build/tests/cpld_gridgen/data/* ~/data - cp ufs_utils/tests/filter_topo/data/* ~/data - cp ufs_utils/tests/emcsfc_snow2mdl/data/* ~/data - cp ufs_utils/tests/chgres_cube/data/* ~/data - ls -l ~/data - diff --git a/.github/workflows/Intel_nceplibs.yml b/.github/workflows/Intel_nceplibs.yml deleted file mode 100644 index e15059809..000000000 --- a/.github/workflows/Intel_nceplibs.yml +++ /dev/null @@ -1,197 +0,0 @@ -name: Intel_nceplibs -on: - push: - branches: - - develop - paths-ignore: - - README.md - pull_request: - branches: - - develop - paths-ignore: - - README.md - -# Use custom shell with -l so .bash_profile is sourced which loads intel/oneapi/setvars.sh -# without having to do it in manually every step. -defaults: - run: - shell: bash -leo pipefail {0} - -jobs: - Intel_nceplibs: - runs-on: ubuntu-latest - env: - CC: icc - FC: ifort - - steps: - - # See https://software.intel.com/content/www/us/en/develop/articles/oneapi-repo-instructions.html - - name: install-intel - run: | - cd /tmp - wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB - sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB - rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB - echo "deb https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list - sudo apt-get update - sudo apt-get install intel-oneapi-dev-utilities intel-oneapi-mpi-devel intel-oneapi-openmp intel-oneapi-compiler-fortran intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic - echo "source /opt/intel/oneapi/setvars.sh" >> ~/.bash_profile - - - name: cache-netcdf - id: cache-netcdf - uses: actions/cache@v2 - with: - path: ~/netcdf - key: netcdf-c-$4.7.4-{{ runner.os }}-intel3 - - - name: build-hdf5 - if: steps.cache-netcdf.outputs.cache-hit != 'true' - run: | - export CC=mpiicc - wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.7/src/hdf5-1.10.7.tar.gz &> /dev/null - tar -xzf hdf5-1.10.7.tar.gz - pushd hdf5-1.10.7 - ./configure --prefix=${HOME}/netcdf --enable-parallel --disable-tools --disable-fortran --disable-cxx --enable-parallel-tests --disable-shared --disable-shared --enable-static - make -j2 - make install - - - name: build-netcdf-c - if: steps.cache-netcdf.outputs.cache-hit != 'true' - run: | - export CC=mpiicc - export CPPFLAGS=-I${HOME}/netcdf/include - export LDFLAGS=-L${HOME}/netcdf/lib - wget https://github.com/Unidata/netcdf-c/archive/refs/tags/v4.7.4.tar.gz &> /dev/null - tar -xzf v4.7.4.tar.gz - pushd netcdf-c-4.7.4 - ./configure --prefix=${HOME}/netcdf --disable-dap --disable-utilities --disable-shared - make -j2 - make install - - - name: build-netcdf-fortran - if: steps.cache-netcdf.outputs.cache-hit != 'true' - run: | - export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${HOME}/netcdf/lib" - export PATH="${HOME}/netcdf/bin:$PATH" - export CC=mpiicc - export FC=mpiifort - export CPPFLAGS=-I${HOME}/netcdf/include - export LDFLAGS=-L${HOME}/netcdf/lib - export LIBS=`nc-config --libs` - wget https://github.com/Unidata/netcdf-fortran/archive/v4.5.3.tar.gz &> /dev/null - tar -xzf v4.5.3.tar.gz - pushd netcdf-fortran-4.5.3 - ./configure --prefix=${HOME}/netcdf --disable-shared - make -j2 - make install - - - name: cache-esmf - id: cache-esmf - uses: actions/cache@v2 - with: - path: ~/esmf - key: esmf-8.2.0-${{ runner.os }}-intel3 - - - name: build-esmf - if: steps.cache-esmf.outputs.cache-hit != 'true' - run: | - pushd ~ - export ESMF_DIR=~/esmf-ESMF_8_2_0 - wget https://github.com/esmf-org/esmf/archive/ESMF_8_2_0.tar.gz &> /dev/null - tar zxf ESMF_8_2_0.tar.gz - cd esmf-ESMF_8_2_0 - export ESMF_COMM=intelmpi - export ESMF_INSTALL_BINDIR=bin - export ESMF_INSTALL_LIBDIR=lib - export ESMF_INSTALL_MODDIR=mod - export ESMF_COMPILER=intel - export ESMF_INSTALL_PREFIX=~/esmf - export ESMF_NETCDF=split - export ESMF_NETCDF_INCLUDE=${HOME}/netcdf/include - export ESMF_NETCDF_LIBPATH=${HOME}/netcdf/lib - export ESMF_NETCDF_LIBS="-lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lz" - make -j2 - make install - - - name: cache-jasper - id: cache-jasper - uses: actions/cache@v2 - with: - path: ~/jasper - key: jasper-2.0.25-${{ runner.os }}-intel3 - - - name: build-jasper - if: steps.cache-jasper.outputs.cache-hit != 'true' - run: | - wget https://github.com/jasper-software/jasper/archive/version-2.0.25.tar.gz &> /dev/null - tar zxf version-2.0.25.tar.gz - cd jasper-version-2.0.25 - mkdir build-jasper && cd build-jasper - cmake .. -DCMAKE_INSTALL_PREFIX=~/jasper -DJAS_ENABLE_SHARED=OFF - make -j2 - make install - - - name: checkout-nceplibs - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS - path: nceplibs - - - name: cache-nceplibs - id: cache-nceplibs - uses: actions/cache@v2 - with: - path: ~/nceplibs - key: nceplibs-1.4.0-${{ runner.os }}-intel3 - - - name: build-nceplibs - if: steps.cache-nceplibs.outputs.cache-hit != 'true' - run: | - export ESMFMKFILE=~/esmf/lib/esmf.mk - wget https://github.com/NOAA-EMC/NCEPLIBS/archive/v1.4.0.tar.gz &> /dev/null - tar zxf v1.4.0.tar.gz - cd NCEPLIBS-1.4.0 - mkdir build && cd build - cmake .. -DCMAKE_PREFIX_PATH='~;~/jasper;~/netcdf' -DCMAKE_INSTALL_PREFIX='~/nceplibs' -DFLAT=ON - make -j2 - - - name: checkout-ufs-utils - uses: actions/checkout@v2 - with: - path: ufs_utils - submodules: recursive - - - name: cache-data - id: cache-data - uses: actions/cache@v2 - with: - path: ~/data - key: data-1 - - - name: build - run: | - export ESMFMKFILE=~/esmf/lib/esmf.mk - cd ufs_utils - mkdir build && cd build - export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:~/jasper/lib;~/jasper/lib64" - cmake -DTEST_FILE_DIR=/home/runner/data -DCMAKE_BUILD_TYPE=Debug -DCMAKE_PREFIX_PATH='~;~/jasper;~/nceplibs;~/netcdf' .. - make -j2 - - - name: test - run: | - cd ufs_utils/build - ctest --rerun-failed --output-on-failure - - - name: cache-data - if: steps.cache-data.outputs.cache-hit != 'true' - run: | - mkdir ~/data - cp ufs_utils/build/tests/chgres_cube/data/* ~/data - cp ufs_utils/build/tests/sfc_climo_gen/data/* ~/data - cp ufs_utils/build/tests/cpld_gridgen/data/* ~/data - cp ufs_utils/tests/filter_topo/data/* ~/data - cp ufs_utils/tests/emcsfc_snow2mdl/data/* ~/data - cp ufs_utils/tests/chgres_cube/data/* ~/data - ls -l ~/data - diff --git a/.github/workflows/Linux_nceplibs.yml b/.github/workflows/Linux_nceplibs.yml deleted file mode 100644 index e1e33af51..000000000 --- a/.github/workflows/Linux_nceplibs.yml +++ /dev/null @@ -1,125 +0,0 @@ -# UFS_UTILS test workflow. -# -# Check UFS_UTILS build based on the NCEPLIBS project (deprecated, but still works). -# -# Ed Hartnett 12/13/22 -name: Linux_nceplibs -on: - push: - branches: - - develop - paths-ignore: - - README.md - pull_request: - branches: - - develop - paths-ignore: - - README.md - -defaults: - run: - shell: bash -exo pipefail {0} - -jobs: - Linux_nceplibs: - runs-on: ubuntu-latest - - steps: - - - name: install-dependencies - run: | - sudo apt-get update - sudo apt-get install libmpich-dev libpng-dev libjpeg-dev - sudo apt-get install libnetcdf-dev libnetcdff-dev netcdf-bin pkg-config - - - name: cache-esmf - id: cache-esmf - uses: actions/cache@v2 - with: - path: ~/esmf - key: esmf-8.2.0-${{ runner.os }}3 - - - name: build-esmf - if: steps.cache-esmf.outputs.cache-hit != 'true' - run: | - pushd ~ - export ESMF_DIR=~/esmf-ESMF_8_2_0 - wget https://github.com/esmf-org/esmf/archive/ESMF_8_2_0.tar.gz &> /dev/null - tar zxf ESMF_8_2_0.tar.gz - cd esmf-ESMF_8_2_0 - export ESMF_COMM=mpich3 - export ESMF_INSTALL_BINDIR=bin - export ESMF_INSTALL_LIBDIR=lib - export ESMF_INSTALL_MODDIR=mod - export ESMF_COMPILER=gfortran - export ESMF_INSTALL_PREFIX=~/esmf - export ESMF_NETCDF=split - export ESMF_NETCDF_INCLUDE=/usr/include - export ESMF_NETCDF_LIBPATH=/usr/x86_64-linux-gnu - make -j2 - make install - - - name: cache-jasper - id: cache-jasper - uses: actions/cache@v2 - with: - path: ~/jasper - key: jasper-2.0.25-${{ runner.os }}3 - - - name: build-jasper - if: steps.cache-jasper.outputs.cache-hit != 'true' - run: | - wget https://github.com/jasper-software/jasper/archive/version-2.0.25.tar.gz &> /dev/null - tar zxf version-2.0.25.tar.gz - cd jasper-version-2.0.25 - mkdir build-jasper && cd build-jasper - cmake .. -DCMAKE_INSTALL_PREFIX=~/jasper -DJAS_ENABLE_SHARED=OFF - make -j2 - make install - - - name: cache-nceplibs - id: cache-nceplibs - uses: actions/cache@v2 - with: - path: ~/nceplibs - key: nceplibs-1.4.0-${{ runner.os }}3 - - - name: build-nceplibs - if: steps.cache-nceplibs.outputs.cache-hit != 'true' - run: | - wget https://github.com/NOAA-EMC/NCEPLIBS/archive/v1.4.0.tar.gz &> /dev/null - tar zxf v1.4.0.tar.gz - cd NCEPLIBS-1.4.0 - export ESMFMKFILE=~/esmf/lib/esmf.mk - mkdir build && cd build - cmake .. -DCMAKE_PREFIX_PATH='~;~/jasper' -DCMAKE_INSTALL_PREFIX='~/nceplibs' -DFLAT=ON - make -j2 - - - name: checkout-ufs-utils - uses: actions/checkout@v2 - with: - path: ufs_utils - submodules: recursive - - - name: cache-data - id: cache-data - uses: actions/cache@v2 - with: - path: ~/data - key: data-1 - - - name: build - run: | - export ESMFMKFILE=~/esmf/lib/esmf.mk - cd ufs_utils - mkdir build && cd build - export CC=mpicc - export CXX=mpicxx - export FC=mpifort - export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:~/jasper/lib;~/jasper/lib64" - cmake -DTEST_FILE_DIR=/home/runner/data -DCMAKE_PREFIX_PATH='~/jasper;~/nceplibs' .. - make -j2 - - name: test - run: | - cd ufs_utils/build - ctest --rerun-failed --output-on-failure diff --git a/.github/workflows/Linux_versions.yml b/.github/workflows/Linux_versions.yml deleted file mode 100644 index 03baff39d..000000000 --- a/.github/workflows/Linux_versions.yml +++ /dev/null @@ -1,383 +0,0 @@ -# UFS_UTILS test workflow. -# -# Check different versions of the NCEPLIBS libraries that are used by UFS_UTILS. -# -# Ed Hartnett 12/13/22 -name: Linux_versions -on: - push: - branches: - - develop - paths-ignore: - - README.md - pull_request: - branches: - - develop - paths-ignore: - - README.md - -defaults: - run: - shell: bash -exo pipefail {0} - -jobs: - Linux_versions: - runs-on: ubuntu-latest - env: - FC: mpifort - CC: mpicc - FCFLAGS: -fallow-argument-mismatch - strategy: - fail-fast: true - matrix: - esmf_version: [8_2_0, 8.3.0, 8.4.0] - bacio_version: [2.4.1] - g2_version: [3.4.3] - sp_version: [2.3.3] - ip_version: [3.3.3] - w3emc_version: [2.9.3] - nemsio_version: [2.5.0] - sfcio_version: [1.4.0] - sigio_version: [2.3.0] - - steps: - - - name: install-dependencies - run: | - sudo apt-get update - sudo apt-get install libpng-dev zlib1g-dev libjpeg-dev libmpich-dev - sudo apt-get install libnetcdf-dev libnetcdff-dev netcdf-bin pkg-config - sudo apt-get install autoconf automake libtool - - - name: checkout-esmf - id: cache-esmf - uses: actions/cache@v2 - with: - path: ~/esmf - key: Linux_versions-esmf-${{ matrix.esmf_version }}-${{ runner.os }} - - - name: build-esmf - if: steps.cache-esmf.outputs.cache-hit != 'true' - run: | - pushd ~ - if [[ ${{ matrix.esmf_version }} == "8_2_0" ]]; then - wget https://github.com/esmf-org/esmf/archive/ESMF_${{ matrix.esmf_version }}.tar.gz &> /dev/null - tar zxf ESMF_${{ matrix.esmf_version }}.tar.gz - cd esmf-ESMF_${{ matrix.esmf_version }} - export ESMF_DIR=~/esmf-ESMF_${{ matrix.esmf_version }} - else - wget https://github.com/esmf-org/esmf/archive/refs/tags/v${{ matrix.esmf_version }}.tar.gz &> /dev/null - ls -l - tar zxf v${{ matrix.esmf_version }}.tar.gz - cd esmf-${{ matrix.esmf_version }} - export ESMF_DIR=~/esmf-${{ matrix.esmf_version }} - fi - export ESMF_COMM=mpich3 - export ESMF_INSTALL_BINDIR=bin - export ESMF_INSTALL_LIBDIR=lib - export ESMF_INSTALL_MODDIR=mod - export ESMF_COMPILER=gfortran - export ESMF_INSTALL_PREFIX=~/esmf - export ESMF_NETCDF=split - export ESMF_NETCDF_INCLUDE=/usr/include - export ESMF_NETCDF_LIBPATH=/usr/x86_64-linux-gnu - export ESMF_PIO=OFF - export ESMF_MOAB=OFF - export ESMF_ARRAY_LITE=TRUE - make -j2 - make install - - - name: cache-jasper - id: cache-jasper - uses: actions/cache@v2 - with: - path: ~/jasper - key: Linux_versions-jasper-${{ runner.os }}-2.0.33-1 - - - name: checkout-jasper - if: steps.cache-jasper.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: jasper-software/jasper - path: jasper - ref: version-2.0.33 - - - name: build-jasper - if: steps.cache-jasper.outputs.cache-hit != 'true' - run: | - cd jasper - mkdir build-jasper && cd build-jasper - cmake .. -DCMAKE_INSTALL_PREFIX=~/jasper - make -j2 - make install - - - name: cache-bacio - id: cache-bacio - uses: actions/cache@v2 - with: - path: ~/bacio - key: Linux_versions-bacio-${{ runner.os }}-${{ matrix.bacio_version }} - - - name: checkout-bacio - if: steps.cache-bacio.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS-bacio - path: bacio - ref: v${{ matrix.bacio_version }} - - - name: build-bacio - if: steps.cache-bacio.outputs.cache-hit != 'true' - run: | - cd bacio - mkdir build && cd build - cmake .. -DCMAKE_INSTALL_PREFIX=~/bacio - make -j2 - make install - - - name: cache-g2 - id: cache-g2 - uses: actions/cache@v2 - with: - path: ~/g2 - key: Linux_versions-g2-${{ runner.os }}-${{ matrix.g2_version }} - - - name: checkout-g2 - if: steps.cache-g2.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS-g2 - path: g2 - ref: v${{ matrix.g2_version }} - - - name: build-g2 - if: steps.cache-g2.outputs.cache-hit != 'true' - run: | - cd g2 - mkdir build - cd build - cmake -DCMAKE_INSTALL_PREFIX=~/g2 -DCMAKE_PREFIX_PATH="~/bacio;~/jasper" .. - make -j2 - make install - - - name: cache-sp - id: cache-sp - uses: actions/cache@v2 - with: - path: ~/sp - key: Linux_versions-sp-${{ runner.os }}-${{ matrix.sp_version }} - - - name: checkout-sp - if: steps.cache-sp.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS-sp - path: sp - ref: v${{ matrix.sp_version }} - - - name: build-sp - if: steps.cache-sp.outputs.cache-hit != 'true' - run: | - cd sp - mkdir build - cd build - cmake .. -DCMAKE_INSTALL_PREFIX=~/sp - make -j2 - make install - - - name: cache-ip - id: cache-ip - uses: actions/cache@v2 - with: - path: ~/ip - key: Linux_versions-ip-${{ runner.os }}-${{ matrix.ip_version }} - - - name: checkout-ip - if: steps.cache-ip.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS-ip - path: ip - ref: v${{ matrix.ip_version }} - - - name: build-ip - if: steps.cache-ip.outputs.cache-hit != 'true' - run: | - cd ip - mkdir build - cd build - cmake -DCMAKE_INSTALL_PREFIX=~/ip -DCMAKE_PREFIX_PATH=~/sp .. - make -j2 - make install - - # - name: checkout-w3emc - # uses: actions/checkout@v2 - # with: - # repository: NOAA-EMC/NCEPLIBS-w3emc - # path: w3emc - # ref: develop - - # - name: build-w3emc - # run: | - # cd w3emc - # mkdir build - # cd build - # cmake -DCMAKE_PREFIX_PATH=~/bacio -DCMAKE_INSTALL_PREFIX=~/w3emc .. - # make -j2 - # make install - - # - name: checkout-g2c - # uses: actions/checkout@v2 - # with: - # repository: NOAA-EMC/NCEPLIBS-g2c - # path: g2c - # ref: develop - - # - name: build-g2c - # run: | - # cd g2c - # mkdir build - # cd build - # cmake .. -DCMAKE_INSTALL_PREFIX=~/g2c -DJasper_ROOT=~/jasper - # make -j2 - # make install - - - name: cache-sfcio - id: cache-sfcio - uses: actions/cache@v2 - with: - path: ~/sfcio - key: Linux_versions-sfcio-${{ runner.os }}-${{ matrix.sfcio_version }} - - - name: checkout-sfcio - if: steps.cache-sfcio.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS-sfcio - path: sfcio - ref: v${{ matrix.sfcio_version }} - - - name: build-sfcio - if: steps.cache-sfcio.outputs.cache-hit != 'true' - run: | - cd sfcio - mkdir build - cd build - cmake .. -DCMAKE_INSTALL_PREFIX=~/sfcio - make -j2 - make install - - - name: cache-w3emc - id: cache-w3emc - uses: actions/cache@v2 - with: - path: ~/w3emc - key: Linux_versions-w3emc-${{ runner.os }}-${{ matrix.w3emc_version }} - - - name: checkout-w3emc - if: steps.cache-w3emc.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS-w3emc - path: w3emc - ref: v${{ matrix.w3emc_version }} - - - name: build-w3emc - if: steps.cache-w3emc.outputs.cache-hit != 'true' - run: | - cd w3emc - mkdir build - cd build - cmake .. -DCMAKE_INSTALL_PREFIX=~/w3emc -DCMAKE_PREFIX_PATH=~/bacio - make -j2 - make install - - - name: cache-nemsio - id: cache-nemsio - uses: actions/cache@v2 - with: - path: ~/nemsio - key: Linux_versions-nemsio-${{ runner.os }}-${{ matrix.nemsio_version }} - - - name: checkout-nemsio - if: steps.cache-nemsio.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS-nemsio - path: nemsio - ref: v${{ matrix.nemsio_version }} - - - name: build-nemsio - if: steps.cache-nemsio.outputs.cache-hit != 'true' - run: | - cd nemsio - mkdir build - cd build - cmake -DCMAKE_INSTALL_PREFIX=~/nemsio -DCMAKE_PREFIX_PATH="~/bacio;~/w3emc" .. - make -j2 - make install - - - name: cache-sigio - id: cache-sigio - uses: actions/cache@v2 - with: - path: ~/sigio - key: Linux_versions-sigio-${{ runner.os }}-${{ matrix.sigio_version }} - - - name: checkout-sigio - if: steps.cache-sigio.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS-sigio - path: sigio - ref: v${{ matrix.sigio_version }} - - - name: build-sigio - if: steps.cache-sigio.outputs.cache-hit != 'true' - run: | - cd sigio - mkdir build - cd build - cmake .. -DCMAKE_INSTALL_PREFIX=~/sigio - make -j2 - make install - - - name: checkout - uses: actions/checkout@v2 - with: - path: ufs_utils - submodules: true - - - name: cache-data - id: cache-data - uses: actions/cache@v2 - with: - path: ~/data - key: data-1 - - - name: build - run: | - set -x - cd ufs_utils - mkdir build - cd build - export ESMFMKFILE=~/esmf/lib/esmf.mk - cmake -DTEST_FILE_DIR=/home/runner/data -DCMAKE_PREFIX_PATH="~/jasper;~/g2c;~/bacio;~/g2;~/w3emc;~/sfcio;~/sigio;~/nemsio;~/sp;~/ip" .. - make -j2 VERBOSE=1 - - - name: test - run: | - cd ufs_utils/build - ctest --verbose --rerun-failed --output-on-failure - - - name: cache-data - if: steps.cache-data.outputs.cache-hit != 'true' - run: | - mkdir ~/data - cp ufs_utils/build/tests/chgres_cube/data/* ~/data - cp ufs_utils/build/tests/sfc_climo_gen/data/* ~/data - cp ufs_utils/build/tests/cpld_gridgen/data/* ~/data - cp ufs_utils/tests/filter_topo/data/* ~/data - cp ufs_utils/tests/emcsfc_snow2mdl/data/* ~/data - cp ufs_utils/tests/chgres_cube/data/* ~/data - ls -l ~/data diff --git a/.github/workflows/Linux_versions_ext.yml b/.github/workflows/Linux_versions_ext.yml deleted file mode 100644 index 954458e2a..000000000 --- a/.github/workflows/Linux_versions_ext.yml +++ /dev/null @@ -1,367 +0,0 @@ -# UFS_UTILS test workflow. -# -# Check different versions of the external libraries that are used by UFS_UTILS. -# -# Ed Hartnett 12/16/22 -name: Linux_versions_ext -on: - push: - branches: - - develop - paths-ignore: - - README.md - pull_request: - branches: - - develop - paths-ignore: - - README.md - -defaults: - run: - shell: bash -exo pipefail {0} - -jobs: - Linux_versions_ext: - runs-on: ubuntu-latest - env: - FC: mpifort - CC: mpicc - FCFLAGS: -fallow-argument-mismatch - strategy: - fail-fast: true - matrix: - esmf_version: [8_2_0, 8.3.1, 8.4.0] - bacio_version: [2.4.1] - g2_version: [3.4.3] - sp_version: [2.3.3] - ip_version: [3.3.3] - w3emc_version: [2.9.3] - nemsio_version: [2.5.0] - sfcio_version: [1.4.0] - sigio_version: [2.3.0] - - steps: - - - name: install-dependencies - run: | - sudo apt-get update - sudo apt-get install libpng-dev zlib1g-dev libjpeg-dev libmpich-dev - sudo apt-get install libnetcdf-dev libnetcdff-dev netcdf-bin pkg-config - sudo apt-get install autoconf automake libtool - - - name: checkout-esmf - id: cache-esmf - uses: actions/cache@v2 - with: - path: ~/esmf - key: Linux_versions-esmf-${{ matrix.esmf_version }}-${{ runner.os }} - - - name: build-esmf - if: steps.cache-esmf.outputs.cache-hit != 'true' - run: | - pushd ~ - if [[ ${{ matrix.esmf_version }} == "8_2_0" ]]; then - wget https://github.com/esmf-org/esmf/archive/ESMF_${{ matrix.esmf_version }}.tar.gz &> /dev/null - tar zxf ESMF_${{ matrix.esmf_version }}.tar.gz - cd esmf-ESMF_${{ matrix.esmf_version }} - export ESMF_DIR=~/esmf-ESMF_${{ matrix.esmf_version }} - else - wget https://github.com/esmf-org/esmf/archive/refs/tags/v${{ matrix.esmf_version }}.tar.gz &> /dev/null - ls -l - tar zxf v${{ matrix.esmf_version }}.tar.gz - cd esmf-${{ matrix.esmf_version }} - export ESMF_DIR=~/esmf-${{ matrix.esmf_version }} - fi - export ESMF_COMM=mpich3 - export ESMF_INSTALL_BINDIR=bin - export ESMF_INSTALL_LIBDIR=lib - export ESMF_INSTALL_MODDIR=mod - export ESMF_COMPILER=gfortran - export ESMF_INSTALL_PREFIX=~/esmf - export ESMF_NETCDF=split - export ESMF_NETCDF_INCLUDE=/usr/include - export ESMF_NETCDF_LIBPATH=/usr/x86_64-linux-gnu - export ESMF_PIO=OFF - export ESMF_MOAB=OFF - export ESMF_ARRAY_LITE=TRUE - make -j2 - make install - - - name: cache-jasper - id: cache-jasper - uses: actions/cache@v2 - with: - path: ~/jasper - key: Linux_versions-jasper-${{ runner.os }}-2.0.33-1 - - - name: checkout-jasper - if: steps.cache-jasper.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: jasper-software/jasper - path: jasper - ref: version-2.0.33 - - - name: build-jasper - if: steps.cache-jasper.outputs.cache-hit != 'true' - run: | - cd jasper - mkdir build-jasper && cd build-jasper - cmake .. -DCMAKE_INSTALL_PREFIX=~/jasper - make -j2 - make install - - - name: cache-bacio - id: cache-bacio - uses: actions/cache@v2 - with: - path: ~/bacio - key: Linux_versions-bacio-${{ runner.os }}-${{ matrix.bacio_version }} - - - name: checkout-bacio - if: steps.cache-bacio.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS-bacio - path: bacio - ref: v${{ matrix.bacio_version }} - - - name: build-bacio - if: steps.cache-bacio.outputs.cache-hit != 'true' - run: | - cd bacio - mkdir build && cd build - cmake .. -DCMAKE_INSTALL_PREFIX=~/bacio - make -j2 - make install - - - name: cache-g2 - id: cache-g2 - uses: actions/cache@v2 - with: - path: ~/g2 - key: Linux_versions-g2-${{ runner.os }}-${{ matrix.g2_version }} - - - name: checkout-g2 - if: steps.cache-g2.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS-g2 - path: g2 - ref: v${{ matrix.g2_version }} - - - name: build-g2 - if: steps.cache-g2.outputs.cache-hit != 'true' - run: | - cd g2 - mkdir build - cd build - cmake -DCMAKE_INSTALL_PREFIX=~/g2 -DCMAKE_PREFIX_PATH="~/bacio;~/jasper" .. - make -j2 - make install - - - name: cache-sp - id: cache-sp - uses: actions/cache@v2 - with: - path: ~/sp - key: Linux_versions-sp-${{ runner.os }}-${{ matrix.sp_version }} - - - name: checkout-sp - if: steps.cache-sp.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS-sp - path: sp - ref: v${{ matrix.sp_version }} - - - name: build-sp - if: steps.cache-sp.outputs.cache-hit != 'true' - run: | - cd sp - mkdir build - cd build - cmake .. -DCMAKE_INSTALL_PREFIX=~/sp - make -j2 - make install - - - name: cache-ip - id: cache-ip - uses: actions/cache@v2 - with: - path: ~/ip - key: Linux_versions-ip-${{ runner.os }}-${{ matrix.ip_version }} - - - name: checkout-ip - if: steps.cache-ip.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS-ip - path: ip - ref: v${{ matrix.ip_version }} - - - name: build-ip - if: steps.cache-ip.outputs.cache-hit != 'true' - run: | - cd ip - mkdir build - cd build - cmake -DCMAKE_INSTALL_PREFIX=~/ip -DCMAKE_PREFIX_PATH=~/sp .. - make -j2 - make install - - # - name: checkout-g2c - # uses: actions/checkout@v2 - # with: - # repository: NOAA-EMC/NCEPLIBS-g2c - # path: g2c - # ref: develop - - # - name: build-g2c - # run: | - # cd g2c - # mkdir build - # cd build - # cmake .. -DCMAKE_INSTALL_PREFIX=~/g2c -DJasper_ROOT=~/jasper - # make -j2 - # make install - - - name: cache-sfcio - id: cache-sfcio - uses: actions/cache@v2 - with: - path: ~/sfcio - key: Linux_versions-sfcio-${{ runner.os }}-${{ matrix.sfcio_version }} - - - name: checkout-sfcio - if: steps.cache-sfcio.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS-sfcio - path: sfcio - ref: v${{ matrix.sfcio_version }} - - - name: build-sfcio - if: steps.cache-sfcio.outputs.cache-hit != 'true' - run: | - cd sfcio - mkdir build - cd build - cmake .. -DCMAKE_INSTALL_PREFIX=~/sfcio - make -j2 - make install - - - name: cache-w3emc - id: cache-w3emc - uses: actions/cache@v2 - with: - path: ~/w3emc - key: Linux_versions-w3emc-${{ runner.os }}-${{ matrix.w3emc_version }} - - - name: checkout-w3emc - if: steps.cache-w3emc.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS-w3emc - path: w3emc - ref: v${{ matrix.w3emc_version }} - - - name: build-w3emc - if: steps.cache-w3emc.outputs.cache-hit != 'true' - run: | - cd w3emc - mkdir build - cd build - cmake .. -DCMAKE_INSTALL_PREFIX=~/w3emc -DCMAKE_PREFIX_PATH=~/bacio - make -j2 - make install - - - name: cache-nemsio - id: cache-nemsio - uses: actions/cache@v2 - with: - path: ~/nemsio - key: Linux_versions-nemsio-${{ runner.os }}-${{ matrix.nemsio_version }} - - - name: checkout-nemsio - if: steps.cache-nemsio.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS-nemsio - path: nemsio - ref: v${{ matrix.nemsio_version }} - - - name: build-nemsio - if: steps.cache-nemsio.outputs.cache-hit != 'true' - run: | - cd nemsio - mkdir build - cd build - cmake -DCMAKE_INSTALL_PREFIX=~/nemsio -DCMAKE_PREFIX_PATH="~/bacio;~/w3emc" .. - make -j2 - make install - - - name: cache-sigio - id: cache-sigio - uses: actions/cache@v2 - with: - path: ~/sigio - key: Linux_versions-sigio-${{ runner.os }}-${{ matrix.sigio_version }} - - - name: checkout-sigio - if: steps.cache-sigio.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS-sigio - path: sigio - ref: v${{ matrix.sigio_version }} - - - name: build-sigio - if: steps.cache-sigio.outputs.cache-hit != 'true' - run: | - cd sigio - mkdir build - cd build - cmake .. -DCMAKE_INSTALL_PREFIX=~/sigio - make -j2 - make install - - - name: checkout - uses: actions/checkout@v2 - with: - path: ufs_utils - submodules: true - - - name: cache-data - id: cache-data - uses: actions/cache@v2 - with: - path: ~/data - key: data-1 - - - name: build - run: | - set -x - cd ufs_utils - mkdir build - cd build - export ESMFMKFILE=~/esmf/lib/esmf.mk - cmake -DTEST_FILE_DIR=/home/runner/data -DCMAKE_PREFIX_PATH="~/jasper;~/g2c;~/bacio;~/g2;~/w3emc;~/sfcio;~/sigio;~/nemsio;~/sp;~/ip" .. - make -j2 VERBOSE=1 - - - name: test - run: | - cd ufs_utils/build - ctest --verbose --rerun-failed --output-on-failure - - - name: cache-data - if: steps.cache-data.outputs.cache-hit != 'true' - run: | - mkdir ~/data - cp ufs_utils/build/tests/chgres_cube/data/* ~/data - cp ufs_utils/build/tests/sfc_climo_gen/data/* ~/data - cp ufs_utils/build/tests/cpld_gridgen/data/* ~/data - cp ufs_utils/tests/filter_topo/data/* ~/data - cp ufs_utils/tests/emcsfc_snow2mdl/data/* ~/data - cp ufs_utils/tests/chgres_cube/data/* ~/data - ls -l ~/data diff --git a/.github/workflows/developer.yml b/.github/workflows/developer.yml deleted file mode 100644 index 14544b08c..000000000 --- a/.github/workflows/developer.yml +++ /dev/null @@ -1,350 +0,0 @@ -# UFS_UTILS test workflow. -# -# This workflow tests all developer options including -# documentation check, and test code coverage. -# -# -# Ed Hartnett 12/11/22 -name: developer -on: - push: - branches: - - develop - paths-ignore: - - README.md - pull_request: - branches: - - develop - paths-ignore: - - README.md - -defaults: - run: - shell: bash -exo pipefail {0} - -jobs: - developer: - runs-on: ubuntu-latest - env: - FC: mpifort - CC: mpicc - FCFLAGS: -fallow-argument-mismatch - - steps: - - - name: install-dependencies - run: | - sudo apt-get update - sudo apt-get install libpng-dev zlib1g-dev libjpeg-dev doxygen libmpich-dev - sudo apt-get install libnetcdf-dev libnetcdff-dev netcdf-bin pkg-config - # python3 -m pip install gcovr - - - name: cache-esmf - id: cache-esmf - uses: actions/cache@v2 - with: - path: ~/esmf - key: developer-esmf-8.2.0-${{ runner.os }}3 - - - name: build-esmf - if: steps.cache-esmf.outputs.cache-hit != 'true' - run: | - pushd ~ - export ESMF_DIR=~/esmf-ESMF_8_2_0 - wget https://github.com/esmf-org/esmf/archive/ESMF_8_2_0.tar.gz &> /dev/null - tar zxf ESMF_8_2_0.tar.gz - cd esmf-ESMF_8_2_0 - export ESMF_COMM=mpich3 - export ESMF_INSTALL_BINDIR=bin - export ESMF_INSTALL_LIBDIR=lib - export ESMF_INSTALL_MODDIR=mod - export ESMF_COMPILER=gfortran - export ESMF_INSTALL_PREFIX=~/esmf - export ESMF_NETCDF=split - export ESMF_NETCDF_INCLUDE=/usr/include - export ESMF_NETCDF_LIBPATH=/usr/x86_64-linux-gnu - make -j2 - make install - - - name: cache-jasper - id: cache-jasper - uses: actions/cache@v2 - with: - path: ~/jasper - key: developer-jasper-${{ runner.os }}-2.0.33-1 - - - name: checkout-jasper - if: steps.cache-jasper.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: jasper-software/jasper - path: jasper - ref: version-2.0.33 - - - name: build-jasper - if: steps.cache-jasper.outputs.cache-hit != 'true' - run: | - cd jasper - mkdir build-jasper && cd build-jasper - cmake .. -DCMAKE_INSTALL_PREFIX=~/jasper - make -j2 - make install - - - name: cache-bacio - id: cache-bacio - uses: actions/cache@v2 - with: - path: ~/bacio - key: developer-bacio-${{ runner.os }}-v2.4.1 - - - name: checkout-bacio - if: steps.cache-bacio.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS-bacio - path: bacio - ref: v2.4.1 - - - name: build-bacio - if: steps.cache-bacio.outputs.cache-hit != 'true' - run: | - cd bacio - mkdir build && cd build - cmake .. -DCMAKE_INSTALL_PREFIX=~/bacio - make -j2 - make install - - - name: cache-g2 - id: cache-g2 - uses: actions/cache@v2 - with: - path: ~/g2 - key: developer-g2-${{ runner.os }}-3.4.5 - - - name: checkout-g2 - if: steps.cache-g2.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS-g2 - path: g2 - ref: v3.4.5 - - - name: build-g2 - if: steps.cache-g2.outputs.cache-hit != 'true' - run: | - cd g2 - mkdir build - cd build - cmake -DCMAKE_INSTALL_PREFIX=~/g2 -DCMAKE_PREFIX_PATH="~/bacio;~/jasper" .. - make -j2 - make install - - - name: cache-sp - id: cache-sp - uses: actions/cache@v2 - with: - path: ~/sp - key: developer-sp-${{ runner.os }}-2.3.3-1 - - - name: checkout-sp - if: steps.cache-sp.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS-sp - path: sp - ref: v2.3.3 - - - name: build-sp - if: steps.cache-sp.outputs.cache-hit != 'true' - run: | - cd sp - mkdir build - cd build - cmake .. -DCMAKE_INSTALL_PREFIX=~/sp - make -j2 - make install - - - name: cache-ip - id: cache-ip - uses: actions/cache@v2 - with: - path: ~/ip - key: developer-ip-${{ runner.os }}-3.3.3 - - - name: checkout-ip - if: steps.cache-ip.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS-ip - path: ip - ref: v3.3.3 - - - name: build-ip - if: steps.cache-ip.outputs.cache-hit != 'true' - run: | - cd ip - mkdir build - cd build - cmake -DCMAKE_INSTALL_PREFIX=~/ip -DCMAKE_PREFIX_PATH=~~/sp .. - make -j2 - make install - - - name: checkout-w3emc - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS-w3emc - path: w3emc - ref: v2.9.3 - - - name: build-w3emc - run: | - cd w3emc - mkdir build - cd build - cmake -DCMAKE_PREFIX_PATH=~/bacio -DCMAKE_INSTALL_PREFIX=~/w3emc .. - make -j2 - make install - - # - name: checkout-g2c - # uses: actions/checkout@v2 - # with: - # repository: NOAA-EMC/NCEPLIBS-g2c - # path: g2c - # ref: develop - - # - name: build-g2c - # run: | - # cd g2c - # mkdir build - # cd build - # cmake .. -DCMAKE_INSTALL_PREFIX=~/g2c -DJasper_ROOT=~/jasper - # make -j2 - # make install - - - name: cache-sfcio - id: cache-sfcio - uses: actions/cache@v2 - with: - path: ~/sfcio - key: developer-sfcio-${{ runner.os }}-1.4.1 - - - name: checkout-sfcio - if: steps.cache-sfcio.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS-sfcio - path: sfcio - ref: v1.4.1 - - - name: build-sfcio - if: steps.cache-sfcio.outputs.cache-hit != 'true' - run: | - cd sfcio - mkdir build - cd build - cmake .. -DCMAKE_INSTALL_PREFIX=~/sfcio - make -j2 - make install - - - name: cache-nemsio - id: cache-nemsio - uses: actions/cache@v2 - with: - path: ~/nemsio - key: developer-nemsio-${{ runner.os }}-2.5.4 - - - name: checkout-nemsio - if: steps.cache-nemsio.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS-nemsio - path: nemsio - ref: v2.5.4 - - - name: build-nemsio - if: steps.cache-nemsio.outputs.cache-hit != 'true' - run: | - cd nemsio - mkdir build - cd build - cmake -DCMAKE_INSTALL_PREFIX=~/nemsio -DCMAKE_PREFIX_PATH="~/bacio;~/w3emc" .. - make -j2 - make install - - - name: cache-sigio - id: cache-sigio - uses: actions/cache@v2 - with: - path: ~/sigio - key: developer-sigio-${{ runner.os }}-2.3.2 - - - name: checkout-sigio - if: steps.cache-sigio.outputs.cache-hit != 'true' - uses: actions/checkout@v2 - with: - repository: NOAA-EMC/NCEPLIBS-sigio - path: sigio - ref: v2.3.2 - - - name: build-sigio - if: steps.cache-sigio.outputs.cache-hit != 'true' - run: | - cd sigio - mkdir build - cd build - cmake .. -DCMAKE_INSTALL_PREFIX=~/sigio - make -j2 - make install - - - name: checkout - uses: actions/checkout@v2 - with: - path: ufs_utils - submodules: true - - - name: cache-data - id: cache-data - uses: actions/cache@v2 - with: - path: ~/data - key: data-1 - - - name: build - run: | - cd ufs_utils - mkdir build - doxygen --version - export ESMFMKFILE=~/esmf/lib/esmf.mk - cd build - cmake -DTEST_FILE_DIR=/home/runner/data -DENABLE_DOCS=On -DCMAKE_PREFIX_PATH="~/jasper;~/g2c;~/bacio;~/g2;~/w3emc;~/sfcio;~/sigio;~/nemsio;~/sp;~/ip" -DCMAKE_Fortran_FLAGS="-g -fprofile-arcs -ftest-coverage -O0" -DCMAKE_C_FLAGS="-g -fprofile-arcs -ftest-coverage -O0" -DCMAKE_BUILD_TYPE=Debug .. - make -j2 VERBOSE=1 - - - name: test - run: | - cd ufs_utils/build - ctest --verbose --rerun-failed --output-on-failure - # gcovr --root .. -v --html-details --exclude ../tests --exclude CMakeFiles --print-summary -o test-coverage.html &> /dev/null - - - name: cache-data - if: steps.cache-data.outputs.cache-hit != 'true' - run: | - mkdir ~/data - cp ufs_utils/build/tests/chgres_cube/data/* ~/data - cp ufs_utils/build/tests/sfc_climo_gen/data/* ~/data - cp ufs_utils/build/tests/cpld_gridgen/data/* ~/data - cp ufs_utils/tests/filter_topo/data/* ~/data - cp ufs_utils/tests/emcsfc_snow2mdl/data/* ~/data - cp ufs_utils/tests/chgres_cube/data/* ~/data - ls -l ~/data - - - name: upload-test-coverage - uses: actions/upload-artifact@v2 - with: - name: ufs_utils-test-coverage - path: | - ufs_utils/build/*.html - ufs_utils/build/*.css - - - - diff --git a/.github/workflows/linux-mac-nceplibs-mpi.yml b/.github/workflows/linux-mac-nceplibs-mpi.yml deleted file mode 100644 index 43d611949..000000000 --- a/.github/workflows/linux-mac-nceplibs-mpi.yml +++ /dev/null @@ -1,259 +0,0 @@ -name: linux-mac-mpi-nceplibs -on: - push: - branches: - - develop - paths-ignore: - - README.md - pull_request: - branches: - - develop - paths-ignore: - - README.md - -defaults: - run: - shell: bash -exo pipefail {0} - -jobs: - matrix-build-and-test: - runs-on: ${{ matrix.os }} - env: - CC: gcc-9 - FC: gfortran-9 - CXX: g++-9 - strategy: - fail-fast: true - matrix: - os: [macos-11, ubuntu-latest] - compiler: [gcc-9] - nceplibs_version: [develop, 1.4.0] - mpi_type: [mpich, openmpi] - netcdf_version: [4.7.4] - - steps: - - - name: install-dependencies - run: | - echo "$HOME/mpi/bin" >> $GITHUB_PATH - if [[ ${{ matrix.os }} == "ubuntu-latest" ]]; then - sudo apt-get update - sudo apt-get install libpng-dev - sudo apt-get install libjpeg-dev - elif [[ ${{ matrix.os }} == "macos-11" ]]; then - brew update - brew install wget - brew install jpeg-turbo - if [[ ${{ matrix.compiler }} == "gcc-9" ]]; then - sudo ln -sf /usr/local/bin/gfortran-9 /usr/local/bin/gfortran - elif [[ ${{ matrix.compiler }} == "gcc-10" ]]; then - sudo ln -sf /usr/local/bin/gfortran-10 /usr/local/bin/gfortran - fi - fi - - - name: cache-mpi - id: cache-mpi - uses: actions/cache@v2 - with: - path: ~/mpi - key: mpi-${{ matrix.mpi_type }}-${{ runner.os }} - - - name: build-mpi - if: steps.cache-mpi.outputs.cache-hit != 'true' - run: | - if [[ ${{ matrix.mpi_type}} == "mpich" ]]; then - wget http://www.mpich.org/static/downloads/3.3.2/mpich-3.3.2.tar.gz &> /dev/null - tar -xzf mpich-3.3.2.tar.gz - cd mpich-3.3.2 - ./configure --prefix=$HOME/mpi --enable-fortran --enable-cxx - make -j2 - make install - elif [[ ${{ matrix.mpi_type }} == "openmpi" ]]; then - wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.1.tar.gz &> /dev/null - tar -xzf openmpi-4.1.1.tar.gz - cd openmpi-4.1.1 - if [[ ${{ matrix.os }} == "ubuntu-latest" ]]; then - ./configure --prefix=$HOME/mpi --enable-mpi-fortran --enable-mpi-cxx - elif [[ ${{ matrix.os }} == "macos-11" ]]; then - ./configure --prefix=$HOME/mpi --enable-mpi-fortran --enable-mpi-cxx --enable-two-level-namespace - fi - make -j2 - make install - fi - - - name: cache-netcdf - id: cache-netcdf - uses: actions/cache@v2 - with: - path: ~/netcdf - key: netcdf-c-${{ matrix.netcdf_version }}-${{ runner.os }}-${{ matrix.mpi_type }}3 - - - name: build-hdf5 - if: steps.cache-netcdf.outputs.cache-hit != 'true' - run: | - export CC=mpicc - wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.7/src/hdf5-1.10.7.tar.gz &> /dev/null - tar -xzf hdf5-1.10.7.tar.gz - pushd hdf5-1.10.7 - ./configure --prefix=${HOME}/netcdf --enable-parallel --disable-tools --disable-fortran --disable-cxx --enable-parallel-tests --disable-shared --enable-static - make -j2 - make install - - - name: build-netcdf-c - if: steps.cache-netcdf.outputs.cache-hit != 'true' - run: | - export CC=mpicc - export CPPFLAGS=-I${HOME}/netcdf/include - export LDFLAGS=-L${HOME}/netcdf/lib - wget https://github.com/Unidata/netcdf-c/archive/refs/tags/v${{ matrix.netcdf_version }}.tar.gz &> /dev/null - tar -xzf v${{ matrix.netcdf_version }}.tar.gz - cd netcdf-c-${{ matrix.netcdf_version }} - ./configure --prefix=${HOME}/netcdf --disable-dap --disable-utilities --disable-shared - make -j2 - make install - - - name: build-netcdf-fortran - if: steps.cache-netcdf.outputs.cache-hit != 'true' - run: | - set -x - export PATH="${HOME}/netcdf/bin:$PATH" - export CC=mpicc - export FC=mpifort - export CPPFLAGS=-I${HOME}/netcdf/include - export LDFLAGS=-L${HOME}/netcdf/lib - export LIBS=`nc-config --libs` - wget https://github.com/Unidata/netcdf-fortran/archive/v4.5.3.tar.gz &> /dev/null - tar -xzf v4.5.3.tar.gz - pushd netcdf-fortran-4.5.3 - ./configure --prefix=${HOME}/netcdf --disable-shared - make -j2 - make install - - - name: cache-esmf - id: cache-esmf - uses: actions/cache@v2 - with: - path: ~/esmf - key: esmf--8.2.0-${{ runner.os }}-${{ matrix.mpi_type }}-netcdf-${{ matrix.netcdf_version }}3 - - - name: build-esmf - if: steps.cache-esmf.outputs.cache-hit != 'true' - run: | - set -x - pushd ~ - export ESMF_DIR=~/esmf-ESMF_8_2_0 - wget https://github.com/esmf-org/esmf/archive/ESMF_8_2_0.tar.gz &> /dev/null - tar zxf ESMF_8_2_0.tar.gz - cd esmf-ESMF_8_2_0 - if [[ ${{ matrix.mpi_type}} == "mpich" ]]; then - export ESMF_COMM=mpich3 - elif [[ ${{ matrix.mpi_type}} == "openmpi" ]]; then - export ESMF_COMM=openmpi - fi - export ESMF_INSTALL_BINDIR=bin - export ESMF_INSTALL_LIBDIR=lib - export ESMF_INSTALL_MODDIR=mod - export ESMF_COMPILER=gfortran - export ESMF_INSTALL_PREFIX=~/esmf - export ESMF_NETCDF=split - export ESMF_NETCDF_INCLUDE=${HOME}/netcdf/include - export ESMF_NETCDF_LIBPATH=${HOME}/netcdf/lib - export ESMF_NETCDF_LIBS="-lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lz" - make -j2 - make install - - - name: cache-jasper - id: cache-jasper - uses: actions/cache@v2 - with: - path: ~/jasper - key: jasper-2.0.25-${{ runner.os }}3 - - - name: build-jasper - if: steps.cache-jasper.outputs.cache-hit != 'true' - run: | - set -x - pwd - wget https://github.com/jasper-software/jasper/archive/version-2.0.25.tar.gz &> /dev/null - tar zxf version-2.0.25.tar.gz - cd jasper-version-2.0.25 - mkdir build-jasper && cd build-jasper - cmake .. -DCMAKE_INSTALL_PREFIX=~/jasper -DJAS_ENABLE_SHARED=OFF - make -j2 - make install - - - name: checkout-nceplibs - run: | - git clone https://github.com/NOAA-EMC/NCEPLIBS.git nceplibs - cd nceplibs - if [[ ${{ matrix.nceplibs_version }} == "1.4.0" ]]; then - git checkout v1.4.0 - fi - - - name: get-git-hash - run: | - cd nceplibs - git rev-parse HEAD > hash.txt - - - name: cache-nceplibs - id: cache-nceplibs - uses: actions/cache@v2 - with: - path: ~/nceplibs - key: nceplibs-${{ matrix.nceplibs_version }}-${{ runner.os }}-${{ matrix.mpi_type }}-${{ hashFiles('nceplibs/hash.txt') }}3 - - - name: build-nceplibs - if: steps.cache-nceplibs.outputs.cache-hit != 'true' - run: | - set -x - export ESMFMKFILE=~/esmf/lib/esmf.mk - cd nceplibs - mkdir build && cd build - cmake .. -DCMAKE_PREFIX_PATH='~;~/jasper;~/netcdf' -DCMAKE_INSTALL_PREFIX='~/nceplibs' -DFLAT=ON - make -j2 - - - name: checkout-ufs-utils - uses: actions/checkout@v2 - with: - path: ufs_utils - submodules: recursive - - - name: cache-data - id: cache-data - uses: actions/cache@v2 - with: - path: ~/data - key: data-2 - - - name: build - run: | - export ESMFMKFILE=~/esmf/lib/esmf.mk - cd ufs_utils - mkdir build && cd build - export CC=mpicc - export CXX=mpicxx - export FC=mpifort - export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:~/jasper/lib;~/jasper/lib64" - export DYLD_LIBRARY_PATH="${LD_LIBRARY_PATH}:~/jasper/lib;~/jasper/lib64" - cmake -DTEST_FILE_DIR=/home/runner/data -DCMAKE_PREFIX_PATH='~/jasper;~/nceplibs;~/netcdf' .. - make -j2 - - - name: test - run: | - cd ufs_utils/build - # Oversubscribe for OpenMPI to run more processes than CPUs - export OMPI_MCA_rmaps_base_oversubscribe=1 - ctest --rerun-failed --output-on-failure - - - name: cache-data - if: steps.cache-data.outputs.cache-hit != 'true' - run: | - mkdir ~/data - cp ufs_utils/build/tests/chgres_cube/data/* ~/data - cp ufs_utils/build/tests/sfc_climo_gen/data/* ~/data - cp ufs_utils/build/tests/cpld_gridgen/data/* ~/data - cp ufs_utils/tests/filter_topo/data/* ~/data - cp ufs_utils/tests/emcsfc_snow2mdl/data/* ~/data - cp ufs_utils/tests/chgres_cube/data/* ~/data - ls -l ~/data - diff --git a/.github/workflows/macos_clang.yaml b/.github/workflows/macos_clang.yaml new file mode 100644 index 000000000..25f6bc693 --- /dev/null +++ b/.github/workflows/macos_clang.yaml @@ -0,0 +1,97 @@ +name: Clang macOS Build and Test +on: [push, pull_request, workflow_dispatch] + + +# Use custom shell with -l so .bash_profile is sourced +# without having to do it in manually every step +defaults: + run: + shell: bash -leo pipefail {0} + +env: + cache_key: clang + CC: clang + FC: gfortran-11 + CXX: clang + +# The jobs are split into: +# 1. a dependency build step (setup), and +# 2. a UFS-utils build and test step (ufs_utils) +# The setup is run once and the environment is cached, +# so each subsequent build and test of UFS-utils can reuse the cached +# dependencies to save time (and compute). + +jobs: + setup: + runs-on: macos-12 + + steps: + - name: checkout # this is to get the ci/spack.yaml file + uses: actions/checkout@v3 + with: + path: ufs_utils + + # Cache spack, compiler and dependencies + - name: cache-env + id: cache-env + uses: actions/cache@v3 + with: + path: | + spack + ~/.spack + key: spack-${{ runner.os }}-${{ env.cache_key }}-${{ hashFiles('ufs_utils/ci/spack.yaml') }} + + # Install dependencies using Spack + - name: install-dependencies-with-spack + if: steps.cache-env.outputs.cache-hit != 'true' + run: | + git clone -c feature.manyFiles=true https://github.com/JCSDA/spack.git + source spack/share/spack/setup-env.sh + sed "s/\[intel, gcc@10:10, apple-clang@14\]/\[apple-clang@14\]/g" ufs_utils/ci/spack.yaml > spack_ci.yaml + spack env create ufs_utils-env spack_ci.yaml + spack env activate ufs_utils-env + spack external find + spack add openmpi@4.1.5 + spack concretize + spack install -v --fail-fast --dirty + spack clean --all + + ufs_utils: + needs: setup + runs-on: macos-12 + + steps: + - name: checkout + uses: actions/checkout@v3 + with: + path: ufs_utils + submodules: recursive + + - name: cache-env + id: cache-env + uses: actions/cache@v3 + with: + path: | + spack + ~/.spack + key: spack-${{ runner.os }}-${{ env.cache_key }}-${{ hashFiles('ufs_utils/ci/spack.yaml') }} + + - name: build + run: | + source spack/share/spack/setup-env.sh + spack env activate ufs_utils-env + export CC=mpicc + export FC=mpif90 + cd ufs_utils + mkdir -p build && cd build + cmake -DCMAKE_INSTALL_PREFIX=../install .. + make -j2 VERBOSE=1 + make install + + - name: ctest + run: | + source spack/share/spack/setup-env.sh + spack env activate ufs_utils-env + cd ufs_utils + cd build + ctest --verbose --rerun-failed --output-on-failure diff --git a/.github/workflows/netcdf-versions.yml b/.github/workflows/netcdf-versions.yml deleted file mode 100644 index c9a0a6f9c..000000000 --- a/.github/workflows/netcdf-versions.yml +++ /dev/null @@ -1,186 +0,0 @@ -name: netcdf-versions -on: - push: - branches: - - develop - paths-ignore: - - README.md - pull_request: - branches: - - develop - paths-ignore: - - README.md - -defaults: - run: - shell: bash -exo pipefail {0} - -jobs: - netcdf-build-and-test: - runs-on: ubuntu-latest - - strategy: - matrix: - os: [ubuntu-latest] - netcdf_version: [4.8.0] - - steps: - - name: install-dependencies - run: | - sudo apt-get update - sudo apt-get install libmpich-dev libpng-dev libjpeg-dev - - - name: cache-netcdf - id: cache-netcdf - uses: actions/cache@v2 - with: - path: ~/netcdf - key: netcdf-c-${{ matrix.netcdf_version }}-${{ runner.os }}4 - - - name: build-hdf5 - if: steps.cache-netcdf.outputs.cache-hit != 'true' - run: | - export CC=mpicc - wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.7/src/hdf5-1.10.7.tar.gz &> /dev/null - tar -xzf hdf5-1.10.7.tar.gz - pushd hdf5-1.10.7 - ./configure --prefix=${HOME}/netcdf --enable-parallel --disable-tools --disable-fortran --disable-cxx --disable-shared - make -j2 - make install - - - name: build-netcdf-c - if: steps.cache-netcdf.outputs.cache-hit != 'true' - run: | - export CC=mpicc - export CPPFLAGS=-I${HOME}/netcdf/include - export LDFLAGS=-L${HOME}/netcdf/lib - wget https://github.com/Unidata/netcdf-c/archive/refs/tags/v${{ matrix.netcdf_version }}.tar.gz &> /dev/null - tar -xzf v${{ matrix.netcdf_version }}.tar.gz - cd netcdf-c-${{ matrix.netcdf_version }} - ./configure --prefix=${HOME}/netcdf --disable-dap --disable-utilities --disable-shared - make -j2 - make install - - - name: build-netcdf-fortran - if: steps.cache-netcdf.outputs.cache-hit != 'true' - run: | - set -x - export PATH="${HOME}/netcdf/bin:$PATH" - export CC=mpicc - export FC=mpifort - export CPPFLAGS=-I${HOME}/netcdf/include - export LDFLAGS=-L${HOME}/netcdf/lib - export LIBS=`nc-config --libs` - wget https://github.com/Unidata/netcdf-fortran/archive/v4.5.3.tar.gz &> /dev/null - tar -xzf v4.5.3.tar.gz - pushd netcdf-fortran-4.5.3 - ./configure --prefix=${HOME}/netcdf --disable-shared - make -j2 - make install - - - name: cache-esmf - id: cache-esmf - uses: actions/cache@v2 - with: - path: ~/esmf - key: esmf-8.2.0-${{ runner.os }}-netcdf-${{ matrix.netcdf_version }}3 - - - name: build-esmf - if: steps.cache-esmf.outputs.cache-hit != 'true' - run: | - pushd ~ - export ESMF_DIR=~/esmf-ESMF_8_2_0 - wget https://github.com/esmf-org/esmf/archive/ESMF_8_2_0.tar.gz &> /dev/null - tar zxf ESMF_8_2_0.tar.gz - cd esmf-ESMF_8_2_0 - export ESMF_COMM=mpich3 - export ESMF_INSTALL_BINDIR=bin - export ESMF_INSTALL_LIBDIR=lib - export ESMF_INSTALL_MODDIR=mod - export ESMF_COMPILER=gfortran - export ESMF_INSTALL_PREFIX=~/esmf - export ESMF_NETCDF=split - export ESMF_NETCDF_INCLUDE=${HOME}/netcdf/include - export ESMF_NETCDF_LIBPATH=${HOME}/netcdf/lib - export ESMF_NETCDF_LIBS="-lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lz" - make -j2 - make install - - - name: cache-jasper - id: cache-jasper - uses: actions/cache@v2 - with: - path: ~/jasper - key: jasper-2.0.25-${{ runner.os }}3 - - - name: build-jasper - if: steps.cache-jasper.outputs.cache-hit != 'true' - run: | - wget https://github.com/jasper-software/jasper/archive/version-2.0.25.tar.gz &> /dev/null - tar zxf version-2.0.25.tar.gz - cd jasper-version-2.0.25 - mkdir build-jasper && cd build-jasper - cmake .. -DCMAKE_INSTALL_PREFIX=~/jasper -DJAS_ENABLE_SHARED=OFF - make -j2 - make install - - - name: cache-nceplibs - id: cache-nceplibs - uses: actions/cache@v2 - with: - path: ~/nceplibs - key: nceplibs-1.4.0-${{ runner.os }}-netcdf-${{ matrix.netcdf_version }}3 - - - name: build-nceplibs - if: steps.cache-nceplibs.outputs.cache-hit != 'true' - run: | - wget https://github.com/NOAA-EMC/NCEPLIBS/archive/v1.4.0.tar.gz &> /dev/null - tar zxf v1.4.0.tar.gz - cd NCEPLIBS-1.4.0 - export ESMFMKFILE=~/esmf/lib/esmf.mk - mkdir build && cd build - cmake .. -DCMAKE_PREFIX_PATH='~;~/jasper;~/netcdf' -DCMAKE_INSTALL_PREFIX='~/nceplibs' -DFLAT=ON - make -j2 - - - name: checkout-ufs-utils - uses: actions/checkout@v2 - with: - path: ufs_utils - submodules: recursive - - - name: cache-data - id: cache-data - uses: actions/cache@v2 - with: - path: ~/data - key: data-1 - - - name: build - run: | - export ESMFMKFILE=~/esmf/lib/esmf.mk - cd ufs_utils - mkdir build && cd build - export CC=mpicc - export CXX=mpicxx - export FC=mpifort - export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:~/jasper/lib;~/jasper/lib64" - cmake -DTEST_FILE_DIR=/home/runner/work/UFS_UTILS/UFS_UTILS/data -DCMAKE_PREFIX_PATH='~/jasper;~/nceplibs;~/netcdf' .. - make -j2 - - name: test - run: | - cd ufs_utils/build - ctest --rerun-failed --output-on-failure - - - name: cache-data - if: steps.cache-data.outputs.cache-hit != 'true' - run: | - mkdir ~/data - cp ufs_utils/build/tests/chgres_cube/data/* ~/data - cp ufs_utils/build/tests/sfc_climo_gen/data/* ~/data - cp ufs_utils/build/tests/cpld_gridgen/data/* ~/data - cp ufs_utils/tests/filter_topo/data/* ~/data - cp ufs_utils/tests/emcsfc_snow2mdl/data/* ~/data - cp ufs_utils/tests/chgres_cube/data/* ~/data - ls -l ~/data - - diff --git a/.github/workflows/gcc.yaml b/.github/workflows/ubuntu_gcc.yaml similarity index 91% rename from .github/workflows/gcc.yaml rename to .github/workflows/ubuntu_gcc.yaml index bb89ad10b..b501ef5ef 100644 --- a/.github/workflows/gcc.yaml +++ b/.github/workflows/ubuntu_gcc.yaml @@ -34,7 +34,7 @@ jobs: # Cache spack, compiler and dependencies - name: cache-env id: cache-env - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | spack @@ -47,7 +47,8 @@ jobs: run: | git clone -c feature.manyFiles=true https://github.com/JCSDA/spack.git source spack/share/spack/setup-env.sh - spack env create ufs_utils-env ufs_utils/ci/spack.yaml + sed "s/\[intel, gcc@10:10, apple-clang@14\]/\[gcc@10:10\]/g" ufs_utils/ci/spack.yaml > spack_ci.yaml + spack env create ufs_utils-env spack_ci.yaml spack env activate ufs_utils-env sudo apt install cmake spack external find @@ -69,7 +70,7 @@ jobs: - name: cache-env id: cache-env - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | spack diff --git a/.github/workflows/intel.yaml b/.github/workflows/ubuntu_intel.yaml similarity index 95% rename from .github/workflows/intel.yaml rename to .github/workflows/ubuntu_intel.yaml index ef801020a..f936c08f1 100644 --- a/.github/workflows/intel.yaml +++ b/.github/workflows/ubuntu_intel.yaml @@ -59,7 +59,8 @@ jobs: run: | git clone -c feature.manyFiles=true https://github.com/NOAA-EMC/spack.git source spack/share/spack/setup-env.sh - spack env create ufs_utils-env ufs_utils/ci/spack.yaml + sed "s/\[intel, gcc@10:10, apple-clang@14\]/\[intel\]/g" ufs_utils/ci/spack.yaml > spack_ci.yaml + spack env create ufs_utils-env spack_ci.yaml spack env activate ufs_utils-env spack compiler find sudo apt install cmake diff --git a/ci/spack.yaml b/ci/spack.yaml index ffbf1c97c..0549a8345 100644 --- a/ci/spack.yaml +++ b/ci/spack.yaml @@ -2,9 +2,7 @@ spack: packages: all: - compiler: - - intel - - gcc@10:10 + compiler: [intel, gcc@10:10, apple-clang@14] specs: - netcdf-c@4.7.4 - netcdf-fortran@4.5.3