diff options
author | Andrew W Elble <aweits@rit.edu> | 2021-12-16 05:54:35 -0500 |
---|---|---|
committer | Massimiliano Culpo <massimiliano.culpo@gmail.com> | 2021-12-23 16:02:09 +0100 |
commit | 8f3b025b5502120c99c483b619ae83d2ead07c7f (patch) | |
tree | 89eb2d8698ee7e66893afa88fc8db5fc55d10b68 | |
parent | 37fbe30c4a5b6b9c453078270f7511cc5a1eb146 (diff) | |
download | spack-8f3b025b5502120c99c483b619ae83d2ead07c7f.tar.gz spack-8f3b025b5502120c99c483b619ae83d2ead07c7f.tar.bz2 spack-8f3b025b5502120c99c483b619ae83d2ead07c7f.tar.xz spack-8f3b025b5502120c99c483b619ae83d2ead07c7f.zip |
MANPATH needs a trailing ':' to utilize system defaults (#21682)
otherwise spack breaks using system man pages by default.
Co-authored-by: Harmen Stoppels <harmenstoppels@gmail.com>
-rw-r--r-- | lib/spack/spack/test/cmd/load.py | 19 | ||||
-rw-r--r-- | lib/spack/spack/util/environment.py | 4 | ||||
-rw-r--r-- | var/spack/repos/builtin.mock/packages/mpileaks/package.py | 1 |
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) |