summaryrefslogtreecommitdiff
path: root/scripts/updater-medkit.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/updater-medkit.sh')
-rwxr-xr-xscripts/updater-medkit.sh121
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