Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
af74c91
Support Git commits in fetcher
penguian May 22, 2026
75d3205
Add a few debugging statements
Whyborn May 22, 2026
37081f0
Missing self
Whyborn May 22, 2026
256020f
Another missing self
Whyborn May 22, 2026
49ed189
Remove debug print statements from um_base
penguian May 26, 2026
0e38431
Remove unused fetcher variable from um_base
penguian May 26, 2026
d558136
Add CABLE dependency and library config
Whyborn May 27, 2026
c2df80d
Merge remote-tracking branch 'origin/428-um-build-system-not-finding-…
Whyborn May 27, 2026
c291977
Add access3 variant of the library
Whyborn May 27, 2026
8b47201
Add CABLE to bool variants
Whyborn May 27, 2026
5db5180
Add cable=true to build def
Whyborn May 27, 2026
ed5e226
Add debugging statement for linker args
Whyborn May 27, 2026
599c63f
Add debugging statement
Whyborn May 28, 2026
8348535
Remove debugging comment
Whyborn Jun 2, 2026
cd8bdd9
Merge branch 'cable-library-for-am3' of github.com:ACCESS-NRI/access-…
Whyborn Jun 2, 2026
5da4096
Merge branch 'api-v2' into cable-library-for-am3
Whyborn Jul 3, 2026
598b08f
Add sticky=True to all variants (#452)
harshula Jul 6, 2026
593c855
gcom4: version 4.5 does not support gcc (#456)
harshula Jul 7, 2026
e9df6f1
gcom4: add conflicts("%gcc") to force concretization error (#458)
harshula Jul 7, 2026
f77f11a
Make Exclusion Matrix A Common File (#457)
CodeGat Jul 7, 2026
25f711b
gcom4: add version "stable" mapped to branch access-esm1.6 (#459)
harshula Jul 8, 2026
a9594f4
Add CABLE dependency and library config
Whyborn May 27, 2026
0cc8ae1
Add access3 variant of the library
Whyborn May 27, 2026
74a9ea7
Add CABLE to bool variants
Whyborn May 27, 2026
82fbbba
Add cable=true to build def
Whyborn May 27, 2026
1d2535a
Add debugging statement for linker args
Whyborn May 27, 2026
c30ac68
Remove debugging comment
Whyborn Jun 2, 2026
279cf75
Add debugging statement
Whyborn May 28, 2026
7ae4089
Merge branch 'cable-library-for-am3' of github.com:ACCESS-NRI/access-…
Whyborn Jul 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 24 additions & 1 deletion .github/build-ci/actions/generate-manifest-matrix/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ Each matrix entry contains:
| Name | Type | Description |
| ---- | ---- | ----------- |
| `matrix` | JSON array | A GitHub Actions matrix of `{template_value, repository, ref, filepath}` tuples |
| `exclude-matrix` | JSON array | A GitHub Actions matrix of packages to exlude from matrix generation |

## Example

Expand All @@ -58,7 +59,8 @@ jobs:
needs: setup
strategy:
matrix:
config: ${{ fromJson(needs.setup.outputs.matrix) }}
packages: ${{ fromJson(needs.setup.outputs.matrix) }}
exclude: ${{ fromJson(needs.setup.outputs.exclude-matrix) }}
uses: access-nri/build-ci/.github/workflows/ci.yml@v3
with:
spack-manifest-repository: ${{ matrix.config.repository }}
Expand All @@ -70,6 +72,8 @@ jobs:

## Example Output

### Matrix

```json
[
{
Expand All @@ -93,6 +97,25 @@ jobs:
]
```

### Exclude Matrix

In this example, the packages below are excluded because they are all Spack Bundle Recipes (SBRs), which are tested and deployed separately in Model Deployment Repositories (MDRs).

```json
[
"access-om2",
"access-om2-bgc",
"access-om3",
"access-esm1p5",
"access-esm1p6",
"access-am3",
"access-ram3",
"access-issm",
"access-test",
"coastri-roms"
]
```

## Notes

- `repository` is extracted from HTTPS git URLs in `owner/repo` format.
Expand Down
19 changes: 18 additions & 1 deletion .github/build-ci/actions/generate-manifest-matrix/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ outputs:
description: |
A GitHub Actions matrix of repository, ref, manifest path, and package name tuples.
value: ${{ steps.gen.outputs.matrix }}
exclude-matrix:
description: |
A GitHub Actions matrix of excluded matrix entries
value: ${{ steps.exclude.outputs.matrix }}
runs:
using: composite
steps:
Expand Down Expand Up @@ -159,4 +163,17 @@ runs:
echo "$json_entries"

# Remove the trailing comma and wrap in square brackets
echo "matrix=[${json_entries%,}]" >> $GITHUB_OUTPUT
echo "matrix=[${json_entries%,}]" >> $GITHUB_OUTPUT

- name: Generate exclude matrix
shell: bash
id: exclude
env:
EXCLUSION_MATRIX_FILE_PATH: .github/build-ci/data/exclude.json
run: |
matrix="$(jq -cr '[.[] | {package: {template_value: .}}]' ${{ env.EXCLUSION_MATRIX_FILE_PATH }})"

echo "Exclusion matrix from ${{ env.EXCLUSION_MATRIX_FILE_PATH }}:"
echo "$matrix"

echo "matrix=$matrix" >> $GITHUB_OUTPUT
12 changes: 12 additions & 0 deletions .github/build-ci/data/exclude.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[
"access-om2",
"access-om2-bgc",
"access-om3",
"access-esm1p5",
"access-esm1p6",
"access-am3",
"access-ram3",
"access-issm",
"access-test",
"coastri-roms"
]
17 changes: 4 additions & 13 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,9 @@ jobs:
BUILD_CI_WORKFLOW_VERSION: v3
PACKAGES_ROOT_DIR: spack_repo/access/nri/packages
outputs:
# Output both a matrix of {repo, ref, path, package}s, and a matrix of packages for exclusion
matrix: ${{ steps.set-matrix.outputs.matrix }}
exclude-matrix: ${{ steps.set-matrix.outputs.exclude-matrix }}
builtin-spack-packages-ref: ${{ inputs.builtin-spack-packages-ref }}
access-spack-packages-ref: ${{ inputs.access-spack-packages-ref || github.event.pull_request.head.sha }}
spack-config-ref: ${{ inputs.spack-config-ref || steps.defaults.outputs.spack-config-ref }}
Expand Down Expand Up @@ -139,21 +141,10 @@ jobs:
- setup-ci
strategy:
fail-fast: false
max-parallel: 5
max-parallel: 10
matrix:
package: ${{ fromJson(needs.setup-ci.outputs.matrix) }}
exclude:
- package: {template_value: "access-om2"}
- package: {template_value: "access-om2-bgc"}
- package: {template_value: "access-om3"}
- package: {template_value: "access-esm1p5"}
- package: {template_value: "access-esm1p6"}
- package: {template_value: "access-am3"}
- package: {template_value: "access-ram3"}
- package: {template_value: "access-issm"}
- package: {template_value: "access-test"}
- package: {template_value: "coastri-roms"}
- package: {template_value: "gcom4"}
exclude: ${{ fromJson(needs.setup-ci.outputs.exclude-matrix) }}
uses: access-nri/build-ci/.github/workflows/ci.yml@v3
with:
spack-manifest-repository: ${{ matrix.package.repository }}
Expand Down
47 changes: 37 additions & 10 deletions spack_repo/access/nri/build_systems/um_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,17 +58,18 @@ class UmBasePackage(Package):
_bool_variants = (
"DR_HOOK",
"eccodes",
"netcdf")
"netcdf",
"cable")
for var in _bool_variants:
variant(var, default=True, description=var)
variant(var, default=True, sticky=True, description=var)

# Off/on variants have 3-value "none" "off", "on" logic.
_off_on_variants = (
"openmp",
"platagnostic",
"thread_utils")
for var in _off_on_variants:
variant(var, default="none", description=var,
variant(var, default="none", sticky=True, description=var,
values=("none", "off", "on"), multi=False)

# String variants have their default values set to "none" here.
Expand All @@ -89,19 +90,31 @@ class UmBasePackage(Package):
if _project != "um":
_rev_var = f"{_project}_rev"
_rev_variants.append(_rev_var)
variant(_rev_var, default="none", values="*", multi=False,
variant(
_rev_var,
default="none",
sticky=True,
values="*",
multi=False,
description=f"Subversion revision for {_project}. "
f"Defaults to automatic versioning if 'none'.")
f"Defaults to automatic versioning if 'none'."
)

# Sources variants
_sources_var = f"{_project}_sources"
_sources_variants.append(_sources_var)
variant(_sources_var, default="none", values="*", multi=False,
description=f"FCM diff extract location of {_project}.")
variant(
_sources_var,
default="none",
sticky=True,
values="*",
multi=False,
description=f"FCM diff extract location of {_project}."
)

# Git reference variants.
_ref_var = f"{_project}_ref"
variant(_ref_var, default="none", values="*", multi=False,
variant(_ref_var, default="none", sticky=True, values="*", multi=False,
description=f"Git branch/tag/commit for {_project}. "
f"Overrides Subversion. "
f"Defaults to automatic tagging if 'none'.")
Expand Down Expand Up @@ -147,7 +160,14 @@ class UmBasePackage(Package):
]

for _var in _other_variants:
variant(_var, default="none", values="*", multi=False, description=_var)
variant(
_var,
default="none",
sticky=True,
values="*",
multi=False,
description=_var
)

depends_on("c", type="build")
depends_on("fortran", type="build")
Expand All @@ -161,6 +181,7 @@ class UmBasePackage(Package):
when="+eccodes")
depends_on("netcdf-fortran@4.5.2:", type=("build", "link", "run"),
when="+netcdf")
depends_on("cable library='access3'", type=("build", "link", "run"))

phases = ["build", "install"]

Expand All @@ -184,7 +205,12 @@ class UmBasePackage(Package):
"includes": ["include"],
"dep_name": "netcdf-fortran",
"fcm_name": "netcdf",
"fcm_ld_flags": "-lnetcdff -lnetcdf"}}
"fcm_ld_flags": "-lnetcdff -lnetcdf"},
"cable": {
"includes": ["include"],
"dep_name": "cable",
"fcm_name": "cable",
"fcm_ld_flags": ""}}

