reformat code that would exceed 79 character width even after perltidy

This commit is contained in:
Johannes 'josch' Schauer 2020-01-08 17:41:46 +01:00
parent 6abbb3ebd9
commit bba8922243
Signed by untrusted user: josch
GPG key ID: F2CBA5C78FBD83E1

View file

@ -780,7 +780,10 @@ sub run_chroot(&$) {
# there is no /proc in fakechroot mode # there is no /proc in fakechroot mode
next; next;
} }
if (any { $_ eq $options->{mode} } ('root', 'unshare')) { if (
any { $_ eq $options->{mode} }
('root', 'unshare')
) {
push @cleanup_tasks, sub { push @cleanup_tasks, sub {
unlink "$options->{root}/$fname" or warn "cannot unlink $fname: $!"; unlink "$options->{root}/$fname" or warn "cannot unlink $fname: $!";
} }
@ -809,14 +812,18 @@ sub run_chroot(&$) {
} }
} elsif ($type == 5) { # directory } elsif ($type == 5) { # directory
if (!$options->{havemknod}) { if (!$options->{havemknod}) {
if (any { $_ eq $options->{mode} } ('root', 'unshare')) { if (
any { $_ eq $options->{mode} }
('root', 'unshare')
) {
push @cleanup_tasks, sub { push @cleanup_tasks, sub {
rmdir "$options->{root}/$fname" or warn "cannot rmdir $fname: $!"; rmdir "$options->{root}/$fname" or warn "cannot rmdir $fname: $!";
} }
} }
if (-e "$options->{root}/$fname") { if (-e "$options->{root}/$fname") {
if (! -d "$options->{root}/$fname") { if (! -d "$options->{root}/$fname") {
error "$fname already exists but is not a directory"; error "$fname already exists but is not a"
. " directory";
} }
} else { } else {
my $num_created = make_path "$options->{root}/$fname", {error => \my $err}; my $num_created = make_path "$options->{root}/$fname", {error => \my $err};
@ -925,12 +932,14 @@ sub run_chroot(&$) {
# the file might not exist if it was removed in a hook # the file might not exist if it was removed in a hook
if (-e "$options->{root}/sbin/start-stop-daemon") { if (-e "$options->{root}/sbin/start-stop-daemon") {
if (-e "$options->{root}/sbin/start-stop-daemon.REAL") { if (-e "$options->{root}/sbin/start-stop-daemon.REAL") {
error "$options->{root}/sbin/start-stop-daemon.REAL already exists"; error "$options->{root}/sbin/start-stop-daemon.REAL already"
. " exists";
} }
move("$options->{root}/sbin/start-stop-daemon", "$options->{root}/sbin/start-stop-daemon.REAL") or error "cannot move start-stop-daemon: $!"; move("$options->{root}/sbin/start-stop-daemon", "$options->{root}/sbin/start-stop-daemon.REAL") or error "cannot move start-stop-daemon: $!";
open my $fh, '>', "$options->{root}/sbin/start-stop-daemon" or error "cannot open start-stop-daemon: $!"; open my $fh, '>', "$options->{root}/sbin/start-stop-daemon" or error "cannot open start-stop-daemon: $!";
print $fh "#!/bin/sh\n"; print $fh "#!/bin/sh\n";
print $fh "echo \"Warning: Fake start-stop-daemon called, doing nothing\">&2\n"; print $fh "echo \"Warning: Fake start-stop-daemon called, doing"
. " nothing\">&2\n";
close $fh; close $fh;
chmod 0755, "$options->{root}/sbin/start-stop-daemon" or error "cannot chmod start-stop-daemon: $!"; chmod 0755, "$options->{root}/sbin/start-stop-daemon" or error "cannot chmod start-stop-daemon: $!";
} }
@ -972,7 +981,10 @@ sub run_hooks($$) {
if (any { $_ eq $options->{variant} } ('extract', 'custom') if (any { $_ eq $options->{variant} } ('extract', 'custom')
and any { $_ eq $options->{mode} } ('fakechroot', 'proot') and any { $_ eq $options->{mode} } ('fakechroot', 'proot')
and $name ne 'setup') { and $name ne 'setup') {
info "the copy-in, copy-out, tar-in and tar-out commands in fakechroot mode or proot mode might fail in extract and custom variants because there might be no tar inside the chroot"; info "the copy-in, copy-out, tar-in and tar-out commands"
. " in fakechroot mode or proot mode might fail in"
. " extract and custom variants because there might be"
. " no tar inside the chroot";
} }
my $pid = fork() // error "fork() failed: $!"; my $pid = fork() // error "fork() failed: $!";
@ -990,7 +1002,9 @@ sub run_hooks($$) {
if($is_covering) { if($is_covering) {
$prefix = "$EXECUTABLE_NAME -MDevel::Cover=-silent,-nogcov "; $prefix = "$EXECUTABLE_NAME -MDevel::Cover=-silent,-nogcov ";
} }
exec 'sh', '-c', "$prefix$PROGRAM_NAME --hook-helper \"\$1\" \"\$2\" \"\$3\" \"\$4\" \"\$5\" $script", exec 'sh', '-c',
"$prefix$PROGRAM_NAME --hook-helper"
. " \"\$1\" \"\$2\" \"\$3\" \"\$4\" \"\$5\" $script",
'exec', $options->{root}, $options->{mode}, $name, (defined $options->{qemu} ? "qemu-$options->{qemu}" : 'env', $verbosity_level); 'exec', $options->{root}, $options->{mode}, $name, (defined $options->{qemu} ? "qemu-$options->{qemu}" : 'env', $verbosity_level);
} }
waitpid($pid, 0); waitpid($pid, 0);
@ -1002,7 +1016,8 @@ sub run_hooks($$) {
# (the /a regex modifier makes \w match only ASCII) # (the /a regex modifier makes \w match only ASCII)
0 == system($script, $options->{root}) or error "command failed: $script"; 0 == system($script, $options->{root}) or error "command failed: $script";
} else { } else {
info "running --$name-hook in shell: sh -c '$script' exec $options->{root}"; info "running --$name-hook in shell: sh -c '$script' exec"
. " $options->{root}";
# otherwise, wrap everything in sh -c # otherwise, wrap everything in sh -c
0 == system('sh', '-c', $script, 'exec', $options->{root}) or error "command failed: $script"; 0 == system('sh', '-c', $script, 'exec', $options->{root}) or error "command failed: $script";
} }
@ -1216,12 +1231,14 @@ sub setup {
if (-e "/etc/resolv.conf") { if (-e "/etc/resolv.conf") {
copy("/etc/resolv.conf", "$options->{root}/etc/resolv.conf") or error "cannot copy /etc/resolv.conf: $!"; copy("/etc/resolv.conf", "$options->{root}/etc/resolv.conf") or error "cannot copy /etc/resolv.conf: $!";
} else { } else {
warning("Host system does not have a /etc/resolv.conf to copy into the rootfs.") warning("Host system does not have a /etc/resolv.conf to copy into the"
. " rootfs.")
} }
if (-e "/etc/hostname") { if (-e "/etc/hostname") {
copy("/etc/hostname", "$options->{root}/etc/hostname") or error "cannot copy /etc/hostname: $!"; copy("/etc/hostname", "$options->{root}/etc/hostname") or error "cannot copy /etc/hostname: $!";
} else { } else {
warning("Host system does not have a /etc/hostname to copy into the rootfs.") warning("Host system does not have a /etc/hostname to copy into the"
. " rootfs.")
} }
if ($options->{havemknod}) { if ($options->{havemknod}) {
@ -1276,7 +1293,8 @@ sub setup {
if ($options->{mode} eq 'root') { if ($options->{mode} eq 'root') {
my $partial = '/var/lib/apt/lists/partial'; my $partial = '/var/lib/apt/lists/partial';
if (system('/usr/lib/apt/apt-helper', 'drop-privs', '--', 'test', '-r', "$options->{root}$partial") != 0) { if (system('/usr/lib/apt/apt-helper', 'drop-privs', '--', 'test', '-r', "$options->{root}$partial") != 0) {
warning "Download is performed unsandboxed as root as file $options->{root}$partial couldn't be accessed by user _apt"; warning "Download is performed unsandboxed as root as file"
. " $options->{root}$partial couldn't be accessed by user _apt";
open my $fh, '>>', $tmpfile or error "cannot open $tmpfile for appending: $!"; open my $fh, '>>', $tmpfile or error "cannot open $tmpfile for appending: $!";
print $fh "APT::Sandbox::User \"root\";\n"; print $fh "APT::Sandbox::User \"root\";\n";
close $fh; close $fh;
@ -1510,7 +1528,8 @@ sub setup {
my $pid2 = fork() // error "fork() failed: $!"; my $pid2 = fork() // error "fork() failed: $!";
if ($pid2 == 0) { if ($pid2 == 0) {
open(STDIN, '<&', $rfh) or error "cannot open STDIN: $!"; open(STDIN, '<&', $rfh) or error "cannot open STDIN: $!";
debug("running tar -C $options->{root} --keep-directory-symlink --extract --file -"); debug( "running tar -C $options->{root}"
. " --keep-directory-symlink --extract --file -");
eval 'Devel::Cover::set_coverage("none")' if $is_covering; eval 'Devel::Cover::set_coverage("none")' if $is_covering;
exec 'tar', '-C', $options->{root}, '--keep-directory-symlink', '--extract', '--file', '-'; exec 'tar', '-C', $options->{root}, '--keep-directory-symlink', '--extract', '--file', '-';
} }
@ -1677,11 +1696,15 @@ sub setup {
} }
my $fakechrootdir = "/usr/lib/$deb_host_multiarch/fakechroot"; my $fakechrootdir = "/usr/lib/$deb_host_multiarch/fakechroot";
if (! -e "$fakechrootdir/libfakechroot.so") { if (! -e "$fakechrootdir/libfakechroot.so") {
error "$fakechrootdir/libfakechroot.so doesn't exist. Install libfakechroot:$options->{nativearch} outside the chroot"; error "$fakechrootdir/libfakechroot.so doesn't exist."
. " Install libfakechroot:$options->{nativearch}"
. " outside the chroot";
} }
my $fakerootdir = "/usr/lib/$deb_host_multiarch/libfakeroot"; my $fakerootdir = "/usr/lib/$deb_host_multiarch/libfakeroot";
if (! -e "$fakerootdir/libfakeroot-sysv.so") { if (! -e "$fakerootdir/libfakeroot-sysv.so") {
error "$fakerootdir/libfakeroot-sysv.so doesn't exist. Install libfakeroot:$options->{nativearch} outside the chroot"; error "$fakerootdir/libfakeroot-sysv.so doesn't exist."
. " Install libfakeroot:$options->{nativearch}"
. " outside the chroot";
} }
# fakechroot only fills LD_LIBRARY_PATH with the # fakechroot only fills LD_LIBRARY_PATH with the
# directories of the host's architecture. We append the # directories of the host's architecture. We append the
@ -1712,12 +1735,17 @@ sub setup {
my $ret = system @chrootcmd, '/bin/mv', '/000-move-me', '/001-delete-me'; my $ret = system @chrootcmd, '/bin/mv', '/000-move-me', '/001-delete-me';
if ($ret != 0) { if ($ret != 0) {
if ($options->{mode} eq 'proot') { if ($options->{mode} eq 'proot') {
info "the /bin/mv binary inside the chroot doesn't work under proot"; info "the /bin/mv binary inside the chroot doesn't"
info "this is likely due to missing support for renameat2 in proot"; . " work under proot";
info "this is likely due to missing support for"
. " renameat2 in proot";
info "see https://github.com/proot-me/PRoot/issues/147"; info "see https://github.com/proot-me/PRoot/issues/147";
} else { } else {
info "the /bin/mv binary inside the chroot doesn't work under fakechroot"; info "the /bin/mv binary inside the chroot doesn't"
info "with certain versions of coreutils and glibc, this is due to missing support for renameat2 in fakechroot"; . " work under fakechroot";
info "with certain versions of coreutils and glibc,"
. " this is due to missing support for renameat2 in"
. " fakechroot";
info "see https://github.com/dex4er/fakechroot/issues/60"; info "see https://github.com/dex4er/fakechroot/issues/60";
} }
info "expect package post installation scripts not to work"; info "expect package post installation scripts not to work";
@ -1830,7 +1858,8 @@ sub setup {
} }
close $dh; close $dh;
if (scalar @debs_to_install == 0) { if (scalar @debs_to_install == 0) {
warning "nothing got downloaded -- maybe the packages were already installed?"; warning "nothing got downloaded -- maybe the packages"
. " were already installed?";
} else { } else {
# we need --force-depends because dpkg does not take # we need --force-depends because dpkg does not take
# Pre-Depends into account and thus doesn't install # Pre-Depends into account and thus doesn't install
@ -1990,7 +2019,8 @@ sub main() {
if (any { $_ eq $command} ('copy-in', 'tar-in', 'upload')) { if (any { $_ eq $command} ('copy-in', 'tar-in', 'upload')) {
if (scalar @ARGV < 9) { if (scalar @ARGV < 9) {
error "copy-in and tar-in need at least one path on the outside and the output path inside the chroot" error "copy-in and tar-in need at least one path on the"
. " outside and the output path inside the chroot";
} }
my $outpath = $ARGV[-1]; my $outpath = $ARGV[-1];
for (my $i = 7; $i < $#ARGV; $i++) { for (my $i = 7; $i < $#ARGV; $i++) {
@ -2085,7 +2115,8 @@ sub main() {
} }
} elsif (any { $_ eq $command} ('copy-out', 'tar-out', 'download')) { } elsif (any { $_ eq $command} ('copy-out', 'tar-out', 'download')) {
if (scalar @ARGV < 9) { if (scalar @ARGV < 9) {
error "copy-out needs at least one path inside the chroot and the output path on the outside" error "copy-out needs at least one path inside the chroot and"
. " the output path on the outside";
} }
my $outpath = $ARGV[-1]; my $outpath = $ARGV[-1];
for (my $i = 7; $i < $#ARGV; $i++) { for (my $i = 7; $i < $#ARGV; $i++) {
@ -2214,7 +2245,8 @@ sub main() {
'keyring=s' => sub { 'keyring=s' => sub {
my ($opt_name, $opt_value) = @_; my ($opt_name, $opt_value) = @_;
if ($opt_value =~ /"/) { if ($opt_value =~ /"/) {
error "--keyring: apt cannot handle paths with double quotes: $opt_value"; error "--keyring: apt cannot handle paths with double quotes:"
. " $opt_value";
} }
if (! -e $opt_value) { if (! -e $opt_value) {
error "keyring \"$opt_value\" does not exist"; error "keyring \"$opt_value\" does not exist";
@ -2253,7 +2285,8 @@ sub main() {
} }
foreach my $arg (@{$options->{noop}}) { foreach my $arg (@{$options->{noop}}) {
info "The option --$arg is a no-op. It only exists for compatibility with some debootstrap wrappers."; info "The option --$arg is a no-op. It only exists for compatibility"
. " with some debootstrap wrappers.";
} }
my @valid_variants = ('extract', 'custom', 'essential', 'apt', 'required', my @valid_variants = ('extract', 'custom', 'essential', 'apt', 'required',
@ -2267,7 +2300,8 @@ sub main() {
} }
if ($options->{variant} eq 'essential' and scalar @{$options->{include}} > 0) { if ($options->{variant} eq 'essential' and scalar @{$options->{include}} > 0) {
warning "cannot install extra packages with variant essential because apt is missing"; warning "cannot install extra packages with variant essential because"
. " apt is missing";
} }
# fakeroot is an alias for fakechroot # fakeroot is an alias for fakechroot
@ -2361,10 +2395,14 @@ sub main() {
chomp(my $content = do { local $/; <$fh> }); chomp(my $content = do { local $/; <$fh> });
close($fh); close($fh);
if ($content ne "1") { if ($content ne "1") {
info "/proc/sys/kernel/unprivileged_userns_clone is set to $content"; info "/proc/sys/kernel/unprivileged_userns_clone is set to"
info "try running: sudo sysctl -w kernel.unprivileged_userns_clone=1"; . " $content";
info "or permanently enable unprivileged usernamespaces by putting the setting into /etc/sysctl.d/"; info "Try running:";
info "see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=898446"; info " sudo sysctl -w kernel.unprivileged_userns_clone=1";
info "or permanently enable unprivileged usernamespaces by"
. " putting the setting into /etc/sysctl.d/";
info "see https://bugs.debian.org/cgi-bin/"
. "bugreport.cgi?bug=898446";
} }
exit 1; exit 1;
} }
@ -2394,7 +2432,8 @@ sub main() {
$options->{nativearch} = $hostarch; $options->{nativearch} = $hostarch;
$options->{foreignarchs} = []; $options->{foreignarchs} = [];
if (scalar @architectures == 0) { if (scalar @architectures == 0) {
warning "empty architecture list: falling back to native architecture $hostarch"; warning "empty architecture list: falling back to native architecture"
. " $hostarch";
} elsif (scalar @architectures == 1) { } elsif (scalar @architectures == 1) {
$options->{nativearch} = $architectures[0]; $options->{nativearch} = $architectures[0];
} else { } else {
@ -2444,7 +2483,8 @@ sub main() {
# if exec didn't work (for example because the arch-test # if exec didn't work (for example because the arch-test
# program is missing) prepare for the worst and assume that # program is missing) prepare for the worst and assume that
# the architecture cannot be executed # the architecture cannot be executed
print "$options->{nativearch}: not supported on this machine/kernel\n"; print "$options->{nativearch}: not supported on this"
. " machine/kernel\n";
exit 1; exit 1;
} }
chomp (my $content = do { local $/; <$fh> }); chomp (my $content = do { local $/; <$fh> });
@ -2460,10 +2500,11 @@ sub main() {
no warnings; # don't print a warning if the following fails no warnings; # don't print a warning if the following fails
exec 'arch-test', '-n', $options->{nativearch}; exec 'arch-test', '-n', $options->{nativearch};
} }
print "$options->{nativearch}: not supported on this machine/kernel\n";
# if exec didn't work (for example because the arch-test # if exec didn't work (for example because the arch-test
# program is missing) prepare for the worst and assume that # program is missing) prepare for the worst and assume that
# the architecture cannot be executed # the architecture cannot be executed
print "$options->{nativearch}: not supported on this"
. " machine/kernel\n";
exit 1; exit 1;
} }
chomp (my $content = do { local $/; <$fh> }); chomp (my $content = do { local $/; <$fh> });
@ -2485,46 +2526,55 @@ sub main() {
{ {
open my $fh, '<', '/proc/filesystems' or error "failed to open /proc/filesystems: $!"; open my $fh, '<', '/proc/filesystems' or error "failed to open /proc/filesystems: $!";
unless (grep /^nodev\tbinfmt_misc$/, (<$fh>)) { unless (grep /^nodev\tbinfmt_misc$/, (<$fh>)) {
warning "binfmt_misc not found in /proc/filesystems -- is the module loaded?"; warning "binfmt_misc not found in /proc/filesystems --"
. " is the module loaded?";
} }
close $fh; close $fh;
} }
{ {
open my $fh, '<', '/proc/mounts' or error "failed to open /proc/mounts: $!"; open my $fh, '<', '/proc/mounts' or error "failed to open /proc/mounts: $!";
unless (grep /^binfmt_misc \/proc\/sys\/fs\/binfmt_misc binfmt_misc/, (<$fh>)) { unless (grep /^binfmt_misc \/proc\/sys\/fs\/binfmt_misc binfmt_misc/, (<$fh>)) {
warning "binfmt_misc not found in /proc/mounts -- not mounted?"; warning "binfmt_misc not found in /proc/mounts -- not"
. " mounted?";
} }
close $fh; close $fh;
} }
{ {
if (!exists $deb2qemu->{$options->{nativearch}}) { if (!exists $deb2qemu->{$options->{nativearch}}) {
warning "no mapping from $options->{nativearch} to qemu-user binary"; warning "no mapping from $options->{nativearch} to"
. " qemu-user binary";
} else { } else {
my $binfmt_identifier = 'qemu-' . $deb2qemu->{$options->{nativearch}}; my $binfmt_identifier = 'qemu-' . $deb2qemu->{$options->{nativearch}};
open my $fh, '-|', '/usr/sbin/update-binfmts', '--display', $binfmt_identifier // error "failed to fork(): $!"; open my $fh, '-|', '/usr/sbin/update-binfmts', '--display', $binfmt_identifier // error "failed to fork(): $!";
chomp (my $binfmts = do { local $/; <$fh> }); chomp (my $binfmts = do { local $/; <$fh> });
close $fh; close $fh;
if ($binfmts eq '') { if ($binfmts eq '') {
warning "$binfmt_identifier is not a supported binfmt name"; warning "$binfmt_identifier is not a supported"
. " binfmt name";
} }
} }
} }
error "$options->{nativearch} can neither be executed natively nor via qemu user emulation with binfmt_misc"; error "$options->{nativearch} can neither be executed natively"
. " nor via qemu user emulation with binfmt_misc";
} elsif ($withemu == 0 and $noemu == 1) { } elsif ($withemu == 0 and $noemu == 1) {
error "arch-test succeeded without emu but not with emu"; error "arch-test succeeded without emu but not with emu";
} elsif ($withemu == 1 and $noemu == 0) { } elsif ($withemu == 1 and $noemu == 0) {
info "$options->{nativearch} cannot be executed, falling back to qemu-user"; info "$options->{nativearch} cannot be executed, falling back"
. " to qemu-user";
if (!exists $deb2qemu->{$options->{nativearch}}) { if (!exists $deb2qemu->{$options->{nativearch}}) {
error "no mapping from $options->{nativearch} to qemu-user binary"; error "no mapping from $options->{nativearch} to qemu-user"
. " binary";
} }
$options->{qemu} = $deb2qemu->{$options->{nativearch}}; $options->{qemu} = $deb2qemu->{$options->{nativearch}};
} elsif ($withemu == 1 and $noemu == 1) { } elsif ($withemu == 1 and $noemu == 1) {
info "$options->{nativearch} is different from $hostarch but can be executed natively"; info "$options->{nativearch} is different from $hostarch but"
. " can be executed natively";
} else { } else {
error "logic error"; error "logic error";
} }
} else { } else {
info "chroot architecture $options->{nativearch} is equal to the host's architecture"; info "chroot architecture $options->{nativearch} is equal to the"
. " host's architecture";
} }
} }
@ -2646,7 +2696,8 @@ sub main() {
error "gpg failed"; error "gpg failed";
} }
} else { } else {
info "gpg --version failed: cannot determine the right signed-by value" info "gpg --version failed: cannot determine the right"
. " signed-by value"
} }
remove_tree($gpghome, {error => \my $err}); remove_tree($gpghome, {error => \my $err});
if (@$err) { if (@$err) {
@ -2707,11 +2758,15 @@ sub main() {
} elsif (any {$_ eq $suite} @debstable) { } elsif (any {$_ eq $suite} @debstable) {
$sourceslist .= "deb$signedby $mirror $suite-updates $compstr\n"; $sourceslist .= "deb$signedby $mirror $suite-updates $compstr\n";
if (any {$_ eq $suite} ('oldoldstable', 'oldstable', 'stable', 'jessie', 'stretch', 'buster')) { if (any {$_ eq $suite} ('oldoldstable', 'oldstable', 'stable', 'jessie', 'stretch', 'buster')) {
$sourceslist .= "deb$signedby $secmirror $suite/updates $compstr\n"; $sourceslist
.= "deb$signedby $secmirror $suite/updates"
. " $compstr\n";
} else { } else {
# starting from bullseye use # starting from bullseye use
# https://lists.debian.org/87r26wqr2a.fsf@43-1.org # https://lists.debian.org/87r26wqr2a.fsf@43-1.org
$sourceslist .= "deb$signedby $secmirror $suite-security $compstr\n"; $sourceslist
.= "deb$signedby $secmirror $suite-security"
. " $compstr\n";
} }
} }
} }
@ -2725,7 +2780,8 @@ sub main() {
if ($options->{target} ne '-') { if ($options->{target} ne '-') {
my $abs_path = abs_path($options->{target}); my $abs_path = abs_path($options->{target});
if (!defined $abs_path) { if (!defined $abs_path) {
error "unable to get absolute path of target directory $options->{target}"; error "unable to get absolute path of target directory"
. " $options->{target}";
} }
$options->{target} = $abs_path; $options->{target} = $abs_path;
} }
@ -2771,7 +2827,9 @@ sub main() {
if ($options->{maketar} or $options->{makesqfs}) { if ($options->{maketar} or $options->{makesqfs}) {
if (any { $_ eq $options->{variant} } ('extract', 'custom') and any { $_ eq $options->{mode} } ('fakechroot', 'proot')) { if (any { $_ eq $options->{variant} } ('extract', 'custom') and any { $_ eq $options->{mode} } ('fakechroot', 'proot')) {
info "creating a tarball or squashfs image in fakechroot mode or proot mode might fail in extract and custom variants because there might be no tar inside the chroot"; info "creating a tarball or squashfs image in fakechroot mode or"
. " proot mode might fail in extract and custom variants because"
. " there might be no tar inside the chroot";
} }
# try to fail early if target tarball or squashfs image cannot be # try to fail early if target tarball or squashfs image cannot be
# opened for writing # opened for writing
@ -2822,7 +2880,8 @@ sub main() {
# rationale for requiring an empty directory: # rationale for requiring an empty directory:
# https://bugs.debian.org/833525 # https://bugs.debian.org/833525
if (readdir $dh2) { if (readdir $dh2) {
error "$options->{root} contains a non-empty lost+found directory"; error "$options->{root} contains a non-empty"
. " lost+found directory";
} }
closedir($dh2); closedir($dh2);
} else { } else {
@ -3435,7 +3494,9 @@ sub main() {
# working directory" if the working directory cannot be # working directory" if the working directory cannot be
# accessed by the unprivileged unshared user. Thus, we first # accessed by the unprivileged unshared user. Thus, we first
# navigate to the parent of the root directory. # navigate to the parent of the root directory.
chdir "$options->{root}/.." or error "unable to chdir() to parent directory of $options->{root}: $!"; chdir "$options->{root}/.."
or error "unable to chdir() to parent directory of"
. " $options->{root}: $!";
remove_tree($options->{root}, {error => \my $err}); remove_tree($options->{root}, {error => \my $err});
if (@$err) { if (@$err) {
for my $diag (@$err) { for my $diag (@$err) {