[PATCH 5/9] UBUNTU: [Packaging] parameterise ancillary packages

Andy Whitcroft apw at canonical.com
Wed Sep 14 13:54:51 UTC 2022


Now that our ancillaries are "direct" ancillaries we need to ensure they
are full source packages at our version.  Copy in anything common at
clean time.  Generate an appropriate changelog with matching versions.

Signed-off-by: Andy Whitcroft <apw at canonical.com>
---
 debian/rules.in                         |  1 +
 debian/scripts/gen-rules.lrm            |  4 ++
 debian/scripts/parameterise-ancillaries | 54 +++++++++++++++++++++++++
 3 files changed, 59 insertions(+)
 create mode 100755 debian/scripts/parameterise-ancillaries

diff --git a/debian/rules.in b/debian/rules.in
index ef03657..7888a14 100755
--- a/debian/rules.in
+++ b/debian/rules.in
@@ -67,6 +67,7 @@ debian/scripts/fix-filenames: debian/scripts/fix-filenames.c
 clean:: pre-clean
 	rm -f debian/scripts/fix-filenames
 	rm -rf $(dkms_dir)
+	./debian/scripts/parameterise-ancillaries $(src_genr_package) $(src_sigs_package)
 	dh_clean
 
 %:
diff --git a/debian/scripts/gen-rules.lrm b/debian/scripts/gen-rules.lrm
index 60be0a8..f9f5eca 100755
--- a/debian/scripts/gen-rules.lrm
+++ b/debian/scripts/gen-rules.lrm
@@ -23,6 +23,8 @@ src_main_package=$(echo "${src_package}" | sed -e 's/-restricted-modules//')
 src_main_version=$(echo ${src_version} | sed -e 's/+[0-9][0-9\.]*$//')
 
 # linux-restricted-generate/5.8.0-41.46[+1]
+src_genr_package=$(echo "${src_package}" | sed -e 's/-restricted-modules/-restricted-generate/')
+src_genr_version=${src_version}
 
 # linux-restricted-signatures/5.8.0-41.46[+1]
 src_sigs_package=$(echo "${src_package}" | sed -e 's/-restricted-modules/-restricted-signatures/')
@@ -47,6 +49,8 @@ src_abi = ${src_abi}
 src_series = ${src_series}
 src_main_package = ${src_main_package}
 src_main_version = ${src_main_version}
+src_genr_package = ${src_genr_package}
+src_genr_version = ${src_genr_version}
 src_sigs_package = ${src_sigs_package}
 src_sigs_version = ${src_sigs_version}
 
diff --git a/debian/scripts/parameterise-ancillaries b/debian/scripts/parameterise-ancillaries
new file mode 100755
index 0000000..7175688
--- /dev/null
+++ b/debian/scripts/parameterise-ancillaries
@@ -0,0 +1,54 @@
+#!/usr/bin/python3
+
+import os
+import sys
+import json
+from shutil import copy
+from textwrap import dedent, indent
+
+
+def build_changelog(outd, source_name):
+    # Convert debian/changelog: fix the package name in the first stanza.
+    in_changelog = os.path.join("debian", "changelog")
+    out_changelog = os.path.join(outd, "debian", "changelog")
+    with open(in_changelog) as ifd, open(out_changelog, "w") as ofd:
+        first = True
+        stanza = 0
+        for line in ifd:
+            if line[0] not in (" ", "\n"):
+                stanza += 1
+                first = True
+                if stanza == 3:
+                    break
+            if first:
+                bits = line.split()
+                bits[0] = source_name
+                print(" ".join(bits), file=ofd)
+                first = False
+            else:
+                print(line, end="", file=ofd)
+
+# Build one of the ancillaries.
+def build_ancillary(package):
+    outd = os.path.join("debian", "ancillary", package)
+
+    os.makedirs(os.path.join(outd, "debian"), exist_ok=True)
+    build_changelog(outd, package)
+    for file in (
+        os.path.join("debian", "rules"),
+        os.path.join("debian", "compat"),
+        os.path.join("debian", "control.common"),
+        os.path.join("debian", "copyright"),
+        os.path.join("debian", "source", "format"),
+        os.path.join("debian", "source", "options"),
+        os.path.join("debian", "dkms-versions"),
+        os.path.join("debian", "package.config"),
+    ):
+        os.makedirs(os.path.dirname(os.path.join(outd, file)), exist_ok=True)
+        copy(file, os.path.join(outd, file))
+
+
+(gen_pkg, sig_pkg) = sys.argv[1:]
+
+build_ancillary(gen_pkg)
+build_ancillary(sig_pkg)
-- 
2.36.1




More information about the kernel-team mailing list