rpaths for dependencies. elf, dwarf, cmake build on Linux
This commit is contained in:
		
							
								
								
									
										8
									
								
								lib/spack/env/cc
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								lib/spack/env/cc
									
									
									
									
										vendored
									
									
								
							| @@ -10,6 +10,7 @@ def get_path(name): | ||||
|  | ||||
| # Import spack parameters through the build environment. | ||||
| spack_lib      = os.environ.get("SPACK_LIB") | ||||
| spack_prefix   = os.environ.get("SPACK_PREFIX") | ||||
| spack_deps     = get_path("SPACK_DEPENDENCIES") | ||||
| spack_env_path = get_path("SPACK_ENV_PATH") | ||||
| if not spack_lib or spack_deps == None: | ||||
| @@ -62,8 +63,15 @@ arguments += other_args | ||||
| arguments += ['-L%s' % path for path in options.lib_path] | ||||
| arguments += ['-l%s' % path for path in options.libs] | ||||
|  | ||||
| spack_rpaths = [spack_prefix] + spack_deps | ||||
| arguments += ['-Wl,-rpath,%s/lib64' % path for path in spack_rpaths] | ||||
| arguments += ['-Wl,-rpath,%s/lib' % path for path in spack_rpaths] | ||||
|  | ||||
| # Unset some pesky environment variables | ||||
| pop_keys(os.environ, "LD_LIBRARY_PATH", "LD_RUN_PATH", "DYLD_LIBRARY_PATH") | ||||
|  | ||||
|  | ||||
| sys.stderr.write(" ".join(arguments)) | ||||
|  | ||||
| rcode = cmd(*arguments, fail_on_error=False) | ||||
| sys.exit(rcode) | ||||
|   | ||||
| @@ -111,6 +111,7 @@ def add_commands_to_module(self): | ||||
|         self.module.install    = install | ||||
|         self.module.rmtree     = shutil.rmtree | ||||
|         self.module.move       = shutil.move | ||||
|         self.module.remove     = os.remove | ||||
|  | ||||
|         # Useful directories within the prefix | ||||
|         self.module.prefix  = self.prefix | ||||
| @@ -119,6 +120,7 @@ def add_commands_to_module(self): | ||||
|         self.module.etc     = new_path(self.prefix, 'etc') | ||||
|         self.module.include = new_path(self.prefix, 'include') | ||||
|         self.module.lib     = new_path(self.prefix, 'lib') | ||||
|         self.module.lib64   = new_path(self.prefix, 'lib64') | ||||
|         self.module.libexec = new_path(self.prefix, 'libexec') | ||||
|         self.module.share   = new_path(self.prefix, 'share') | ||||
|         self.module.doc     = new_path(self.module.share, 'doc') | ||||
| @@ -288,6 +290,9 @@ def setup_install_environment(self): | ||||
|         for dep in self.dependencies: | ||||
|             path_prepend("SPACK_DEPENDENCIES", dep.package.prefix) | ||||
|  | ||||
|         # Install location | ||||
|         path_prepend("SPACK_PREFIX", self.prefix) | ||||
|  | ||||
|  | ||||
|     def do_install_dependencies(self): | ||||
|         # Pass along paths of dependencies here | ||||
|   | ||||
| @@ -46,7 +46,7 @@ def get_next(arg, args): | ||||
|             if os.path.isdir(target): | ||||
|                 rpaths.append(target) | ||||
|             else: | ||||
|                 other_args.extend([arg, target]) | ||||
|                 other_args.extend(['-Wl,' + arg, '-Wl,' + target]) | ||||
|         else: | ||||
|             other_args.append(arg) | ||||
|             other_args.append('-Wl,' + arg) | ||||
|     return rpaths, other_args | ||||
|   | ||||
| @@ -21,21 +21,22 @@ def clean(self): | ||||
|     def install(self, prefix): | ||||
|         make.add_default_arg('ARFLAGS=rcs') | ||||
|  | ||||
|         for dir in dwarf_dirs: | ||||
|             with working_dir(dir): | ||||
|                 #configure("--prefix=%s" % prefix, '--enable-shared') | ||||
|                 configure("--prefix=%s" % prefix) | ||||
|                 make() | ||||
|  | ||||
|         # Dwarf doesn't provide an install.  Annoying. | ||||
|         # Dwarf doesn't provide an install, so we have to do it. | ||||
|         mkdirp(bin, include, lib, man1) | ||||
|  | ||||
|         with working_dir('libdwarf'): | ||||
|             configure("--prefix=%s" % prefix, '--enable-shared') | ||||
|             make() | ||||
|  | ||||
|             install('libdwarf.a',  lib) | ||||
|             #install('libdwarf.so', lib) | ||||
|             install('libdwarf.so', lib) | ||||
|             install('libdwarf.h',  include) | ||||
|             install('dwarf.h',     include) | ||||
|  | ||||
|         with working_dir('dwarfdump2'): | ||||
|             configure("--prefix=%s" % prefix) | ||||
|             make() | ||||
|  | ||||
|             install('dwarfdump',     bin) | ||||
|             install('dwarfdump.conf', lib) | ||||
|             install('dwarfdump.1',    man1) | ||||
|   | ||||
| @@ -7,6 +7,7 @@ class Libelf(Package): | ||||
|  | ||||
|     def install(self, prefix): | ||||
|         configure("--prefix=%s" % prefix, | ||||
|                   "--enable-shared", | ||||
|                   "--disable-dependency-tracking", | ||||
|                   "--disable-debug") | ||||
|         make() | ||||
|   | ||||
| @@ -60,9 +60,9 @@ def pkg(msg): | ||||
|     import platform | ||||
|     from version import Version | ||||
|  | ||||
|     mac_version = platform.mac_ver()[0] | ||||
|     if Version(mac_version) >= Version("10.7"): | ||||
|     mac_ver = platform.mac_ver()[0] | ||||
|     if mac_ver and Version(mac_ver) >= Version('10.7'): | ||||
|         print u"\U0001F4E6" + indent, | ||||
|     else: | ||||
|         print '[%] ', | ||||
|         print '{}[+]{} '.format(green, reset), | ||||
|     print msg | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Todd Gamblin
					Todd Gamblin