Handle external perl (#13903)

* dont add perl bin directory to PATH when setting up env (this is already handled by spack core in a way that omits system dirs); also consolidate repeated logic between build/run env setup.

* the bin/ dir of each dependency is already added to PATH in Spack core, so there is no need to do this in the Perl package
This commit is contained in:
Peter Scheibel 2019-11-29 04:30:40 -07:00 committed by Massimiliano Culpo
parent 4dca63f007
commit cacfc3a6e1

View File

@ -165,43 +165,24 @@ def install_cpanm(self):
make() make()
make('install') make('install')
def setup_dependent_build_environment(self, env, dependent_spec): def _setup_dependent_env(self, env, dependent_spec, deptypes):
"""Set PATH and PERL5LIB to include the extension and """Set PATH and PERL5LIB to include the extension and
any other perl extensions it depends on, any other perl extensions it depends on,
assuming they were installed with INSTALL_BASE defined.""" assuming they were installed with INSTALL_BASE defined."""
perl_lib_dirs = [join_path(self.spec.prefix.lib, perl_lib_dirs = []
str(self.spec.version))] for d in dependent_spec.traverse(deptype=deptypes):
perl_bin_dirs = [self.spec.prefix.bin]
for d in dependent_spec.traverse(
deptype=('build', 'run'), deptype_query='run'):
if d.package.extends(self.spec): if d.package.extends(self.spec):
perl_lib_dirs.append(d.prefix.lib.perl5) perl_lib_dirs.append(d.prefix.lib.perl5)
perl_bin_dirs.append(d.prefix.bin)
if perl_bin_dirs:
perl_bin_path = ':'.join(perl_bin_dirs)
env.prepend_path('PATH', perl_bin_path)
if perl_lib_dirs: if perl_lib_dirs:
perl_lib_path = ':'.join(perl_lib_dirs) perl_lib_path = ':'.join(perl_lib_dirs)
env.prepend_path('PERL5LIB', perl_lib_path) env.prepend_path('PERL5LIB', perl_lib_path)
def setup_dependent_build_environment(self, env, dependent_spec):
self._setup_dependent_env(env, dependent_spec,
deptypes=('build', 'run'))
def setup_dependent_run_environment(self, env, dependent_spec): def setup_dependent_run_environment(self, env, dependent_spec):
"""Set PATH and PERL5LIB to include the extension and self._setup_dependent_env(env, dependent_spec, deptypes=('run',))
any other perl extensions it depends on,
assuming they were installed with INSTALL_BASE defined."""
perl_lib_dirs = [join_path(self.spec.prefix.lib,
str(self.spec.version))]
perl_bin_dirs = [self.spec.prefix.bin]
for d in dependent_spec.traverse(
deptype=('run',), deptype_query='run'):
if d.package.extends(self.spec):
perl_lib_dirs.append(d.prefix.lib.perl5)
perl_bin_dirs.append(d.prefix.bin)
if perl_bin_dirs:
perl_bin_path = ':'.join(perl_bin_dirs)
env.prepend_path('PATH', perl_bin_path)
if perl_lib_dirs:
perl_lib_path = ':'.join(perl_lib_dirs)
env.prepend_path('PERL5LIB', perl_lib_path)
def setup_dependent_package(self, module, dependent_spec): def setup_dependent_package(self, module, dependent_spec):
"""Called before perl modules' install() methods. """Called before perl modules' install() methods.