This is an automated email from the git hooks/post-receive script. jamessan pushed a commit to branch master in repository devscripts.
commit 32731f6a41e69740bbbaa86f372059d44cf85605 Author: James McCoy <[email protected]> Date: Tue Jun 9 21:13:59 2015 -0400 mk-build-deps: Verify build-dep packages are actually installed Closes: #755371 Signed-off-by: James McCoy <[email protected]> --- debian/changelog | 4 ++++ scripts/mk-build-deps.pl | 45 +++++++++++++++++++++++++++++++++++++-------- 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/debian/changelog b/debian/changelog index fb1d716..58bfd69 100644 --- a/debian/changelog +++ b/debian/changelog @@ -39,6 +39,10 @@ devscripts (2.15.5) UNRELEASED; urgency=medium relevant sites. (Closes: #736063) * Devscripts::Debbugs: Retrieve bug status in chunks to avoid building large responses on bugs.d.o. + * mk-build-deps: + + Verify build-dep package was installed since the install tool may exit + successfully even if the package couldn't be installed. Based on a + patch by Dima Kogan. (Closes: #755371) [ Dominique Dumont ] * licensecheck: diff --git a/scripts/mk-build-deps.pl b/scripts/mk-build-deps.pl index 012c814..a17be2b 100755 --- a/scripts/mk-build-deps.pl +++ b/scripts/mk-build-deps.pl @@ -353,16 +353,45 @@ if ($opt_install) { system @root, 'dpkg', '--unpack', @deb_files; die("$progname: dpkg --unpack failed\n") if ( ($?>>8) != 0 ); system @root, shellwords($install_tool), '-f', 'install'; - if ( ($?>>8) != 0 ) { - # Restore system to previous state, since apt wasn't able to resolve a - # proper way to get the build-dep packages installed - system @root, 'dpkg', '--remove', @pkg_names; - die("$progname: apt-get install call failed\n"); + my $err = $? >> 8; + if (!$err) { + # $install_tool succeeded. Did the packages get installed? It's + # possible that they didn't because $install_tool may have realized + # that installation was impossible, and it could have given up, + # successfully. + for (my $i = 0; $i < @pkg_names; $i++) { + my $pkg = $pkg_names[$i]; + my $status; + spawn(exec => ['dpkg-query', '-W', '-f', '${db:Status-Status}', $pkg], + to_string => \$status, + error_to_file => '/dev/null', + nocheck => 1, + wait_child => 1); + if ($status ne 'installed' || ($? >> 8)) { + # Restore system to previous state, since $install_tool wasn't + # able to resolve a proper way to get the build-dep packages + # installed + warn "$progname: Unable to install $pkg"; + $err = 1; + } + else { + unlink $deb_files[$i]; + } + } + if ($err) { + die "$progname: Unable to install all build-dep packages\n"; + } } + else { + # Restore system to previous state, since $install_tool wasn't able to + # resolve a proper way to get the build-dep packages installed + system @root, 'dpkg', '--remove', @pkg_names; + die("$progname: Unable to install all build-dep packages\n"); - if ($opt_remove) { - foreach my $file (@deb_files) { - unlink $file; + if ($opt_remove) { + foreach my $file (@deb_files) { + unlink $file; + } } } } -- 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
