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

Stefan Bader stefan.bader at canonical.com
Fri Sep 23 13:20:13 UTC 2022


On 14.09.22 15:54, Andy Whitcroft wrote:
> 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

To me this reads as if not converting the changelog but stopping after the first 
section. So the target changelog consists only of one section.

-Stefan

> +            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)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20220923/bf33b509/attachment.sig>


More information about the kernel-team mailing list