summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorTodd Gamblin <tgamblin@llnl.gov>2015-01-22 23:34:39 -0800
committerTodd Gamblin <tgamblin@llnl.gov>2015-01-23 00:03:51 -0800
commit3e37903ffdbc72410264d1949dde9239e81ec698 (patch)
tree2acb7497408964c6becea9baa46e86636a1a0287 /lib
parente6b4530234dc9c32fc69a0dae21cf8c28ce33804 (diff)
downloadspack-3e37903ffdbc72410264d1949dde9239e81ec698.tar.gz
spack-3e37903ffdbc72410264d1949dde9239e81ec698.tar.bz2
spack-3e37903ffdbc72410264d1949dde9239e81ec698.tar.xz
spack-3e37903ffdbc72410264d1949dde9239e81ec698.zip
Packages have rpath property.
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/package.py31
1 files changed, 27 insertions, 4 deletions
diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py
index 1a797e88b1..fe4fc748d8 100644
--- a/lib/spack/spack/package.py
+++ b/lib/spack/spack/package.py
@@ -713,6 +713,14 @@ class Package(object):
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 @@ class Package(object):
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 @@ class Package(object):
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)