public inbox for cygwin-apps-cvs@sourceware.org help / color / mirror / Atom feed
From: Jon Turney <jturney@sourceware.org> To: cygwin-apps-cvs@sourceware.org Subject: [calm - Cygwin server-side packaging maintenance script] branch master, updated. 20230209-13-g151f822 Date: Mon, 20 Mar 2023 23:21:24 +0000 (GMT) [thread overview] Message-ID: <20230320232124.A4BBD3858D32@sourceware.org> (raw) https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=151f8222b58472cf2799f0a69a0057aad81d1f4b commit 151f8222b58472cf2799f0a69a0057aad81d1f4b Author: Jon Turney <jon.turney@dronecode.org.uk> Date: Mon Mar 20 23:19:00 2023 +0000 Add future texlive provides Future work: make these regexes so we don't have to add them again in a years time. https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=de558c11a71f7fe0f39fb6526aa5b4d2f9a23c1a commit de558c11a71f7fe0f39fb6526aa5b4d2f9a23c1a Author: Jon Turney <jon.turney@dronecode.org.uk> Date: Wed Mar 15 21:40:30 2023 +0000 Make tests cover running reports as well https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=37f8f613938f0d6adcabc26b39e29a0b31540c3f commit 37f8f613938f0d6adcabc26b39e29a0b31540c3f Author: Jon Turney <jon.turney@dronecode.org.uk> Date: Wed Mar 15 20:39:25 2023 +0000 Add a perl rebuild report Diff: --- calm/past_mistakes.py | 2 + calm/reports.py | 59 ++++++++++++++++++++++++++++++ test/test_calm.py | 2 + test/testdata/process_arch/htdocs.expected | 1 + 4 files changed, 64 insertions(+) diff --git a/calm/past_mistakes.py b/calm/past_mistakes.py index fed6c49..e102337 100644 --- a/calm/past_mistakes.py +++ b/calm/past_mistakes.py @@ -160,6 +160,8 @@ nonexistent_provides = [ 'rxvt-unicode-X-debuginfo', 'xfce4-mixer-debuginfo', 'python3-dbus-debuginfo', + 'tl_2023', + 'tl_basic_2023', ] # provides: which don't exist and packages which require them should be expired diff --git a/calm/reports.py b/calm/reports.py index 43b9030..20a167c 100644 --- a/calm/reports.py +++ b/calm/reports.py @@ -188,6 +188,64 @@ 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 +# +def perlrebuild(args, packages, reportsdir): + 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 + + if perl_package: + perl_bv = perl_package.best_version + perl_provide = perl_package.version_hints[perl_bv]['provides'] + + 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] + + for d in depends: + if not re.match(r'perl\d+_\d+', d): + continue + + if d == perl_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 + + pr_list.append(pr) + break + + body = io.StringIO() + print(' <p>Packages whose latest version depends on a perl version provides: other than %s.</p>' % perl_provide, file=body) + + print('<table class="grid">', file=body) + print('<tr><th>package</th><th>srcpackage</th><th>version</th><th>depends</th></tr>', file=body) + + for pr in sorted(pr_list, key=lambda i: (i.depends, i.pn)): + print('<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>' % + (linkify(pr.pn, pr.po), linkify(pr.spn, pr.spo), pr.bv, pr.depends), file=body) + + print('</table>', file=body) + + r = os.path.join(reportsdir, 'perl_rebuilds.html') + with utils.open_amifc(r) as f: + template('Packages needing rebuilds for latest perl', body.getvalue(), f) + + # def do_reports(args, packages): if args.dryrun: @@ -198,3 +256,4 @@ def do_reports(args, packages): unmaintained(args, packages, reportsdir) deprecated(args, packages, reportsdir) + perlrebuild(args, packages, reportsdir) diff --git a/test/test_calm.py b/test/test_calm.py index 473e235..11697dc 100755 --- a/test/test_calm.py +++ b/test/test_calm.py @@ -45,6 +45,7 @@ import calm.hint as hint import calm.maintainers as maintainers import calm.package as package import calm.pkg2html as pkg2html +import calm.reports as reports import calm.uploads as uploads from calm.version import SetupVersion @@ -447,6 +448,7 @@ class CalmTest(unittest.TestCase): pkg2html.update_package_listings(args, packages) package.write_setup_ini(args, packages['x86_64'], 'x86_64') + reports.do_reports(args, packages) with open(os.path.join(args.rel_area, 'setup.ini')) as inifile: results = inifile.read() diff --git a/test/testdata/process_arch/htdocs.expected b/test/testdata/process_arch/htdocs.expected index 46462d6..46d9d7e 100644 --- a/test/testdata/process_arch/htdocs.expected +++ b/test/testdata/process_arch/htdocs.expected @@ -1,4 +1,5 @@ {'.': ['calm.db', 'packages.inc', 'src_packages.inc'], + 'reports': ['deprecated_so.html', 'perl_rebuilds.html', 'unmaintained.html'], 'summary': ['arc-src.html', 'arc.html', 'base-cygwin.html',
reply other threads:[~2023-03-20 23:21 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20230320232124.A4BBD3858D32@sourceware.org \ --to=jturney@sourceware.org \ --cc=cygwin-apps-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).