X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Futils.py;h=efae7756527161b35cd377670fa6d4c3a4c8461f;hb=4403a512a0ee03cac1f1fd0c2ce6c0f4ff161533;hp=606ccaad0acec4d5304abb2d65155aa5c6e2d6ad;hpb=dd3fedcc05ac81a071ca025185b7404f93767c68;p=dak.git diff --git a/daklib/utils.py b/daklib/utils.py index 606ccaad..efae7756 100644 --- a/daklib/utils.py +++ b/daklib/utils.py @@ -49,7 +49,7 @@ import daklib.config as config import daklib.daksubprocess from dbconn import DBConn, get_architecture, get_component, get_suite, \ get_override_type, Keyring, session_wrapper, \ - get_active_keyring_paths, get_primary_keyring_path, \ + get_active_keyring_paths, \ get_suite_architectures, get_or_set_metadatakey, DBSource, \ Component, Override, OverrideType from sqlalchemy import desc @@ -1136,6 +1136,7 @@ def check_reverse_depends(removals, suite, arches=None, session=None, cruft=Fals else: all_arches = set(x.arch_string for x in get_suite_architectures(suite)) all_arches -= set(["source", "all"]) + removal_set = set(removals) metakey_d = get_or_set_metadatakey("Depends", session) metakey_p = get_or_set_metadatakey("Provides", session) params = { @@ -1150,7 +1151,7 @@ def check_reverse_depends(removals, suite, arches=None, session=None, cruft=Fals params['arch_id'] = get_architecture(architecture, session).arch_id statement = ''' - SELECT b.id, b.package, s.source, c.name as component, + SELECT b.package, s.source, c.name as component, (SELECT bmd.value FROM binaries_metadata bmd WHERE bmd.bin_id = b.id AND bmd.key_id = :metakey_d_id) AS depends, (SELECT bmp.value FROM binaries_metadata bmp WHERE bmp.bin_id = b.id AND bmp.key_id = :metakey_p_id) AS provides FROM binaries b @@ -1159,9 +1160,9 @@ def check_reverse_depends(removals, suite, arches=None, session=None, cruft=Fals JOIN files_archive_map af ON b.file = af.file_id JOIN component c ON af.component_id = c.id WHERE b.architecture = :arch_id''' - query = session.query('id', 'package', 'source', 'component', 'depends', 'provides'). \ + query = session.query('package', 'source', 'component', 'depends', 'provides'). \ from_statement(statement).params(params) - for binary_id, package, source, component, depends, provides in query: + for package, source, component, depends, provides in query: sources[package] = source p2c[package] = component if depends is not None: @@ -1183,9 +1184,7 @@ def check_reverse_depends(removals, suite, arches=None, session=None, cruft=Fals # If a virtual package is only provided by the to-be-removed # packages, treat the virtual package as to-be-removed too. - for virtual_pkg in virtual_packages: - if virtual_packages[virtual_pkg] == 0: - removals.append(virtual_pkg) + removal_set.update(virtual_pkg for virtual_pkg in virtual_packages if not virtual_packages[virtual_pkg]) # Check binary dependencies (Depends) for package in deps: @@ -1244,7 +1243,7 @@ def check_reverse_depends(removals, suite, arches=None, session=None, cruft=Fals 'metakey_ids': (metakey_bd.key_id, metakey_bdi.key_id), } statement = ''' - SELECT s.id, s.source, string_agg(sm.value, ', ') as build_dep + SELECT s.source, string_agg(sm.value, ', ') as build_dep FROM source s JOIN source_metadata sm ON s.id = sm.src_id WHERE s.id in @@ -1252,9 +1251,9 @@ def check_reverse_depends(removals, suite, arches=None, session=None, cruft=Fals WHERE suite = :suite_id) AND sm.key_id in :metakey_ids GROUP BY s.id, s.source''' - query = session.query('id', 'source', 'build_dep').from_statement(statement). \ + query = session.query('source', 'build_dep').from_statement(statement). \ params(params) - for source_id, source, build_dep in query: + for source, build_dep in query: if source in removals: continue parsed_dep = [] if build_dep is not None: