summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorTom Scogland <scogland1@llnl.gov>2016-08-24 11:00:16 -0700
committerTom Scogland <scogland1@llnl.gov>2016-08-24 11:00:16 -0700
commit73620fe868779841b6eb4ef5c2c2ebb92fbc28a2 (patch)
tree5ffce643be863909a54bcd267ffaf571ad68a368 /lib
parente6bac6f208a66a0be3da550faa2d3c83264a44a2 (diff)
downloadspack-73620fe868779841b6eb4ef5c2c2ebb92fbc28a2.tar.gz
spack-73620fe868779841b6eb4ef5c2c2ebb92fbc28a2.tar.bz2
spack-73620fe868779841b6eb4ef5c2c2ebb92fbc28a2.tar.xz
spack-73620fe868779841b6eb4ef5c2c2ebb92fbc28a2.zip
avoid specifying --delim unless required
This increases portability of generated module files to versions of environment_modules hearkening back to just after the turn of the millennium.
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/modules.py42
1 files changed, 35 insertions, 7 deletions
diff --git a/lib/spack/spack/modules.py b/lib/spack/spack/modules.py
index debc6752b4..042481aa1d 100644
--- a/lib/spack/spack/modules.py
+++ b/lib/spack/spack/modules.py
@@ -530,13 +530,6 @@ class Dotkit(EnvModule):
class TclModule(EnvModule):
name = 'tcl'
path = join_path(spack.share_path, "modules")
- environment_modifications_formats = {
- PrependPath: 'prepend-path --delim "{separator}" {name} \"{value}\"\n',
- AppendPath: 'append-path --delim "{separator}" {name} \"{value}\"\n',
- RemovePath: 'remove-path --delim "{separator}" {name} \"{value}\"\n',
- SetEnv: 'setenv {name} \"{value}\"\n',
- UnsetEnv: 'unsetenv {name}\n'
- }
autoload_format = ('if ![ is-loaded {module_file} ] {{\n'
' puts stderr "Autoloading {module_file}"\n'
@@ -575,6 +568,41 @@ class TclModule(EnvModule):
header += '}\n\n'
return header
+ def process_environment_command(self, env):
+ environment_modifications_formats_colon = {
+ PrependPath: 'prepend-path {name} \"{value}\"\n',
+ AppendPath: 'append-path {name} \"{value}\"\n',
+ RemovePath: 'remove-path {name} \"{value}\"\n',
+ SetEnv: 'setenv {name} \"{value}\"\n',
+ UnsetEnv: 'unsetenv {name}\n'
+ }
+ environment_modifications_formats_general = {
+ PrependPath: 'prepend-path --delim "{separator}" {name} \"{value}\"\n',
+ AppendPath: 'append-path --delim "{separator}" {name} \"{value}\"\n',
+ RemovePath: 'remove-path --delim "{separator}" {name} \"{value}\"\n',
+ SetEnv: 'setenv {name} \"{value}\"\n',
+ UnsetEnv: 'unsetenv {name}\n'
+ }
+ for command in env:
+ # Token expansion from configuration file
+ name = command.args.get('name', '').format(**self.upper_tokens)
+ value = str(command.args.get('value', '')).format(**self.tokens)
+ command.update_args(name=name, value=value)
+ # Format the line int the module file
+ try:
+ if command.args.get('separator', ':') == ':':
+ yield environment_modifications_formats_colon[type(
+ command)].format(**command.args)
+ else:
+ yield environment_modifications_formats_general[type(
+ command)].format(**command.args)
+ except KeyError:
+ message = ('Cannot handle command of type {command}: '
+ 'skipping request')
+ details = '{context} at {filename}:{lineno}'
+ tty.warn(message.format(command=type(command)))
+ tty.warn(details.format(**command.args))
+
def module_specific_content(self, configuration):
naming_tokens = self.tokens
# Conflict