diff options
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/build_tools.sh | 53 | ||||
-rwxr-xr-x | scripts/updater-medkit.sh | 121 |
2 files changed, 174 insertions, 0 deletions
diff --git a/scripts/build_tools.sh b/scripts/build_tools.sh new file mode 100755 index 0000000..2adb27b --- /dev/null +++ b/scripts/build_tools.sh @@ -0,0 +1,53 @@ +#!/bin/sh +# This tool pulls down and builds updater-ng and usign +# It expects to be executed in root directory of this project +set -e + +git_pull() { + if [ ! -d $1 ]; then + git clone $2 $1 + pushd $1 >/dev/null + git submodule update --init --recursive + popd >/dev/null + else + pushd $1 >/dev/null + git fetch + if ! git diff --quiet HEAD origin/master; then + git clean -Xdf + git reset --hard origin/master + git submodule update --init --recursive + fi + popd >/dev/null + fi +} + +wget_pull() { + if [ ! -e $1 ] || [ $(expr $(date -u +%s) - $(stat -c %Z $1)) -gt 86400 ]; then + wget $2 -O $1 + fi +} + +## Usign ## +git_pull .usign git://git.openwrt.org/project/usign.git + +if [ ! -x .usign/usign ]; then + pushd .usign >/dev/null + cmake . + make + popd >/dev/null +fi + +## Updater-ng ## +git_pull .updater https://kkoci@gitlab.labs.nic.cz/turris/updater.git + +if [ ! -x .updater/bin/pkgupdate ]; then + make -C .updater NO_DOC=1 LUA_COMPILE:=no +fi + +## get-api-crl ## +wget_pull .get-api-crl https://gitlab.labs.nic.cz/turris/misc/raw/master/cacerts/get-api-crl + +## Get certificates ## +for K in release standby test; do + wget_pull .$K.pub https://gitlab.labs.nic.cz/turris/turris-os-packages/raw/test/cznic/cznic-repo-keys/files/$K.pub +done 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 |