This is an automated email from the git hooks/post-receive script. mattia pushed a commit to branch master in repository devscripts.
commit 67a69bd611538c56177234a3a64d832eeb7c3fe8 Author: Mattia Rizzolo <[email protected]> Date: Fri Feb 9 16:34:26 2018 +0100 mk-origtargz: Split list of files to delete if the list gets too long to fit ARG_MAX. Closes: #855464 Thanks to Ximin Luo <infinity0> for the initial patch. Signed-off-by: Mattia Rizzolo <[email protected]> --- debian/changelog | 3 +++ scripts/mk-origtargz.pl | 23 ++++++++++++++++++----- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/debian/changelog b/debian/changelog index 159c61b..1b217cd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -17,6 +17,9 @@ devscripts (2.18.1) UNRELEASED; urgency=medium with an older pod as well. * reproducible-check: + Instruct to install python3-xdg if missing. Closes: #888307 + * mk-origtargz: + + Split list of files to delete if the list gets too long to fit ARG_MAX. + Thanks to Ximin Luo <infinity0> for the initial patch. Closes: #855464 [ Osamu Aoki ] * uupdate: diff --git a/scripts/mk-origtargz.pl b/scripts/mk-origtargz.pl index 9d43020..5b91ab2 100644 --- a/scripts/mk-origtargz.pl +++ b/scripts/mk-origtargz.pl @@ -572,11 +572,24 @@ if ($do_repack || $deletecount) { # We have to use piping because --delete is broken otherwise, as documented # at https://www.gnu.org/software/tar/manual/html_node/delete.html if (@to_delete) { - spawn(exec => ['tar', '--delete', @to_delete ], - from_file => $destfiletar, - to_file => $destfiletar . ".tmp", - wait_child => 1) if scalar(@to_delete) > 0; - move ($destfiletar . ".tmp", $destfiletar); + # ARG_MAX: max number of bytes exec() can handle + my $arg_max; + spawn( + exec => ['getconf', 'ARG_MAX'], + to_string => \$arg_max, + wait_child => 1 + ); + # usually NAME_MAX=255, but here we use 128 to be on the safe side. + $arg_max = int($arg_max / 128); + # We use this lame splice on a totally arbitrary $arg_max because + # counting how many bytes there are in @to_delete is too inefficient. + while (my @next_n = splice @to_delete, 0, $arg_max) { + spawn(exec => ['tar', '--delete', @next_n ], + from_file => $destfiletar, + to_file => $destfiletar . ".tmp", + wait_child => 1) if scalar(@next_n) > 0; + move ($destfiletar . ".tmp", $destfiletar); + } } compress_archive($destfiletar, $destfile, $compression); -- 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
