Skip to content

Commit 49d0eb9

Browse files
authored
Support python 3.13 and oneAPI 2026.1 (#2086)
Dependencies py-xarray: improve version constraints for pandas spack/spack-packages#5537 bufr: Add meson dependency for newer python spack/spack-packages#5627 ecflow: add v5.18.0 spack/spack-packages#5628 hdf-eos2: fix "incompatible-pointer-types" error on modern compilers spack/spack-packages#6096 ecflow: Add version bound to pybind for ecflow >= 5.18 spack/spack-packages#6084 uwtools: add 2.9.1, 2.10.0, 2.11.0, 2.17.0 spack/spack-packages#5631 py-xarray: apply py-pandas version constraints to intermediate releases spack-packages#72 Add meson dependency for newer python spack-packages#73 Cherry pick "ecflow add v5.18.0 (#5628)" from spack/spack-packages spack-packages#74 hdf-eos2: oneapi fix. Sync with spack-packages upstream and cherry patch from #6096. spack-packages#76 Cherry-pick #6084: ecflow add version bound to pybind for ecflow >= 5.18 spack-packages#77 Cherry-pick #5631: uwtools add 2.17.0 spack-packages#78 Fix meta-modules preferred compiler bug #2084 Bump the repos/builtin submodule in this PR once all cherry-picks are merged
1 parent ff032b6 commit 49d0eb9

29 files changed

Lines changed: 196 additions & 153 deletions

‎.github/workflows/ubuntu-ci-x86_64-gnu.yaml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ jobs:
110110
111111
# Concretize, check for duplicates and for correct compilers being used
112112
spack concretize --force --fresh 2>&1 | tee log.concretize.${ENVNAME}
113-
${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
113+
${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 py-versioneer
114114
spack stack check-preferred-compiler 2>&1 | tee log.check-preferred-compiler.${ENVNAME}
115115
116116
# Add and update source cache
@@ -182,7 +182,7 @@ jobs:
182182
183183
# Concretize, check for duplicates and for correct compilers being used
184184
spack concretize --force --fresh 2>&1 | tee log.concretize.${ENVNAME}
185-
${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
185+
${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 py-versioneer
186186
spack stack check-preferred-compiler 2>&1 | tee log.check-preferred-compiler.${ENVNAME}
187187
188188
# Install from cache

‎.github/workflows/ubuntu-ci-x86_64-oneapi-ifx.yaml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ jobs:
126126
127127
# Concretize, check for duplicates and for correct compilers being used
128128
spack concretize --force --fresh 2>&1 | tee log.concretize.${ENVNAME}
129-
${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
129+
${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 py-versioneer
130130
spack stack check-preferred-compiler 2>&1 | tee log.check-preferred-compiler.${ENVNAME}
131131
132132
# Add and update source cache
@@ -201,7 +201,7 @@ jobs:
201201
202202
# Concretize, check for duplicates and for correct compilers being used
203203
spack concretize --force --fresh 2>&1 | tee log.concretize.${ENVNAME}
204-
${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
204+
${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 py-versioneer
205205
spack stack check-preferred-compiler 2>&1 | tee log.check-preferred-compiler.${ENVNAME}
206206
207207
# Install from cache

‎.github/workflows/ubuntu-ci-x86_64-oneapi.yaml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ jobs:
126126
127127
# Concretize, check for duplicates and for correct compilers being used
128128
spack concretize --force --fresh 2>&1 | tee log.concretize.${ENVNAME}
129-
${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
129+
${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 py-versioneer
130130
spack stack check-preferred-compiler 2>&1 | tee log.check-preferred-compiler.${ENVNAME}
131131
132132
# Add and update source cache
@@ -201,7 +201,7 @@ jobs:
201201
202202
# Concretize, check for duplicates and for correct compilers being used
203203
spack concretize --force --fresh 2>&1 | tee log.concretize.${ENVNAME}
204-
${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
204+
${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 py-versioneer
205205
spack stack check-preferred-compiler 2>&1 | tee log.check-preferred-compiler.${ENVNAME}
206206
207207
# Install from cache

‎configs/common/packages.yaml‎

Lines changed: 42 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,15 @@ packages:
6464
require:
6565
- '@0.0.5'
6666
- +python
67+
# cairo@1.18.0: is uses the meson recipe. The meson build enforces variants
68+
# that are all-enabled or all-disabled. The "all-enabled" variants are set to help
69+
# the concretizer resolve the correct version without disabling all variants.
70+
# pango/harfbuzz/gobject-introspection need cairo+gobject; without pinning it
71+
# the concretizer builds cairo both ways and the two collide on one modulefile.
72+
cairo:
73+
require:
74+
- '@1.18:'
75+
- +zlib+ft+fc+png+pdf+gobject
6776
cdo:
6877
require:
6978
- ~openmp
@@ -109,10 +118,11 @@ packages:
109118
- +netcdf
110119
- +png
111120
- +tools
121+
# uwtools@2.17: needs ecflow@5.16:; leave the version to the concretizer
112122
ecflow:
113123
require:
114-
- '@5.11.4'
115124
- +ui
125+
- '@5.18:'
116126
eckit:
117127
require:
118128
- '@2.0.7'
@@ -404,30 +414,37 @@ packages:
404414
# are removed, which itself is problematic.
405415
python:
406416
require:
407-
- '@3.11'
408-
- ~crypt
417+
- '@3.13'
418+
# The crypt variant only exists for python<=3.12 since the module was dropped.
419+
# An unconditional ~crypt caps python at 3.12
420+
- spec: ~crypt
421+
when: '@:3.12'
409422
# Not sure about the exact version requirements, but earlier
410423
# versions (definitely 4.5.3 and earlier) don't work with newer
411424
# py-setuptools (version 68 and later) because of a breaking
412425
# change: error in beautifulsoup4 setup command: use_2to3 is invalid
413426
py-beautifulsoup4:
414427
require:
415428
- '@4.12.3:'
429+
# Pin to avoid duplicates
430+
py-pybind11:
431+
require:
432+
- '@:2'
416433
py-cartopy:
417434
require:
418435
- +plotting
419-
# See py-pycparser
420-
py-click:
421-
require:
422-
- '@8.1.8'
423436
# Pin py-colorama to avoid duplicate packages, hopefully can be removed soon
424437
py-colorama:
425438
require:
426439
- '@0.4.6'
427-
# Pin to version 42 to avoid maturin dependency that breaks Intel oneAPI builds
428-
py-cryptography:
440+
# No tutorials extras; prevent py-pandas-datareader dep with broken configparser call
441+
py-arch:
442+
require:
443+
- ~tutorial
444+
# Exclude @:2021.3.0 (broken configparser call), which its default +bag/+delayed variants select
445+
py-dask:
429446
require:
430-
- '@42'
447+
- '@2023.4.1:'
431448
py-h5py:
432449
require:
433450
- ~mpi
@@ -453,65 +470,45 @@ packages:
453470
# To avoid duplicate packages
454471
py-numpy:
455472
require:
456-
- '@1'
473+
- '@=2.4.6'
457474
# Restrict py-pandas to older versions compatible with py-numpy and py-xarray
458475
py-pandas:
459476
require:
460477
- '@:2'
461-
# See py-pycparser
462-
py-pandas-datareader:
463-
require:
464-
- '@:0.10'
478+
# py-versioneer is unavoidably duplicated by pins in py-pyogrio (@0.28) and
479+
# py-partd (@0.29). py-pandas is unconstrained and can further cascade splits
480+
# into py-xarray/met/metplus/jedi-base-env. This constraints py-versioneer to @0.28
481+
# (shared with py-pyogrio) so only py-versioneer itself is duplicated.
482+
- ^py-versioneer@0.28
465483
# To avoid duplicate packages
466484
py-poetry-core:
467485
require:
468486
- '@1.7'
469-
# See py-pycparser
470-
py-pooch:
471-
require:
472-
- '@1.7.0'
473-
# Need older version of py-pycparser until we can update setuputils to >= 77 ?
474-
# https://github.com/pydata/xarray/issues/10588
475-
py-pycparser:
476-
require:
477-
- '@2.21'
478487
# Need at least py-pygithub@2.7 for self-hosted runner management
479488
py-pygithub:
480489
require:
481490
- '@2.7:'
482-
# See py-pycparser
483-
py-imageio:
484-
require:
485-
- '@2.37.0'
486491
# This version builds with Intel oneAPI compilers, newer versions don't
487492
py-pyogrio:
488493
require:
489494
- '@0.9.0'
490-
# See py-pycparser
491-
py-pyparsing:
492-
require:
493-
- '@3.1.2'
494495
# To avoid duplicate packages
495496
py-python-dateutil:
496497
require:
497498
- '@2'
498-
# To avoid duplicate packages
499+
# To avoid duplicate packages, pin to recent version.
499500
py-requests:
500501
require:
501-
- '@2.32.3'
502+
- '@2.32:'
502503
# To avoid duplicate packages
503504
py-ruamel-yaml:
504505
require:
505506
- '@0.17.16'
506507
# https://github.com/JCSDA/spack-stack/issues/1942
507508
# https://github.com/spack/spack-packages/issues/3695
508-
py-setuptools:
509-
require:
510-
- '@73.0.1'
511-
# See py-pycparser
512-
py-sphinxcontrib-bibtex:
513-
require:
514-
- '@2.5.0'
509+
# NOTE: py-setuptools was pinned @73.0.1 for the py3.11 stack; removed for the
510+
# py3.12/numpy2 migration since modern packages (e.g. py-xarray@2025.7) require
511+
# py-setuptools@77.0.3:. Re-evaluate issue #3695 if setuptools duplicates recur.
515512
py-torch:
516513
require:
517514
- +custom-protobuf
@@ -521,10 +518,10 @@ packages:
521518
require:
522519
- '@1.26.20'
523520
# OR - '@1.26.12' ?
524-
# To avoid duplicate packages
521+
# Not '@=0.28'; py-pyogrio needs 0.28 and py-partd/py-dask 0.29, build-only so a split is fine
525522
py-versioneer:
526523
require:
527-
- '@=0.28'
524+
- '@0.28:'
528525
# On a per-site basis, either set qt to buildable: false
529526
# or add requirement to build with gcc for Intel oneAPI
530527
qt:
@@ -565,9 +562,10 @@ packages:
565562
upp:
566563
require:
567564
- '@10.0.10'
565+
# Upper bound keeps the branch version 'main' out; spack sorts it above 2.x
568566
uwtools:
569567
require:
570-
- '@2.7.2'
568+
- '@2.17:2'
571569
w3emc:
572570
require:
573571
- '@2.13.0'

‎configs/common/packages_oneapi.yaml‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ packages:
5656
nco:
5757
require:
5858
- '%c,cxx=gcc'
59+
# The py-numpy cannot be built with oneAPI.
60+
py-numpy:
61+
require:
62+
- '%c,cxx=gcc'
5963
oops:
6064
require:
6165
- +mkl
@@ -65,6 +69,11 @@ packages:
6569
patchelf:
6670
require:
6771
- '%c=gcc'
72+
# Require a recent py-sphinx; unpinned the concretizer prefers 6.X. The old sphinx creates version
73+
# splits in py-attrs, py-docutils, and py-eccodes affecting jedi-base-env and jedi-fv3-env.
74+
py-sphinx:
75+
require:
76+
- '@9:'
6877
py-maturin:
6978
require:
7079
- '%c=gcc'

‎configs/sites/tier1/acorn/packages.yaml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ packages:
4141
require:: ['%oneapi']
4242
py-colorama:: {}
4343
py-pandas:
44-
require:: ['~excel']
44+
require: ['~excel']
4545
subversion:
4646
require: ['~serf', '+pic']
4747
zlib-ng:

‎configs/sites/tier1/acorn/packages_intel-19.1.3.304.yaml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ packages:
107107
py-maturin:
108108
require: ['%gcc']
109109
py-numpy:
110-
require:: ['@1.26', '%gcc']
110+
require: ['%gcc']
111111
py-scipy:
112112
require: ['@1.10.1']
113113
qt:

‎configs/sites/tier1/acorn/packages_oneapi-2024.2.1.yaml‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,6 @@ packages:
8585
require: ['build_system=meson']
8686
proj:
8787
require: ['@9.4.1']
88-
py-numpy::
89-
require:: ['@1.26']
9088
subversion:
9189
require: ['%gcc']
9290
zlib-ng:

‎configs/sites/tier1/aws-pcluster/packages_intel.yaml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,6 @@ packages:
3131
- '@1.4.2 ~mkl'
3232
py-numpy:
3333
require::
34+
- '@2'
3435
- '^openblas'
3536
# *DH

‎configs/sites/tier1/container/packages.yaml‎

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
packages:
22
all:
33
target: [x86_64_v3]
4-
awscli-v2:
5-
require:
6-
- "@2.22.4"
74
cairo:
85
variants: +pic
96
ewok-env:

0 commit comments

Comments
 (0)