summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/spec.py17
1 files changed, 13 insertions, 4 deletions
diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py
index 32e08d3896..05db84806f 100644
--- a/lib/spack/spack/spec.py
+++ b/lib/spack/spack/spec.py
@@ -1985,10 +1985,19 @@ class Spec(object):
try:
changed |= spec_deps[dep.name].constrain(dep)
except UnsatisfiableSpecError as e:
- e.message = "Invalid spec: '%s'. "
- e.message += "Package %s requires %s %s, but spec asked for %s"
- e.message %= (spec_deps[dep.name], dep.name,
- e.constraint_type, e.required, e.provided)
+ fmt = 'An unsatisfiable {0}'.format(e.constraint_type)
+ fmt += ' constraint has been detected for spec:'
+ fmt += '\n\n{0}\n\n'.format(spec_deps[dep.name].tree(indent=4))
+ fmt += 'while trying to concretize the partial spec:'
+ fmt += '\n\n{0}\n\n'.format(self.tree(indent=4))
+ fmt += '{0} requires {1} {2} {3}, but spec asked for {4}'
+ e.message = fmt.format(
+ self.name,
+ dep.name,
+ e.constraint_type,
+ e.required,
+ e.provided
+ )
raise e
# Add merged spec to my deps and recurse