From a3417b29072b2bbd300a832f30d96461dde3e249 Mon Sep 17 00:00:00 2001 From: Fabian Vogt Date: Wed, 30 Oct 2024 10:59:44 +0100 Subject: [PATCH] cleanup_rings: Make package_get_requiredby more memoize cache friendly For debugging it's very useful to use @memoize(session=False), but that did not work because the self parameter pickled to a different key for each run, preventing cache hits. Avoid the self parameter. --- osclib/cleanup_rings.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/osclib/cleanup_rings.py b/osclib/cleanup_rings.py index 0ba5115e..0dd54ec1 100644 --- a/osclib/cleanup_rings.py +++ b/osclib/cleanup_rings.py @@ -146,12 +146,12 @@ class CleanupRings(object): self.pkgdeps[b] = 'MYinstall' @memoize(session=True) - def package_get_requiredby(self, project, package, repo, arch): + def package_get_requiredby(apiurl, project, package, repo, arch): "For a given package, return which source packages it provides runtime deps for." ret = set() - for fileinfo in fileinfo_ext_all(self.api.apiurl, project, repo, arch, package): + for fileinfo in fileinfo_ext_all(apiurl, project, repo, arch, package): for requiredby in fileinfo.findall('provides_ext/requiredby[@name]'): - ret.add(self.bin2src[requiredby.get('name')]) + ret.add(requiredby.get('name')) return ret @@ -247,7 +247,8 @@ class CleanupRings(object): # is needed (no built images) so we continue where x86_64 left off maybe_unneeded = self.sources.difference(all_needed_sources) for pkg in sorted(maybe_unneeded): - requiredby = self.package_get_requiredby(prj, pkg, 'standard', arch) + requiredby = CleanupRings.package_get_requiredby(self.api.apiurl, prj, pkg, 'standard', arch) + requiredby = {self.bin2src[pkg] for pkg in requiredby} requiredby = requiredby.intersection(all_needed_sources) # Required by needed packages? if len(requiredby):