Package: lintian-brush
Version: 0.16
Severity: wishlist

First patch implements new upgrade path, second is just minor code
cleanup.

From d03695297777c1c972ca2422da145165e4e4250f Mon Sep 17 00:00:00 2001
From: Dmitry Bogatov <kact...@debian.org>
Date: Tue, 16 Jul 2019 18:08:53 +0000
Subject: [PATCH 1/2] Add upgrade path for standards 4.3.0 -> 4.4.0

Policy 4.4.0 now recommends debhelper. If package uses debhelper,
it can safely upgrade from 4.3.0.
---
 fixers/out-of-date-standards-version.py       | 19 ++++++++++++++++++-
 .../4.4.0-nodh/in/debian/control              |  2 ++
 .../4.4.0-nodh/message                        |  3 +++
 .../4.4.0-nodh/out/debian/control             |  2 ++
 .../4.4.0/in/debian/control                   |  3 +++
 .../4.4.0/message                             |  3 +++
 .../4.4.0/out/debian/control                  |  3 +++
 7 files changed, 34 insertions(+), 1 deletion(-)
 create mode 100644 
tests/out-of-date-standards-version/4.4.0-nodh/in/debian/control
 create mode 100644 tests/out-of-date-standards-version/4.4.0-nodh/message
 create mode 100644 
tests/out-of-date-standards-version/4.4.0-nodh/out/debian/control
 create mode 100644 tests/out-of-date-standards-version/4.4.0/in/debian/control
 create mode 100644 tests/out-of-date-standards-version/4.4.0/message
 create mode 100644 tests/out-of-date-standards-version/4.4.0/out/debian/control

diff --git a/fixers/out-of-date-standards-version.py 
b/fixers/out-of-date-standards-version.py
index 5e8201d..7a0c822 100755
--- a/fixers/out-of-date-standards-version.py
+++ b/fixers/out-of-date-standards-version.py
@@ -1,13 +1,15 @@
 #!/usr/bin/python3
 
 import os
-from lintian_brush.control import update_control
+from lintian_brush.control import update_control, get_relation
+from debian.deb822 import Deb822
 
 
 # Dictionary mapping source and target versions
 upgrade_path = {
     "4.1.0": "4.1.1",
     "4.2.0": "4.2.1",
+    "4.3.0": "4.4.0",
 }
 
 
@@ -15,8 +17,23 @@ def check_4_1_1():
     return os.path.exists("debian/changelog")
 
 
+def check_4_4_0():
+    "Check that package uses debhelper."
+    if os.path.exists("debian/compat"):
+        return True
+    with open('debian/control') as f:
+        source = next(Deb822.iter_paragraphs(f))
+        build_deps = source.get('Build-Depends', '')
+        try:
+            get_relation(build_deps, 'debhelper-compat')
+            return True
+        except KeyError:
+            return False
+
+
 check_requirements = {
     "4.1.1": check_4_1_1,
+    "4.4.0": check_4_4_0,
 }
 
 
diff --git a/tests/out-of-date-standards-version/4.4.0-nodh/in/debian/control 
b/tests/out-of-date-standards-version/4.4.0-nodh/in/debian/control
new file mode 100644
index 0000000..5f54dd7
--- /dev/null
+++ b/tests/out-of-date-standards-version/4.4.0-nodh/in/debian/control
@@ -0,0 +1,2 @@
+Source: lintrian-brush
+Standards-version: 4.3.0
diff --git a/tests/out-of-date-standards-version/4.4.0-nodh/message 
b/tests/out-of-date-standards-version/4.4.0-nodh/message
new file mode 100644
index 0000000..05ec0b1
--- /dev/null
+++ b/tests/out-of-date-standards-version/4.4.0-nodh/message
@@ -0,0 +1,3 @@
+Update standards version, no changes needed.
+Certainty: certain
+Fixed-Lintian-Tags: out-of-date-standards-version
diff --git a/tests/out-of-date-standards-version/4.4.0-nodh/out/debian/control 
b/tests/out-of-date-standards-version/4.4.0-nodh/out/debian/control
new file mode 100644
index 0000000..5f54dd7
--- /dev/null
+++ b/tests/out-of-date-standards-version/4.4.0-nodh/out/debian/control
@@ -0,0 +1,2 @@
+Source: lintrian-brush
+Standards-version: 4.3.0
diff --git a/tests/out-of-date-standards-version/4.4.0/in/debian/control 
b/tests/out-of-date-standards-version/4.4.0/in/debian/control
new file mode 100644
index 0000000..06deee4
--- /dev/null
+++ b/tests/out-of-date-standards-version/4.4.0/in/debian/control
@@ -0,0 +1,3 @@
+Source: lintrian-brush
+Standards-version: 4.3.0
+Build-Depends: debhelper-compat (= 11)
diff --git a/tests/out-of-date-standards-version/4.4.0/message 
b/tests/out-of-date-standards-version/4.4.0/message
new file mode 100644
index 0000000..05ec0b1
--- /dev/null
+++ b/tests/out-of-date-standards-version/4.4.0/message
@@ -0,0 +1,3 @@
+Update standards version, no changes needed.
+Certainty: certain
+Fixed-Lintian-Tags: out-of-date-standards-version
diff --git a/tests/out-of-date-standards-version/4.4.0/out/debian/control 
b/tests/out-of-date-standards-version/4.4.0/out/debian/control
new file mode 100644
index 0000000..50960a0
--- /dev/null
+++ b/tests/out-of-date-standards-version/4.4.0/out/debian/control
@@ -0,0 +1,3 @@
+Source: lintrian-brush
+Standards-version: 4.4.0
+Build-Depends: debhelper-compat (= 11)

From 03e069810b50919521b05afdd58910fe5d961b71 Mon Sep 17 00:00:00 2001
From: Dmitry Bogatov <kact...@debian.org>
Date: Tue, 16 Jul 2019 18:14:43 +0000
Subject: [PATCH 2/2] Simplify bump_standards_version() function

---
 fixers/out-of-date-standards-version.py | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/fixers/out-of-date-standards-version.py 
b/fixers/out-of-date-standards-version.py
index 7a0c822..4740412 100755
--- a/fixers/out-of-date-standards-version.py
+++ b/fixers/out-of-date-standards-version.py
@@ -41,13 +41,9 @@ def bump_standards_version(control):
     current_version = control["Standards-Version"]
     while current_version in upgrade_path:
         target_version = upgrade_path[current_version]
-        try:
-            check_fn = check_requirements[target_version]
-        except KeyError:
-            pass
-        else:
-            if not check_fn():
-                break
+        check_fn = check_requirements.get(target_version, lambda: True)
+        if not check_fn():
+            break
         current_version = target_version
     control["Standards-Version"] = current_version
 

Attachment: pgpdH_l809GBH.pgp
Description: PGP signature

Reply via email to