Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock
X-Debbugs-Cc: report...@packages.debian.org, nis.marten...@web.de
Control: affects -1 + src:reportbug

Please pre-approve package reportbug (pre-upload)

[ Reason ]
Paul Gevers asked if we can have a version of reportbug that prevents
bug 992332 from happening again in bookworm. I'd like to use the
opportunity to include a few other small fixes as well if possible.

[ Impact ]
- Developers will be able to file bookworm-pu requests (#1034260)
- Developers will be able to file unblock requests for udeb-only
packages (#1034143)
- Reportbug won't get package names wrong in unblock requests if the
requested package name contains regex characters (#1031924)
- A developer preparing a reportbug release will be prevented from
uploading a package version that is not PEP440 compliant.
- Kernel info compiled by reportbug will consider an updated linux
kernel taint list.

[ Tests ]
There are no automated tests for the changes. All except the taint list
change have been tested manually.

[ Risks ]
Risks should be low. I'm filing this unblock request using the new
reportbug version that I'm planning to upload.

[ Checklist ]
  [x] all changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in testing

Are the proposed changes okay to be uploaded?
diff -Nru reportbug-11.6.0/debian/changelog reportbug-12.0.0/debian/changelog
--- reportbug-11.6.0/debian/changelog   2022-12-04 19:28:36.000000000 +0100
+++ reportbug-12.0.0/debian/changelog   2023-04-17 13:20:18.000000000 +0200
@@ -1,3 +1,27 @@
+reportbug (12.0.0) unstable; urgency=medium
+
+  [ Benjamin Drung ]
+  * Make Python version PEP440 compliant
+
+  [ Paul Wise ]
+  * Update Linux kernel taint list and location
+
+  [ Nis Martensen ]
+  * debian/control: update standards-version (no changes needed)
+  * reportbug.utils.get_package_status: force literal package name match when
+    calling apt-cache show. Thanks to David Kalnischkies for comprehensive
+    explanations on apt's command line argument features.
+    (Closes: #1031924)
+
+  [ Roland Clobus ]
+  * reportbug.debbugs.check_package_info: fix crash with udeb-only pkg
+    (Closes: #1034143)
+
+  [ Nis Martensen ]
+  * reportbug/utils.py: update CODENAME2SUITE for bookworm (Closes: #1034260)
+
+ -- Nis Martensen <nis.marten...@web.de>  Mon, 17 Apr 2023 13:20:18 +0200
+
 reportbug (11.6.0) unstable; urgency=medium
 
   [ Paul Wise ]
diff -Nru reportbug-11.6.0/debian/control reportbug-12.0.0/debian/control
--- reportbug-11.6.0/debian/control     2022-08-17 20:48:30.000000000 +0200
+++ reportbug-12.0.0/debian/control     2023-04-17 13:00:18.000000000 +0200
@@ -4,7 +4,7 @@
 Maintainer: Reportbug Maintainers <debian-report...@lists.debian.org>
 Uploaders: Sandro Tosi <mo...@debian.org>,
            Nis Martensen <nis.marten...@web.de>,
-Standards-Version: 4.6.1
+Standards-Version: 4.6.2
 Build-Depends: debhelper-compat (= 12),
                dh-python,
                python3,
diff -Nru reportbug-11.6.0/debian/make_pep440_compliant 
reportbug-12.0.0/debian/make_pep440_compliant
--- reportbug-11.6.0/debian/make_pep440_compliant       1970-01-01 
01:00:00.000000000 +0100
+++ reportbug-12.0.0/debian/make_pep440_compliant       2023-04-17 
13:00:18.000000000 +0200
@@ -0,0 +1,24 @@
+#!/usr/bin/python3
+
+import re
+import sys
+
+
+def make_pep440_compliant(version: str) -> str:
+    """Convert the version into a PEP440 compliant version."""
+    public_version_re = re.compile(
+        r"^([0-9][0-9.]*(?:(?:a|b|rc|.post|.dev)[0-9]+)*)\+?"
+    )
+    _, public, local = public_version_re.split(version, maxsplit=1)
+    if not local:
+        return version
+    sanitized_local = re.sub("[+~]+", ".", local).strip(".")
+    pep440_version = f"{public}+{sanitized_local}"
+    assert re.match(
+        "^[a-zA-Z0-9.]+$", sanitized_local
+    ), f"'{pep440_version}' not PEP440 compliant"
+    return pep440_version
+
+
+if __name__ == "__main__":
+    print(make_pep440_compliant(sys.argv[1]))
diff -Nru reportbug-11.6.0/debian/rules reportbug-12.0.0/debian/rules
--- reportbug-11.6.0/debian/rules       2022-04-18 18:33:14.000000000 +0200
+++ reportbug-12.0.0/debian/rules       2023-04-17 13:00:18.000000000 +0200
@@ -3,15 +3,16 @@
 include /usr/share/dpkg/pkg-info.mk
 
 REPORTBUG_VERSION := $(shell python3 -c "import reportbug; 
print(reportbug.VERSION_NUMBER)")
+PEP440_DEB_VERSION := $(shell debian/make_pep440_compliant "$(DEB_VERSION)")
 
 %:
        dh $@ --with=python3
 
 override_dh_auto_build:
        # Test if versions are synchronized (only if releasing); this will bomb 
if not synced
-       if [ "$(DEB_DISTRIBUTION)" != "UNRELEASED" -a "$(REPORTBUG_VERSION)" != 
"$(DEB_VERSION)" ] ; \
+       if [ "$(DEB_DISTRIBUTION)" != "UNRELEASED" -a "$(REPORTBUG_VERSION)" != 
"$(PEP440_DEB_VERSION)" ] ; \
        then \
-               echo 'Please update VERSION_NUMBER variable in 
reportbug/__init__.py'; exit 1 ; \
+               echo 'Please update VERSION_NUMBER variable in 
reportbug/__init__.py to $(PEP440_DEB_VERSION)'; exit 1 ; \
        fi
 
        python3 setup.py build
diff -Nru reportbug-11.6.0/reportbug/debbugs.py 
reportbug-12.0.0/reportbug/debbugs.py
--- reportbug-11.6.0/reportbug/debbugs.py       2022-11-27 10:34:41.000000000 
+0100
+++ reportbug-12.0.0/reportbug/debbugs.py       2023-04-17 13:18:40.000000000 
+0200
@@ -249,7 +249,7 @@
     pkgs = utils.get_source_package(package, only_source=True)
     if pkgs:
         info = check_package_info(pkgs[0][0])
-        if info[1]:
+        if info and info[1]:
             return info
 
     return None
diff -Nru reportbug-11.6.0/reportbug/__init__.py 
reportbug-12.0.0/reportbug/__init__.py
--- reportbug-11.6.0/reportbug/__init__.py      2022-12-04 19:28:36.000000000 
+0100
+++ reportbug-12.0.0/reportbug/__init__.py      2023-04-17 13:20:18.000000000 
+0200
@@ -25,7 +25,7 @@
 __all__ = ['bugreport', 'utils', 'urlutils', 'checkbuildd', 'checkversions',
            'debbugs', 'exceptions', 'submit', 'tempfile', 'mailer']
 
-VERSION_NUMBER = "11.6.0"
+VERSION_NUMBER = "12.0.0"
 
 VERSION = "reportbug " + VERSION_NUMBER
 COPYRIGHT = VERSION + '\nCopyright (C) 1999-2008 Chris Lawrence 
<lawre...@debian.org>' + \
diff -Nru reportbug-11.6.0/reportbug/utils.py 
reportbug-12.0.0/reportbug/utils.py
--- reportbug-11.6.0/reportbug/utils.py 2022-11-27 09:37:15.000000000 +0100
+++ reportbug-12.0.0/reportbug/utils.py 2023-04-17 13:18:40.000000000 +0200
@@ -86,13 +86,13 @@
                    '/usr/man', '/usr/doc', '/usr/bin']
 
 # A map between codenames and suites
-CODENAME2SUITE = {'wheezy': 'oldoldoldoldstable',
-                  'jessie': 'oldoldoldstable',
-                  'stretch': 'oldoldstable',
-                  'buster': 'oldstable',
-                  'bullseye': 'stable',
-                  'bookworm': 'testing',
-                  'trixie': 'next-testing',
+CODENAME2SUITE = {'jessie': 'oldoldoldoldstable',
+                  'stretch': 'oldoldoldstable',
+                  'buster': 'oldoldstable',
+                  'bullseye': 'oldstable',
+                  'bookworm': 'stable',
+                  'trixie': 'testing',
+                  'forky': 'next-testing',
                   'sid': 'unstable',
                   'experimental': 'experimental'}
 SUITE2CODENAME = dict([(suite, codename) for codename, suite in 
list(CODENAME2SUITE.items())])
@@ -651,8 +651,16 @@
 
     packarg = shlex.quote(package)
     if avail:
-        output = get_command_output(
-            "LC_ALL=C.UTF-8 apt-cache show %s 2>/dev/null" % packarg)
+        # Get the information on the package from apt instead of dpkg.
+        # XXX: Only call `apt-cache show $pkg` if we already know that apt
+        # knows about the package. See #716763 for why.  A better
+        # solution would be to collect all information through
+        # python-apt directly.
+        if package in _apt_cache:
+            output = get_command_output(
+                "LC_ALL=C.UTF-8 apt-cache show %s 2>/dev/null" % packarg)
+        else:
+            output = ""
     else:
         # filter through dpkg-query to automatically append arch
         # qualifier in the cases where this is needed
@@ -1954,7 +1962,8 @@
     -------
     list of strings
     """
-    # 
https://github.com/torvalds/linux/blob/cedc5b6aab493f6b1b1d381dccc0cc082da7d3d8/include/linux/kernel.h#L582
+    # 
https://github.com/torvalds/linux/blob/2852ca7fba9f77b204f0fe953b31fadd0057c936/include/linux/panic.h#L52
+
     # this is going to need updating (but maybe not that often)
     TAINT_FLAGS = [
         'TAINT_PROPRIETARY_MODULE',
@@ -1975,6 +1984,7 @@
         'TAINT_LIVEPATCH',
         'TAINT_AUX',
         'TAINT_RANDSTRUCT',
+        'TAINT_TEST',
     ]
 
     flags = []

Reply via email to