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.
This commit is contained in:
parent
9e3f8c0d79
commit
f4101550d1
@ -1869,9 +1869,9 @@ def concretize(self):
|
|||||||
matches = []
|
matches = []
|
||||||
for x in self.traverse():
|
for x in self.traverse():
|
||||||
for conflict_spec, when_list in x.package.conflicts.items():
|
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:
|
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))
|
matches.append((x, conflict_spec, when_spec, msg))
|
||||||
if matches:
|
if matches:
|
||||||
raise ConflictsInSpecError(self, matches)
|
raise ConflictsInSpecError(self, matches)
|
||||||
|
Loading…
Reference in New Issue
Block a user