2017-08-22 00:02:33 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
set -eux
|
|
|
|
|
2021-07-19 02:44:22 +00:00
|
|
|
LIVEFS_EDITOR="${LIVEFS_EDITOR-$(readlink -f "$(dirname $(dirname ${0}))/livefs-editor")}"
|
|
|
|
[ -d $LIVEFS_EDITOR ] || git clone https://github.com/mwhudson/livefs-editor $LIVEFS_EDITOR
|
|
|
|
|
|
|
|
LIVEFS_EDITOR=$(readlink -f $LIVEFS_EDITOR)
|
|
|
|
|
2019-02-28 20:13:05 +00:00
|
|
|
# Path on disk to a custom snapd (e.g. one that trusts the test keys)
|
|
|
|
snapd_pkg=
|
|
|
|
store_url=
|
2019-03-06 00:28:21 +00:00
|
|
|
tracking=stable
|
2021-07-19 02:44:22 +00:00
|
|
|
|
|
|
|
LIVEFS_OPTS=
|
|
|
|
|
|
|
|
add_livefs_opts () {
|
|
|
|
LIVEFS_OPTS="${LIVEFS_OPTS+$LIVEFS_OPTS }$@"
|
|
|
|
}
|
|
|
|
|
2019-03-06 00:28:21 +00:00
|
|
|
while getopts ":ifc:s:n:p:u:t:" opt; do
|
2017-11-16 21:25:08 +00:00
|
|
|
case "${opt}" in
|
|
|
|
i)
|
2021-07-19 02:44:22 +00:00
|
|
|
add_livefs_opts --shell
|
2017-11-16 21:25:08 +00:00
|
|
|
;;
|
2017-11-16 23:34:23 +00:00
|
|
|
c)
|
2021-07-19 02:44:22 +00:00
|
|
|
add_livefs_opts --shell "${OPTARG}"
|
2017-12-21 01:04:17 +00:00
|
|
|
;;
|
2021-07-19 02:44:22 +00:00
|
|
|
f|s|n)
|
|
|
|
echo "switch to livefs-editor directly please" >2
|
|
|
|
exit 1
|
2017-12-21 01:04:17 +00:00
|
|
|
;;
|
2019-02-28 20:13:05 +00:00
|
|
|
p)
|
|
|
|
snapd_pkg="$(readlink -f "${OPTARG}")"
|
|
|
|
;;
|
|
|
|
u)
|
|
|
|
store_url="${OPTARG}"
|
|
|
|
;;
|
2019-03-06 00:28:21 +00:00
|
|
|
t)
|
|
|
|
tracking="${OPTARG}"
|
|
|
|
;;
|
2017-11-16 21:25:08 +00:00
|
|
|
\?)
|
|
|
|
echo "Invalid option: -$OPTARG" >&2
|
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
shift $((OPTIND-1))
|
|
|
|
|
2017-08-22 22:26:09 +00:00
|
|
|
# inject-subiquity-snap.sh $old_iso $subiquity_snap $new_iso
|
2017-08-22 00:02:33 +00:00
|
|
|
|
2017-12-21 01:04:17 +00:00
|
|
|
OLD_ISO="$(readlink -f "${1}")"
|
|
|
|
SUBIQUITY_SNAP_PATH="$(readlink -f "${2}")"
|
2017-12-20 23:02:08 +00:00
|
|
|
SUBIQUITY_SNAP="$(basename $SUBIQUITY_SNAP_PATH)"
|
2017-12-21 01:04:17 +00:00
|
|
|
NEW_ISO="$(readlink -f "${3}")"
|
2017-08-22 00:02:33 +00:00
|
|
|
|
2017-12-20 23:02:08 +00:00
|
|
|
tmpdir="$(mktemp -d)"
|
|
|
|
cd "${tmpdir}"
|
2017-08-22 00:02:33 +00:00
|
|
|
|
|
|
|
cleanup () {
|
2017-12-20 23:02:08 +00:00
|
|
|
rm -rf "${tmpdir}"
|
2017-08-22 00:02:33 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
trap cleanup EXIT
|
|
|
|
|
2019-02-28 20:13:05 +00:00
|
|
|
if [ -n "$store_url" ]; then
|
2021-07-19 02:44:22 +00:00
|
|
|
cat > "store.conf" <<EOF
|
2019-02-28 20:13:05 +00:00
|
|
|
[Service]
|
|
|
|
Environment=SNAPD_DEBUG=1 SNAPD_DEBUG_HTTP=7 SNAPPY_TESTING=1
|
2019-03-01 00:20:17 +00:00
|
|
|
Environment=SNAPPY_FORCE_API_URL=$store_url
|
2019-02-28 20:13:05 +00:00
|
|
|
EOF
|
2021-07-19 02:44:22 +00:00
|
|
|
add_livefs_opts --setup-rootfs --shell 'mkdir -p rootfs/etc/systemd/system/snapd.service.d/' \
|
|
|
|
--cp store.conf rootfs/etc/systemd/system/snapd.service.d/store.conf
|
2019-02-28 20:13:05 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -n "$snapd_pkg" ]; then
|
2021-07-19 02:44:22 +00:00
|
|
|
add_livefs_opts --setup-rootfs \
|
|
|
|
--cp "$snapd_pkg" rootfs \
|
|
|
|
--shell "chroot rootfs dpkg -i $(basename "$snapd_pkg")"
|
|
|
|
--shell "rm rootfs/$(basename "$snapd_pkg")"
|
2017-12-19 02:51:39 +00:00
|
|
|
fi
|
|
|
|
|
2021-07-19 02:44:22 +00:00
|
|
|
PYTHONPATH=$LIVEFS_EDITOR python3 -m livefs_edit $OLD_ISO $NEW_ISO --inject-snap $SUBIQUITY_SNAP_PATH $tracking $LIVEFS_OPTS
|