Skip to content
Draft
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
429203f
Pin py-numpy to version 1 to avoid duplicate packages; update
climbfuji Jan 12, 2026
53ce67f
Update syntax for preferred compiler in configs/common/packages_{clan…
climbfuji Jan 12, 2026
c2d22f5
Remove external compiler runtime packages for tier 2 sites bounty and…
climbfuji Jan 12, 2026
05d4c75
Update submodule pointer for spack
climbfuji Jan 12, 2026
8b32c9e
Merge branch 'develop' of https://github.com/jcsda/spack-stack into f…
climbfuji Jan 12, 2026
1d0ef40
Remove external/non-buildable runtime packages from .github/workflows…
climbfuji Jan 12, 2026
fd687ef
Set variants/versions for snappy and py-lxml in configs/common/packag…
climbfuji Jan 12, 2026
a22ae76
Attempt to fix spack-ext/lib/jcsda-emc/spack-stack/tests/test_setup_m…
climbfuji Jan 12, 2026
523380e
Update .github/workflows/ubuntu-ci-x86_64-*.yaml: remove old prefer s…
climbfuji Jan 13, 2026
afda902
configs/common/packages.yaml: set variant generator=make for libaec t…
climbfuji Jan 13, 2026
c9c5fab
configs/common/packages_*.yaml: Upde syntax for preferred compilers
climbfuji Jan 13, 2026
ce21e16
spack-ext/lib/jcsda-emc/spack-stack/stack/meta_modules.py: Update met…
climbfuji Jan 13, 2026
44bce84
Update spack-ext unit tests
climbfuji Jan 13, 2026
5b1f3ad
Update .gitmodules and submodule pointer for repos/builtin for code r…
climbfuji Jan 13, 2026
e0ce0fa
Bump bufr-query to 0.0.5
climbfuji Jan 13, 2026
7169e1e
Revert .gitmodules and update submodule pointer for repos/builtin
climbfuji Jan 14, 2026
75a0d1f
Remove all external compiler runtime packages from all site configs
climbfuji Jan 14, 2026
1e89d69
Revert .gitmodules for repos/builtin and update submodule pointer for…
climbfuji Jan 14, 2026
ea635da
Merge branch 'develop' of https://github.com/jcsda/spack-stack into f…
climbfuji Jan 14, 2026
fe7d1a5
configs/sites/tier1/atlantis/packages_clang-21.1.0.yaml: add variants…
climbfuji Jan 20, 2026
ad72515
Apply suggestions from code review
climbfuji Jan 21, 2026
7b6b850
Add JEDI components oops, ioda, ioda-converters, ropp-ufo, and ufo to…
climbfuji Jan 21, 2026
1cab583
Merge branch 'feature/update_spack-stack-dev_from_develop' of https:/…
climbfuji Jan 21, 2026
75c80ce
Merge branch 'develop' of https://github.com/jcsda/spack-stack into f…
climbfuji Jan 22, 2026
018b780
configs/common/packages_{gcc,oneapi}.yaml: use new syntax to specify …
climbfuji Jan 22, 2026
414481e
Fix compiler dependencies (build-time only) in new JEDI packages
climbfuji Jan 22, 2026
e6dc22b
Turn off jedi variant for neptune-dev for GitHub actions workflows (n…
climbfuji Jan 22, 2026
744ca1b
Clean up repos/spack_stack/spack_repo/spack_stack/packages/jedi_neptu…
climbfuji Jan 22, 2026
8f534bf
Update versions/date tags of JEDI components, set versions in jedi-ne…
climbfuji Jan 23, 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
3 changes: 2 additions & 1 deletion .github/workflows/ubuntu-ci-x86_64-gnu.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,10 @@ jobs:
spack stack create env --site linux.default --template ${TEMPLATE} --name ${ENVNAME} --compiler gcc
spack env activate ${ENVDIR}

# Turn off variant "adp" for neptune-dev (NRL internal only)
# Turn off variants "adp" and "jedi" for neptune-dev (NRL internal only)
if [[ "${TEMPLATE}" == *"neptune-dev"* ]]; then
sed -i 's/+adp/~adp/g' ${ENVDIR}/spack.yaml
sed -i 's/+jedi/~jedi/g' ${ENVDIR}/spack.yaml
fi

unset SPACK_DISABLE_LOCAL_CONFIG
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/ubuntu-ci-x86_64-oneapi-ifx.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,10 @@ jobs:
spack stack create env --site linux.default --template ${TEMPLATE} --name ${ENVNAME} --compiler oneapi
spack env activate ${ENVDIR}

# Turn off variant "adp" for neptune-dev (NRL internal only)
# Turn off variants "adp" and "jedi" for neptune-dev (NRL internal only)
if [[ "${TEMPLATE}" == *"neptune-dev"* ]]; then
sed -i 's/+adp/~adp/g' ${ENVDIR}/spack.yaml
sed -i 's/+jedi/~jedi/g' ${ENVDIR}/spack.yaml
fi

unset SPACK_DISABLE_LOCAL_CONFIG
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/ubuntu-ci-x86_64-oneapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,10 @@ jobs:
spack stack create env --site linux.default --template ${TEMPLATE} --name ${ENVNAME} --compiler oneapi
spack env activate ${ENVDIR}

# Turn off variant "adp" for neptune-dev (NRL internal only)
# Turn off variants "adp" and "jedi" for neptune-dev (NRL internal only)
if [[ "${TEMPLATE}" == *"neptune-dev"* ]]; then
sed -i 's/+adp/~adp/g' ${ENVDIR}/spack.yaml
sed -i 's/+jedi/~jedi/g' ${ENVDIR}/spack.yaml
fi

unset SPACK_DISABLE_LOCAL_CONFIG
Expand Down
3 changes: 3 additions & 0 deletions configs/common/packages_gcc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,6 @@ packages:
ectrans:
require:
- +fftw
oops:
require:
- ~mkl
21 changes: 12 additions & 9 deletions configs/common/packages_oneapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,40 +19,43 @@ packages:
# Individual package settings
antlr:
require:
- '%gcc'
- '%c,cxx=gcc'
bison:
require:
- '%gcc'
- '%c,cxx=gcc'
cmake:
require:
- '%gcc'
- '%c,cxx=gcc'
ectrans:
require:
- +mkl ~fftw
gmake:
require:
- '%gcc'
- '%c=gcc'
libbsd:
require:
- '%gcc'
- '%c=gcc'
libmd:
require:
- '%gcc'
- '%c=gcc'
met:
require:
- +shared-intel
nco:
require:
- '%gcc'
- '%c,cxx=gcc'
oops:
require:
- +mkl
parallel-netcdf:
require:
- +shared-intel
py-maturin:
require:
- '%gcc'
- '%c=gcc'
py-scipy:
require:
- 'cxxflags="-O1"'
qt:
require:
- '%gcc'
- '%c,cxx=gcc'
4 changes: 2 additions & 2 deletions configs/templates/neptune-dev/spack.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ spack:
- neptune-env +debug +openmp +espc +ncview ^esmf@=8.9.1
- neptune-env ~debug ~openmp +espc +ncview ^esmf@=8.9.1
- neptune-env +debug ~openmp +espc +ncview ^esmf@=8.9.1
- neptune-python-env ^neptune-env ~debug +openmp +espc +ncview ^esmf@=8.9.1
- jedi-neptune-env +adp ^neptune-env ~debug +openmp +espc +ncview ^esmf@=8.9.1
- neptune-python-env ^neptune-env ~debug +openmp +espc +ncview ^esmf@=8.9.1
- jedi-neptune-env +adp +jedi ^neptune-env ~debug +openmp +espc +ncview ^esmf@=8.9.1
- crtm@3.1.2
- crtm@v2.4.1-jedi.2

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
--- a/cmake/ioda-import.cmake.in
+++ b/cmake/ioda-import.cmake.in
@@ -65,6 +65,15 @@
if(@odc_FOUND@)
find_dependency( odc 1.0.2 REQUIRED )
endif()
+
+if(@bufr_FOUND@)
+ find_dependency( bufr 12.0.1 REQUIRED )
+endif()
+
+if(@bufr_query_FOUND@)
+ find_dependency( bufr_query 0.0.4 REQUIRED )
+endif()
+
# Header-only. Not exposed.
#find_dependency( Boost 1.64.0 )

79 changes: 79 additions & 0 deletions repos/spack_stack/spack_repo/spack_stack/packages/ioda/package.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# Copyright 2013-2022 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)

from spack_repo.builtin.build_systems.cmake import CMakePackage, generator

from spack.package import *


class Ioda(CMakePackage):
"""Interface for Observation Data Access"""

homepage = "https://github.com/JCSDA/ioda"
git = "https://github.com/JCSDA/ioda.git"

maintainers("climbfuji")

version("develop", branch="develop", no_cache=True)
version("2.9.0.20250826", commit="6e76616001067384f7d0ca4341ad78e81527af8b")

patch("ioda_cmake_import.patch", when="@2.9.0.20250826")

variant("doc", default=False, description="Build IODA documentation")
# Let's always assume IODA_BUILD_LANGUAGE_FORTRAN=on.
# variant('fortran', default=True, description='Build the ioda Fortran interface')
variant("odc", default=True, description="Build ODC bindings")
# ioda has no explicit OpenMP calls, but header files from Eigen and oops do use openmp.
variant("openmp", default=True, description="Build with OpenMP support")
# Let's always BUILD_PYTHON_BINDINGS.
# variant('python', default=True, description='Build the ioda Python interface')

generator("make")

# Project doesn't list "c" as a dependency in CMakeLists.txt, but cmake step fails w/o it
depends_on("c", type=("build"))
depends_on("cxx", type=("build"))
depends_on("fortran", type=("build"))

depends_on("boost@1.64.0:")
depends_on("bufr")
depends_on("bufr@12.0.1:", when="@2.9:")
# This is optional, and it needs netcdf-cxx - which versions?
depends_on("bufr-query@0.0.4:", when="@2.9:")
depends_on("cmake", type=("build"))
depends_on("cmake@3.14:", type=("build"), when="@2.9:")
depends_on("ecbuild", type=("build"))
depends_on("ecbuild@3.3.2:", type=("build"), when="@2.9:")
depends_on("eckit")
depends_on("eckit@1.23.0:", when="@2.9:")
depends_on("eigen")
depends_on("fckit")
depends_on("fckit@0.10.1:", when="@2.9:")
depends_on("gsl-lite")
depends_on("hdf5@1.12.0: +mpi")
depends_on("hdf5@1.14.0: +mpi", when="@2.9:")
depends_on("jedi-cmake", type=("build"))
depends_on("llvm-openmp", when="+openmp %apple-clang", type=("build", "link", "run"))
depends_on("mpi")
depends_on("nccmp")
# netcdf-cxx needed for bufr-query, but which version?
depends_on("netcdf-cxx", when="@2.9:")
depends_on("odc", when="+odc")
depends_on("odc@1.4.6:", when="@2.9: +odc")
depends_on("oops+openmp", when="+openmp")
depends_on("oops~openmp", when="~openmp")
depends_on("oops@1.10", when="@2.9:")
depends_on("python")
depends_on("python@3.9:3.11", when="@2.9:")
depends_on("py-pybind11")
depends_on("py-pycodestyle")
depends_on("udunits")
depends_on("udunits@2.2.0:", when="@2.9:")

def cmake_args(self):
res = [
self.define_from_variant("ENABLE_IODA_DOC", "doc"),
]
return res
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Copyright 2013-2022 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)

from spack_repo.builtin.build_systems.cmake import CMakePackage, generator

from spack.package import *


class IodaConverters(CMakePackage):
"""Interface for Observation Data Access"""

homepage = "https://github.com/JCSDA/ioda-converters"
git = "https://github.com/JCSDA/ioda-converters.git"

maintainers("climbfuji")

version("develop", branch="develop", no_cache=True)
version("0.0.1.20250830", commit="a91f432d9d50940910605e689cd1cf93a1ce3798")

generator("make")

# Project doesn't list "c" as a dependency in CMakeLists.txt, but cmake step fails w/o it
depends_on("c", type=("build"))
depends_on("cxx", type=("build"))
depends_on("fortran", type=("build"))

extends("python")

depends_on("ecbuild", type=("build"))
depends_on("ecbuild@3.3.2:", type=("build"), when="@0.0.1:")

depends_on("bufr@12:")
depends_on("eccodes")
depends_on("eckit")
depends_on("eigen@3")
depends_on("gsl-lite")
depends_on("ioda")
depends_on("jedi-cmake", type=("build"))
depends_on("mpi")
depends_on("netcdf-cxx")
depends_on("netcdf-fortran")
depends_on("oops")
depends_on("py-cartopy")
depends_on("py-pybind11")
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
# SPDX-License-Identifier: (Apache-2.0 OR MIT)

from spack_repo.builtin.build_systems.bundle import BundlePackage

from spack.package import *


Expand All @@ -20,11 +21,19 @@ class JediNeptuneEnv(BundlePackage):

variant("adp", default=False, description="Build ADP preprocessors")

variant("jedi", default=False, description="Build JEDI components required for JEDI-NEPTUNE")

depends_on("jedi-base-env", type="run")
depends_on("neptune-env", type="run")
depends_on("neptune-python-env", type="run")

with when("+adp"):
depends_on("adp-preprocessors", type="run")

# There is no need for install() since there is no code.
with when("+jedi"):
depends_on("oops@1.10.0.20250827", type="run")
depends_on("crtm@v2.4.1-jedi.2", type="run")
depends_on("ioda@2.9.0.20250826", type="run")
depends_on("ioda-converters@0.0.1.20250830", type="run")
depends_on("ropp-ufo@11.0.20251022", type="run")
depends_on("ufo@1.10.0.20250821 +crtm-v2 +ropp", type="run")
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
--- a/src/oops/base/ParameterTraitsObsVariables.h
+++ b/src/oops/base/ParameterTraitsObsVariables.h
@@ -7,6 +7,7 @@

#pragma once

+#include <algorithm>
#include <string>
#include <vector>

70 changes: 70 additions & 0 deletions repos/spack_stack/spack_repo/spack_stack/packages/oops/package.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# Copyright 2013-2022 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)

from spack_repo.builtin.build_systems.cmake import CMakePackage, generator

from spack.package import *


class Oops(CMakePackage):
"""Object Oriented Prediction System"""

homepage = "https://github.com/JCSDA/oops"
git = "https://github.com/JCSDA/oops.git"

maintainers("climbfuji")

version("develop", branch="develop", no_cache=True)
# This commit plus the patch below accounts for commit
# 2340e9b664f82de9fa01c136c3a31d87e4a0bec9 in NRL GitHub
version("1.10.0.20250827", commit="91889ad09d3789f14a1184701dd80a4913d3ce3e")

patch("include_algorithm.patch", when="@1.10.0.20250827")

variant("l95", default=True, description="Build LORENZ95 toy model")
variant("mkl", default=False, description="Use MKL for LAPACK implementation (if available)")
variant("openmp", default=True, description="Build oops with OpenMP support")
variant("qg", default=True, description="Build QG toy model")
variant('gptl', default=False, description='Use GPTL profiling library (if available)')

generator("make")

# Project doesn't list "c" as a dependency in CMakeLists.txt, but cmake step fails w/o it
depends_on("c", type="build")
depends_on("cxx", type="build")
depends_on("fortran", type="build")

depends_on("boost@1.64:")
depends_on("cmake", type=("build"))
depends_on("cmake@3.12:", type=("build"), when="@1.10:")
depends_on("ecbuild", type=("build"))
depends_on("ecbuild@3.3.2:", type=("build"), when="@1.10:")
depends_on("eckit")
depends_on("eckit@1.24.4:", when="@1.10:")
depends_on("ecmwf-atlas")
depends_on("ecmwf-atlas@0.35.0:", when="@1.10:")
depends_on("eigen")
depends_on("fckit")
depends_on("fckit@0.11.0:", when="@1.10:")
depends_on('gptl', when='+gptl')
depends_on("jedi-cmake", type=("build"))
depends_on("lapack", when="~mkl")
depends_on("mkl", when="+mkl")
depends_on("llvm-openmp", when="+openmp %apple-clang", type=("build", "link", "run"))
depends_on("mpi")
depends_on("netcdf-c+mpi")
depends_on("netcdf-fortran")
depends_on("nlohmann-json")
depends_on("nlohmann-json-schema-validator")

def cmake_args(self):
res = [
self.define_from_variant("ENABLE_LORENZ95_MODEL", "l95"),
self.define_from_variant("ENABLE_QG_MODEL", "qg"),
self.define_from_variant("ENABLE_MKL", "mkl"),
self.define_from_variant("OPENMP", "openmp"),
self.define_from_variant("ENABLE_GPTL", "gptl"),
]
return res
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Copyright 2013-2022 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)

