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.
This commit is contained in:
Fabian Vogt 2024-10-30 10:59:44 +01:00
parent fca81c89e3
commit a3417b2907

View File

@ -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):