diff --git a/lib/spack/spack/modules/lmod.py b/lib/spack/spack/modules/lmod.py index a381e08ca9e32303ca962b98a4743280ce47299b..e45b97773bffa29dc088736b6b93b82c6b3c6dc1 100644 --- a/lib/spack/spack/modules/lmod.py +++ b/lib/spack/spack/modules/lmod.py @@ -198,7 +198,11 @@ class LmodFileLayout(BaseFileLayout): @property def arch_dirname(self): """Returns the root folder for THIS architecture""" - arch_folder = str(self.spec.architecture) + arch_folder = '-'.join([ + str(self.spec.platform), + str(self.spec.os), + str(self.spec.target.family) + ]) return os.path.join( self.dirname(), # root for lmod module files arch_folder, # architecture relative path diff --git a/lib/spack/spack/test/modules/lmod.py b/lib/spack/spack/test/modules/lmod.py index 7ee173d660f4b5c518bcd9a75ef8e3dd6b5f0c81..e480d22601a31a83f85592401fd318cd2e7aba3b 100644 --- a/lib/spack/spack/test/modules/lmod.py +++ b/lib/spack/spack/test/modules/lmod.py @@ -262,3 +262,19 @@ def no_op_set(*args, **kwargs): # Assert we have core compilers now writer, _ = factory(mpileaks_spec_string) assert writer.conf.core_compilers + + @pytest.mark.parametrize('spec_str', [ + 'mpileaks target=haswell', + 'mpileaks target=core2', + 'mpileaks target=x86_64', + ]) + @pytest.mark.regression('13005') + def test_only_generic_microarchitectures_in_root( + self, spec_str, factory, module_configuration + ): + module_configuration('complex_hierarchy') + writer, spec = factory(spec_str) + + assert str(spec.target.family) in writer.layout.arch_dirname + if spec.target.family != spec.target: + assert str(spec.target) not in writer.layout.arch_dirname diff --git a/share/spack/templates/modules/modulefile.lua b/share/spack/templates/modules/modulefile.lua index a8eae9bef142bbadb10371c0b8b485b33388f978..2149c8bfaf7dfc66d7effaa13b0522c8953c9245 100644 --- a/share/spack/templates/modules/modulefile.lua +++ b/share/spack/templates/modules/modulefile.lua @@ -8,6 +8,7 @@ {% if short_description %} whatis([[Name : {{ spec.name }}]]) whatis([[Version : {{ spec.version }}]]) +whatis([[Target : {{ spec.target }}]]) whatis([[Short description : {{ short_description }}]]) {% endif %} {% if configure_options %}