NACK: [Unstable][PATCH] UBUNTU: [Packaging] Rewrite debian/scripts/misc/insert-changes.pl in Python
Juerg Haefliger
juerg.haefliger at canonical.com
Tue Nov 2 07:45:38 UTC 2021
On Mon, 1 Nov 2021 15:04:17 -0300
Thadeu Lima de Souza Cascardo <cascardo at canonical.com> wrote:
> On Mon, Nov 01, 2021 at 10:40:05AM +0100, Juerg Haefliger wrote:
> > Rewrite the insert-changes.pl script in Python to get us one step closer
> > to dropping Perl as an Ubuntu kernel build dependency.
> >
> > Signed-off-by: Juerg Haefliger <juergh at canonical.com>
> > ---
> > debian/rules.d/1-maintainer.mk | 2 +-
> > debian/scripts/misc/insert-changes | 35 ++++++++++++++++++++++
> > debian/scripts/misc/insert-changes.pl | 43 ---------------------------
> > 3 files changed, 36 insertions(+), 44 deletions(-)
> > create mode 100755 debian/scripts/misc/insert-changes
> > delete mode 100755 debian/scripts/misc/insert-changes.pl
> >
> > diff --git a/debian/rules.d/1-maintainer.mk b/debian/rules.d/1-maintainer.mk
> > index 7c13fcdaa98a..5917b89bbd49 100644
> > --- a/debian/rules.d/1-maintainer.mk
> > +++ b/debian/rules.d/1-maintainer.mk
> > @@ -113,7 +113,7 @@ printchanges:
> > $(DROOT)/scripts/misc/git-ubuntu-log $(ubuntu_log_opts)
> >
> > insertchanges: autoreconstruct finalchecks
> > - @perl -w -f $(DROOT)/scripts/misc/insert-changes.pl $(DROOT) $(DEBIAN)
> > + $(DROOT)/scripts/misc/insert-changes $(DROOT) $(DEBIAN)
> >
> > autoreconstruct:
> > # No need for reconstruct for -rc kernels since we don't upload an
> > diff --git a/debian/scripts/misc/insert-changes b/debian/scripts/misc/insert-changes
> > new file mode 100755
> > index 000000000000..284b6788cc13
> > --- /dev/null
> > +++ b/debian/scripts/misc/insert-changes
> > @@ -0,0 +1,35 @@
> > +#!/usr/bin/python3
> > +
> > +import os
> > +import sys
> > +
> > +from subprocess import check_output
> > +
> > +droot = 'debian'
> > +if len(sys.argv) > 1:
> > + droot = sys.argv[1]
> > +
> > +debian = 'debian'
>
> Should be
> debian = 'debian.master'
Indeed.
> > +if len(sys.argv) > 2:
> > + debian = sys.argv[2]
> > +
> > +rules = os.path.join(droot, 'rules')
> > +changelog = os.path.join(debian, 'changelog')
> > +changelog_new = os.path.join(debian, 'changelog.new')
> > +
> > +# Generate the list of new changes
> > +changes = check_output(['make', '-s', '-f', rules, 'printchanges']).decode('UTF-8')
> > +
>
> Once again, I wonder if we can make this better: make calling a script
> calling make calling a script. Make is good when you have a dependency
> tree, but that is not the case here. I am just thinking that we should
> consider the option where we keep these tools in tree, and still allow them
> to be run from make if we really care, but have cranky start calling them
> directly.
Good point. Will look into it.
> > +# Insert the new changes into the changelog
> > +with open(changelog) as orig, open(changelog_new, 'w') as new:
> > + printed = False
> > + for line in orig:
> > + if line.startswith(' CHANGELOG: '):
> > + if not printed:
> > + printed = True
> > + new.write(changes)
> > + else:
> > + new.write(line)
> > +
>
> The newline flag is missing here. It has certainly caused a regression, after I
> gave it a try.
What regression is that? The output looks just fine to me. No double empty
lines in the modified changelog entry.
Oh, if debian.master/changes is empty? When would that happen?
...Juerg
> Cascardo.
>
> > +# Replace the original changelog with the new one
> > +os.rename(changelog_new, changelog)
> > diff --git a/debian/scripts/misc/insert-changes.pl b/debian/scripts/misc/insert-changes.pl
> > deleted file mode 100755
> > index 4eed4e28f9d3..000000000000
> > --- a/debian/scripts/misc/insert-changes.pl
> > +++ /dev/null
> > @@ -1,43 +0,0 @@
> > -#!/usr/bin/perl -w
> > -
> > -my $debian;
> > -$droot = $ARGV[0] if (defined $ARGV[0]);
> > -$droot = 'debian' if (!defined $droot);
> > -$debian = $ARGV[1] if (defined $ARGV[1]);
> > -$debian = 'debian.master' if (!defined $debian);
> > -
> > -system("make -s -f $droot/rules printchanges > $debian/changes");
> > -
> > -open(CHANGELOG, "< $debian/changelog") or die "Cannot open changelog";
> > -open(CHANGES, "< $debian/changes") or die "Cannot open new changes";
> > -open(NEW, "> $debian/changelog.new") or die "Cannot open new changelog";
> > -
> > -$printed = 0;
> > -my $skip_newline = 0;
> > -
> > -while (<CHANGELOG>) {
> > - if (/^ CHANGELOG: /) {
> > - next if $printed;
> > -
> > - $skip_newline = 1;
> > - while (<CHANGES>) {
> > - $skip_newline = 0;
> > - print NEW;
> > - }
> > -
> > - $printed = 1;
> > - } else {
> > - if (/^$/ && $skip_newline == 1) {
> > - $skip_newline = 0;
> > - next;
> > - }
> > - print NEW;
> > - }
> > -}
> > -
> > -close(NEW);
> > -close(CHANGES);
> > -close(CHANGELOG);
> > -
> > -rename("$debian/changelog.new", "$debian/changelog");
> > -unlink("$debian/changes");
> > --
> > 2.30.2
> >
> >
> > --
> > kernel-team mailing list
> > kernel-team at lists.ubuntu.com
> > https://lists.ubuntu.com/mailman/listinfo/kernel-team
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20211102/da71ae0f/attachment-0001.sig>
More information about the kernel-team
mailing list