make_mirror.sh,run_qemu.sh: use temporary directory for temporary files instead of the current working directory

This commit is contained in:
Johannes 'josch' Schauer 2018-11-23 17:44:59 +01:00
parent 8cbc9e9a00
commit 0cc9e3b44a
Signed by: josch
GPG key ID: F2CBA5C78FBD83E1
2 changed files with 24 additions and 20 deletions

View file

@ -163,11 +163,12 @@ mkdir -p "$cachedir"
# Write tarfile via redirection because in the Debian package autopkgtest
# ./mmdebstrap is a suid binary and we do not want the tarfile being owned
# by root.
tmpdir="$(mktemp -d)"
./mmdebstrap --variant=apt --architectures=amd64,armhf --mode=unshare \
--include=linux-image-amd64,systemd-sysv,perl,arch-test,fakechroot,fakeroot,mount,uidmap,proot,qemu-user-static,binfmt-support,qemu-user,dpkg-dev,mini-httpd,libdevel-cover-perl,debootstrap,libfakechroot:armhf,libfakeroot:armhf \
unstable > debian-unstable.tar
unstable > "$tmpdir/debian-unstable.tar"
cat << END > extlinux.conf
cat << END > "$tmpdir/extlinux.conf"
default linux
timeout 0
@ -176,7 +177,7 @@ kernel /vmlinuz
append initrd=/initrd.img root=/dev/sda1 rw console=ttyS0,115200
serial 0 115200
END
cat << END > mmdebstrap.service
cat << END > "$tmpdir/mmdebstrap.service"
[Unit]
Description=mmdebstrap worker script
@ -195,7 +196,7 @@ END
# filesystem that doesn't support ownership information at all and a umask that
# gives read/write access to everybody.
# https://github.com/pjcj/Devel--Cover/issues/223
cat << 'END' > worker.sh
cat << 'END' > "$tmpdir/worker.sh"
#!/bin/sh
mount -t 9p -o trans=virtio,access=any mmdebstrap /mnt
(
@ -215,33 +216,34 @@ mount -t 9p -o trans=virtio,access=any mmdebstrap /mnt
umount /mnt
systemctl poweroff
END
chmod +x worker.sh
cat << 'END' > mini-httpd
chmod +x "$tmpdir/worker.sh"
cat << 'END' > "$tmpdir/mini-httpd"
START=1
DAEMON_OPTS="-h 127.0.0.1 -p 80 -u nobody -dd /mnt -i /var/run/mini-httpd.pid -T UTF-8"
END
cat << 'END' > hosts
cat << 'END' > "$tmpdir/hosts"
127.0.0.1 localhost
END
#libguestfs-test-tool
#export LIBGUESTFS_DEBUG=1 LIBGUESTFS_TRACE=1
guestfish -N debian-unstable.img=disk:2G -- \
guestfish -N "$tmpdir/debian-unstable.img"=disk:2G -- \
part-disk /dev/sda mbr : \
part-set-bootable /dev/sda 1 true : \
mkfs ext2 /dev/sda1 : \
mount /dev/sda1 / : \
tar-in debian-unstable.tar / : \
tar-in "$tmpdir/debian-unstable.tar" / : \
extlinux / : \
copy-in extlinux.conf / : \
copy-in "$tmpdir/extlinux.conf" / : \
mkdir-p /etc/systemd/system/multi-user.target.wants : \
ln-s ../mmdebstrap.service /etc/systemd/system/multi-user.target.wants/mmdebstrap.service : \
copy-in mmdebstrap.service /etc/systemd/system/ : \
copy-in worker.sh / : \
copy-in mini-httpd /etc/default : \
copy-in hosts /etc/ :
rm extlinux.conf worker.sh mini-httpd hosts debian-unstable.tar mmdebstrap.service
qemu-img convert -O qcow2 debian-unstable.img "$cachedir/debian-unstable.qcow"
rm debian-unstable.img
copy-in "$tmpdir/mmdebstrap.service" /etc/systemd/system/ : \
copy-in "$tmpdir/worker.sh" / : \
copy-in "$tmpdir/mini-httpd" /etc/default : \
copy-in "$tmpdir/hosts" /etc/ :
rm "$tmpdir/extlinux.conf" "$tmpdir/worker.sh" "$tmpdir/mini-httpd" "$tmpdir/hosts" "$tmpdir/debian-unstable.tar" "$tmpdir/mmdebstrap.service"
qemu-img convert -O qcow2 "$tmpdir/debian-unstable.img" "$cachedir/debian-unstable.qcow"
rm "$tmpdir/debian-unstable.img"
rmdir "$tmpdir"
mirror="http://127.0.0.1/debian"
SOURCE_DATE_EPOCH=$(date --date="$(grep-dctrl -s Date -n '' "$mirrordir/dists/unstable/Release")" +%s)

View file

@ -3,19 +3,21 @@
set -eu
cachedir="./shared/cache"
tmpdir="$(mktemp -d)"
# the path to debian-unstable.qcow must be absolute or otherwise qemu will
# look for the path relative to debian-unstable-overlay.qcow
qemu-img create -f qcow2 -b "$(realpath $cachedir)/debian-unstable.qcow" debian-unstable-overlay.qcow
qemu-img create -f qcow2 -b "$(realpath $cachedir)/debian-unstable.qcow" "$tmpdir/debian-unstable-overlay.qcow"
qemu-system-x86_64 -enable-kvm -m 512M -nographic \
-monitor unix:/tmp/monitor,server,nowait \
-serial unix:/tmp/ttyS0,server,nowait \
-serial unix:/tmp/ttyS1,server,nowait \
-virtfs local,id=mmdebstrap,path="$(pwd)/shared",security_model=none,mount_tag=mmdebstrap \
-drive file=debian-unstable-overlay.qcow,cache=unsafe,index=0
-drive file="$tmpdir/debian-unstable-overlay.qcow",cache=unsafe,index=0
head --lines=-1 shared/result.txt
if [ "$(tail --lines=1 shared/result.txt)" -ne 0 ]; then
echo "test.sh failed"
exit 1
fi
rm debian-unstable-overlay.qcow shared/result.txt
rm "$tmpdir/debian-unstable-overlay.qcow" shared/result.txt
rmdir "$tmpdir"