61 lines
1.2 KiB
Bash
61 lines
1.2 KiB
Bash
|
#!/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
|