# List of model variants that have Github sources.
# Should be overridden by child classes.
Expand Down Expand Up @@ -507,6 +533,7 @@ def check_model_vs_root_path_vs_um_ref(
# Set environment variables based on config_env.
for key in config_env:
tty.info(f"{key}={config_env[key]}")
print(f"Debugging: {key}={config_env[key]}")
env.set(key, config_env[key])

# Add the location of the FCM executable to PATH.
Expand Down
2 changes: 1 addition & 1 deletion spack_repo/access/nri/packages/access3_share/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class Access3Share(CMakePackage):
for tag, commit in ACCESS3_VERSIONS.items():
version(tag, tag=tag, commit=commit)

variant("openmp", default=False, description="Enable OpenMP")
variant("openmp", default=False, sticky=True, description="Enable OpenMP")

depends_on("c", type="build")
depends_on("fortran", type="build")
Expand Down
5 changes: 4 additions & 1 deletion spack_repo/access/nri/packages/access_cice/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,21 +26,24 @@ class AccessCice(CMakePackage):
version("CICE6.6.0-3", tag="CICE6.6.0-3", commit="2c444bd9d2fad1f1df4d855debc2801d4b23487d")
version("CICE6.6.0-1", tag="CICE6.6.0-1", commit="964a4455db3127d0c4681e6533f6d9733a5e8255")

variant("openmp", default=False, description="Enable OpenMP")
variant("openmp", default=False, sticky=True, description="Enable OpenMP")
variant(
"access3",
default=True,
sticky=True,
description="Install CICE as library for Access3 models"
)

variant("io_type",
default="NetCDF",
sticky=True,
values=("NetCDF", "PIO", "Binary"),
description="CICE IO Method"
)

variant("driver",
default="none",
sticky=True,
values=("none", "nuopc/cmeps", "access/cmeps", "standalone/cice"),
description="CICE driver path"
)
Expand Down
2 changes: 2 additions & 0 deletions spack_repo/access/nri/packages/access_esm1p6/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,15 @@ class AccessEsm1p6(BundlePackage):
variant(
"cice",
default="5",
sticky=True,
description="(Deprecated) choose the version of the CICE sea-ice model.",
values=("5"),
multi=False,
)
variant(
"um",
default="access-esm1.6",
sticky=True,
description="Choose the branch of um7.",
values=("access-esm1.5", "access-esm1.6"),
multi=False,
Expand Down
9 changes: 5 additions & 4 deletions spack_repo/access/nri/packages/access_fms/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,16 @@ class AccessFms(CMakePackage):
version("main", branch="main")
version("mom5", branch="mom5", preferred=True)

variant("gfs_phys", default=False, description="Use GFS Physics")
variant("large_file", default=False, description="Enable compiler definition -Duse_LARGEFILE.")
variant("gfs_phys", default=False, sticky=True, description="Use GFS Physics")
variant("large_file", default=False, sticky=True, description="Enable compiler definition -Duse_LARGEFILE.")
variant(
"internal_file_nml",
default=True,
sticky=True,
description="Enable compiler definition -DINTERNAL_FILE_NML.",
)
variant("pic", default=False, description="Build with position independent code")
variant("shared", default=False, description="Build shared/dynamic libraries")
variant("pic", default=False, sticky=True, description="Build with position independent code")
variant("shared", default=False, sticky=True, description="Build shared/dynamic libraries")
# To build a shared/dynamic library, both `pic` and `shared` are required:
requires("+pic", when="+shared", msg="The +shared variant requires +pic")

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,15 @@ class AccessGenericTracers(CMakePackage):
variant(
"shared",
default=False,
sticky=True,
description="Build shared/dynamic libraries"
)
# NOTE: access-fms@mom5 should be used in OM2, ESM1.5 and ESM1.6 to preserve
# answers with previous releases
variant(
"use_access_fms",
default=True,
sticky=True,
description="If True, depend on access-fms, otherwise depend on fms"
)

Expand Down
3 changes: 3 additions & 0 deletions spack_repo/access/nri/packages/access_mocsy/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,18 +34,21 @@ class AccessMocsy(CMakePackage):
variant(
"shared",
default=False,
sticky=True,
description="Build shared/dynamic libraries",
when="@2025.07.002:",
)
variant(
"build_type",
default="RelWithDebInfo",
sticky=True,
description="CMake build type",
values=("Debug", "Release", "RelWithDebInfo", "MinSizeRel"),
)
variant(
"precision",
default="2",
sticky=True,
description="Precision to use (1 or 2)",
values=("1", "2"),
)
Expand Down
6 changes: 4 additions & 2 deletions spack_repo/access/nri/packages/access_mom6/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,16 +35,18 @@ class AccessMom6(CMakePackage):
version("2025.02.001", tag="2025.02.001", commit="a5f4397b953f749acecf06f21129c2a20aa578fe")
version("2025.02.000", tag="2025.02.000", commit="e088c8b7f6c2b18b72edd568aa009e13396ec0c3")

variant("openmp", default=False, description="Enable OpenMP")
variant("asymmetric_mem", default=False, description="Use asymmetric memory in MOM6")
variant("openmp", default=False, sticky=True, description="Enable OpenMP")
variant("asymmetric_mem", default=False, sticky=True, description="Use asymmetric memory in MOM6")
variant(
"access3",
default=True,
sticky=True,
description="Install MOM6 as library for Access3 models"
)
variant(
"mom6_solo",
default=False,
sticky=True,
description="Install MOM6 solo executable",
when="@2025.07.001:"
)
Expand Down
2 changes: 1 addition & 1 deletion spack_repo/access/nri/packages/access_om2/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class AccessOm2(BundlePackage):

version("latest")

variant("deterministic", default=False, description="Deterministic build.")
variant("deterministic", default=False, sticky=True, description="Deterministic build.")

depends_on("libaccessom2+deterministic", when="+deterministic", type="run")
depends_on("libaccessom2~deterministic", when="~deterministic", type="run")
Expand Down
2 changes: 1 addition & 1 deletion spack_repo/access/nri/packages/access_om2_bgc/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class AccessOm2Bgc(BundlePackage):

version("latest")

variant("deterministic", default=False, description="Deterministic build.")
variant("deterministic", default=False, sticky=True, description="Deterministic build.")

depends_on("libaccessom2+deterministic", when="+deterministic", type="run")
depends_on("libaccessom2~deterministic", when="~deterministic", type="run")
Expand Down
2 changes: 1 addition & 1 deletion spack_repo/access/nri/packages/access_triangle/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ class AccessTriangle(MakefilePackage):
version("1.6.1", branch="main")

# variant for building the showme utility (requires X11).
variant("showme", default=False,
variant("showme", default=False, sticky=True,
description="Build the showme utility (requires libX11).")

depends_on("c", type="build")
Expand Down
Loading
Loading