diff --git a/scripts/quick-test-this-branch.sh b/scripts/quick-test-this-branch.sh new file mode 100755 index 00000000..aef69d46 --- /dev/null +++ b/scripts/quick-test-this-branch.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +set -eux + +src="$(dirname "$(dirname "$(readlink -f "${0}")")")" +old_iso="$(readlink -f "${1}")" +new_iso="$(readlink -f "${2}")" + +tmpdir="$(mktemp -d)" +cd "${tmpdir}" + +_MOUNTS=() + +do_mount_existing () { + local mountpoint="${!#}" + mount "$@" + _MOUNTS=("${mountpoint}" "${_MOUNTS[@]+"${_MOUNTS[@]}"}") +} + +do_mount () { + local mountpoint="${!#}" + mkdir "${mountpoint}" + do_mount_existing "$@" +} + +clean_mounts () { + for m in "${_MOUNTS[@]+"${_MOUNTS[@]}"}"; do + umount "${m}" + done + _MOUNTS=() +} + +cleanup () { + clean_mounts + rm -rf "${tmpdir}" +} + +trap cleanup EXIT + +do_mount $old_iso old_iso +do_mount old_iso/casper/installer.squashfs installer + +$src/scripts/slimy-update-snap.sh installer/var/lib/snapd/seed/snaps/subiquity_*.snap subiquity_new.snap + +clean_mounts + +$src/scripts/inject-subiquity-snap.sh $old_iso subiquity_new.snap $new_iso diff --git a/scripts/slimy-update-snap.sh b/scripts/slimy-update-snap.sh new file mode 100755 index 00000000..93567db8 --- /dev/null +++ b/scripts/slimy-update-snap.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +# slimy-update-snap.sh $old_snap $new_snap + +set -eux + +src="$(dirname "$(dirname "$(readlink -f "${0}")")")" +old="$(readlink -f "${1}")" +new="$(readlink -f "${2}")" + +tmpdir="$(mktemp -d)" +cd "${tmpdir}" + +_MOUNTS=() + +do_mount_existing () { + local mountpoint="${!#}" + mount "$@" + _MOUNTS=("${mountpoint}" "${_MOUNTS[@]+"${_MOUNTS[@]}"}") +} + +do_mount () { + local mountpoint="${!#}" + mkdir "${mountpoint}" + do_mount_existing "$@" +} + +add_overlay() { + local lower="$1" + local mountpoint="$2" + local work="$(mktemp -dp "${tmpdir}")" + if [ -n "${3-}" ]; then + local upper="${3}" + else + local upper="$(mktemp -dp "${tmpdir}")" + fi + chmod go+rx "${work}" "${upper}" + do_mount -t overlay overlay -o lowerdir="${lower}",upperdir="${upper}",workdir="${work}" "${mountpoint}" +} + + +cleanup () { + for m in "${_MOUNTS[@]+"${_MOUNTS[@]}"}"; do + umount "${m}" + done + rm -rf "${tmpdir}" +} + +trap cleanup EXIT + +do_mount $old old + +add_overlay old new + +rm -rf new/lib/python3.6/site-packages/subiquity +rm -rf new/lib/python3.6/site-packages/subiquitycore + +git -C $src archive HEAD subiquity subiquitycore | tar -C new/lib/python3.6/site-packages/ -x + +mksquashfs new $new -comp gzip -Xcompression-level 3