-
Notifications
You must be signed in to change notification settings - Fork 2.2k
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
Uniquify suffixes added to module names #14920
Conversation
Right now suffixes are added in the order in which they are written. This PR change that behavior. I don't mind this behavior as long as it is documented, but are we sure that there won't be user requests to have
I see that the behavior of |
@alalazo Great, I wasn't aware of the stable deduplication, and I wasn't aware any existing ordering was documented. I'm used to assuming that I will happily change |
@alalazo Judging by the Python 2 test failures after reverting the |
This reverts commit 989d860. Apparently the suffix ordering is *not* based on user input, so sorting is the most obvious way to guarantee a stable order.
That must have changed at some point - shame for the lack of proper testing 😢 Well, giving thumbs up on this then, but waiting for somebody else to chime in before merging. |
@alalazo It's been a week since the feedback request to |
@sethrj Thanks for the reminder! |
Thanks for the review and merge! |
…upstream_master * commit 'e2b1737a42c9c0c796671f9dd0c39f623e4c91c0': (1343 commits) update CHANGELOG.md for 0.14.1 version bump: 0.14.1 multiprocessing: allow Spack to run uninterrupted in background (spack#14682) Cray bugfix: TERM missing while reading default target (spack#15381) Upstreams: don't write metadata directory to upstream DB (spack#15526) Creating versions from urls doesn't modify class attributes (spack#15452) bugfix: fix install_missing_compilers option bug from v0.14.0 (spack#15416) bugfix: installer.py shouldn't be executable (spack#15386) Add function replace_prefix_nullterm for use on mach-o rpaths. (spack#15347) ArchSpec: fix semantics of satisfies when not concrete and strict is true (spack#15319) suite-sparse: fix installation for v5.X (spack#15326) testing: increase installer coverage (spack#15237) bugfix: resolve undefined source_pkg_dir failure (spack#15339) Bugfix: resolve StopIteration message attribute failure (spack#15341) Recover coverage from subprocesses during unit tests (spack#15354) Correct pytest.raises matches to match (spack#15346) bugfix: Add dependents when initializing spec from yaml (spack#15220) Uniquify suffixes added to module names (spack#14920) bugfix: ensure proper dependency handling for package-only installs (spack#15197) Fix for being able to 'spack load' packages that have been renamed. (spack#14348) ... # Conflicts: # .travis.yml # lib/spack/spack/modules/common.py # var/spack/repos/builtin/packages/mofem-cephas/package.py # var/spack/repos/builtin/packages/mofem-fracture-module/package.py # var/spack/repos/builtin/packages/mofem-users-modules/package.py # var/spack/repos/builtin/packages/python/package.py
I am just noticing that the ordering changed now that the change is causing some issues with our modules. :(
Additionally, the documentation was not updated as far as I can tell: https://spack.readthedocs.io/en/latest/module_file_support.html#selection-by-anonymous-specs
Edit: I am willing to contribute a PR that would make everybody happy (if that's possible). |
Maybe we can word it better, but that sentence is meant to say that if you have: modules:
tcl:
foo:
kwd: ...
all:
kwd: ...
bar:
kwd: ... The order in which |
@alalazo I would think it makes sense that "modifications" also applies to |
Consider a user that wants to mark CUDA-enabled modules with a
-cuda
suffix. To also account for libraries that use cuda-enabled MPI (perhaps to differentiate them from the same library that uses non-cuda MPI), they set theirmodules.yaml
file to:Although this creates non-conflicting module names for
foo ^mpi+cuda
andfoo ^mpi~cuda
, it givesbar+cuda ^mpi+cuda
an suffix of-cuda-cuda
.This patch deduplicates module extensions so that the latter suffix will simplify to
-cuda
. It also sorts the suffixes to improve robustness.