[RFC Unstable/Noble][PATCH] UBUNTU: [Packaging] Add debian/control sanity check

Juerg Haefliger juerg.haefliger at canonical.com
Mon Nov 20 15:34:19 UTC 2023


BugLink: https://bugs.launchpad.net.bugs/2043994

Only the main linux source packages should produce linux-source-PKGVER
binary packages. Add a simple check that fails if debian/control looks
fishy.

Signed-off-by: Juerg Haefliger <juerg.haefliger at canonical.com>
---
 debian/rules                        |  1 +
 debian/scripts/checks/control-check | 36 +++++++++++++++++++++++++++++
 2 files changed, 37 insertions(+)
 create mode 100755 debian/scripts/checks/control-check

diff --git a/debian/rules b/debian/rules
index b78aff60ce24..3f09305eeba8 100755
--- a/debian/rules
+++ b/debian/rules
@@ -219,6 +219,7 @@ $(DEBIAN)/control.stub: 				\
 .PHONY: debian/control
 debian/control: $(DEBIAN)/control.stub
 	cp $(DEBIAN)/control.stub debian/control
+	debian/scripts/checks/control-check
 
 debian/canonical-certs.pem: $(wildcard $(DROOT)/certs/*-all.pem) $(wildcard $(DROOT)/certs/*-$(arch).pem) $(wildcard $(DEBIAN)/certs/*-all.pem) $(wildcard $(DEBIAN)/certs/*-$(arch).pem)
 	for cert in $(sort $(notdir $^));					\
diff --git a/debian/scripts/checks/control-check b/debian/scripts/checks/control-check
new file mode 100755
index 000000000000..51e1c91f5502
--- /dev/null
+++ b/debian/scripts/checks/control-check
@@ -0,0 +1,36 @@
+#!/bin/bash -eu
+#
+# debian/control sanity checks
+#
+
+echo "II: Checking debian/control"
+
+. debian/debian.env
+
+source_name=$(dpkg-parsechangelog -l"${DEBIAN}"/changelog -SSource)
+linux_source=$(grep -P '^Package:\s*linux.*-source-\d+\.\d+\.\d+' debian/control | sed 's/^Package:\s*//')
+
+case "${source_name}___${linux_source}" in
+	linux___linux-source-*)
+		# Main kernel package produces linux-source
+		true
+		;;
+	linux-*___)
+		# Non-main kernel package must *not* produce linux-source
+		true
+		;;
+	*)
+		# All other combinations are packaging mistakes
+		if [ -n "${linux_source}" ] ; then
+			echo "EE: debian/control contains invalid package stanza:" >&2
+			echo "Package: ${linux_source}" >&2
+		else
+			echo "EE: debian/control is missing package stanza:" >&2
+			echo "Package: linux-source-PKGVER" >&2
+		fi
+		exit 1
+		;;
+esac
+
+echo "II: Done"
+exit 0
-- 
2.40.1




More information about the kernel-team mailing list