diff --git a/britney.py b/britney.py index 5952535..f258e87 100755 --- a/britney.py +++ b/britney.py @@ -2535,14 +2535,14 @@ class Britney(object): self.do_all(actions=removals) # smooth updates - removals = old_libraries(self.sources, self.binaries, self.options.outofsync_arches) + removals = old_libraries(self.suite_info, self.options.outofsync_arches) if self.options.smooth_updates: self.logger.info("> Removing old packages left in testing from smooth updates") if removals: output_logger.info("Removing packages left in testing for smooth updates (%d):", len(removals)) log_and_format_old_libraries(self.output_logger, removals) self.do_all(actions=removals) - removals = old_libraries(self.sources, self.binaries, self.options.outofsync_arches) + removals = old_libraries(self.suite_info, self.options.outofsync_arches) else: self.logger.info("> Not removing old packages left in testing from smooth updates" " (smooth-updates disabled)") diff --git a/britney2/utils.py b/britney2/utils.py index f082602..dfb57dd 100644 --- a/britney2/utils.py +++ b/britney2/utils.py @@ -474,27 +474,27 @@ def write_controlfiles(sources, packages, suite, basedir): write_sources(sources_s, os.path.join(basedir, 'Sources')) -def old_libraries(sources, packages, outofsync_arches=frozenset()): - """Detect old libraries left in testing for smooth transitions +def old_libraries(suite_info, outofsync_arches=frozenset()): + """Detect old libraries left in the target suite for smooth transitions - This method detects old libraries which are in testing but no + This method detects old libraries which are in the target suite but no longer built from the source package: they are still there because other packages still depend on them, but they should be removed as soon as possible. For "outofsync" architectures, outdated binaries are allowed to be in - testing, so they are only added to the removal list if they are no longer - in unstable. + the target suite, so they are only added to the removal list if they + are no longer in the (primary) source suite. """ - sources_t = sources['testing'] - testing = packages['testing'] - unstable = packages['unstable'] + sources_t = suite_info.target_suite.sources + binaries_t = suite_info.target_suite.binaries + binaries_s = suite_info.primary_source_suite.binaries removals = [] - for arch in testing: - for pkg_name in testing[arch][0]: - pkg = testing[arch][0][pkg_name] + for arch in binaries_t: + for pkg_name in binaries_t[arch][0]: + pkg = binaries_t[arch][0][pkg_name] if sources_t[pkg.source].version != pkg.source_version and \ - (arch not in outofsync_arches or pkg_name not in unstable[arch][0]): + (arch not in outofsync_arches or pkg_name not in binaries_s[arch][0]): migration = "-" + "/".join((pkg_name, arch, pkg.source_version)) removals.append(MigrationItem(migration)) return removals