Packages have rpath property.
This commit is contained in:
parent
e6b4530234
commit
3e37903ffd
@ -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)
|
||||
|
@ -32,29 +32,46 @@ class Gcc(Package):
|
||||
Objective-C, Fortran, and Java."""
|
||||
homepage = "https://gcc.gnu.org"
|
||||
|
||||
url = "http://open-source-box.org/gcc/gcc-4.9.2/gcc-4.9.2.tar.bz2"
|
||||
list_url = 'http://open-source-box.org/gcc/'
|
||||
list_depth = 2
|
||||
|
||||
version('4.9.2', '4df8ee253b7f3863ad0b86359cd39c43',
|
||||
url="http://open-source-box.org/gcc/gcc-4.9.2/gcc-4.9.2.tar.bz2")
|
||||
version('4.9.1', 'fddf71348546af523353bd43d34919c1',
|
||||
url="http://open-source-box.org/gcc/gcc-4.9.1/gcc-4.9.1.tar.bz2")
|
||||
version('4.9.2', '4df8ee253b7f3863ad0b86359cd39c43')
|
||||
version('4.9.1', 'fddf71348546af523353bd43d34919c1')
|
||||
version('4.8.4', '5a84a30839b2aca22a2d723de2a626ec')
|
||||
version('4.7.4', '4c696da46297de6ae77a82797d2abe28')
|
||||
version('4.6.4', 'b407a3d1480c11667f293bfb1f17d1a4')
|
||||
version('4.5.4', '27e459c2566b8209ab064570e1b378f7')
|
||||
|
||||
depends_on("mpc")
|
||||
depends_on("mpfr")
|
||||
depends_on("gmp")
|
||||
depends_on("mpc") # when @4.5:
|
||||
depends_on("libelf")
|
||||
|
||||
# Save these until we can do optional deps.
|
||||
#depends_on("isl")
|
||||
#depends_on("ppl")
|
||||
#depends_on("cloog")
|
||||
|
||||
def install(self, spec, prefix):
|
||||
# libjava/configure needs a minor fix to install into spack paths.
|
||||
filter_file(r"'@.*@'", "'@[[:alnum:]]*@'", 'libjava/configure', string=True)
|
||||
|
||||
enabled_languages = set(('c', 'c++', 'fortran', 'java', 'objc'))
|
||||
if spec.satisfies("@4.7.1:"):
|
||||
enabled_languages.add('go')
|
||||
|
||||
# Rest of install is straightforward.
|
||||
configure("--prefix=%s" % prefix,
|
||||
"--libdir=%s/lib64" % prefix,
|
||||
"--disable-multilib",
|
||||
"--enable-languages=c,c++,fortran,java,objc,go",
|
||||
"--enable-languages=" + ','.join(enabled_languages),
|
||||
"--with-mpc=%s" % spec['mpc'].prefix,
|
||||
"--with-mpfr=%s" % spec['mpfr'].prefix,
|
||||
"--with-gmp=%s" % spec['gmp'].prefix,
|
||||
"--with-libelf=%s" % spec['libelf'].prefix,
|
||||
"--with-stage1-ldflags=%s" % self.rpath_args,
|
||||
"--with-boot-ldflags=%s" % self.rpath_args,
|
||||
"--enable-lto",
|
||||
"--with-quad")
|
||||
make()
|
||||
|
Loading…
Reference in New Issue
Block a user