This is an automated email from the git hooks/post-receive script. jamessan pushed a commit to branch master in repository devscripts.
commit 3e71ba36160b9fb5d03d755f94da14093e742a4b Author: James McCoy <[email protected]> Date: Fri Nov 25 16:15:36 2016 -0500 debuild: Handle difference in where dpkg-bp/debuild run hooks Document where each debuild hook is executed (either in unpacked source or its parent directory). Signed-off-by: James McCoy <[email protected]> --- debian/changelog | 3 +++ scripts/debuild.1 | 20 +++++++++++++++++++ scripts/debuild.pl | 58 +++++++++++++++++++++++++++++++++++++++++++++++------- 3 files changed, 74 insertions(+), 7 deletions(-) diff --git a/debian/changelog b/debian/changelog index ae2b897..5afcb9d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -15,6 +15,9 @@ devscripts (2.16.10) UNRELEASED; urgency=medium + Preserve SOURCE_DATE_EPOCH in the environment. + Require a '--' between debuild options and debian/rules target so we know where options end. (Closes: #845566) + + Adjust hook commands to account for dpkg-buildpackage running from a + different directory than debuild used for the lintian, signing, and + post-dpkg-buildpackage hooks. (Closes: #845628) -- Afif Elghraoui <[email protected]> Wed, 23 Nov 2016 23:50:46 -0800 diff --git a/scripts/debuild.1 b/scripts/debuild.1 index da55ec0..1e8938a 100644 --- a/scripts/debuild.1 +++ b/scripts/debuild.1 @@ -155,6 +155,8 @@ hooks are as follows: \fBdpkg-buildpackage-hook Run before \fBdpkg-buildpackage\fR begins by calling \fBdpkg-checkbuilddeps\fR. .IP +Hook is run inside the unpacked source. +.IP Corresponds to \fBdpkg\fR's \fBinit\fR hook. .TP \fBclean-hook @@ -162,12 +164,16 @@ Run before \fBdpkg-buildpackage\fR runs \fBdebian/rules clean\fR to clean the source tree. (Run even if the tree is not being cleaned because \fB\-nc\fR is used.) .IP +Hook is run inside the unpacked source. +.IP Corresponds to \fBdpkg\fR's \fBpreclean\fR hook. .TP \fBdpkg-source-hook Run after cleaning the tree and before running \fBdpkg-source\fR. (Run even if \fBdpkg-source\fR is not being called because \fB\-b\fR, \fB\-B\fR, or \fB\-A\fR is used.) .IP +Hook is run inside the unpacked source. +.IP Corresponds to \fBdpkg\fR's \fBsource\fR hook. .TP \fBdpkg-build-hook\fR @@ -175,18 +181,24 @@ Run after \fBdpkg-source\fR and before calling \fBdebian/rules build\fR. (Run even if this is a source-only build, so \fBdebian/rules build\fR is not being called.) .IP +Hook is run inside the unpacked source. +.IP Corresponds to \fBdpkg\fR's \fBbuild\fR hook. .TP \fBdpkg-binary-hook Run between \fBdebian/rules build\fR and \fBdebian/rules binary\fR(\fB\-arch\fR). Run \fBonly\fR if a binary package is being built. .IP +Hook is run inside the unpacked source. +.IP Corresponds to \fBdpkg\fR's \fBbinary\fR hook. .TP \fBdpkg-genchanges-hook Run after the binary package is built and before calling \fBdpkg-genchanges\fR. .IP +Hook is run inside the unpacked source. +.IP Corresponds to \fBdpkg\fR's \fBchanges\fR hook. .TP \fBfinal-clean-hook @@ -194,23 +206,31 @@ Run after \fBdpkg-genchanges\fR and before the final \fBdebian/rules clean\fR. (Run even if we are not cleaning the tree post-build, which is the default.) .IP +Hook is run inside the unpacked source. +.IP Corresponds to \fBdpkg\fR's \fBpostclean\fR hook. .TP \fBlintian-hook Run (once) before calling \fBlintian\fR. (Run even if we are not calling \fBlintian\fR.) .IP +Hook is run from parent directory of unpacked source. +.IP Corresponds to \fBdpkg\fR's \fBcheck\fR hook. .TP \fBsigning-hook Run after calling \fBlintian\fR before any signing takes place. (Run even if we are not signing anything.) .IP +Hook is run from parent directory of unpacked source. +.IP Corresponds to \fBdpkg\fR's \fBsign\fR hook, but is run by \fBdebuild\fR. .TP \fBpost-dpkg-buildpackage-hook Run after everything has finished. .IP +Hook is run from parent directory of unpacked source. +.IP Corresponds to \fBdpkg\fR's \fBdone\fR hook, but is run by \fBdebuild\fR. .PP A hook command can be specified either in the configuration file as, diff --git a/scripts/debuild.pl b/scripts/debuild.pl index 9c13961..b40c412 100755 --- a/scripts/debuild.pl +++ b/scripts/debuild.pl @@ -63,6 +63,8 @@ my $modified_conf_msg; my @warnings; # Predeclare functions +sub setDebuildHook; +sub setDpkgHook; sub system_withecho(@); sub run_hook ($$); sub fatal($); @@ -187,8 +189,19 @@ my $username=''; my @hooks = (qw(dpkg-buildpackage clean dpkg-source build binary dpkg-genchanges final-clean lintian signing post-dpkg-buildpackage)); my %hook; -$hook{@hooks} = ('') x @hooks; - +@hook{@hooks} = ('') x @hooks; +# dpkg-buildpackage runs all hooks in the source tree, while debuild runs some +# in the parent directory. Use %externalHook to check which run out of tree +my %externalHook; +@externalHook{@hooks} = (0) x @hooks; +$externalHook{lintian} = 1; +$externalHook{signing} = 1; +$externalHook{'post-dpkg-buildpackage'} = 1; +# Track which hooks are run by dpkg-buildpackage vs. debuild +my %dpkgHook; +@dpkgHook{@hooks} = (1) x @hooks; +$dpkgHook{signing} = 0; +$dpkgHook{'post-dpkg-buildpackage'} = 0; # First handle private options from cvs-debuild my ($cvsdeb_file, $cvslin_file); @@ -331,7 +344,7 @@ if (@ARGV and $ARGV[0] =~ /^--no-?conf$/) { for my $hookname (@hooks) { my $config_name = uc "debuild_${hookname}_hook"; $config_name =~ tr/-/_/; - $hook{$hookname} = $config_vars{$config_name}; + setDebuildHook($hookname, $config_vars{$config_name}); } # Now parse the opts lists @@ -561,7 +574,8 @@ my @preserve_vars = qw(TERM HOME LOGNAME PGPPATH GNUPGHOME GPG_AGENT_INFO unless (defined ($opt = shift)) { fatal "$arg requires an argument,\nrun $progname --help for usage information"; } - $hook{$argkey} = $opt; + + setDebuildHook($argkey, $opt); next; } @@ -573,7 +587,7 @@ my @preserve_vars = qw(TERM HOME LOGNAME PGPPATH GNUPGHOME GPG_AGENT_INFO fatal "unknown hook option $arg,\nrun $progname --help for usage information"; } - $hook{$argkey} = $opt; + setDebuildHook($argkey, $opt); next; } @@ -584,10 +598,10 @@ my @preserve_vars = qw(TERM HOME LOGNAME PGPPATH GNUPGHOME GPG_AGENT_INFO fatal "$arg requires an argmuent,\nrun $progname --help for usage information"; } if ($name eq 'sign') { - $hook{signing} = $opt; + setDpkgHook('signing', $opt); } else { - $hook{'post-dpkg-buildpackage'} = $opt; + setDpkgHook('post-dpkg-buildpackage', $opt); } next; } @@ -1050,6 +1064,36 @@ exit 0; ###### Subroutines +sub setDebuildHook() { + my ($name, $val) = @_; + + unless (grep /^$name$/, @hooks) { + fatal "unknown hook $name,\nrun $progname --help for usage information"; + } + + if ($externalHook{$name} && $dpkgHook{$name}) { + $hook{$name} = 'cd ..; '.$val; + } + else { + $hook{$name} = $val; + } +} + +sub setDpkgHook() { + my ($name, $val) = @_; + + unless (grep /^$name$/, @hooks) { + fatal "unknown hook $name,\nrun $progname --help for usage information"; + } + + if ($externalHook{$name} && !$dpkgHook{$name}) { + $hook{$name} = 'cd ..; '.$val; + } + else { + $hook{$name} = $val; + } +} + sub system_withecho(@) { print STDERR " ", join(" ", @_), "\n"; system(@_); -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/collab-maint/devscripts.git _______________________________________________ devscripts-devel mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/devscripts-devel
