This commit is contained in:
Adam J. Stewart 2016-06-20 12:47:17 -05:00
parent be407f531e
commit aa86488fd9

View File

@ -112,12 +112,13 @@ def __call__(self, *args, **kwargs):
return super(MakeExecutable, self).__call__(*args, **kwargs) return super(MakeExecutable, self).__call__(*args, **kwargs)
def load_module(mod): def load_module(mod):
"""Takes a module name and removes modules until it is possible to """Takes a module name and removes modules until it is possible to
load that module. It then loads the provided module. Depends on the load that module. It then loads the provided module. Depends on the
modulecmd implementation of modules used in cray and lmod. modulecmd implementation of modules used in cray and lmod.
""" """
#Create an executable of the module command that will output python code # Create an executable of the module command that will output python code
modulecmd = which('modulecmd') modulecmd = which('modulecmd')
modulecmd.add_default_arg('python') modulecmd.add_default_arg('python')
@ -128,11 +129,13 @@ def load_module(mod):
text = modulecmd('show', mod, output=str, error=str).split() text = modulecmd('show', mod, output=str, error=str).split()
for i, word in enumerate(text): for i, word in enumerate(text):
if word == 'conflict': if word == 'conflict':
exec(compile(modulecmd('unload', text[i+1], output=str, error=str), '<string>', 'exec')) exec(compile(modulecmd('unload', text[i + 1], output=str,
error=str), '<string>', 'exec'))
# Load the module now that there are no conflicts # Load the module now that there are no conflicts
load = modulecmd('load', mod, output=str, error=str) load = modulecmd('load', mod, output=str, error=str)
exec(compile(load, '<string>', 'exec')) exec(compile(load, '<string>', 'exec'))
def get_path_from_module(mod): def get_path_from_module(mod):
"""Inspects a TCL module for entries that indicate the absolute path """Inspects a TCL module for entries that indicate the absolute path
at which the library supported by said module can be found. at which the library supported by said module can be found.
@ -145,7 +148,7 @@ def get_path_from_module(mod):
text = modulecmd('show', mod, output=str, error=str).split('\n') text = modulecmd('show', mod, output=str, error=str).split('\n')
# If it lists its package directory, return that # If it lists its package directory, return that
for line in text: for line in text:
if line.find(mod.upper()+'_DIR') >= 0: if line.find(mod.upper() + '_DIR') >= 0:
words = line.split() words = line.split()
return words[2] return words[2]
@ -153,13 +156,13 @@ def get_path_from_module(mod):
for line in text: for line in text:
rpath = line.find('-rpath/') rpath = line.find('-rpath/')
if rpath >= 0: if rpath >= 0:
return line[rpath+6:line.find('/lib')] return line[rpath + 6:line.find('/lib')]
# If it lists a -L instruction, use that # If it lists a -L instruction, use that
for line in text: for line in text:
L = line.find('-L/') L = line.find('-L/')
if L >= 0: if L >= 0:
return line[L+2:line.find('/lib')] return line[L + 2:line.find('/lib')]
# If it sets the LD_LIBRARY_PATH or CRAY_LD_LIBRARY_PATH, use that # If it sets the LD_LIBRARY_PATH or CRAY_LD_LIBRARY_PATH, use that
for line in text: for line in text:
@ -170,6 +173,7 @@ def get_path_from_module(mod):
# Unable to find module path # Unable to find module path
return None return None
def set_compiler_environment_variables(pkg, env): def set_compiler_environment_variables(pkg, env):
assert(pkg.spec.concrete) assert(pkg.spec.concrete)
compiler = pkg.compiler compiler = pkg.compiler
@ -281,8 +285,7 @@ def set_build_environment_variables(pkg, env):
for directory in ('lib', 'lib64', 'share'): for directory in ('lib', 'lib64', 'share'):
pcdir = join_path(pre, directory, 'pkgconfig') pcdir = join_path(pre, directory, 'pkgconfig')
if os.path.isdir(pcdir): if os.path.isdir(pcdir):
#pkg_config_dirs.append(pcdir) env.prepend_path('PKG_CONFIG_PATH', pcdir)
env.prepend_path('PKG_CONFIG_PATH',pcdir)
if pkg.spec.architecture.target.module_name: if pkg.spec.architecture.target.module_name:
load_module(pkg.spec.architecture.target.module_name) load_module(pkg.spec.architecture.target.module_name)
@ -398,6 +401,7 @@ def load_external_modules(pkg):
if dep.external_module: if dep.external_module:
load_module(dep.external_module) load_module(dep.external_module)
def setup_package(pkg): def setup_package(pkg):
"""Execute all environment setup routines.""" """Execute all environment setup routines."""
spack_env = EnvironmentModifications() spack_env = EnvironmentModifications()