#!/bin/sh # TODO add support for additional files set -e ## Define variables with their default values ## BRANCH= MODEL= L10N=en,cs LISTS= VERSION= ## Parse arguments ## while [ $# -gt 0 ]; do case "$1" in -h|--help) echo "This script generates Turris medkit using packages lists and updater-ng." echo "Usage: $0 [OPTION].. MODEL [BRANCH]" echo echo "Model:" echo " Model is Turris device model. Only supported ones at the moment" echo " are 'turris' for Turris 1.x and 'omnia' for Turris Omnia." echo "Branch:" echo " This optionally specifies source branch for packages." echo " If no branch is specified then deploy is used (branch" echo " identified only just by model, no branch name appended)." echo "Options:" echo " --help, -h" echo " Print this text and exit." echo " --localization, -l LOCALIZATION,.." echo " After this argument a list of language codes to be added to" echo " medkit should be specified. Language codes should be" echo " separated by comma. In default en,cs is used." echo " --lists, -p PKGLIST,.." echo " What lists should be added to medkit. In default no" echo " additional lists will be added. Multiple lists can be" echo " specified by separating them by commas." echo " --version VERSION" echo " This option allows you to specify exact Turris OS version." echo " If you do so then archive will be used for generating medkit" echo " (this means that using latest version won't work with this" echo " option)." exit 0 ;; --localization|-l) shift L10N="$1" ;; --lists|-p) shift LISTS="$1" ;; --version) shift VERSION="$1" echo "Version option is not yet implemented." exit 1 ;; *) if [ -z "$MODEL" ]; then MODEL="$1" elif [ -z "$BRANCH" ]; then if [ "$1" == "deploy" ]; then BRANCH= else BRANCH="-$1" fi else echo "Unknown option: $1" >&2 exit 1 fi ;; esac shift done [ -n "$MODEL" ] || { echo "You have to specify Turris router model." >&2 exit 1 } ## Build needed tools ## # Git puller helper function (git_pull output_path source_url) git_pull() { if [ ! -d $1 ]; then git clone $2 $1 ( cd $1 git submodule update --init --recursive ) else ( cd $1 git fetch if ! git diff --quiet HEAD origin/HEAD; then git clean -Xdf git reset --hard origin/master git submodule update --init --recursive fi ) fi } # Wget puller helper function (wget_pull output_file source_url) 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 ( cd .usign cmake . make ) # Updater-ng git_pull .updater https://gitlab.labs.nic.cz/turris/updater.git make -C .updater NO_DOC=1 LUA_COMPILE:=no # Get public parts of signing keys 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 ## Export some variables that are used by pkgupdate lua script export L10N export LISTS export ROOT="$(readlink -f "root-$MODEL$BRANCH")" ## Dump updater-ng entry script ## export UPDATER_CONFIG=".updater-$MODEL$BRANCH.lua" cat > "$UPDATER_CONFIG" < /tmp/sysinfo/model else # Else Turris 1.x (yes this is wrong but it's just temporally) echo "Turris" > /tmp/sysinfo/model fi # We are only using board_name anyway atm. echo "rtunknown" > /tmp/sysinfo/board_name ## Generate root ## fakeroot -- sh -s <