Fix parallel xz compression... hopefully for the last time...

This commit is contained in:
Johannes 'josch' Schauer 2019-12-02 21:17:45 +01:00
parent 9f2ea61265
commit d262d67877
Signed by: josch
GPG key ID: F2CBA5C78FBD83E1
2 changed files with 32 additions and 14 deletions

View file

@ -52,7 +52,7 @@ if [ ! -e shared/mmdebstrap ] || [ mmdebstrap -nt shared/mmdebstrap ]; then
fi fi
starttime= starttime=
total=110 total=111
i=1 i=1
print_header() { print_header() {
@ -429,6 +429,24 @@ else
echo "HAVE_QEMU != yes -- Skipping test..." echo "HAVE_QEMU != yes -- Skipping test..."
fi fi
print_header "mode=$defaultmode,variant=apt: test xz compressed tarball"
cat << END > shared/test.sh
#!/bin/sh
set -eu
export LC_ALL=C.UTF-8
$CMD --mode=$defaultmode --variant=apt $DEFAULT_DIST /tmp/debian-chroot.tar.xz $mirror
printf '\3757zXZ\0' | cmp --bytes=6 /tmp/debian-chroot.tar.xz -
tar -tf /tmp/debian-chroot.tar.xz | sort | diff -u tar1.txt -
rm /tmp/debian-chroot.tar.xz
END
if [ "$HAVE_QEMU" = "yes" ]; then
./run_qemu.sh
elif [ "$defaultmode" = "root" ]; then
./run_null.sh SUDO
else
./run_null.sh
fi
print_header "mode=auto,variant=apt: test auto-mode without unshare capabilities" print_header "mode=auto,variant=apt: test auto-mode without unshare capabilities"
cat << END > shared/test.sh cat << END > shared/test.sh
#!/bin/sh #!/bin/sh

View file

@ -147,23 +147,23 @@ sub get_tar_compressor($) {
} elsif ($filename =~ /\.tar$/) { } elsif ($filename =~ /\.tar$/) {
return undef return undef
} elsif ($filename =~ /\.(gz|tgz|taz)$/) { } elsif ($filename =~ /\.(gz|tgz|taz)$/) {
return 'gzip'; return ['gzip'];
} elsif ($filename =~ /\.(Z|taZ)$/) { } elsif ($filename =~ /\.(Z|taZ)$/) {
return 'compress'; return ['compress'];
} elsif ($filename =~ /\.(bz2|tbz|tbz2|tz2)$/) { } elsif ($filename =~ /\.(bz2|tbz|tbz2|tz2)$/) {
return 'bzip2'; return ['bzip2'];
} elsif ($filename =~ /\.lz$/) { } elsif ($filename =~ /\.lz$/) {
return 'lzip'; return ['lzip'];
} elsif ($filename =~ /\.(lzma|tlz)$/) { } elsif ($filename =~ /\.(lzma|tlz)$/) {
return 'lzma'; return ['lzma'];
} elsif ($filename =~ /\.lzo$/) { } elsif ($filename =~ /\.lzo$/) {
return 'lzop'; return ['lzop'];
} elsif ($filename =~ /\.lz4$/) { } elsif ($filename =~ /\.lz4$/) {
return 'lz4'; return ['lz4'];
} elsif ($filename =~ /\.(xz|txz)$/) { } elsif ($filename =~ /\.(xz|txz)$/) {
return ('xz', '--threads=0'); return ['xz', '--threads=0'];
} elsif ($filename =~ /\.zst$/) { } elsif ($filename =~ /\.zst$/) {
return 'zstd'; return ['zstd'];
} }
return undef return undef
} }
@ -2300,11 +2300,11 @@ sub main() {
if ($pid == 0) { if ($pid == 0) {
open(STDOUT, '>', '/dev/null') or error "cannot open /dev/null for writing: $!"; open(STDOUT, '>', '/dev/null') or error "cannot open /dev/null for writing: $!";
open(STDIN, '<', '/dev/null') or error "cannot open /dev/null for reading: $!"; open(STDIN, '<', '/dev/null') or error "cannot open /dev/null for reading: $!";
exec $tar_compressor or error "cannot exec $tar_compressor: $!"; exec { $tar_compressor->[0] } @{$tar_compressor} or error ("cannot exec " . (join " ", @{$tar_compressor}) . ": $!");
} }
waitpid $pid, 0; waitpid $pid, 0;
if ($? != 0) { if ($? != 0) {
error "failed to start $tar_compressor"; error ("failed to start " . (join " ", @{$tar_compressor}));
} }
} }
} }
@ -2593,12 +2593,12 @@ sub main() {
POSIX::sigprocmask(SIG_UNBLOCK, $sigset) or error "Can't unblock signals: $!"; POSIX::sigprocmask(SIG_UNBLOCK, $sigset) or error "Can't unblock signals: $!";
open(STDOUT, '>', $options->{target}) or error "cannot open $options->{target} for writing: $!"; open(STDOUT, '>', $options->{target}) or error "cannot open $options->{target} for writing: $!";
open(STDIN, '<&', $rfh) or error "cannot open file handle for reading: $!"; open(STDIN, '<&', $rfh) or error "cannot open file handle for reading: $!";
exec $tar_compressor or error "cannot exec $tar_compressor: $!"; exec { $tar_compressor->[0] } @{$tar_compressor} or error ("cannot exec " . (join " ", @{$tar_compressor}) . ": $!");
} }
POSIX::sigprocmask(SIG_UNBLOCK, $sigset) or error "Can't unblock signals: $!"; POSIX::sigprocmask(SIG_UNBLOCK, $sigset) or error "Can't unblock signals: $!";
waitpid $cpid, 0; waitpid $cpid, 0;
if ($? != 0) { if ($? != 0) {
error "failed to start $tar_compressor"; error ("failed to start " . (join " ", @{$tar_compressor}));
} }
} else { } else {
if(!copy($rfh, $options->{target})) { if(!copy($rfh, $options->{target})) {