# HG changeset patch # User Sascha Wilde # Date 1404297568 -7200 # Node ID 37899f717fa5bb166ddefa588fced3536e038f17 # Parent 6bb3018b966d163ad3f05ee6d39623a848362595 Added system wide installation. diff -r 6bb3018b966d -r 37899f717fa5 packaging/linux-installer.inc.in --- a/packaging/linux-installer.inc.in Wed Jul 02 11:57:32 2014 +0200 +++ b/packaging/linux-installer.inc.in Wed Jul 02 12:39:28 2014 +0200 @@ -1,14 +1,17 @@ #!/bin/bash +set -u ME=`basename "$0"` DEFAULT_PREFIX="$HOME/TrustBridge" +SYSDEFAULT_PREFIX="/usr/local" CFGPATH="${XDG_DATA_HOME:-$HOME/.local/share}/BSI/TrustBridge" SYSCFGPATH="/etc/TrustBridge" INSTCFGNAME="installation.cfg" FORCE=0 +SYSINST=0 -instcfg_file="${CFGPATH}/${INSTCFGNAME}" declare -A instcfg oldinstcfg +declare inst_default_prefix instcfg_file instcfg=( [TIMESTMP]=`date -u +%Y%m%d%H%M%S` [VERSION]='@PROJECT_VERSION@' @@ -50,7 +53,8 @@ Options: -p, --prefix=PATH install files in PATH - -f, --force install to given prefix, even when a current + -s, --system=PATH make an system wide installation + -f, --force install to given prefix, even when a current installation with different prefix exists. --help display this help and exit --version output version information and exit @@ -61,8 +65,8 @@ parse_args() { OPTS=`getopt \ - -l force,help,prefix:,version \ - -o f,p: -n "$ME" -- "$@"` + -l force,help,prefix:,system,version \ + -o f,p:,s -n "$ME" -- "$@"` [ $? -eq 0 ] || usage 23 eval set -- "$OPTS" @@ -73,6 +77,10 @@ instcfg[PREFIX]="$2" shift 2 ;; + --system|-s) + SYSINST=1 + shift 1 + ;; --force|-f) FORCE=1 shift 1 @@ -91,6 +99,17 @@ done } +init_vars() +{ + if [ $SYSINST -eq 1 ] ; then + inst_default_prefix="$SYSDEFAULT_PREFIX" + instcfg_file="${SYSCFGPATH}/${INSTCFGNAME}" + else + inst_default_prefix="$DEFAULT_PREFIX" + instcfg_file="${CFGPATH}/${INSTCFGNAME}" + fi +} + write_instcfg() { install -d `dirname "$instcfg_file"` @@ -107,13 +126,23 @@ for key in "${!oldinstcfg[@]}" ; do oldinstcfg[$key]=`sed -n "/$key/s/[^=]*=\(.*\)/\1/p" "$instcfg_file"` done - fi + fi } +check_priv() +{ + if [ $SYSINST -eq 1 -a "$UID" -ne 0 ] ; then + fatal "System wide installation requires root privileges!" + fi +} + + #====================================================================== # main() parse_args "$@" +init_vars +check_priv read_oldinstcfg cat <