From 873eb4964f643a70d941cef751213df84a476a6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Ko=C4=8D=C3=AD?= Date: Wed, 28 Feb 2018 15:23:38 +0100 Subject: Single script it Now it's just single script with arguments and more. --- build_medkit.sh | 218 +++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 192 insertions(+), 26 deletions(-) (limited to 'build_medkit.sh') diff --git a/build_medkit.sh b/build_medkit.sh index c5c9951..acef1c4 100755 --- a/build_medkit.sh +++ b/build_medkit.sh @@ -1,54 +1,220 @@ #!/bin/sh +# TODO add support for additional files set -e -cd `dirname $0` - +## Define variables with their default values ## BRANCH= -MODEL=omnia +MODEL= +L10N=en,cs +LISTS= +VERSION= + +## Parse arguments ## while [ $# -gt 0 ]; do case "$1" in -h|--help) - echo "This script generates Turris medkit using user lists and updater-ng." - echo "Usage: $0 [OPTION]..." + 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 " --branch BRANCH" - echo " --model MODEL" + 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 ;; - --version) + --localization|-l) shift - VERSION="$1" + L10N="$1" ;; - --branch) + --lists|-p) shift - BRANCH="$1" + LISTS="$1" ;; - --model) + --version) shift - MODEL="$1" + VERSION="$1" + echo "Version option is not yet implemented." + exit 1 ;; *) - echo "Unknown option: $1" >&2 - 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 -# Get latest version if we didn't stated version explicitly -if [ -z "$VERSION" ]; then - [ -n "$BRANCH" ] && VBRANCH="-$BRANCH" - VERSION="$(curl https://repo.turris.cz/"$MODEL$VBRANCH"/packages/base/Packages | sed -n 's/^Filename: turris-version_\([^_]*\)_.*/\1/p')" +[ -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 <