view packaging/linux-installer-common.inc.in @ 1371:23df332b2a4c

(issue179) Read install signature timestamp from config This also changes the way the sigDt is propgated to the MainWindow. It no longer uses the settings but hands it over as a parameter directly.
author Andre Heinecke <andre.heinecke@intevation.de>
date Mon, 24 Nov 2014 15:48:49 +0100
parents 8c829345ecfa
children
line wrap: on
line source
#-*-sh-*-
ME=`basename "$0"`
DEFAULT_PREFIX="$HOME/BSI/TrustBridge"
SYSDEFAULT_PREFIX="/usr/local"
CFGPATH="${XDG_CONFIG_HOME:-$HOME/.config}/BSI"
DATAPATH="${XDG_DATA_HOME:-$HOME/.local/share}/BSI/TrustBridge"
SYSCFGPATH="/etc/TrustBridge"
# FIXME: a user independent data path would be nice for system wide
#        installations, but we wont open this can of worms for now.
#        So we assume the system wide installation is always used and
#        maintained by the same user.
SYSDATAPATH="$DATAPATH"
INSTCFGNAME="TrustBridge-inst.cfg"
FORCE=0
SYSINST=0
DEINSTALL=0
UPDATE=0
BINNAMES="###BINNAMES###"
ICONNAME="###ICONNAME###"
HELPNAMES="###HELPNAMES###"
HELPNAMES_SOURCES="###HELPNAMES_SOURCES###"
HELPNAMES_STATIC="###HELPNAMES_STATIC###"
HELPNAMES_IMG="###HELPNAMES_IMG###"
LICENSENAMES="###LICENSES###"
SIGNATURE_DATE="###SIGNATURE_DATE###"
ARCH="###ARCH###"

declare -A instcfg oldinstcfg
declare inst_default_prefix instdata_path instcfg_path instcfg_file
instcfg=(
  [TIMESTMP]=`date -u +%Y%m%d%H%M%S`
  [SIG_DATE]=$SIGNATURE_DATE
  [VERSION]='@PROJECT_VERSION@'
  [PREFIX]=''
)
oldinstcfg=(
  [TIMESTMP]=''
  [VERSION]=''
  [PREFIX]=''
)

declare -A L10N_DE
###INCLUDE:linux-installer-common.l10n-de

getxt()
{
  # Poor mans gettext for l10n completely self contained in one shell
  # script.
  MSGID="$1"
  shift
  case ${LANGUAGE:-${LC_ALL:-${LC_MESSAGES:-$LANG}}} in
    de*)
      if [ "${L10N_DE[$MSGID]}" ] ; then
          MSG="${L10N_DE[$MSGID]}"
      else
        MSG="$MSGID"
      fi
      ;;
    *)
      MSG="$MSGID"
      ;;
  esac

  printf "$MSG" "$@"
}

version()
{
  cat <<EOF
TrustBridge ${instcfg[VERSION]} Installer

Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik
Software engineering by Intevation GmbH

This file is Free Software under the GNU GPL (v>=2)
and comes with ABSOLUTELY NO WARRANTY!
See LICENSE.txt for details.
EOF
  exit 0
}

fatal()
{
  getxt "$1" >&2
  if [ $DEINSTALL -eq 1 ] ; then
      getxt "Deinstallation failed.\n" >&2
  else
    getxt "Installation failed.\n" >&2
  fi
  exit 1
}

yorn()
{
  local c
  while true ; do
    read -n 1 c
    echo
    case "$c" in
      y|Y|j|J)
        return 0
        ;;
      n|N)
        return 1
        ;;
      *)
        getxt >&2 "Answer [Y]es or [N]o:\n"
    esac
  done
}

check_priv()
{
  if [ $SYSINST -eq 1 -a "$UID" -ne 0 ] ; then
      fatal "System wide installation or deinstallation requires root privileges!\n"
  fi
}

init_vars()
{
  if [ -n "${SUDO_USER-}" ] ; then
    # Default to system wide installation when running with sudo
    SYSINST=1
  fi

  if [ $SYSINST -eq 1 ] ; then
      inst_default_prefix="$SYSDEFAULT_PREFIX"
      instcfg_path="${SYSCFGPATH}"
      instdata_path="${SYSDATAPATH}"
      autostart_path="$(getent passwd "${SUDO_USER}" | cut -d ':' -f 6)/.config/autostart"
      startmenu_path="/usr/share/applications"
  else
    inst_default_prefix="$DEFAULT_PREFIX"
    instcfg_path="${CFGPATH}"
    instdata_path="${DATAPATH}"
    autostart_path=${XDG_CONFIG_HOME:-~/.config/autostart}
    startmenu_path=${XDG_DATA_HOME:-~/.local/share/applications}
    if [ $DEINSTALL -eq 1 ] ; then
      if [ ! -r ${instcfg_path}/${INSTCFGNAME} ]; then
        if [ -r ${SYSCFGPATH}/${INSTCFGNAME} ]; then
           # Fall back to system uninstallation if no user config found
           SYSINST=1
           init_vars
           check_priv
        fi
      fi
    fi
  fi
  if [ $DEINSTALL -eq 0 ]; then
    # extra bin path not needed on deinstall:
    extra_bin_path=`mktemp --tmpdir -d tmpbin.XXXXXXXXXX`
  fi
  instcfg_file="${instcfg_path}/${INSTCFGNAME}"
  HOST_ARCH=$(uname -m)
}

read_oldinstcfg()
{
  if [ -r "$instcfg_file" ] ; then
      getxt "Reading '%s' ...\n" "$instcfg_file"
      for key in "${!oldinstcfg[@]}" ; do
        oldinstcfg[$key]=`sed -n "/$key/s/[^=]*=\(.*\)/\1/p" "$instcfg_file"`
      done
  fi
}


setup_cronjob()
{
  local tmpcrontab=`mktemp`

  if [ $SYSINST -eq 1 -a "${SUDO_USER+X}" ] ; then
      local crontabopt="-u $SUDO_USER"
  else
      local crontabopt=''
  fi

  if [ "$1" != "deinstall" ] ; then
      local trustbridge_tray_starter="${instcfg[PREFIX]}/bin/trustbridge-tray-starter.sh"
  else
    local trustbridge_tray_starter="${oldinstcfg[PREFIX]}/bin/trustbridge-tray-starter.sh"
  fi

  crontab $crontabopt -l | \
      grep -vF "$trustbridge_tray_starter" \
           >"$tmpcrontab"
  if [ "$1" != "deinstall" ] ; then
      echo "$(( $RANDOM / 555 )) 12  * * * \"$trustbridge_tray_starter\"" \
           >>"$tmpcrontab"
  fi
  crontab $crontabopt "$tmpcrontab"
  rm "$tmpcrontab"
}

http://wald.intevation.org/projects/trustbridge/