Restore default RPATH settings but allow packages to limit to immediate deps. (#1954)

- Some packages (netcdf) NEED RPATHs for transitive deps.
- Others (dealii) will exceed OS limits when the DAG is too large.
This commit is contained in:
Todd Gamblin
2016-10-06 15:57:23 -07:00
committed by GitHub
parent 9683e0df07
commit dbc864c9db
3 changed files with 18 additions and 2 deletions

View File

@@ -383,8 +383,11 @@ def set_module_variables_for_package(pkg, module):
def get_rpath_deps(pkg):
"""We only need to RPATH immediate dependencies."""
return pkg.spec.dependencies(deptype='link')
"""Return immediate or transitive RPATHs depending on the package."""
if pkg.transitive_rpaths:
return [d for d in pkg.spec.traverse(root=False, deptype=('link'))]
else:
return pkg.spec.dependencies(deptype='link')
def get_rpaths(pkg):

View File

@@ -310,17 +310,26 @@ class SomePackage(Package):
#
"""By default we build in parallel. Subclasses can override this."""
parallel = True
"""# jobs to use for parallel make. If set, overrides default of ncpus."""
make_jobs = None
"""By default do not run tests within package's install()"""
run_tests = False
"""Most packages are NOT extendable. Set to True if you want extensions."""
extendable = False
"""When True, add RPATHs for the entire DAG. When False, add RPATHs only
for immediate dependencies."""
transitive_rpaths = True
"""List of prefix-relative file paths (or a single path). If these do
not exist after install, or if they exist but are not files,
sanity checks fail.
"""
sanity_check_is_file = []
"""List of prefix-relative directory paths (or a single path). If
these do not exist after install, or if they exist but are not
directories, sanity checks will fail.