diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index c88109a..3e8816b 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -63,14 +63,12 @@ jobs: max-parallel: 1 matrix: manifest: ${{ fromJson(needs.setup-cd.outputs.manifest) }} - uses: access-nri/build-cd/.github/workflows/cd.yml@v7 + uses: access-nri/build-cd/.github/workflows/cd.yml@v8 with: model: ${{ matrix.manifest.name }} spack-manifest-path: ${{ matrix.manifest.path }} - # We have a custom schema for general software deployment manifests, so we specify it here - spack-manifest-schema-path: au.org.access-nri/tools/spack/environment/deployment - spack-manifest-schema-version: 1-0-0 - config-versions-schema-version: 3-0-0 + spack-manifest-schema-version: 2-0-0 + config-versions-schema-version: 4-0-0 config-packages-schema-version: 1-0-0 # This is a non-model deployment repository, so we do not want to tag the deployment or upload to the build database tag-deployment: false diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 315ff4b..af352ad 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -105,15 +105,12 @@ jobs: max-parallel: 1 matrix: manifest: ${{ fromJson(needs.setup-pr.outputs.manifest) }} - uses: access-nri/build-cd/.github/workflows/ci.yml@v7 + uses: access-nri/build-cd/.github/workflows/ci.yml@v8 with: model: ${{ matrix.manifest.name }} - pr: ${{ github.event_name == 'pull_request' && github.event.pull_request.number || github.event.issue.number }} spack-manifest-path: ${{ matrix.manifest.path }} - # We have a custom schema for general software deployment manifests, so we specify it here - spack-manifest-schema-path: au.org.access-nri/tools/spack/environment/deployment - spack-manifest-schema-version: 1-0-0 - config-versions-schema-version: 3-0-0 + spack-manifest-schema-version: 2-0-0 + config-versions-schema-version: 4-0-0 config-packages-schema-version: 1-0-0 permissions: pull-requests: write @@ -135,7 +132,7 @@ jobs: max-parallel: 1 matrix: manifest: ${{ fromJson(needs.setup-pr.outputs.manifest) }} - uses: access-nri/build-cd/.github/workflows/ci-closed.yml@v7 + uses: access-nri/build-cd/.github/workflows/ci-closed.yml@v8 with: - root-sbd: ${{ matrix.manifest.name }} + spack-manifest-path: ${{ matrix.manifest.path }} secrets: inherit diff --git a/README.md b/README.md index 496d388..14842d9 100644 --- a/README.md +++ b/README.md @@ -9,41 +9,52 @@ Deployment is on to HPC targets, in this case gadi@NCI, utilising the [build-cd] ## Supported tools ### fre-nctools + [FRE-NCtools](https://github.com/NOAA-GFDL/FRE-NCtools) is a collection of tools for creating grids and mosaics commonly used in climate and weather models, the remapping of data among grids, and the creation and manipulation of netCDF files. ### mppnccombine-fast + [mppnccombine-fast](https://github.com/ACCESS-NRI/mppnccombine-fast) is an accelerated version of the mppnccombine post-processing tool for MOM. ### babeltrace2 + [babeltrace2](https://github.com/efficios/babeltrace) is a CTF (Common Trace Format) trace processing library that provides both a CLI and Python bindings (bt2). It is a required dependency for [esmf-trace](https://github.com/ACCESS-NRI/esmf-trace), which is used to extract and visualise runtime profiling data from ESMF/NUOPC-based configurations. ### esmf -[esmf](https://github.com/esmf-org/esmf) is a suite of software tools for developing high-performance, multi-component Earth science modeling applications. +[esmf](https://github.com/esmf-org/esmf) is a suite of software tools for developing high-performance, multi-component Earth science modeling applications. ## How to use **Requirements**: you must be a member of [`vk83`](https://my.nci.org.au/mancini/project/vk83). The software is accessible through the environment module system on `gadi`, e.g. -``` + +```sh module use /g/data/vk83/modules ``` To discover what tools and versions are available: -``` + +```sh module avail model-tools -``` + +```sh or a specific tool -``` + +```sh module avail model-tools/fre-nctools -``` + +```sh It also works without the `model-tools` namespace: -``` + +```sh module avail fre-nctools -``` + +```sh To load the most recent version of `fre-nctools`: -``` + +```sh module load model-tools/fre-nctools ``` diff --git a/babeltrace2/spack.yaml b/babeltrace2/spack.yaml index 9bf8f3c..d226473 100644 --- a/babeltrace2/spack.yaml +++ b/babeltrace2/spack.yaml @@ -3,12 +3,26 @@ # It describes a set of packages to be installed, along with # configuration settings. spack: + definitions: + # _name and _version are reserved definitions that inform build-cd deployments, and have no effect otherwise + - _name: [babeltrace2] + - _version: [2.1.2-1] specs: - - babeltrace2@2.1.2 + - babeltrace2@2.1.2 packages: - all: + # Compilers + c: require: - - '%intel@2021.10.0' + - intel-oneapi-compilers-classic@2021.10.0 + + cxx: + require: + - intel-oneapi-compilers-classic@2021.10.0 + + fortran: + require: + - intel-oneapi-compilers-classic@2021.10.0 + view: true concretizer: unify: true @@ -16,7 +30,7 @@ spack: default: tcl: include: - - babeltrace2 + - babeltrace2 projections: - babeltrace2: 'model-tools/{name}/2.1.2' - \ No newline at end of file + # build-cd will inject the _version into this projection + babeltrace2: 'model-tools/{name}' diff --git a/config/versions.json b/config/versions.json index c66cc11..ef5f303 100644 --- a/config/versions.json +++ b/config/versions.json @@ -1,5 +1,5 @@ { - "$schema": "https://raw.githubusercontent.com/ACCESS-NRI/schema/main/au.org.access-nri/model/deployment/config/versions/3-0-0.json", - "spack": "0.22", - "spack-packages": "2025.09.004" + "$schema": "https://raw.githubusercontent.com/ACCESS-NRI/schema/main/au.org.access-nri/model/deployment/config/versions/4-0-0.json", + "spack": "1.1", + "access-spack-packages": "2026.02.002" } diff --git a/esmf/spack.yaml b/esmf/spack.yaml index c5ece1b..9f90f3f 100644 --- a/esmf/spack.yaml +++ b/esmf/spack.yaml @@ -3,37 +3,51 @@ # It describes a set of packages to be installed, along with # configuration settings. spack: + definitions: + # _name and _version are reserved definitions that inform build-cd deployments, and have no effect otherwise + - _name: [esmf] + - _version: [v8.7.0-1] specs: - - esmf@git.v8.7.0 + - esmf@git.v8.7.0 packages: parallelio: require: - - '@2.6.2+pnetcdf' + - '@2.6.2' + - '+pnetcdf' netcdf-c: require: - - '@4.9.2 build_system=cmake build_type=RelWithDebInfo' + - '@4.9.2' + - 'build_system=cmake build_type=RelWithDebInfo' netcdf-fortran: require: - - '@4.6.1' + - '@4.6.1' fms: require: - - '@git.2024.03 precision=64 +large_file ~gfs_phys ~quad_precision ~openmp' + - '@git.2024.03' + - 'precision=64 +large_file ~gfs_phys ~quad_precision ~openmp' fortranxml: require: - - '@4.1.2' + - '@4.1.2' openmpi: require: - - '@4.1.7' - gcc-runtime: + - '@4.1.7' + + # Compilers + c: require: - - '%gcc' - libiconv: + - intel-oneapi-compilers-classic@2021.10.0 + + cxx: require: - - '%gcc' + - intel-oneapi-compilers-classic@2021.10.0 + + fortran: + require: + - intel-oneapi-compilers-classic@2021.10.0 + all: require: - - '%intel@2021.10.0' - - 'target=x86_64_v4' + - 'target=x86_64_v4' view: true concretizer: unify: true @@ -41,11 +55,12 @@ spack: default: tcl: include: - - esmf - - parallelio - - netcdf-fortran - - netcdf-c - - fms - - fortranxml + - esmf + - parallelio + - netcdf-fortran + - netcdf-c + - fms + - fortranxml projections: - esmf: 'model-tools/{name}/v8.7.0' \ No newline at end of file + # build-cd will inject the _version into this projection + esmf: 'model-tools/{name}' diff --git a/fre-nctools/spack.yaml b/fre-nctools/spack.yaml index 5cc9642..9343bb5 100644 --- a/fre-nctools/spack.yaml +++ b/fre-nctools/spack.yaml @@ -3,18 +3,32 @@ # It describes a set of packages to be installed, along with # configuration settings. spack: + definitions: + # _name and _version are reserved definitions that inform build-cd deployments, and have no effect otherwise + - _name: [fre-nctools] + - _version: [2024.05-1] specs: - - fre-nctools@2024.05-1 + - fre-nctools@2024.05-1 packages: - fre-nctools: - require: - - '%intel@2021.10.0' netcdf-c: require: - - '@4.9.2' + - '@4.9.2' netcdf-fortran: require: - - '@4.6.1' + - '@4.6.1' + + # Compilers + c: + require: + - intel-oneapi-compilers-classic@2021.10.0 + + cxx: + require: + - intel-oneapi-compilers-classic@2021.10.0 + + fortran: + require: + - intel-oneapi-compilers-classic@2021.10.0 view: true concretizer: unify: true @@ -22,6 +36,7 @@ spack: default: tcl: include: - - fre-nctools + - fre-nctools projections: - fre-nctools: 'model-tools/{name}/2024.05-1' + # build-cd will inject the _version into this projection + fre-nctools: 'model-tools/{name}' diff --git a/mppnccombine-fast/spack.yaml b/mppnccombine-fast/spack.yaml index 6ca9f24..761d646 100644 --- a/mppnccombine-fast/spack.yaml +++ b/mppnccombine-fast/spack.yaml @@ -3,8 +3,12 @@ # It describes a set of packages to be installed, along with # configuration settings. spack: + definitions: + # _name and _version are reserved definitions that inform build-cd deployments, and have no effect otherwise + - _name: [mppnccombine-fast] + - _version: [2025.07.000-1] specs: - - mppnccombine-fast@2025.07.000 + - mppnccombine-fast@2025.07.000 packages: netcdf-c: require: @@ -15,9 +19,19 @@ spack: openmpi: require: - '@5.0.5' - all: + + # Compilers + c: require: - - '%intel@2021.10.0' + - intel-oneapi-compilers-classic@2021.10.0 + + cxx: + require: + - intel-oneapi-compilers-classic@2021.10.0 + + fortran: + require: + - intel-oneapi-compilers-classic@2021.10.0 view: true concretizer: unify: true @@ -25,6 +39,7 @@ spack: default: tcl: include: - - mppnccombine-fast + - mppnccombine-fast projections: - mppnccombine-fast: 'model-tools/{name}/2025.07.000' + # build-cd will inject the _version into this projection + mppnccombine-fast: 'model-tools/{name}'