More descriptive error when package constructor fails.

- helps package_sanity test identify which package failed.
- encountered while upgrading versions in Adam's packages to the new format.
This commit is contained in:
Todd Gamblin 2014-08-03 12:16:00 -07:00
parent 3779c78c00
commit cabfc374eb

View File

@ -69,7 +69,10 @@ def get(self, spec):
if not spec in self.instances:
package_class = self.get_class_for_package_name(spec.name)
try:
self.instances[spec.name] = package_class(spec)
except Exception, e:
raise FailedConstructorError(spec.name, e)
return self.instances[spec.name]
@ -227,3 +230,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