diff --git a/.github/workflows/spack.yml b/.github/workflows/spack.yml new file mode 100644 index 0000000000..e0ef5c9706 --- /dev/null +++ b/.github/workflows/spack.yml @@ -0,0 +1,56 @@ +name: Spack +on: + push: + pull_request: + schedule: + - cron: '17 3 * * 0' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + spack-install: + name: Spack install + smoke test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Spack with buildcache + uses: spack/setup-spack@v3 + with: + # Pinned to a specific commit of sbryngelson/spack-packages + # until spack/spack-packages merges the mfc recipe. + # Update this SHA when the recipe branch advances. + packages_repository: sbryngelson/spack-packages + packages_ref: f0bb11a611fb7f311e788da778208be234601797 + buildcache: true + + - name: Cache Spack install store + uses: actions/cache@v4 + with: + path: | + spack/opt + spack/var/spack/cache + key: spack-store-${{ runner.os }}-${{ hashFiles('spack-packages/repos/spack_repo/builtin/packages/mfc/package.py', 'spack-packages/repos/spack_repo/builtin/packages/cantera/package.py', 'spack-packages/repos/spack_repo/builtin/packages/py_pyrometheus/package.py') }} + restore-keys: spack-store-${{ runner.os }}- + + - name: Install mfc (defaults to +mpi +pre_process +simulation +post_process) + run: spack install --reuse mfc + + - name: Smoke test + run: | + source spack/share/spack/setup-env.sh + spack load mfc + prefix="$(spack location -i mfc)" + echo "MFC prefix: $prefix" + for t in pre_process simulation post_process; do + test -x "$prefix/bin/$t" || { echo "missing binary: $t"; exit 1; } + echo "found: $prefix/bin/$t" + done + test -x "$prefix/bin/mfc" || { echo "missing shim: mfc"; exit 1; } + echo "found shim: $prefix/bin/mfc" + cd "$prefix/share/mfc" + ./mfc.sh run --prebuilt-prefix="$prefix" \ + --mpi -N 1 -n 1 --dry-run \ + examples/1D_sodshocktube/case.py