Skip to content

Spack-ify JEDI packages for FALCON (neptune-jedi) #1684

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 8 commits into
base: develop
Choose a base branch
from
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("[email protected]:")
depends_on("bufr")
depends_on("[email protected]:", 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("[email protected]:", type=("build"), when="@2.9:")
depends_on("ecbuild", type=("build"))
depends_on("[email protected]:", type=("build"), when="@2.9:")
depends_on("eckit")
depends_on("[email protected]:", when="@2.9:")
depends_on("eigen")
depends_on("fckit")
depends_on("[email protected]:", when="@2.9:")
depends_on("gsl-lite")
depends_on("[email protected]: +mpi")
depends_on("[email protected]: +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("[email protected]:", when="@2.9: +odc")
depends_on("oops+openmp", when="+openmp")
depends_on("oops~openmp", when="~openmp")
depends_on("[email protected]", when="@2.9:")
depends_on("python")
depends_on("[email protected]:3.11", when="@2.9:")
depends_on("py-pybind11")
depends_on("py-pycodestyle")
depends_on("udunits")
depends_on("[email protected]:", 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("[email protected]:")
depends_on("cmake", type=("build"))
depends_on("[email protected]:", type=("build"), when="@1.10:")
depends_on("ecbuild", type=("build"))
depends_on("[email protected]:", type=("build"), when="@1.10:")
depends_on("eckit")
depends_on("[email protected]:", when="@1.10:")
depends_on("ecmwf-atlas")
depends_on("[email protected]:", when="@1.10:")
depends_on("eigen")
depends_on("fckit")
depends_on("[email protected]:", 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("[email protected]:", type=("build"), when="@11:")
depends_on("ecbuild", type=("build"))
depends_on("[email protected]:", 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("[email protected]:", type=("build"), when="@1.10:")
depends_on("ecbuild", type=("build"))
depends_on("[email protected]:", type=("build"), when="@1.10:")
depends_on("eckit")
depends_on("[email protected]:", when="@1.10:")
depends_on("eigen")
depends_on("fckit")
depends_on("[email protected]:", when="@1.10:")
depends_on("gsl-lite")
depends_on("ioda")
# DH* TODO
depends_on("[email protected]", 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("[email protected]", 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('[email protected]', when='@1.7.0 +geos-aero')

# depends_on('oasim', when='+oasim')
# depends_on('[email protected]', when='@1.7.0 +oasim')

depends_on("gsw", when="+gsw")
depends_on("[email protected]", when="@1.7: +gsw")

depends_on('ropp-ufo', when='+ropp')
depends_on('[email protected]', when='@1.10 +ropp')

# depends_on('rttov', when='+rttov')
# depends_on('[email protected]', when='@1.7.0 +rttov')
Loading