From 5fc54135fc49a4dd7718bfb76ea9733b0d1cee31 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Thu, 27 Apr 2023 20:11:52 +0100 Subject: Add a ruby rebuilds report Generalize the perl rebuild report logic to work for any version provide: --- calm/reports.py | 65 ++++++++++++++++-------------- test/testdata/process_arch/htdocs.expected | 2 +- 2 files changed, 35 insertions(+), 32 deletions(-) diff --git a/calm/reports.py b/calm/reports.py index 20a167c..1773840 100644 --- a/calm/reports.py +++ b/calm/reports.py @@ -188,49 +188,51 @@ def deprecated(args, packages, reportsdir): template('Deprecated shared library packages', body.getvalue(), f) -# produce a report of packages which need rebuilding for latest perl major version +# produce a report of packages which need rebuilding for the latest major +# version version provides # -def perlrebuild(args, packages, reportsdir): +def provides_rebuild(args, packages, reportfile, provide_package): pr_list = [] arch = 'x86_64' # XXX: look into how we can change this, after x86 is dropped - perl_package = packages[arch].get('perl_base', None) - perl_provide = None + pp_package = packages[arch].get(provide_package, None) + pp_provide = None - if perl_package: - perl_bv = perl_package.best_version - perl_provide = perl_package.version_hints[perl_bv]['provides'] + if pp_package: + pp_bv = pp_package.best_version + pp_provide = pp_package.version_hints[pp_bv]['provides'] + pp_provide_base = re.sub(r'\d+$', '', pp_provide) - for p in packages[arch]: - po = packages[arch][p] - bv = po.best_version + for p in packages[arch]: + po = packages[arch][p] + bv = po.best_version - depends = packages[arch][p].version_hints[bv]['depends'].split(', ') - depends = [re.sub(r'(.*) +\(.*\)', r'\1', r) for r in depends] + depends = packages[arch][p].version_hints[bv]['depends'].split(', ') + depends = [re.sub(r'(.*) +\(.*\)', r'\1', r) for r in depends] - for d in depends: - if not re.match(r'perl\d+_\d+', d): - continue + for d in depends: + if not d.startswith(pp_provide_base): + continue - if d == perl_provide: - continue + if d == pp_provide: + continue - # requires an old perl provide - pr = types.SimpleNamespace() - pr.pn = p - pr.po = po - pr.spn = po.srcpackage(bv) - pr.spo = packages[arch][pr.spn] - pr.depends = d - pr.bv = bv + # requires an old provide + pr = types.SimpleNamespace() + pr.pn = p + pr.po = po + pr.spn = po.srcpackage(bv) + pr.spo = packages[arch][pr.spn] + pr.depends = d + pr.bv = bv - pr_list.append(pr) - break + pr_list.append(pr) + break body = io.StringIO() - print('

Packages whose latest version depends on a perl version provides: other than %s.

' % perl_provide, file=body) + print('

Packages whose latest version depends on a version provides: other than %s.

' % pp_provide, file=body) print('', file=body) print('', file=body) @@ -241,8 +243,7 @@ def perlrebuild(args, packages, reportsdir): print('
packagesrcpackageversiondepends
', file=body) - r = os.path.join(reportsdir, 'perl_rebuilds.html') - with utils.open_amifc(r) as f: + with utils.open_amifc(reportfile) as f: template('Packages needing rebuilds for latest perl', body.getvalue(), f) @@ -256,4 +257,6 @@ def do_reports(args, packages): unmaintained(args, packages, reportsdir) deprecated(args, packages, reportsdir) - perlrebuild(args, packages, reportsdir) + + provides_rebuild(args, packages, os.path.join(reportsdir, 'perl_rebuilds.html'), 'perl_base') + provides_rebuild(args, packages, os.path.join(reportsdir, 'ruby_rebuilds.html'), 'ruby') diff --git a/test/testdata/process_arch/htdocs.expected b/test/testdata/process_arch/htdocs.expected index 46d9d7e..55585d6 100644 --- a/test/testdata/process_arch/htdocs.expected +++ b/test/testdata/process_arch/htdocs.expected @@ -1,5 +1,5 @@ {'.': ['calm.db', 'packages.inc', 'src_packages.inc'], - 'reports': ['deprecated_so.html', 'perl_rebuilds.html', 'unmaintained.html'], + 'reports': ['deprecated_so.html', 'perl_rebuilds.html', 'ruby_rebuilds.html', 'unmaintained.html'], 'summary': ['arc-src.html', 'arc.html', 'base-cygwin.html', -- cgit v1.2.3