summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorTodd Gamblin <tgamblin@llnl.gov>2014-09-18 21:39:41 -0700
committerTodd Gamblin <tgamblin@llnl.gov>2014-09-18 21:39:41 -0700
commite46e1d51c289afd0427ec45df31e04a11c97f07f (patch)
tree8a78f67eea9545d89e4eca08cef425a9b5240685 /lib
parent8c4db76c3a32efdb1527da4534c80df8d9489b2c (diff)
parent4d2ccfa02842eb152cf7a9bfd3e91cde6e8c6816 (diff)
downloadspack-e46e1d51c289afd0427ec45df31e04a11c97f07f.tar.gz
spack-e46e1d51c289afd0427ec45df31e04a11c97f07f.tar.bz2
spack-e46e1d51c289afd0427ec45df31e04a11c97f07f.tar.xz
spack-e46e1d51c289afd0427ec45df31e04a11c97f07f.zip
Merge branch 'features/fileutils-deps' into develop
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/build_environment.py10
-rw-r--r--lib/spack/spack/package.py2
-rw-r--r--lib/spack/spack/packages.py14
3 files changed, 23 insertions, 3 deletions
diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py
index 182a5629fa..94d5b7a3be 100644
--- a/lib/spack/spack/build_environment.py
+++ b/lib/spack/spack/build_environment.py
@@ -144,9 +144,17 @@ def set_build_environment_variables(pkg):
os.environ[SPACK_DEBUG_LOG_DIR] = spack.spack_working_dir
# Add dependencies to CMAKE_PREFIX_PATH
- dep_prefixes = [d.package.prefix for d in pkg.spec.dependencies.values()]
path_set("CMAKE_PREFIX_PATH", dep_prefixes)
+ # Add any pkgconfig directories to PKG_CONFIG_PATH
+ pkg_config_dirs = []
+ for p in dep_prefixes:
+ for libdir in ('lib', 'lib64'):
+ pcdir = join_path(p, libdir, 'pkgconfig')
+ if os.path.isdir(pcdir):
+ pkg_config_dirs.append(pcdir)
+ path_set("PKG_CONFIG_PATH", pkg_config_dirs)
+
def set_module_variables_for_package(pkg):
"""Populate the module scope of install() with some useful functions.
diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py
index 3e253286e8..361fda1ba6 100644
--- a/lib/spack/spack/package.py
+++ b/lib/spack/spack/package.py
@@ -494,7 +494,7 @@ class Package(object):
on this one."""
dependents = []
for spec in spack.db.installed_package_specs():
- if self.spec != spec and self.spec in spec:
+ if self.name != spec.name and self.spec in spec:
dependents.append(spec)
return dependents
diff --git a/lib/spack/spack/packages.py b/lib/spack/spack/packages.py
index fd75d8e326..72f9403a64 100644
--- a/lib/spack/spack/packages.py
+++ b/lib/spack/spack/packages.py
@@ -69,7 +69,10 @@ class PackageDB(object):
if not spec in self.instances:
package_class = self.get_class_for_package_name(spec.name)
- self.instances[spec.copy()] = package_class(spec)
+ try:
+ self.instances[spec.copy()] = package_class(spec)
+ except Exception, e:
+ raise FailedConstructorError(spec.name, e)
return self.instances[spec]
@@ -232,3 +235,12 @@ class UnknownPackageError(spack.error.SpackError):
def __init__(self, name):
super(UnknownPackageError, self).__init__("Package %s not found." % name)
self.name = name
+
+
+class FailedConstructorError(spack.error.SpackError):
+ """Raised when a package's class constructor fails."""
+ def __init__(self, name, reason):
+ super(FailedConstructorError, self).__init__(
+ "Class constructor failed for package '%s'." % name,
+ str(reason))
+ self.name = name