-
Notifications
You must be signed in to change notification settings - Fork 59
Support python 3.13 and oneAPI 2026.1 #2086
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
base: develop
Are you sure you want to change the base?
Changes from all commits
d7b3e43
a386b31
1899d4f
ce28283
a0878a8
d225520
df6db6d
8a0c542
18067be
840e2a1
0e52543
4971939
c75190a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -64,6 +64,13 @@ packages: | |||||
| require: | ||||||
| - '@0.0.5' | ||||||
| - +python | ||||||
| # cairo@1.18.0: is uses the meson recipe. The meson build enforces variants | ||||||
| # that are all-enabled or all-disabled. The "all-enabled" variants are set to help | ||||||
| # the concretizer resolve the correct version without disabling all variants. | ||||||
| cairo: | ||||||
| require: | ||||||
| - '@1.18:' | ||||||
| - +zlib+ft+fc+png+pdf | ||||||
| cdo: | ||||||
| require: | ||||||
| - ~openmp | ||||||
|
|
@@ -109,10 +116,13 @@ packages: | |||||
| - +netcdf | ||||||
| - +png | ||||||
| - +tools | ||||||
| # uwtools@2.17: needs ecflow@5.16:; leave the version to the concretizer | ||||||
| # ecflow@5.18 is not compatible with py-pybind11@3.0: | ||||||
| ecflow: | ||||||
| require: | ||||||
| - '@5.11.4' | ||||||
| - +ui | ||||||
| - '@5.18:' | ||||||
| - ^py-pybind11@:2 | ||||||
| eckit: | ||||||
| require: | ||||||
| - '@2.0.7' | ||||||
|
|
@@ -404,8 +414,11 @@ packages: | |||||
| # are removed, which itself is problematic. | ||||||
| python: | ||||||
| require: | ||||||
| - '@3.11' | ||||||
| - ~crypt | ||||||
| - '@3.13' | ||||||
| # The crypt variant only exists for python<=3.12 since the module was dropped. | ||||||
| # An unconditional ~crypt caps python at 3.12 | ||||||
| - spec: ~crypt | ||||||
| when: '@:3.12' | ||||||
| # Not sure about the exact version requirements, but earlier | ||||||
| # versions (definitely 4.5.3 and earlier) don't work with newer | ||||||
| # py-setuptools (version 68 and later) because of a breaking | ||||||
|
|
@@ -416,18 +429,18 @@ packages: | |||||
| py-cartopy: | ||||||
| require: | ||||||
| - +plotting | ||||||
| # See py-pycparser | ||||||
| py-click: | ||||||
| require: | ||||||
| - '@8.1.8' | ||||||
| # Pin py-colorama to avoid duplicate packages, hopefully can be removed soon | ||||||
| py-colorama: | ||||||
| require: | ||||||
| - '@0.4.6' | ||||||
| # Pin to version 42 to avoid maturin dependency that breaks Intel oneAPI builds | ||||||
| py-cryptography: | ||||||
| # No tutorials extras; prevent py-pandas-datareader dep with broken configparser call | ||||||
| py-arch: | ||||||
| require: | ||||||
| - '@42' | ||||||
| - ~tutorial | ||||||
| # Exclude @:2021.3.0 (broken configparser call), which its default +bag/+delayed variants select | ||||||
| py-dask: | ||||||
| require: | ||||||
| - '@2023.4.1:' | ||||||
| py-h5py: | ||||||
| require: | ||||||
| - ~mpi | ||||||
|
|
@@ -453,65 +466,45 @@ packages: | |||||
| # To avoid duplicate packages | ||||||
| py-numpy: | ||||||
| require: | ||||||
| - '@1' | ||||||
| - '@2' | ||||||
| # Restrict py-pandas to older versions compatible with py-numpy and py-xarray | ||||||
| py-pandas: | ||||||
| require: | ||||||
| - '@:2' | ||||||
| # See py-pycparser | ||||||
| py-pandas-datareader: | ||||||
| require: | ||||||
| - '@:0.10' | ||||||
| # py-versioneer is unavoidably duplicated by pins in py-pyogrio (@0.28) and | ||||||
| # py-partd (@0.29). py-pandas is unconstrained and can further cascade splits | ||||||
| # into py-xarray/met/metplus/jedi-base-env. This constraints py-pandas to @0.28 | ||||||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
| # (shared with py-pyogrio) so only py-versioneer itself is duplicated. | ||||||
| - ^py-versioneer@0.28 | ||||||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Hopefully we get away with duplicates of py-versioneer. We may be able to relax one of the package constraints; quite often, these are too restrictive and simply in there because that's what the author tested with. It seems unlikely that 0.28 and 0.29 are that incompatible ...
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. yeah, either way this is an upstream change that we are stuck with until fixed upstream. For the moment this feels forgivable since its only a build dep and at least I can prevent it from causing a large-scale package split. |
||||||
| # To avoid duplicate packages | ||||||
| py-poetry-core: | ||||||
| require: | ||||||
| - '@1.7' | ||||||
| # See py-pycparser | ||||||
| py-pooch: | ||||||
| require: | ||||||
| - '@1.7.0' | ||||||
| # Need older version of py-pycparser until we can update setuputils to >= 77 ? | ||||||
| # https://github.com/pydata/xarray/issues/10588 | ||||||
| py-pycparser: | ||||||
| require: | ||||||
| - '@2.21' | ||||||
| # Need at least py-pygithub@2.7 for self-hosted runner management | ||||||
| py-pygithub: | ||||||
| require: | ||||||
| - '@2.7:' | ||||||
| # See py-pycparser | ||||||
| py-imageio: | ||||||
| require: | ||||||
| - '@2.37.0' | ||||||
| # This version builds with Intel oneAPI compilers, newer versions don't | ||||||
| py-pyogrio: | ||||||
| require: | ||||||
| - '@0.9.0' | ||||||
| # See py-pycparser | ||||||
| py-pyparsing: | ||||||
| require: | ||||||
| - '@3.1.2' | ||||||
| # To avoid duplicate packages | ||||||
| py-python-dateutil: | ||||||
| require: | ||||||
| - '@2' | ||||||
| # To avoid duplicate packages | ||||||
| # To avoid duplicate packages, pin to recent version. | ||||||
| py-requests: | ||||||
| require: | ||||||
| - '@2.32.3' | ||||||
| - '@2.32:' | ||||||
| # To avoid duplicate packages | ||||||
| py-ruamel-yaml: | ||||||
| require: | ||||||
| - '@0.17.16' | ||||||
| # https://github.com/JCSDA/spack-stack/issues/1942 | ||||||
| # https://github.com/spack/spack-packages/issues/3695 | ||||||
| py-setuptools: | ||||||
| require: | ||||||
| - '@73.0.1' | ||||||
| # See py-pycparser | ||||||
| py-sphinxcontrib-bibtex: | ||||||
| require: | ||||||
| - '@2.5.0' | ||||||
| # NOTE: py-setuptools was pinned @73.0.1 for the py3.11 stack; removed for the | ||||||
| # py3.12/numpy2 migration since modern packages (e.g. py-xarray@2025.7) require | ||||||
| # py-setuptools@77.0.3:. Re-evaluate issue #3695 if setuptools duplicates recur. | ||||||
| py-torch: | ||||||
| require: | ||||||
| - +custom-protobuf | ||||||
|
|
@@ -521,10 +514,10 @@ packages: | |||||
| require: | ||||||
| - '@1.26.20' | ||||||
| # OR - '@1.26.12' ? | ||||||
| # To avoid duplicate packages | ||||||
| # Not '@=0.28'; py-pyogrio needs 0.28 and py-partd/py-dask 0.29, build-only so a split is fine | ||||||
| py-versioneer: | ||||||
| require: | ||||||
| - '@=0.28' | ||||||
| - '@0.28:' | ||||||
| # On a per-site basis, either set qt to buildable: false | ||||||
| # or add requirement to build with gcc for Intel oneAPI | ||||||
| qt: | ||||||
|
|
@@ -565,9 +558,10 @@ packages: | |||||
| upp: | ||||||
| require: | ||||||
| - '@10.0.10' | ||||||
| # Upper bound keeps the branch version 'main' out; spack sorts it above 2.x | ||||||
| uwtools: | ||||||
| require: | ||||||
| - '@2.7.2' | ||||||
| - '@2.17:2' | ||||||
| w3emc: | ||||||
| require: | ||||||
| - '@2.13.0' | ||||||
|
|
||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -26,6 +26,11 @@ packages: | |
| bison: | ||
| require: | ||
| - '%c,cxx=gcc' | ||
| # pango/harfbuzz/gobject-introspection need cairo+gobject; without pinning it | ||
| # the concretizer builds cairo both ways and the two collide on one modulefile. | ||
| cairo: | ||
| require: | ||
| - +gobject | ||
|
Comment on lines
+29
to
+33
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Should we move this into common/packages.yaml ?
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I am trying that in my local test environments. |
||
| cmake: | ||
| require: | ||
| - '%c,cxx=gcc' | ||
|
|
@@ -56,6 +61,10 @@ packages: | |
| nco: | ||
| require: | ||
| - '%c,cxx=gcc' | ||
| # The py-numpy cannot be built with oneAPI. | ||
| py-numpy: | ||
| require: | ||
| - '%c,cxx=gcc' | ||
|
eap marked this conversation as resolved.
|
||
| oops: | ||
| require: | ||
| - +mkl | ||
|
|
@@ -65,6 +74,11 @@ packages: | |
| patchelf: | ||
| require: | ||
| - '%c=gcc' | ||
| # Require a recent py-sphinx; unpinned the concretizer prefers 6.X. The old sphinx creates version | ||
| # splits in py-attrs, py-docutils, and py-eccodes affecting jedi-base-env and jedi-fv3-env. | ||
| py-sphinx: | ||
| require: | ||
| - '@9:' | ||
| py-maturin: | ||
| require: | ||
| - '%c=gcc' | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -31,5 +31,6 @@ packages: | |
| - '@1.4.2 ~mkl' | ||
| py-numpy: | ||
| require:: | ||
| - '@2' | ||
| - '^openblas' | ||
| # *DH | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,9 +1,6 @@ | ||
| packages: | ||
| all: | ||
| target: [x86_64_v3] | ||
| awscli-v2: | ||
| require: | ||
| - "@2.22.4" | ||
| cairo: | ||
| variants: +pic | ||
| ewok-env: | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -30,5 +30,6 @@ packages: | |
| - '@1.4.2 ~mkl' | ||
| py-numpy: | ||
| require:: | ||
| - '@2' | ||
| - '^openblas' | ||
| # *DH | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -32,7 +32,7 @@ packages: | |
| - '@1.4.2 ~mkl' | ||
| py-numpy: | ||
| require:: | ||
| - '@1.26' | ||
| - '@2' | ||
| - '^openblas' | ||
| # *DH | ||
| cdo: | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -30,5 +30,6 @@ packages: | |
| - '@1.4.2 ~mkl' | ||
| py-numpy: | ||
| require:: | ||
| - '@2' | ||
| - '^openblas' | ||
| # *DH | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -32,7 +32,7 @@ packages: | |
| - '@1.4.2 ~mkl' | ||
| py-numpy: | ||
| require:: | ||
| - '@1.26' | ||
| - '@2' | ||
| - '^openblas' | ||
| # *DH | ||
| cdo: | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this to avoid duplicates, or does the ecflow recipe potentially need to be updated?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I need to update the ecflow recipe.