mirror of
https://git.launchpad.net/~ubuntu-release/britney/+git/britney2-ubuntu
synced 2025-03-12 11:51:09 +00:00
Move recursive reverse dependency calculation into get_reverse_tree()
Signed-off-by: Adam D. Barratt <adam@adam-barratt.org.uk>
This commit is contained in:
parent
5498c6c4a1
commit
d74efb8655
42
britney.py
42
britney.py
@ -2046,23 +2046,8 @@ class Britney:
|
|||||||
# save the old binary for undo
|
# save the old binary for undo
|
||||||
undo['binaries'][p] = binaries[parch][0][binary]
|
undo['binaries'][p] = binaries[parch][0][binary]
|
||||||
# all the reverse dependencies are affected by the change
|
# all the reverse dependencies are affected by the change
|
||||||
# recursively loop through the reverse dependencies
|
affected.extend( [ (x, parch) for x in \
|
||||||
rev_deps = set(binaries[parch][0][binary][RDEPENDS])
|
self.get_reverse_tree(binary, parch, 'testing') ] )
|
||||||
seen = set()
|
|
||||||
while len(rev_deps) > 0:
|
|
||||||
# mark all of the current iteration of packages as affected
|
|
||||||
affected.extend( [ (x, parch) for x in rev_deps ] )
|
|
||||||
# and as processed
|
|
||||||
seen |= rev_deps
|
|
||||||
# generate the next iteration, which is the reverse-dependencies of
|
|
||||||
# the current iteration
|
|
||||||
new_rev_deps = [ binaries[parch][0][x][RDEPENDS] for x in rev_deps \
|
|
||||||
if x in binaries[parch][0] ]
|
|
||||||
# flatten the list-of-lists, filtering out already handled packages
|
|
||||||
# in the process
|
|
||||||
rev_deps = set([ package for sublist in new_rev_deps \
|
|
||||||
for package in sublist if package not in seen ])
|
|
||||||
# remove duplicates from the list of affected packages
|
|
||||||
affected = list(set(affected))
|
affected = list(set(affected))
|
||||||
# remove the provided virtual packages
|
# remove the provided virtual packages
|
||||||
for j in binaries[parch][0][binary][PROVIDES]:
|
for j in binaries[parch][0][binary][PROVIDES]:
|
||||||
@ -2148,6 +2133,29 @@ class Britney:
|
|||||||
# return the package name, the suite, the list of affected packages and the undo dictionary
|
# return the package name, the suite, the list of affected packages and the undo dictionary
|
||||||
return (pkg_name, suite, affected, undo)
|
return (pkg_name, suite, affected, undo)
|
||||||
|
|
||||||
|
def get_reverse_tree(self, pkg, arch, suite):
|
||||||
|
packages = []
|
||||||
|
binaries = self.binaries[suite][arch][0]
|
||||||
|
|
||||||
|
rev_deps = set(binaries[pkg][RDEPENDS])
|
||||||
|
seen = set()
|
||||||
|
while len(rev_deps) > 0:
|
||||||
|
# mark all of the current iteration of packages as affected
|
||||||
|
packages.extend( [ x for x in rev_deps ] )
|
||||||
|
# and as processed
|
||||||
|
seen |= rev_deps
|
||||||
|
# generate the next iteration, which is the reverse-dependencies of
|
||||||
|
# the current iteration
|
||||||
|
new_rev_deps = [ binaries[x][RDEPENDS] for x in rev_deps \
|
||||||
|
if x in binaries ]
|
||||||
|
# flatten the list-of-lists, filtering out already handled packages
|
||||||
|
# in the process
|
||||||
|
rev_deps = set([ package for sublist in new_rev_deps \
|
||||||
|
for package in sublist if package not in seen ])
|
||||||
|
# remove duplicates from the list of affected packages
|
||||||
|
packages = list(set(packages))
|
||||||
|
return packages
|
||||||
|
|
||||||
def get_full_tree(self, pkg, arch, suite):
|
def get_full_tree(self, pkg, arch, suite):
|
||||||
"""Calculate the full dependency tree for the given package
|
"""Calculate the full dependency tree for the given package
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user