Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions configs/templates/neptune-dev/spack.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ spack:
- neptune-env ~debug +espc ^esmf@=8.9.0b11 snapshot=b11
- neptune-env +debug +espc ^esmf@=8.9.0b11 snapshot=b11
- neptune-python-env +xnrl ^neptune-env ~debug +espc ^esmf@=8.9.0b11 snapshot=b11
- falcon-env ^neptune-env ~debug +espc ^esmf@=8.9.0b11 snapshot=b11

specs:
- matrix:
Expand Down
61 changes: 61 additions & 0 deletions spack-ext/repos/spack-stack/packages/falcon-env/package.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Copyright 2013-2024 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)

import sys

from spack.package import *


class FalconEnv(BundlePackage):
"""Development environment for NEPTUNE-JEDI (FALCON)"""

# Fake URL
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# Fake URL

homepage = "https://github.nrlmry.navy.mil/falcon/neptune-bundle"
git = "https://github.nrlmry.navy.mil/falcon/neptune-bundle.git"

maintainers("climbfuji", "sking112")

version("1.0.0")

variant("jedi", default=False, description="Build JEDI components")

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

depends_on("bison", type="run")
depends_on("blas", type="run")
depends_on("boost", type="run")
depends_on("bufr", type="run")
depends_on("bufr-query", type="run")
depends_on("ecbuild", type="run")
depends_on("eccodes", type="run")
depends_on("eckit", type="run")
depends_on("ecmwf-atlas", type="run")
depends_on("eigen", type="run")
depends_on("fckit", type="run")
depends_on("fftw-api", type="run")
depends_on("flex", type="run")
depends_on("git-lfs", type="run")
#depends_on("gsibec", type="run")
depends_on("gsl-lite", type="run")
#depends_on("hdf", when="+hdf4", type="run")
depends_on("jedi-cmake", type="run")
depends_on("netcdf-cxx", type="run")
depends_on("nccmp", type="run")
depends_on("ncview", type="run")
depends_on("nlohmann-json", type="run")
depends_on("nlohmann-json-schema-validator", type="run")
depends_on("odc", type="run")
#depends_on("sp", type="run", when="^ip@:4")
depends_on("udunits", type="run")

with when("+jedi"):
depends_on("oops", type="run")
depends_on("crtm", type="run")
depends_on("ioda", type="run")
depends_on("ropp-ufo", type="run")
depends_on("ufo", type="run")

# There is no need for install() since there is no code.
68 changes: 68 additions & 0 deletions spack-ext/repos/spack-stack/packages/ioda/package.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# 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.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.20241216", commit="7f0c6c058b189baa6a043c917920cc78a98a094b")

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')

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", 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
57 changes: 57 additions & 0 deletions spack-ext/repos/spack-stack/packages/oops/package.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# 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.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)
version("1.10.0.20241216", commit="58b068767ec4af2cbecfe86499b87a0d4723778f")

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)')

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
28 changes: 28 additions & 0 deletions spack-ext/repos/spack-stack/packages/ropp-ufo/package.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# 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.package import *


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

# DH* TODO CHANGE BACK TO JCSDA-INTERNALq
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

!!!

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.20250612", commit="6a0bea80795a1bb50e5466a8f02ab6823b39d23b", submodules=True)

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")
86 changes: 86 additions & 0 deletions spack-ext/repos/spack-stack/packages/ufo/package.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# 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.package import *


class Ufo(CMakePackage):
"""Unified Forward Operator"""

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

maintainers = ["climbfuji"]

version("develop", branch="develop", no_cache=True)
version("1.10.0.20241217", commit="49ddba60c484bc5b8bac81b660e3b1b0905cd314")

variant("crtm-v2", default=True, description="Build CRTM v2 operator")
variant("crtm-v3", default=False, description="Build CRTM v3 operator")
# JCSDA-internal repository needed.
variant("geos-aero", default=False, description="Build GEOS-AERO AOD operator")
variant("gsw", default=True, description="Build marine observation operators")
# JCSDA-internal repository is public, but there is no "release" of the code yet.
variant(
"oasim", default=False, description="Build with Ocean Atmosphere Spectral Irradiance Model"
)
# NRL-internal repository needed.
variant("ropp", default=False, description="Build ROPP operator")
# JCSDA-internal repository needed.
variant("rttov", default=False, description="Build RTTOV operator")

conflicts("+crtm-v2 +crtm-v3", msg="UFO: choose either CRTM v2 or v3, not both.")

conflicts("+geos-aero", msg="UFO: GEOS-AERO to be implemented.")
conflicts("+oasim", msg="UFO: OASIM to be implemented.")
conflicts("+rttov", msg="UFO: RTTOV to be implemented.")

depends_on("boost")
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("eigen")
depends_on("fckit")
depends_on("fckit@0.11.0:", when="@1.10:")
depends_on("gsl-lite")
depends_on("ioda")
# DH* TODO
depends_on("ioda@2.9", when="@1.10:")
depends_on("jedi-cmake", type=("build"))
depends_on("mpi")
depends_on("netcdf-c+mpi")
depends_on("netcdf-fortran")
depends_on("oops")
depends_on("oops@1.10", when="@1.10")

depends_on("crtm@v2", when="+crtm-v2")
# DH* TODO UPDATE
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

!!!

depends_on("crtm@=v2.4.1-jedi", when="@1.10 +crtm-v2")
#depends_on("crtm@=v2.4.1-jedi.2", when="@1.10 +crtm-v2")
# *DH

depends_on("crtm@3", when="+crtm-v3")
# DH* TODO UPDATE
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

!!!

depends_on("crtm@=3.1.1.2", when="@1.10 +crtm-v3")
#depends_on("crtm@=3.1.2", when="@1.10 +crtm-v3")
# *DH

# depends_on('geos-aero', when='+geos-aero')
# depends_on('geos-aero@0.0.0', when='@1.7.0 +geos-aero')

# depends_on('oasim', when='+oasim')
# depends_on('oasim@0.0.0', when='@1.7.0 +oasim')

depends_on("gsw", when="+gsw")
depends_on("gsw@3.0.7", when="@1.7: +gsw")

depends_on('ropp-ufo', when='+ropp')
depends_on('ropp-ufo@11.0', when='@1.10 +ropp')

# depends_on('rttov', when='+rttov')
# depends_on('rttov@12.1.0', when='@1.7.0 +rttov')
Loading