-
Notifications
You must be signed in to change notification settings - Fork 41
Description
Looking at some converge data it looks like we never hit
pubgrub/src/internal/incompatibility.rs
Lines 197 to 199 in cd91684
| Kind::NotRoot(package, version) => { | |
| DerivationTree::External(External::NotRoot(package.clone(), version.clone())) | |
| } |
This is because conflict_resolution loops until is_terminal is true
pubgrub/src/internal/incompatibility.rs
Lines 146 to 148 in cd91684
| /// Check if an incompatibility should mark the end of the algorithm | |
| /// because it satisfies the root package. | |
| pub fn is_terminal(&self, root_package: &P, root_version: &V) -> bool { |
That is to say that we stop when we have a proof that the root package cannot be built, but do not include the last flourish of the proof that "we are required to build the root package because that's what we were asked to build". If I remember reading the original blog post correctly skipping this piece of mostly redundant information was one of the recommendations, so we could decide that this is a feature and not a bug. If we do then the next breaking release should probably remove that type from the reporting infrastructure.