Message ID | 20231120153419.700325-1-juerg.haefliger@canonical.com |
---|---|
State | New |
Headers | show |
Series | [RFC,Unstable/Noble] UBUNTU: [Packaging] Add debian/control sanity check | expand |
On Mon, Nov 20, 2023 at 04:34:19PM +0100, Juerg Haefliger wrote: > 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@canonical.com> It looks like a good idea to me! Should I just apply it to unstable? Or are we waiting for more comments about this? Thanks, -Andrea > --- > 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 > > > -- > kernel-team mailing list > kernel-team@lists.ubuntu.com > https://lists.ubuntu.com/mailman/listinfo/kernel-team
On Mon, Nov 20, 2023 at 04:34:19PM +0100, Juerg Haefliger wrote: > 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. Applied.
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
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@canonical.com> --- debian/rules | 1 + debian/scripts/checks/control-check | 36 +++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100755 debian/scripts/checks/control-check