Package: devscripts Version: 2.10.59 Severity: wishlist File: /usr/bin/debchange Tags: patch
Hello, it would be great if debchage optionally allowed to use maintainer details from debian/control rather than DEBFULLNAME/DEBEMAIL. I suggested a couple of use cases in the updated manual page (quoted below). A patch implementing this feature is attached. .BR \-\-controlmaint ", " \-M Use maintainer details from the debian/control Maintainer field rather than relevant environment variables (\fBDEBFULLNAME\fR/\fBDEBEMAIL\fR etc.). This option might be useful to restore details of the main maintainer in the changelog trailer after a bogus edit (e.g. when \fB\-m\fR was intended but forgot) or when releasing a package in the name of the main maintainer (e.g. the team). -- Package-specific info: --- /etc/devscripts.conf --- DEBSIGN_MAINT="Modestas Vainius" DEBCHANGE_RELEASE_HEURISTIC=changelog DEBCHANGE_MULTIMAINT_MERGE=yes DEBCHANGE_MAINTTRAILER=yes --- ~/.devscripts --- Not present -- System Information: Debian Release: squeeze/sid APT prefers unstable APT policy: (500, 'unstable'), (500, 'testing'), (101, 'experimental') Architecture: amd64 (x86_64) Kernel: Linux 2.6.31-1-amd64 (SMP w/1 CPU core) Locale: LANG=lt_LT.UTF-8, LC_CTYPE=lt_LT.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages devscripts depends on: ii dpkg-dev 1.15.5.4 Debian package development tools ii libc6 2.10.2-2 GNU C Library: Shared libraries ii perl 5.10.1-8 Larry Wall's Practical Extraction Versions of packages devscripts recommends: ii at 3.1.12-1 Delayed job execution and batch pr ii bsd-mailx [mailx] 8.1.2-0.20090911cvs-2 simple mail user agent ii bzr 2.0.2-1 easy to use distributed version co ii curl 7.19.7-1 Get a file from an HTTP, HTTPS or ii cvs 1:1.12.13-12 Concurrent Versions System ii dctrl-tools 2.14 Command-line tools to process Debi pn debian-keyring <none> (no description available) pn debian-maintainers <none> (no description available) ii dput 0.9.5.1 Debian package upload tool ii dupload 2.6.6 utility to upload Debian packages ii equivs 2.0.7-0.1 Circumvent Debian package dependen ii fakeroot 1.14.4-1 Gives a fake root environment ii git-core 1:1.6.5.4-1 fast, scalable, distributed revisi ii gnupg 1.4.10-2 GNU privacy guard - a free PGP rep ii iceweasel [www-bro 3.5.5-1 lightweight web browser based on M ii konqueror [www-bro 4:4.3.4-1 KDE 4's advanced file manager, web pn libauthen-sasl-per <none> (no description available) ii libcrypt-ssleay-pe 0.57-2 Support for https protocol in LWP ii libparse-debcontro 2.005-2 Easy OO parsing of Debian control- ii libsoap-lite-perl 0.710.10-1 Perl implementation of a SOAP clie ii libterm-size-perl 0.2-4+b1 Perl extension for retrieving term ii libtimedate-perl 1.1900-1 Time and date functions for Perl ii liburi-perl 1.50-1 module to manipulate and access UR ii libwww-perl 5.834-1 Perl HTTP/WWW client/server librar ii libyaml-syck-perl 1.07-1 fast, lightweight YAML loader and ii links [www-browser 2.2-1+b1 Web browser running in text mode ii links2 [www-browse 2.2-1+b1 Web browser running in both graphi ii lintian 2.2.18 Debian package checker ii lsb-release 3.2-23 Linux Standard Base version report ii lynx-cur [www-brow 2.8.8dev.1-1 Text-mode WWW Browser with NLS sup ii lzma 4.43-14 Compression method of 7z format in ii mailx 1:20081101-2 Transitional package for mailx ren ii man-db 2.5.6-4 on-line manual pager ii openssh-client [ss 1:5.1p1-8 secure shell client, an rlogin/rsh ii patch 2.6-2 Apply a diff file to an original ii patchutils 0.3.1-2 Utilities to work with patches ii sensible-utils 0.0.2 Utilities for sensible alternative ii strace 4.5.19-1 A system call tracer ii subversion 1.6.6dfsg-2 Advanced version control system ii unzip 6.0-1 De-archiver for .zip files ii w3m [www-browser] 0.5.2-2.1 WWW browsable pager with excellent pn wdiff <none> (no description available) ii wget 1.12-1.1 retrieves files from the web Versions of packages devscripts suggests: ii build-essential 11.4 Informational list of build-essent pn cvs-buildpackage <none> (no description available) pn devscripts-el <none> (no description available) pn gnuplot <none> (no description available) ii libfile-desktopentry-perl 0.04-2 Perl module to handle freedesktop pn libnet-smtp-ssl-perl <none> (no description available) ii mutt 1.5.20-5 text-based mailreader supporting M pn svn-buildpackage <none> (no description available) ii w3m 0.5.2-2.1 WWW browsable pager with excellent -- no debconf information
Index: scripts/debchange.1 =================================================================== --- scripts/debchange.1 (revision 2051) +++ scripts/debchange.1 (working copy) @@ -318,6 +318,14 @@ multi-maintainer mode is in use; you will probably wish to check the changelog manually before uploading it in such cases. .TP +.BR \-\-controlmaint ", " \-M +Use maintainer details from the debian/control Maintainer field rather than +relevant environment variables (\fBDEBFULLNAME\fR/\fBDEBEMAIL\fR etc.). This +option might be useful to restore details of the main maintainer in the +changelog trailer after a bogus edit (e.g. when \fB\-m\fR was intended but +forgot) or when releasing a package in the name of the main maintainer (e.g. +the team). +.TP .BR \-\-[no]mainttrailer ", " \-t If mainttrailer is set, it will avoid modifying the existing changelog trailer line (i.e. the maintainer and date-stamp details), unless Index: scripts/debchange.pl =================================================================== --- scripts/debchange.pl (revision 2051) +++ scripts/debchange.pl (working copy) @@ -158,6 +158,8 @@ indicate if multiple maintainers are now involved (default: do so) -m, --maintmaint Don\'t change (maintain) the maintainer details in the changelog entry + -M, --controlmaint + Use maintainer name and email from the debian/control Maintainer field -t, --mainttrailer Don\'t change (maintain) the trailer line in the changelog entry; i.e. maintain the maintainer and date/time details @@ -298,7 +300,7 @@ # with older debchange versions. my ($opt_help, $opt_version); my ($opt_i, $opt_a, $opt_e, $opt_r, $opt_v, $opt_b, $opt_d, $opt_D, $opt_u, $opt_force_dist); -my ($opt_n, $opt_bn, $opt_qa, $opt_s, $opt_bpo, $opt_l, $opt_c, $opt_m, $opt_create, $opt_package, @closes); +my ($opt_n, $opt_bn, $opt_qa, $opt_s, $opt_bpo, $opt_l, $opt_c, $opt_m, $opt_M, $opt_create, $opt_package, @closes); my ($opt_news); my ($opt_ignore, $opt_level, $opt_regex, $opt_noconf, $opt_empty); @@ -333,6 +335,7 @@ "multimaint!" => \$opt_multimaint, "multi-maint!" => \$opt_multimaint, "m|maintmaint" => \$opt_m, + "M|controlmaint" => \$opt_M, "t|mainttrailer!" => \$opt_t, "ignore-dirname" => \$opt_ignore, "check-dirname-level=s" => \$opt_level, @@ -668,7 +671,7 @@ } # Now use the gleaned values to detemine our MAINTAINER and EMAIL values -if (! $opt_m) { +if (! $opt_m and ! $opt_M) { if (exists $env{'DEBFULLNAME'}) { $MAINTAINER = $env{'DEBFULLNAME'}; } elsif (exists $env{'NAME'}) { @@ -713,13 +716,32 @@ $EMAIL = $addr if $addr; } # Otherwise, $EMAIL retains its default value of the last changelog entry -} # if (! $opt_m) +} # if (! $opt_m and ! $opt_M) +if ($opt_M) { + if (-f 'debian/control') { + if (have_lpdc()) { + my $parser = new Parse::DebControl; + my $deb822 = $parser->parse_file('debian/control', {stripComments => 'true'}); + my $maintainer = decode_utf8($deb822->[0]->{'Maintainer'}); + if ($maintainer =~ /^(.*)\s+<(.*)>$/) { + $MAINTAINER = $1; + $EMAIL = $2; + } else { + fatal "$progname: invalid debian/control Maintainer field value\n"; + } + } else { + fatal "$progname: unable to get maintainer from debian/control: $lpdc_broken\n"; + } + } else { + fatal "Missing file debian/control"; + } +} ##### if ($opt_auto_nmu eq 'yes' and ! $opt_v and ! $opt_l and ! $opt_s and ! $opt_qa and ! $opt_bpo and ! $opt_bn and ! $opt_n and ! $opt_c and - ! (exists $ENV{'CHANGELOG'} and length $ENV{'CHANGELOG'}) and + ! (exists $ENV{'CHANGELOG'} and length $ENV{'CHANGELOG'}) and ! $opt_M and ! $opt_create and ! $opt_a_passed and ! $opt_r and ! $opt_e and ! ($opt_release_heuristic eq 'changelog' and $changelog{'Distribution'} eq 'UNRELEASED' and ! $opt_i_passed)) {