diff options
author | Todd Gamblin <tgamblin@llnl.gov> | 2015-01-22 23:34:39 -0800 |
---|---|---|
committer | Todd Gamblin <tgamblin@llnl.gov> | 2015-01-23 00:03:51 -0800 |
commit | 3e37903ffdbc72410264d1949dde9239e81ec698 (patch) | |
tree | 2acb7497408964c6becea9baa46e86636a1a0287 /lib | |
parent | e6b4530234dc9c32fc69a0dae21cf8c28ce33804 (diff) | |
download | spack-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.py | 31 |
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) |