diff --git a/configs/common/packages.yaml b/configs/common/packages.yaml index 6a1d84d3b..0c38e5c36 100644 --- a/configs/common/packages.yaml +++ b/configs/common/packages.yaml @@ -522,6 +522,9 @@ packages: py-versioneer: require: - '@0.28:' + py-zarr: + require: + - '@3:' # On a per-site basis, either set qt to buildable: false # or add requirement to build with gcc for Intel oneAPI qt: diff --git a/configs/sites/tier2/aws-ubuntu2404/README.md b/configs/sites/tier2/aws-ubuntu2404/README.md index 654ba0993..9961aed73 100644 --- a/configs/sites/tier2/aws-ubuntu2404/README.md +++ b/configs/sites/tier2/aws-ubuntu2404/README.md @@ -362,9 +362,11 @@ cat << 'EOF' >> ${SPACK_SYSTEM_CONFIG_PATH}/packages.yaml - 'cxxflags="-O1"' jedi-base-env: require: - - ~bufrquery - +fftw - +hdf4 + jedi-python-env: + require: + - ~bufrquery py-pyyaml: require: - +libyaml diff --git a/configs/sites/tier2/aws-ubuntu2404/packages.yaml b/configs/sites/tier2/aws-ubuntu2404/packages.yaml index bb4ad8a49..8ee1d27dd 100644 --- a/configs/sites/tier2/aws-ubuntu2404/packages.yaml +++ b/configs/sites/tier2/aws-ubuntu2404/packages.yaml @@ -18,7 +18,9 @@ packages: require: - "@1.7.2" jedi-base-env: - require: [+fftw, +hdf4, +bufrquery] + require: [+fftw, +hdf4] + jedi-python-env: + require: [+bufrquery] # System packages. autoconf: diff --git a/configs/sites/tier2/aws-ubuntu2404/packages_oneapi.yaml b/configs/sites/tier2/aws-ubuntu2404/packages_oneapi.yaml index 55149ad0a..a49908993 100644 --- a/configs/sites/tier2/aws-ubuntu2404/packages_oneapi.yaml +++ b/configs/sites/tier2/aws-ubuntu2404/packages_oneapi.yaml @@ -84,7 +84,9 @@ packages: # Package constraints. jedi-base-env: - require: [+fftw, +hdf4, +bufrquery] + require: [+fftw, +hdf4] + jedi-python-env: + require: [+bufrquery] eccodes: require: - "jp2k=jasper" diff --git a/configs/templates/skylab-dev/spack.yaml b/configs/templates/skylab-dev/spack.yaml index 36f1bc989..4a5190dc7 100644 --- a/configs/templates/skylab-dev/spack.yaml +++ b/configs/templates/skylab-dev/spack.yaml @@ -15,6 +15,7 @@ spack: - jedi-geos-env ^esmf@=8.9.1 - jedi-mpas-env - jedi-neptune-env ^esmf@=9.0.0b18 + - jedi-python-env - jedi-tools-env - jedi-ufs-env ^esmf@=8.8.0 - neptune-env ^esmf@=9.0.0b18 diff --git a/configs/templates/unified-dev/spack.yaml b/configs/templates/unified-dev/spack.yaml index b59aa498b..f16a5aafd 100644 --- a/configs/templates/unified-dev/spack.yaml +++ b/configs/templates/unified-dev/spack.yaml @@ -20,6 +20,7 @@ spack: - jedi-geos-env ^esmf@=9.0.0b18 - jedi-mpas-env - jedi-neptune-env ^esmf@=9.0.0b18 + - jedi-python-env - jedi-ufs-env ^esmf@=8.8.0 - neptune-env ^esmf@=9.0.0b18 - neptune-python-env ^esmf@=9.0.0b18 diff --git a/repos/spack_stack/spack_repo/spack_stack/packages/ai_env/package.py b/repos/spack_stack/spack_repo/spack_stack/packages/ai_env/package.py index 902d6ddfb..fdf5cb2d9 100644 --- a/repos/spack_stack/spack_repo/spack_stack/packages/ai_env/package.py +++ b/repos/spack_stack/spack_repo/spack_stack/packages/ai_env/package.py @@ -19,6 +19,7 @@ class AiEnv(BundlePackage): version("1.0.0") depends_on("jedi-base-env", type="run") + depends_on("jedi-python-env", type="run") depends_on("py-torch", type="run") # There is no need for install() since there is no code. diff --git a/repos/spack_stack/spack_repo/spack_stack/packages/ewok_env/package.py b/repos/spack_stack/spack_repo/spack_stack/packages/ewok_env/package.py index 3573828cf..4c39207be 100644 --- a/repos/spack_stack/spack_repo/spack_stack/packages/ewok_env/package.py +++ b/repos/spack_stack/spack_repo/spack_stack/packages/ewok_env/package.py @@ -39,6 +39,7 @@ class EwokEnv(BundlePackage): ) depends_on("jedi-base-env", type="run") + depends_on("jedi-python-env", type="run") depends_on("awscli-v2", type="run") depends_on("py-boto3", type="run") depends_on("py-cartopy", type="run") diff --git a/repos/spack_stack/spack_repo/spack_stack/packages/gmao_swell_env/package.py b/repos/spack_stack/spack_repo/spack_stack/packages/gmao_swell_env/package.py index bd5292977..748406165 100644 --- a/repos/spack_stack/spack_repo/spack_stack/packages/gmao_swell_env/package.py +++ b/repos/spack_stack/spack_repo/spack_stack/packages/gmao_swell_env/package.py @@ -20,6 +20,7 @@ class GmaoSwellEnv(BundlePackage): # Main JEDI modules depends_on("jedi-base-env", type="run") + depends_on("jedi-python-env", type="run") # Add CRTM 2.4.0 depends_on("crtm", type="run") diff --git a/repos/spack_stack/spack_repo/spack_stack/packages/jedi_base_env/package.py b/repos/spack_stack/spack_repo/spack_stack/packages/jedi_base_env/package.py index d3530c72f..43e551426 100644 --- a/repos/spack_stack/spack_repo/spack_stack/packages/jedi_base_env/package.py +++ b/repos/spack_stack/spack_repo/spack_stack/packages/jedi_base_env/package.py @@ -21,15 +21,12 @@ class JediBaseEnv(BundlePackage): # Need to find a free fftw provider for fftw-api ... variant("fftw", default=True, description="Build fftw") variant("hdf4", default=True, description="Build hdf4 library and python hdf module") - variant("bufrquery", default=True, description="Build bufr-query library") depends_on("libbacktrace", type="run") depends_on("base-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", when="+bufrquery", type="run") # Force users to load manually # depends_on("crtm@v2.4.1-jedi", type="run") depends_on("ecbuild", type="run") @@ -54,19 +51,9 @@ class JediBaseEnv(BundlePackage): #depends_on("sp", type="run", when="^ip@:4") depends_on("udunits", type="run") - # Python packages - depends_on("py-eccodes", type="run") - depends_on("py-f90nml", type="run") - depends_on("py-h5py", type="run") - depends_on("py-netcdf4", type="run") - depends_on("py-pandas", type="run") - depends_on("py-pycodestyle", type="run") + # Python packages. Everything else moved to jedi-python-env; py-pybind11 + # stays because core JEDI packages link its headers. depends_on("py-pybind11", type="run") - depends_on("py-pyhdf", when="+hdf4", type="run") - depends_on("py-python-dateutil", type="run") - depends_on("py-pyyaml", type="run") - depends_on("py-scipy", type="run") - depends_on("py-xarray", type="run") conflicts( "platform=darwin %gcc", diff --git a/repos/spack_stack/spack_repo/spack_stack/packages/jedi_geos_env/package.py b/repos/spack_stack/spack_repo/spack_stack/packages/jedi_geos_env/package.py index 78abbf125..3bad93902 100644 --- a/repos/spack_stack/spack_repo/spack_stack/packages/jedi_geos_env/package.py +++ b/repos/spack_stack/spack_repo/spack_stack/packages/jedi_geos_env/package.py @@ -18,6 +18,7 @@ class JediGeosEnv(BundlePackage): version("1.0.0") depends_on("jedi-base-env", type="run") + depends_on("jedi-python-env", type="run") #depends_on("blas", type="run") depends_on("mepo", type="run") depends_on("esmf", type="run") diff --git a/repos/spack_stack/spack_repo/spack_stack/packages/jedi_neptune_env/package.py b/repos/spack_stack/spack_repo/spack_stack/packages/jedi_neptune_env/package.py index d570e289d..a311dd62e 100644 --- a/repos/spack_stack/spack_repo/spack_stack/packages/jedi_neptune_env/package.py +++ b/repos/spack_stack/spack_repo/spack_stack/packages/jedi_neptune_env/package.py @@ -26,6 +26,7 @@ class JediNeptuneEnv(BundlePackage): variant("jedi", default=False, description="Build JEDI components required for JEDI-NEPTUNE") depends_on("jedi-base-env", type="run") + depends_on("jedi-python-env", type="run") depends_on("neptune-env", type="run") depends_on("neptune-python-env", type="run") diff --git a/repos/spack_stack/spack_repo/spack_stack/packages/jedi_python_env/package.py b/repos/spack_stack/spack_repo/spack_stack/packages/jedi_python_env/package.py new file mode 100644 index 000000000..a9a73c2d2 --- /dev/null +++ b/repos/spack_stack/spack_repo/spack_stack/packages/jedi_python_env/package.py @@ -0,0 +1,47 @@ +# 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.bundle import BundlePackage +from spack.package import * + + +class JediPythonEnv(BundlePackage): + """Python dependencies for JEDI applications, on top of jedi-base-env""" + + homepage = "https://github.com/jcsda/spack-stack" + git = "https://github.com/jcsda/spack-stack.git" + + maintainers("eap", "srherbener") + + version("1.0.0") + + # Mirrors the jedi-base-env variant so py-pyhdf tracks the hdf4 library + variant("hdf4", default=True, description="Build hdf4 library and python hdf module") + variant("bufrquery", default=True, description="Build bufr-query library") + + depends_on("jedi-base-env", type="run") + depends_on("jedi-base-env +hdf4", when="+hdf4", type="run") + depends_on("jedi-base-env ~hdf4", when="~hdf4", type="run") + + # bufr is built +python in configs/common/packages.yaml, so it carries a + # py-numpy run dependency; bufr-query is its python-bindings companion. + depends_on("bufr", type="run") + depends_on("bufr-query", when="+bufrquery", type="run") + + # Python packages + depends_on("py-eccodes", type="run") + depends_on("py-f90nml", type="run") + depends_on("py-h5py", type="run") + depends_on("py-netcdf4", type="run") + depends_on("py-pandas", type="run") + depends_on("py-pycodestyle", type="run") + depends_on("py-pyhdf", when="+hdf4", type="run") + depends_on("py-python-dateutil", type="run") + depends_on("py-pyyaml", type="run") + depends_on("py-scipy", type="run") + depends_on("py-xarray", type="run") + depends_on("py-zarr", type="run") + + # There is no need for install() since there is no code. diff --git a/repos/spack_stack/spack_repo/spack_stack/packages/jedi_ufs_env/package.py b/repos/spack_stack/spack_repo/spack_stack/packages/jedi_ufs_env/package.py index bf788588f..6fcbb56ef 100644 --- a/repos/spack_stack/spack_repo/spack_stack/packages/jedi_ufs_env/package.py +++ b/repos/spack_stack/spack_repo/spack_stack/packages/jedi_ufs_env/package.py @@ -18,6 +18,7 @@ class JediUfsEnv(BundlePackage): version("1.0.0") depends_on("jedi-base-env", type="run") + depends_on("jedi-python-env", type="run") depends_on("fms +gfs_phys constants=GFS", type="run") depends_on("bacio", type="run") diff --git a/repos/spack_stack/spack_repo/spack_stack/packages/jedi_um_env/package.py b/repos/spack_stack/spack_repo/spack_stack/packages/jedi_um_env/package.py index a04f74e51..5cb49eb08 100644 --- a/repos/spack_stack/spack_repo/spack_stack/packages/jedi_um_env/package.py +++ b/repos/spack_stack/spack_repo/spack_stack/packages/jedi_um_env/package.py @@ -20,6 +20,7 @@ class JediUmEnv(BundlePackage): version("1.0.0") depends_on("jedi-base-env", type="run") + depends_on("jedi-python-env", type="run") depends_on("ectrans", type="run") depends_on("fiat", type="run") depends_on("shumlib", type="run") diff --git a/repos/spack_stack/spack_repo/spack_stack/packages/soca_env/package.py b/repos/spack_stack/spack_repo/spack_stack/packages/soca_env/package.py index a730a72a1..9f1478522 100644 --- a/repos/spack_stack/spack_repo/spack_stack/packages/soca_env/package.py +++ b/repos/spack_stack/spack_repo/spack_stack/packages/soca_env/package.py @@ -18,6 +18,7 @@ class SocaEnv(BundlePackage): version("1.0.0") depends_on("jedi-base-env", type="run") + depends_on("jedi-python-env", type="run") depends_on("nco", type="run") # There is no need for install() since there is no code.