@ -191,6 +191,7 @@ import urllib
import apt_pkg
from functools import reduce , partial
from itertools import chain , repeat
from operator import attrgetter
if __name__ == ' __main__ ' :
@ -1891,8 +1892,7 @@ class Britney(object):
# save the old binary for undo
undo [ ' binaries ' ] [ p ] = binaries [ parch ] [ 0 ] [ binary ]
# all the reverse dependencies are affected by the change
affected . update ( [ ( x , parch ) for x in \
self . get_reverse_tree ( binary , parch , ' testing ' ) ] )
affected . update ( self . get_reverse_tree ( binary , parch , ' testing ' ) )
# remove the provided virtual packages
for j in binaries [ parch ] [ 0 ] [ binary ] [ PROVIDES ] :
key = j + " / " + parch
@ -1916,8 +1916,7 @@ class Britney(object):
# updates but not supported as a manual hint
elif item . package in binaries [ item . architecture ] [ 0 ] :
undo [ ' binaries ' ] [ item . package + " / " + item . architecture ] = binaries [ item . architecture ] [ 0 ] [ item . package ]
affected . update ( [ ( x , item . architecture ) for x in \
self . get_reverse_tree ( item . package , item . architecture , ' testing ' ) ] )
affected . update ( self . get_reverse_tree ( item . package , item . architecture , ' testing ' ) )
del binaries [ item . architecture ] [ 0 ] [ item . package ]
self . systems [ item . architecture ] . remove_binary ( item . package )
@ -1935,8 +1934,7 @@ class Britney(object):
# save the old binary package
undo [ ' binaries ' ] [ p ] = binaries [ parch ] [ 0 ] [ binary ]
# all the reverse dependencies are affected by the change
affected . update ( [ ( x , parch ) for x in \
self . get_reverse_tree ( binary , parch , ' testing ' ) ] )
affected . update ( self . get_reverse_tree ( binary , parch , ' testing ' ) )
# all the reverse conflicts and their dependency tree are affected by the change
for j in binaries [ parch ] [ 0 ] [ binary ] [ RCONFLICTS ] :
key = ( j , parch )
@ -1958,8 +1956,7 @@ class Britney(object):
for rdep in tundo [ ' binaries ' ] [ p ] [ RDEPENDS ] :
if rdep in binaries [ parch ] [ 0 ] and rdep not in source [ BINARIES ] :
affected . add ( ( rdep , parch ) )
affected . update ( [ ( x , parch ) for x in \
self . get_reverse_tree ( rdep , parch , ' testing ' ) ] )
affected . update ( self . get_reverse_tree ( rdep , parch , ' testing ' ) )
# add/update the binary package
binaries [ parch ] [ 0 ] [ binary ] = self . binaries [ item . suite ] [ parch ] [ 0 ] [ binary ]
self . systems [ parch ] . add_binary ( binary , binaries [ parch ] [ 0 ] [ binary ] [ : PROVIDES ] + \
@ -1974,8 +1971,7 @@ class Britney(object):
undo [ ' virtual ' ] [ key ] = binaries [ parch ] [ 1 ] [ j ] [ : ]
binaries [ parch ] [ 1 ] [ j ] . append ( binary )
# all the reverse dependencies are affected by the change
affected . update ( [ ( x , parch ) for x in \
self . get_reverse_tree ( binary , parch , ' testing ' ) ] )
affected . update ( self . get_reverse_tree ( binary , parch , ' testing ' ) )
# register reverse dependencies and conflicts for the new binary packages
for p in source [ BINARIES ] :
@ -2004,9 +2000,9 @@ class Britney(object):
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 ] )
return seen
rev_deps = set ( [ package for package in chain . from_iterable ( new_rev_deps ) \
if package not in seen ] )
return zip ( seen , repeat ( arch ) )
def get_full_tree ( self , pkg , arch , suite ) :
""" Calculate the full dependency tree for the given package