From 1219a65723d343e5a7fd4cdca8bf49dbddf0fe5a Mon Sep 17 00:00:00 2001 From: Johannes 'josch' Schauer Date: Mon, 26 Aug 2019 18:25:21 +0200 Subject: [PATCH] add /var/lib/dpkg/arch in chrootless mode when chroot architecture differs --- coverage.sh | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++- mmdebstrap | 8 +++++++- 2 files changed, 63 insertions(+), 2 deletions(-) diff --git a/coverage.sh b/coverage.sh index b1cb07b..6dfc0f7 100755 --- a/coverage.sh +++ b/coverage.sh @@ -48,7 +48,7 @@ if [ ! -e shared/mmdebstrap ] || [ mmdebstrap -nt shared/mmdebstrap ]; then fi starttime= -total=91 +total=92 i=1 print_header() { @@ -1153,6 +1153,61 @@ else ./run_null.sh fi +print_header "mode=chrootless,variant=custom: install libmagic-mgc on armhf" +cat << END > shared/test.sh +#!/bin/sh +set -eu +export LC_ALL=C.UTF-8 +[ "\$(id -u)" -eq 0 ] && ! id -u user > /dev/null 2>&1 && adduser --gecos user --disabled-password user +prefix= +[ "\$(id -u)" -eq 0 ] && prefix="runuser -u user --" +\$prefix $CMD --mode=chrootless --variant=custom --architectures=armhf --include=libmagic-mgc $DEFAULT_DIST /tmp/debian-chroot $mirror +# delete contents of libmagic-mgc +rm /tmp/debian-chroot/usr/lib/file/magic.mgc +rm /tmp/debian-chroot/usr/share/doc/libmagic-mgc/README.Debian +rm /tmp/debian-chroot/usr/share/doc/libmagic-mgc/changelog.Debian.gz +rm /tmp/debian-chroot/usr/share/doc/libmagic-mgc/changelog.gz +rm /tmp/debian-chroot/usr/share/doc/libmagic-mgc/copyright +rm /tmp/debian-chroot/usr/share/file/magic.mgc +rm /tmp/debian-chroot/usr/share/misc/magic.mgc +# delete real files +rm /tmp/debian-chroot/etc/apt/sources.list +rm /tmp/debian-chroot/etc/fstab +rm /tmp/debian-chroot/etc/hostname +rm /tmp/debian-chroot/etc/resolv.conf +rm /tmp/debian-chroot/var/lib/dpkg/status +rm /tmp/debian-chroot/var/lib/dpkg/available +rm /tmp/debian-chroot/var/cache/apt/archives/lock +rm /tmp/debian-chroot/var/lib/dpkg/lock +rm /tmp/debian-chroot/var/lib/dpkg/lock-frontend +rm /tmp/debian-chroot/var/lib/dpkg/cmethopt +rm /tmp/debian-chroot/var/lib/apt/lists/lock +rm /tmp/debian-chroot/var/lib/apt/extended_states +## delete merged usr symlinks +#rm /tmp/debian-chroot/libx32 +#rm /tmp/debian-chroot/lib64 +#rm /tmp/debian-chroot/lib32 +#rm /tmp/debian-chroot/sbin +#rm /tmp/debian-chroot/bin +#rm /tmp/debian-chroot/lib +# in chrootless mode, there is more to remove +rm /tmp/debian-chroot/var/log/apt/eipp.log.xz +rm /tmp/debian-chroot/var/lib/dpkg/arch +rm /tmp/debian-chroot/var/lib/dpkg/triggers/Lock +rm /tmp/debian-chroot/var/lib/dpkg/triggers/Unincorp +rm /tmp/debian-chroot/var/lib/dpkg/status-old +rm /tmp/debian-chroot/var/lib/dpkg/info/format +rm /tmp/debian-chroot/var/lib/dpkg/info/libmagic-mgc.md5sums +rm /tmp/debian-chroot/var/lib/dpkg/info/libmagic-mgc.list +# the rest should be empty directories that we can rmdir recursively +find /tmp/debian-chroot -depth -print0 | xargs -0 rmdir +END +if [ "$HAVE_QEMU" = "yes" ]; then + ./run_qemu.sh +else + ./run_null.sh +fi + print_header "mode=root,variant=custom: install busybox-based sub-essential system" cat << END > shared/test.sh #!/bin/sh diff --git a/mmdebstrap b/mmdebstrap index f7fffc4..8d62a20 100755 --- a/mmdebstrap +++ b/mmdebstrap @@ -1023,7 +1023,13 @@ sub setup { close $fh; } - if (scalar @{$options->{foreignarchs}} > 0) { + # we create /var/lib/dpkg/arch inside the chroot either if there is more + # than the native architecture in the chroot or if chrootless mode is + # used to create a chroot of a different architecture than the native + # architecture outside the chroot. + chomp (my $hostarch = `dpkg --print-architecture`); + if (scalar @{$options->{foreignarchs}} > 0 or ( + $options->{mode} eq 'chrootless' and $hostarch ne $options->{nativearch})) { open my $fh, '>', "$options->{root}/var/lib/dpkg/arch" or error "cannot open /var/lib/dpkg/arch: $!"; print $fh "$options->{nativearch}\n"; foreach my $arch (@{$options->{foreignarchs}}) {