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>
This commit is contained in:
Andrew W Elble 2021-12-16 05:54:35 -05:00 committed by GitHub
parent bd0ffa8a3c
commit 96535cc4f9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 1 deletions

View File

@ -3,6 +3,7 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import os
import re
import pytest
@ -16,6 +17,24 @@
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

View File

@ -611,7 +611,6 @@ def apply_modifications(self, env=None):
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 @@ def shell_modifications(self, shell='sh', explicit=False, env=None):
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)):

View File

@ -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)