If FAKECHROOT_CMD_SUBST sets up wrong substitutions, then binaries
cannot be found. For example if /usr/bin/chroot is listed in
FAKECHROOT_CMD_SUBST but /usr/sbin (the actual location of the chroot
binary) is not in PATH, the command fails
- multiple individual shell scripts instead of one 3.5k line monster
- tests driven by Python script allowing:
* declarative test description in coverage.txt
* collecting errors instead of aborting on first error
* skipping tests
* running specific tests
- rephrase info message to be less misleading
- do not require qemu-$arch-static binary
- check if /proc/sys/fs/binfmt_misc/qemu-$arch exists before reading it
- factor out package downloading function
- replace -oApt::Get::Download-Only=true by -oDebug::pkgDpkgPm=1
- remove guessing of package names in /var/cache/apt/archives/
- drop edsp parsing with proxysolver/mmdebstrap-dump-solution to obtain
downloaded filenames in favour of -oDpkg::Pre-Install-Pkgs::=cat
- /var/cache/apt/archives/ is now allowed to contain packages
- drop --skip=download/empty
- file:// mirrors are now supported if their path is available inside
the chroot
By mixing s@ for --$foo-hook options and manual pushing in --hook-dir,
it can happen that options get lost. Consider the following test:
use Getopt::Long;
my $arr = [];
GetOptions(
'A=s@' => \$arr,
'B=s' => sub { push @{$arr}, $_[1]; }
);
foreach my $hook (@{$arr}) { print "hook: $hook\n"; }
This works fine:
perl test.pl --A=a1 --B=b1 --A=a2 --B=b2
hook: a1
hook: b1
hook: a2
hook: b2
This misses b1:
perl test.pl --B=b1 --A=a2 --B=b2
hook: a2
hook: b2
Without no_chdir=>1 the unshared child process in unshare mode needs
read permissions for the directory from which mmdebstrap is executed.
With this change, the current working directory does not need to be
world-readable anymore.
Closes: #1005857
Reported-by: Trent W. Buck <trentbuck@gmail.com>