Packages have rpath property.

This commit is contained in:
Todd Gamblin
2015-01-22 23:34:39 -08:00
parent e6b4530234
commit 3e37903ffd
2 changed files with 50 additions and 10 deletions

View File

@@ -713,6 +713,14 @@ def do_patch(self):
tty.msg("Patched %s" % self.name)
def do_fake_install(self):
"""Make a fake install directory contaiing a 'fake' file in bin."""
mkdirp(self.prefix.bin)
touch(join_path(self.prefix.bin, 'fake'))
mkdirp(self.prefix.lib)
mkdirp(self.prefix.man1)
def do_install(self, **kwargs):
"""This class should call this version of the install method.
Package implementations should override install().
@@ -758,13 +766,11 @@ def do_install(self, **kwargs):
spack.install_layout.make_path_for_spec(self.spec)
# Set up process's build environment before running install.
self.stage.chdir_to_source()
build_env.setup_package(self)
if fake_install:
mkdirp(self.prefix.bin)
touch(join_path(self.prefix.bin, 'fake'))
mkdirp(self.prefix.lib)
mkdirp(self.prefix.man1)
self.do_fake_install()
else:
# Subclasses implement install() to do the real work.
self.install(self.spec, self.prefix)
@@ -925,6 +931,23 @@ def fetch_remote_versions(self):
e.url, e.message)
@property
def rpath(self):
"""Get the rpath this package links with, as a list of paths."""
rpaths = [self.prefix.lib, self.prefix.lib64]
rpaths.extend(d.prefix.lib for d in self.spec.traverse(root=False)
if os.path.isdir(d.prefix.lib))
rpaths.extend(d.prefix.lib64 for d in self.spec.traverse(root=False)
if os.path.isdir(d.prefix.lib64))
return rpaths
@property
def rpath_args(self):
"""Get the rpath args as a string, with -Wl,-rpath= for each element."""
return " ".join("-Wl,-rpath=%s" % p for p in self.rpath)
def find_versions_of_archive(*archive_urls, **kwargs):
list_url = kwargs.get('list_url', None)
list_depth = kwargs.get('list_depth', 1)