Message ID | 20220914135455.2685644-6-apw@canonical.com |
---|---|
State | New |
Headers | show |
Series | [1/9] UBUNTU: [Packaging] fix our dh_clean override | expand |
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@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)
On Wed, Sep 14, 2022 at 02:54:51PM +0100, 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@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 Generating files during a clean stage feels unusual to me. I understand that we want them be fully formed and intact packages but maybe I'm not grasping why that must be done at this specific step. Would dh_auto_configure or dh_auto_build be too late in the process to useful? - corytodd
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)
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@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