From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2201) id A4BBD3858D32; Mon, 20 Mar 2023 23:21:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A4BBD3858D32 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1679354484; bh=BfK7A3i7iiivByroTYlpJ85dn0TnA+mExGoaamQQ5nM=; h=To:Subject:Date:From:From; b=ksXrFuGqm23H+KoOSJVf/bRHw2dA2a7QGWwdqMQauwMtztf1NRIT+HoAu4E8KjiGy c9n9zJcT/82IAmZ8kWlGJjEk0lfuasuG5n9/ZFwCybKSdu/49mj+prYhIbPBadQDVn 6iUuLuLpdawchy8CqTwDXwi9hWdpNeaWHvlFXwcs= To: cygwin-apps-cvs@sourceware.org Subject: [calm - Cygwin server-side packaging maintenance script] branch master, updated. 20230209-13-g151f822 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: a520919a8782f90a4dbdaeffcf1c35e3585f8aec X-Git-Newrev: 151f8222b58472cf2799f0a69a0057aad81d1f4b Message-Id: <20230320232124.A4BBD3858D32@sourceware.org> Date: Mon, 20 Mar 2023 23:21:24 +0000 (GMT) From: Jon Turney List-Id: https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=151f8222b58472cf2799f0a69a0057aad81d1f4b commit 151f8222b58472cf2799f0a69a0057aad81d1f4b Author: Jon Turney 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 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 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('

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

' % perl_provide, file=body) + + print('', file=body) + print('', file=body) + + for pr in sorted(pr_list, key=lambda i: (i.depends, i.pn)): + print('' % + (linkify(pr.pn, pr.po), linkify(pr.spn, pr.spo), pr.bv, pr.depends), file=body) + + print('
packagesrcpackageversiondepends
%s%s%s%s
', 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',