from spack_repo.builtin.build_systems.cmake import CMakePackage, generator

from spack.package import *


class RoppUfo(CMakePackage):
"""Unified Forward Operator Interface for Radio Occultation Pre-processing package (ROPP)"""

# DH* TODO CHANGE BACK TO JCSDA-INTERNAL ONCE THE NRL VERSION WAS MERGED BACK
homepage = "https://github.nrlmry.navy.mil/jcsda/ropp-ufo"
git = "https://github.nrlmry.navy.mil/jcsda/ropp-ufo.git"

maintainers("climbfuji")

version("develop", branch="develop", no_cache=True)
# this is the ropp-submodule branch ... update once merged
version("11.0.20251022", commit="02e21ef0696e67675184797427af265c06973ecf", submodules=True)

# Project doesn't list "c" as a dependency in CMakeLists.txt, but cmake step fails w/o it
depends_on("c", type=("build"))
depends_on("fortran", type=("build"))

depends_on("cmake", type=("build"))
depends_on("cmake@3.12:", type=("build"), when="@11:")
depends_on("ecbuild", type=("build"))
depends_on("ecbuild@3.3.2:", type=("build"), when="@11:")
depends_on("jedi-cmake", type=("build"))
depends_on("netcdf-c")
depends_on("netcdf-fortran")
Loading