Better document the new auto-hinter functionality.

Signed-off-by: Adam D. Barratt <adam@adam-barratt.org.uk>
master
Adam D. Barratt 13 years ago
parent 7666c5e2d5
commit fe37b57c91

@ -2820,9 +2820,18 @@ class Britney:
self.upgrade_me = upgrade_me self.upgrade_me = upgrade_me
def auto_hinter(self): def auto_hinter(self):
"""Auto hint circular dependencies """Auto-generate "easy" hints.
This method tries to auto hint circular dependencies analyzing the update This method attempts to generate "easy" hints for sets of packages which
must migrate together. Beginning with a package which does not depend on
any other package (in terms of excuses), a list of dependencies and
reverse dependencies is recursively created.
Once all such lists have been generated, any which are subsets of other
lists are ignored in favour of the larger lists. The remaining lists are
then attempted in turn as "easy" hints.
We also try to auto hint circular dependencies analyzing the update
excuses relationships. If they build a circular dependency, which we already excuses relationships. If they build a circular dependency, which we already
know as not-working with the standard do_all algorithm, try to `easy` them. know as not-working with the standard do_all algorithm, try to `easy` them.
""" """
@ -2871,10 +2880,13 @@ class Britney:
for i in range(len(candidates)): for i in range(len(candidates)):
for j in range(i+1, len(candidates)): for j in range(i+1, len(candidates)):
if i in to_skip or j in to_skip: if i in to_skip or j in to_skip:
# we already know this list isn't interesting
continue continue
elif frozenset(candidates[i]) >= frozenset(candidates[j]): elif frozenset(candidates[i]) >= frozenset(candidates[j]):
# j is a subset of i; ignore it
to_skip.append(j) to_skip.append(j)
elif frozenset(candidates[i]) <= frozenset(candidates[j]): elif frozenset(candidates[i]) <= frozenset(candidates[j]):
# i is a subset of j; ignore it
to_skip.append(i) to_skip.append(i)
for i in range(len(candidates)): for i in range(len(candidates)):
if i not in to_skip: if i not in to_skip:

Loading…
Cancel
Save