summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorscheibelp <scheibel1@llnl.gov>2018-01-12 10:53:11 -0800
committerGitHub <noreply@github.com>2018-01-12 10:53:11 -0800
commitf4101550d134c697c98d25ca27054ee04ebac0a9 (patch)
treea84ecd2753c466b9836c2a501d66416c5bca9940 /lib
parent9e3f8c0d79d6f2c02f63599cf58527d596e1a445 (diff)
downloadspack-f4101550d134c697c98d25ca27054ee04ebac0a9.tar.gz
spack-f4101550d134c697c98d25ca27054ee04ebac0a9.tar.bz2
spack-f4101550d134c697c98d25ca27054ee04ebac0a9.tar.xz
spack-f4101550d134c697c98d25ca27054ee04ebac0a9.zip
Relax conflict checks for externals (#6907)
This updates the conflict-checking logic to require that the conflict spec matches exactly and that all fields mentioned in the conflict spec are present in the concretized spec in order to report a conflict. This will automatically skip all conflict checks for dependencies of externals (since externals strip dependencies). This will not affect non-external packages since all fields and dependencies are fully specified for such packages.
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/spec.py4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py
index e29c1bed3c..eb40559ec5 100644
--- a/lib/spack/spack/spec.py
+++ b/lib/spack/spack/spec.py
@@ -1869,9 +1869,9 @@ class Spec(object):
matches = []
for x in self.traverse():
for conflict_spec, when_list in x.package.conflicts.items():
- if x.satisfies(conflict_spec):
+ if x.satisfies(conflict_spec, strict=True):
for when_spec, msg in when_list:
- if x.satisfies(when_spec):
+ if x.satisfies(when_spec, strict=True):
matches.append((x, conflict_spec, when_spec, msg))
if matches:
raise ConflictsInSpecError(self, matches)