diff --git a/.github/workflows/ubuntu-ci-x86_64-gnu.yaml b/.github/workflows/ubuntu-ci-x86_64-gnu.yaml index 0f289f362..10569060c 100644 --- a/.github/workflows/ubuntu-ci-x86_64-gnu.yaml +++ b/.github/workflows/ubuntu-ci-x86_64-gnu.yaml @@ -109,7 +109,7 @@ jobs: # Concretize, check for duplicates and for correct compilers being used spack concretize --force --fresh 2>&1 | tee log.concretize.${ENVNAME} - ${SPACK_STACK_DIR}/util/show_duplicate_packages.py -i fms -i crtm -i crtm-fix -i esmf -i mapl -i py-cython -i neptune-env -i fms -i ip + ${SPACK_STACK_DIR}/util/show_duplicate_packages.py -i fms -i crtm -i crtm-fix -i esmf -i mapl -i py-cython -i neptune-env -i fms -i ip -i gsi-env -i ufs-weather-model-env spack stack check-preferred-compiler 2>&1 | tee log.check-preferred-compiler.${ENVNAME} # Add and update source cache @@ -181,7 +181,7 @@ jobs: # Concretize, check for duplicates and for correct compilers being used spack concretize --force --fresh 2>&1 | tee log.concretize.${ENVNAME} - ${SPACK_STACK_DIR}/util/show_duplicate_packages.py -i fms -i crtm -i crtm-fix -i esmf -i mapl -i py-cython -i neptune-env -i fms -i ip + ${SPACK_STACK_DIR}/util/show_duplicate_packages.py -i fms -i crtm -i crtm-fix -i esmf -i mapl -i py-cython -i neptune-env -i fms -i ip -i gsi-env -i ufs-weather-model-env spack stack check-preferred-compiler 2>&1 | tee log.check-preferred-compiler.${ENVNAME} # Install from cache diff --git a/.github/workflows/ubuntu-ci-x86_64-oneapi-ifx.yaml b/.github/workflows/ubuntu-ci-x86_64-oneapi-ifx.yaml index 71cef1605..8c1ae2e7f 100644 --- a/.github/workflows/ubuntu-ci-x86_64-oneapi-ifx.yaml +++ b/.github/workflows/ubuntu-ci-x86_64-oneapi-ifx.yaml @@ -125,7 +125,7 @@ jobs: # Concretize, check for duplicates and for correct compilers being used spack concretize --force --fresh 2>&1 | tee log.concretize.${ENVNAME} - ${SPACK_STACK_DIR}/util/show_duplicate_packages.py -i fms -i crtm -i crtm-fix -i esmf -i mapl -i py-cython -i neptune-env -i fms -i ip + ${SPACK_STACK_DIR}/util/show_duplicate_packages.py -i fms -i crtm -i crtm-fix -i esmf -i mapl -i py-cython -i neptune-env -i fms -i ip -i gsi-env -i ufs-weather-model-env spack stack check-preferred-compiler 2>&1 | tee log.check-preferred-compiler.${ENVNAME} # Add and update source cache @@ -200,7 +200,7 @@ jobs: # Concretize, check for duplicates and for correct compilers being used spack concretize --force --fresh 2>&1 | tee log.concretize.${ENVNAME} - ${SPACK_STACK_DIR}/util/show_duplicate_packages.py -i fms -i crtm -i crtm-fix -i esmf -i mapl -i py-cython -i neptune-env -i fms -i ip + ${SPACK_STACK_DIR}/util/show_duplicate_packages.py -i fms -i crtm -i crtm-fix -i esmf -i mapl -i py-cython -i neptune-env -i fms -i ip -i gsi-env -i ufs-weather-model-env spack stack check-preferred-compiler 2>&1 | tee log.check-preferred-compiler.${ENVNAME} # Install from cache diff --git a/.github/workflows/ubuntu-ci-x86_64-oneapi.yaml b/.github/workflows/ubuntu-ci-x86_64-oneapi.yaml index ad01ff3f4..ac329df0d 100644 --- a/.github/workflows/ubuntu-ci-x86_64-oneapi.yaml +++ b/.github/workflows/ubuntu-ci-x86_64-oneapi.yaml @@ -125,7 +125,7 @@ jobs: # Concretize, check for duplicates and for correct compilers being used spack concretize --force --fresh 2>&1 | tee log.concretize.${ENVNAME} - ${SPACK_STACK_DIR}/util/show_duplicate_packages.py -i fms -i crtm -i crtm-fix -i esmf -i mapl -i py-cython -i neptune-env -i fms -i ip + ${SPACK_STACK_DIR}/util/show_duplicate_packages.py -i fms -i crtm -i crtm-fix -i esmf -i mapl -i py-cython -i neptune-env -i fms -i ip -i gsi-env -i ufs-weather-model-env spack stack check-preferred-compiler 2>&1 | tee log.check-preferred-compiler.${ENVNAME} # Add and update source cache @@ -200,7 +200,7 @@ jobs: # Concretize, check for duplicates and for correct compilers being used spack concretize --force --fresh 2>&1 | tee log.concretize.${ENVNAME} - ${SPACK_STACK_DIR}/util/show_duplicate_packages.py -i fms -i crtm -i crtm-fix -i esmf -i mapl -i py-cython -i neptune-env -i fms -i ip + ${SPACK_STACK_DIR}/util/show_duplicate_packages.py -i fms -i crtm -i crtm-fix -i esmf -i mapl -i py-cython -i neptune-env -i fms -i ip -i gsi-env -i ufs-weather-model-env spack stack check-preferred-compiler 2>&1 | tee log.check-preferred-compiler.${ENVNAME} # Install from cache diff --git a/configs/common/packages.yaml b/configs/common/packages.yaml index b884a4058..bf1c4a92c 100644 --- a/configs/common/packages.yaml +++ b/configs/common/packages.yaml @@ -199,6 +199,10 @@ packages: global-workflow-env: require: - '+uwtools' + - '+gdas' + - '+gsi' + - '+metplus' + - '+ci' grib-util: require: - '@1.4.0' @@ -213,8 +217,11 @@ packages: # for the deprecated @2.9.1 which doesn't compile against ICU >= 76 # (-Werror=redundant-decls on u_strlen). Force meson. # cmake-based harfbuzz fails during build + # requiring +gobject eliminates a duplicate copy of harfbuzz in the unified-env + # due to global-workflow-env deps requesting a non-default variant require: - 'build_system=meson' + - +gobject hdf: require: - '@4.2.15' diff --git a/configs/common/packages_oneapi.yaml b/configs/common/packages_oneapi.yaml index ad4ea0e5d..e8ad7c964 100644 --- a/configs/common/packages_oneapi.yaml +++ b/configs/common/packages_oneapi.yaml @@ -78,3 +78,7 @@ packages: rust: require: - '%c,cxx=gcc' + # glib@2.88 with the meson@1.11 build system fails to build for intel-oneapi-compilers@2025.3.1 + glib: + require: + - '%c=gcc' diff --git a/configs/templates/unified-dev/spack.yaml b/configs/templates/unified-dev/spack.yaml index 3d0012eb0..6e22fe91d 100644 --- a/configs/templates/unified-dev/spack.yaml +++ b/configs/templates/unified-dev/spack.yaml @@ -11,7 +11,8 @@ spack: - dev-utils-env - ewok-env - geos-gcm-env ^esmf@=9.0.0b11 - - global-workflow-env ^esmf@=8.6.1 ^crtm@=3.1.3 + - global-workflow-env ^esmf@=8.8.0 ^crtm@=v2.4.1-jedi.2 + # Is GMAO ready to move to crtm@3.1.3? - gmao-swell-env ^crtm@=v2.4.1-jedi.2 - gsi-env ^crtm@=3.1.3 diff --git a/repos/spack_stack/spack_repo/spack_stack/packages/global_workflow_env/package.py b/repos/spack_stack/spack_repo/spack_stack/packages/global_workflow_env/package.py index a5a8bd23f..0e0a89427 100644 --- a/repos/spack_stack/spack_repo/spack_stack/packages/global_workflow_env/package.py +++ b/repos/spack_stack/spack_repo/spack_stack/packages/global_workflow_env/package.py @@ -16,37 +16,63 @@ class GlobalWorkflowEnv(BundlePackage): maintainers("AlexanderRichert-NOAA") version("1.0.0") - variant("python", default=True, description="Build Python dependencies") - variant("uwtools", default=False, description="Build uwtools") + variant("uwtools", default=True, description="Build uwtools") + variant("metplus", default=True, description="Build METplus to support verifiation") + variant("gdas", default=True, description="Build for GDASApp DA support") + variant("gsi", default=True, description="Build for GSI DA support") + variant("ci", default=True, description="Build for automated CI testing") - depends_on("ufs-pyenv", when="+python") - depends_on("prod-util") - depends_on("grib-util") + # Core: python, cmake, git, hdf5, netcdf-c, netcdf-fortran + depends_on("base-env") + + # UFS deps + depends_on("ufs-weather-model-env") + depends_on("ufs-utils-env") + + # global workflow deps + depends_on("py-wxflow") + depends_on("py-jinja2") + depends_on("py-pyyaml") + depends_on("py-numpy") + depends_on("py-netcdf4") + depends_on("py-xarray") + depends_on("py-pandas") + depends_on("py-python-dateutil") + depends_on("py-f90nml") + depends_on("wgrib2") depends_on("nco") depends_on("cdo") - depends_on("netcdf-c") - depends_on("netcdf-fortran") + depends_on("grib-util") + depends_on("prod-util") depends_on("esmf") - depends_on("bacio") - depends_on("g2") + depends_on("sp") depends_on("g2tmpl") - depends_on("gh") - depends_on("w3nco") - depends_on("w3emc") - depends_on("sp", when="^ip@:4") - depends_on("ip") - depends_on("nemsio") - depends_on("nemsiogfs") - depends_on("ncio") - depends_on("landsfcutil") - depends_on("sigio") - depends_on("bufr") - depends_on("wgrib2") - depends_on("met") - depends_on("metplus") - depends_on("gsi-ncdiag") depends_on("crtm") - depends_on("py-wxflow", when="+python") + depends_on("gsi-ncdiag") + depends_on("bufr") + depends_on("jasper") + depends_on("libpng") + + #metplus dependencies + depends_on("met", when="+metplus") + depends_on("metplus", when="+metplus") + depends_on("imagemagick", when="+metplus") + + #uwtools dependencies depends_on("uwtools", when="+uwtools") + # GDASApp dependencies + with when("+gdas"): + depends_on("jedi-fv3-env") + depends_on("jedi-tools-env") + depends_on("ioda") + depends_on("pigz") + + # GSI dependencies + depends_on("gsi-env", when="+gsi") + + # CI dependencies + depends_on("py-pygithub", when="+ci") + depends_on("gh", when="+ci") + # There is no need for install() since there is no code. diff --git a/repos/spack_stack/spack_repo/spack_stack/packages/ufs_utils_env/package.py b/repos/spack_stack/spack_repo/spack_stack/packages/ufs_utils_env/package.py index d4e408458..c2b1cf834 100644 --- a/repos/spack_stack/spack_repo/spack_stack/packages/ufs_utils_env/package.py +++ b/repos/spack_stack/spack_repo/spack_stack/packages/ufs_utils_env/package.py @@ -24,7 +24,6 @@ class UfsUtilsEnv(BundlePackage): depends_on("g2") depends_on("g2tmpl") depends_on("ip") - depends_on("ip2") depends_on("nemsio") depends_on("nemsiogfs") depends_on("sp", when="^ip@:4")