diff options
Diffstat (limited to 'scripts/updater-medkit.sh')
-rwxr-xr-x | scripts/updater-medkit.sh | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/scripts/updater-medkit.sh b/scripts/updater-medkit.sh new file mode 100755 index 0000000..0ab5078 --- /dev/null +++ b/scripts/updater-medkit.sh @@ -0,0 +1,121 @@ +#!/bin/sh +# This script is real medkit generator using updater +set -e + +VERSION="3.7" +MODEL=omnia +BRANCH= +while [ $# -gt 0 ]; do + case "$1" in + --version) + shift + VERSION="$1" + ;; + --model) + shift + MODE="$1" + ;; + --branch) + shift + BRANCH="$1" + ;; + *) + echo "Unknown option: $1" >&2 + exit 1 + ;; + esac + shift +done + +ROOT=root-$MODEL +[ -n "$BRANCH" ] && ROOT=$ROOT-$BRANCH +rm -rf $ROOT +mkdir $ROOT + +OUTPUT=medkit-$MODEL +[ -n "$BRANCH" ] && OUTPUT=$OUTPUT-$BRANCH +OUTPUT=$PWD/$OUTPUT.tar.gz + +## Create base filesystem for updater +ln -s tmp $ROOT/var +# Create lock required by updater +mkdir -p $ROOT/tmp/lock +# Create opkg status file and info file +mkdir -p $ROOT/usr/lib/opkg/info +touch $ROOT/usr/lib/opkg/status +# And updater directory +mkdir -p $ROOT/usr/share/updater +# Copy additional files +[ -e files/* ] && cp -r files/* $ROOT/ + +# Create fake reboot to not potentially reboot host if requested +mkdir -p .fake_bin +echo "#!/bin/sh +echo Reboot faked!" > .fake_bin/reboot +chmod +x .fake_bin/reboot +export PATH="$(readlink -f $PWD/.fake_bin):$PATH" + +# TODO we migh need base files installed first + +ABSOUT="$(readlink -f $ROOT)" +## Dump our entry file +UPDATER_CONF=".entry-$MODEL-$BRANCH.lua" +rm -f "$UPDATER_CONF" && touch "$UPDATER_CONF" +if [ -e l10n ]; then + echo "l10n = {" >> "$UPDATER_CONF" + while read L; do + echo "'$L'," >> "$UPDATER_CONF" + done < l10n + echo "}" >> "$UPDATER_CONF" +else + # Use no localizations + echo "l10n = {} -- table with selected localizations" >> "$UPDATER_CONF" +fi +[ -n "$BRANCH" ] && CBRANCH="/$BRANCH" +echo "Export 'l10n' +-- This is helper function for including localization packages. +function for_l10n(fragment) + for _, lang in pairs(l10n or {}) do + Install(fragment .. lang, {ignore = {'missing'}}) + end +end +Export 'for_l10n' + +local script_options = { + security = 'Remote', + ca = 'file://$PWD/.updater/legacy/updater.pem', + crl = 'file:///tmp/crl.pem', + ocsp = false, + pubkey = { + 'file://$PWD/.release.pub', + 'file://$PWD/.standby.pub', + 'file://$PWD/.test.pub' + } +} +base_url = 'https://api.turris.cz/updater-defs/$VERSION/$MODEL$CBRANCH/' + +Script('base', base_url .. 'base.lua', script_options) +" >> "$UPDATER_CONF" +if [ -e userlists ]; then + while read L; do + echo "Script('userlist-$L', base_url .. 'userlists/$L.lua', script_options)" >> "$UPDATER_CONF" + done < userlists +fi +# Run updater to pull in packages from base list +.updater/bin/pkgupdate --no-replan --usign=.usign/usign -R $ABSOUT --batch file://$UPDATER_CONF + +# Tar it to archive in current directory +( + cd $ROOT + # Do cleanups first + rm -f var/lock/opkg.lock + rm -f usr/share/updater/flags + rm -rf usr/share/updater/unpacked + rm -rf var/opkg-collided + # Now create archive + tar -czf "$OUTPUT" * +) + +# Do cleanups +rm -rf .fake_bin +rm -f $UPDATER_CONF |