Build MAPL with ESMF Develop using Spack #1149
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build MAPL with ESMF Develop using Spack | |
| on: | |
| pull_request: | |
| types: [opened, synchronize, reopened] | |
| # Do not run if the only files changed cannot affect the build | |
| paths-ignore: | |
| - "**.md" | |
| - "**.pro" | |
| - "**.sh" | |
| - "**.perl" | |
| - ".github/CODEOWNERS" | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} | |
| jobs: | |
| spack-build-with-esmf-develop: | |
| name: Build MAPL with ESMF Develop using Spack | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v5 | |
| with: | |
| fetch-depth: 1 | |
| filter: blob:none | |
| - name: Setup Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.13' | |
| - name: Pip install mepo | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install mepo | |
| - name: Mepo clone | |
| run: | | |
| mepo clone --partial blobless | |
| - name: Set up Spack | |
| uses: spack/setup-spack@v2 | |
| with: | |
| ref: develop # Spack version (examples: develop, releases/v0.21) | |
| color: true # Force color output (SPACK_COLOR=always) | |
| path: spack # Where to clone Spack | |
| buildcache: false # Do not use the spack buildcache | |
| - name: Find compilers | |
| shell: spack-bash {0} | |
| run: | | |
| spack compiler find | |
| - name: Set default compiler and target | |
| shell: spack-bash {0} | |
| run: | | |
| spack config add 'packages:all:require:target=x86_64_v3' | |
| - name: Create Spack environment | |
| shell: spack-bash {0} | |
| run: | | |
| spack env create spack-env | |
| spack env activate spack-env | |
| - name: Login | |
| shell: spack-bash {0} | |
| run: | | |
| spack -e spack-env mirror add geos-buildcache oci://ghcr.io/GEOS-ESM/geos-buildcache | |
| spack -e spack-env mirror set --oci-username-variable "${{ secrets.BUILDCACHE_USERNAME }}" --oci-password-variable "${{ secrets.BUILDCACHE_TOKEN }}" geos-buildcache | |
| spack -e spack-env mirror list | |
| spack -e spack-env buildcache list --allarch | |
| - name: Concretize | |
| shell: spack-bash {0} | |
| run: | | |
| spack -e spack-env concretize | |
| - name: Install Dependencies | |
| shell: spack-bash {0} | |
| run: | | |
| spack clean -m | |
| spack -e spack-env install --add --no-check-signature --use-buildcache only \ | |
| openmpi parallelio py-pyyaml python netcdf-fortran netcdf-c hdf5 \ | |
| gftl gftl-shared fargparse pflogger pfunit yafyaml ecbuild udunits openblas | |
| - name: Install ESMF develop | |
| shell: spack-bash {0} | |
| run: | | |
| spack -e spack-env install --add --no-check-signature esmf@develop | |
| - name: Build with Cmake | |
| shell: spack-bash {0} | |
| run: | | |
| spack env activate spack-env | |
| spack load \ | |
| esmf@develop gftl gftl-shared fargparse pflogger pfunit yafyaml ecbuild udunits openblas | |
| spack find --loaded | |
| FC=gfortran-14 CC=gcc-14 CXX=g++-14 | |
| cmake -B build -S . -DCMAKE_INSTALL_PREFIX=$PWD/install -DCMAKE_BUILD_TYPE=Debug -DUSE_F2PY=OFF -DCMAKE_Fortran_COMPILER=${FC} -DCMAKE_C_COMPILER=${CC} -DCMAKE_CXX_COMPILER=${CXX} | |
| cmake --build build -j 4 | |
| cmake --install build | |
| cmake --build build --target tests -j 4 | |