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
-cudasuffix. 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.yamlfile to:Although this creates non-conflicting module names for
foo ^mpi+cudaandfoo ^mpi~cuda, it givesbar+cuda ^mpi+cudaan 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.