Bootstrap environment modules optimizing for generic architectures (#13105)
fixes #13073 Since #3206 was merged bootstrapping environment-modules was using the architecture of the current host or the best match supported by the default compiler. The former case is an issue since shell integration was looking for a spec targeted at the host microarchitecture. 1. Bootstrap an env modules targeted at generic architectures 2. Look for generic targets in shell integration scripts 3. Add a new entry in Travis to test shell integration
This commit is contained in:

committed by
Todd Gamblin

parent
498f448ef3
commit
3d77ecd92e
@@ -3,6 +3,7 @@
|
||||
#
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
|
||||
import llnl.util.cpu
|
||||
import llnl.util.tty as tty
|
||||
|
||||
import spack.repo
|
||||
@@ -56,7 +57,12 @@ def bootstrap(parser, args, **kwargs):
|
||||
# Define requirement dictionary defining general specs which need
|
||||
# to be satisfied, and the specs to install when the general spec
|
||||
# isn't satisfied.
|
||||
requirement_dict = {'environment-modules': 'environment-modules~X'}
|
||||
requirement_dict = {
|
||||
# Install environment-modules with generic optimizations
|
||||
'environment-modules': 'environment-modules~X target={0}'.format(
|
||||
llnl.util.cpu.host().family
|
||||
)
|
||||
}
|
||||
|
||||
for requirement in requirement_dict:
|
||||
installed_specs = spack.store.db.query(requirement)
|
||||
|
@@ -20,6 +20,7 @@
|
||||
import warnings
|
||||
from six import StringIO
|
||||
|
||||
import llnl.util.cpu
|
||||
import llnl.util.tty as tty
|
||||
import llnl.util.tty.color as color
|
||||
from llnl.util.tty.log import log_output
|
||||
@@ -621,8 +622,9 @@ def shell_set(var, value):
|
||||
# print environment module system if available. This can be expensive
|
||||
# on clusters, so skip it if not needed.
|
||||
if 'modules' in info:
|
||||
specs = spack.store.db.query(
|
||||
'environment-modules arch=%s' % spack.architecture.sys_type())
|
||||
generic_arch = llnl.util.cpu.host().family
|
||||
module_spec = 'environment-modules target={0}'.format(generic_arch)
|
||||
specs = spack.store.db.query(module_spec)
|
||||
if specs:
|
||||
shell_set('_sp_module_prefix', specs[-1].prefix)
|
||||
else:
|
||||
|
Reference in New Issue
Block a user