summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/spack/spack/test/cmd/load.py19
-rw-r--r--lib/spack/spack/util/environment.py4
-rw-r--r--var/spack/repos/builtin.mock/packages/mpileaks/package.py1
3 files changed, 23 insertions, 1 deletions
diff --git a/lib/spack/spack/test/cmd/load.py b/lib/spack/spack/test/cmd/load.py
index ef014418c7..51867b548c 100644
--- a/lib/spack/spack/test/cmd/load.py
+++ b/lib/spack/spack/test/cmd/load.py
@@ -3,6 +3,7 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import os
+import re
import pytest
@@ -16,6 +17,24 @@ install = SpackCommand('install')
location = SpackCommand('location')
+def test_manpath_trailing_colon(install_mockery, mock_fetch, mock_archive,
+ mock_packages, working_env):
+ """Test that the commands generated by load add the MANPATH prefix
+ inspections. Also test that Spack correctly preserves the default/existing
+ manpath search path via a trailing colon"""
+ install('mpileaks')
+
+ sh_out = load('--sh', '--only', 'package', 'mpileaks')
+ lines = sh_out.split('\n')
+ assert any(re.match(r'export MANPATH=.*:;', ln) for ln in lines)
+
+ os.environ['MANPATH'] = '/tmp/man:'
+
+ sh_out = load('--sh', '--only', 'package', 'mpileaks')
+ lines = sh_out.split('\n')
+ assert any(re.match(r'export MANPATH=.*:/tmp/man:;', ln) for ln in lines)
+
+
def test_load(install_mockery, mock_fetch, mock_archive, mock_packages):
"""Test that the commands generated by load add the specified prefix
inspections. Also test that Spack records loaded specs by hash in the
diff --git a/lib/spack/spack/util/environment.py b/lib/spack/spack/util/environment.py
index a0a6c4a3aa..f0457c27b8 100644
--- a/lib/spack/spack/util/environment.py
+++ b/lib/spack/spack/util/environment.py
@@ -611,7 +611,6 @@ class EnvironmentModifications(object):
def shell_modifications(self, shell='sh', explicit=False, env=None):
"""Return shell code to apply the modifications and clears the list."""
modifications = self.group_by_name()
- new_env = os.environ.copy()
if env is None:
env = os.environ
@@ -622,6 +621,9 @@ class EnvironmentModifications(object):
for x in actions:
x.execute(new_env)
+ if 'MANPATH' in new_env and not new_env.get('MANPATH').endswith(':'):
+ new_env['MANPATH'] += ':'
+
cmds = ''
for name in sorted(set(modifications)):
diff --git a/var/spack/repos/builtin.mock/packages/mpileaks/package.py b/var/spack/repos/builtin.mock/packages/mpileaks/package.py
index e0bff0673b..36c073ccf0 100644
--- a/var/spack/repos/builtin.mock/packages/mpileaks/package.py
+++ b/var/spack/repos/builtin.mock/packages/mpileaks/package.py
@@ -28,6 +28,7 @@ class Mpileaks(Package):
def install(self, spec, prefix):
touch(prefix.mpileaks)
+ mkdirp(prefix.man)
def setup_environment(self, senv, renv):
renv.set('FOOBAR', self.name)