[PATCH 06/13] UBUNTU: [Packaging] generate: add -di package support
Andy Whitcroft
apw at canonical.com
Fri Sep 16 11:46:35 UTC 2022
Signed-off-by: Andy Whitcroft <apw at canonical.com>
---
debian/scripts/config.py | 21 ++++++++++++++++-----
debian/scripts/generate-control | 18 ++++++++++++++++--
2 files changed, 32 insertions(+), 7 deletions(-)
diff --git a/debian/scripts/config.py b/debian/scripts/config.py
index e964e64..34bd08d 100644
--- a/debian/scripts/config.py
+++ b/debian/scripts/config.py
@@ -2,22 +2,30 @@ class Signing:
def __init__(self):
self._flavour_to_arch = {}
+ self._package_to_flavour_to_arch = {}
self._arch_flavour_data = {}
- def add(self, arch, stype, binary, flavours):
+ def add(self, arch, stype, binary, flavours, options):
for flavour in flavours:
- self._flavour_to_arch.setdefault(flavour, []).append(arch)
self._arch_flavour_data[(arch, flavour)] = (stype, binary)
+ self._flavour_to_arch.setdefault(flavour, set()).add(arch)
+ self._package_to_flavour_to_arch.setdefault("image", {}).setdefault(flavour, set()).add(arch)
+ if "di" in options:
+ self._package_to_flavour_to_arch.setdefault("di", {}).setdefault(flavour, set()).add(arch)
@property
def flavour_archs(self):
- return sorted(self._flavour_to_arch.items())
+ for flavour, archs in sorted(self._flavour_to_arch.items()):
+ yield flavour, sorted(list(archs))
+
+ def package_flavour_archs(self, package):
+ for flavour, archs in sorted(self._package_to_flavour_to_arch.get(package, {}).items()):
+ yield flavour, sorted(list(archs))
@property
def arch_flavour_data(self):
return sorted(self._arch_flavour_data.items())
-
@classmethod
def load(cls, config):
signing = Signing()
@@ -26,5 +34,8 @@ class Signing:
cmd, *args = line.strip().split()
if cmd == "sign":
arch, stype, binary, *flavours = args
- signing.add(arch, stype, binary, flavours)
+ options = []
+ while flavours[-1].startswith("--"):
+ options.append(flavours.pop()[2:])
+ signing.add(arch, stype, binary, flavours, options)
return signing
diff --git a/debian/scripts/generate-control b/debian/scripts/generate-control
index 6fd68f6..b9b2f48 100755
--- a/debian/scripts/generate-control
+++ b/debian/scripts/generate-control
@@ -20,7 +20,7 @@ with open("debian/control.stub") as tfd, open("debian/control", "w") as cfd:
else:
print(line, end='', file=cfd)
- for flavour, archs in signing.flavour_archs:
+ for flavour, archs in signing.package_flavour_archs("image"):
print(dedent(f"""\
Package: linux-image-{abi_version}-{flavour}
@@ -35,10 +35,24 @@ with open("debian/control.stub") as tfd, open("debian/control", "w") as cfd:
A kernel image for {flavour}. This version of it is signed with
Canonical's signing key.
""").rstrip(), file=cfd)
+ for flavour, archs in signing.package_flavour_archs("di"):
+ print(dedent(f"""\
+ Package: kernel-signed-image-{abi_version}-{flavour}-di
+ Package-Type: udeb
+ Section: debian-installer
+ Priority: extra
+ Provides: kernel-signed-image
+ Architecture: {" ".join(archs)}
+ Built-Using: {unsigned_name} (= {unsigned_version})
+ Description: Signed kernel image generic for the Debian installer
+ A kernel image for {flavour}. This version of it is signed with
+ Canonical's UEFI signing key. It is intended for the Debian installer,
+ it does _not_ provide a usable kernel for your full Debian system.
+ """).rstrip(), file=cfd)
# XXX: all dbgsym packages _must_ be at the end of debian/control else the
# build will hang forever on the builder.
- for flavour, archs in signing.flavour_archs:
+ for flavour, archs in signing.package_flavour_archs("image"):
print(dedent(f"""\
Package: linux-image-{abi_version}-{flavour}-dbgsym
--
2.36.1
More information about the kernel-team
mailing list