From cabfc374eb0fe546ea8377eb64f4415bbd11e3f8 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Sun, 3 Aug 2014 12:16:00 -0700 Subject: 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. --- lib/spack/spack/packages.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/spack/spack/packages.py b/lib/spack/spack/packages.py index 00834c95d5..4f9f606c89 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.name] = package_class(spec) + 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 -- cgit v1.2.3-60-g2f50