lib/Tools/install
author aspinall
Thu, 14 Apr 2005 19:16:07 +0200
changeset 15733 75b9219980d3
parent 15574 b1d1b5bfc464
child 15848 3001067227af
permissions -rwxr-xr-x
Add RDISTDIR option used by Isabelle RPM.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10555
2323ec838401 /usr/bin/env bash;
wenzelm
parents: 10504
diff changeset
     1
#!/usr/bin/env bash
5362
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
     2
#
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
     3
# $Id$
9788
wenzelm
parents: 7934
diff changeset
     4
# Author: Markus Wenzel, TU Muenchen
5362
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
     5
#
6417
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
     6
# DESCRIPTION: install standalone Isabelle executables
5362
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
     7
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
     8
9788
wenzelm
parents: 7934
diff changeset
     9
PRG=$(basename "$0")
5362
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
    10
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
    11
function usage()
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
    12
{
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
    13
  echo
6417
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
    14
  echo "Usage: $PRG [OPTIONS]"
5362
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
    15
  echo
5403
aa04ac8bfeae -d DISTDIR;
wenzelm
parents: 5398
diff changeset
    16
  echo "  Options are:"
7887
eedfff88ee40 tuned usage;
wenzelm
parents: 6545
diff changeset
    17
  echo "    -d DISTDIR   refer to DISTDIR as Isabelle distribution"
eedfff88ee40 tuned usage;
wenzelm
parents: 6545
diff changeset
    18
  echo "                 (default ISABELLE_HOME)"
15733
75b9219980d3 Add RDISTDIR option used by Isabelle RPM.
aspinall
parents: 15574
diff changeset
    19
  echo "    -a RDISTDIR  refer to RDISTDIR as Isabelle distribution"
75b9219980d3 Add RDISTDIR option used by Isabelle RPM.
aspinall
parents: 15574
diff changeset
    20
  echo "                 in installed files, for packaging scripts"
75b9219980d3 Add RDISTDIR option used by Isabelle RPM.
aspinall
parents: 15574
diff changeset
    21
  echo "                 (default to same value as -d)"
11125
b70c3c1b499f handle KDE version 1 or 2;
wenzelm
parents: 10555
diff changeset
    22
  echo "    -k VERSION   install KDE application icon on desktop"
b70c3c1b499f handle KDE version 1 or 2;
wenzelm
parents: 10555
diff changeset
    23
  echo "                 (for KDE VERSION 1 or 2)"
6417
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
    24
  echo "    -p DIR       install standalone binaries in DIR"
5403
aa04ac8bfeae -d DISTDIR;
wenzelm
parents: 5398
diff changeset
    25
  echo
6417
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
    26
  echo "  Install Isabelle executables with absolute references to the current"
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
    27
  echo "  distribution directory."
5362
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
    28
  echo
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
    29
  exit 1
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
    30
}
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
    31
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
    32
function fail()
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
    33
{
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
    34
  echo "$1" >&2
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
    35
  exit 2
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
    36
}
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
    37
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
    38
5403
aa04ac8bfeae -d DISTDIR;
wenzelm
parents: 5398
diff changeset
    39
## process command line
aa04ac8bfeae -d DISTDIR;
wenzelm
parents: 5398
diff changeset
    40
aa04ac8bfeae -d DISTDIR;
wenzelm
parents: 5398
diff changeset
    41
# options
aa04ac8bfeae -d DISTDIR;
wenzelm
parents: 5398
diff changeset
    42
6450
990e6e2dee26 improved usage;
wenzelm
parents: 6417
diff changeset
    43
NO_OPTS=true
990e6e2dee26 improved usage;
wenzelm
parents: 6417
diff changeset
    44
5403
aa04ac8bfeae -d DISTDIR;
wenzelm
parents: 5398
diff changeset
    45
DISTDIR="$ISABELLE_HOME"
6417
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
    46
KDE=""
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
    47
BINDIR=""
15733
75b9219980d3 Add RDISTDIR option used by Isabelle RPM.
aspinall
parents: 15574
diff changeset
    48
RDISTDIR=""
5362
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
    49
15733
75b9219980d3 Add RDISTDIR option used by Isabelle RPM.
aspinall
parents: 15574
diff changeset
    50
while getopts "d:k:p:a:" OPT
5403
aa04ac8bfeae -d DISTDIR;
wenzelm
parents: 5398
diff changeset
    51
do
aa04ac8bfeae -d DISTDIR;
wenzelm
parents: 5398
diff changeset
    52
  case "$OPT" in
5404
wenzelm
parents: 5403
diff changeset
    53
    d)
5403
aa04ac8bfeae -d DISTDIR;
wenzelm
parents: 5398
diff changeset
    54
      DISTDIR="$OPTARG"
6450
990e6e2dee26 improved usage;
wenzelm
parents: 6417
diff changeset
    55
      NO_OPTS=""
5403
aa04ac8bfeae -d DISTDIR;
wenzelm
parents: 5398
diff changeset
    56
      ;;
6417
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
    57
    k)
11125
b70c3c1b499f handle KDE version 1 or 2;
wenzelm
parents: 10555
diff changeset
    58
      KDE="$OPTARG"
6450
990e6e2dee26 improved usage;
wenzelm
parents: 6417
diff changeset
    59
      NO_OPTS=""
6417
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
    60
      ;;
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
    61
    p)
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
    62
      BINDIR="$OPTARG"
6450
990e6e2dee26 improved usage;
wenzelm
parents: 6417
diff changeset
    63
      NO_OPTS=""
6417
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
    64
      ;;
15733
75b9219980d3 Add RDISTDIR option used by Isabelle RPM.
aspinall
parents: 15574
diff changeset
    65
    a)
75b9219980d3 Add RDISTDIR option used by Isabelle RPM.
aspinall
parents: 15574
diff changeset
    66
      RDISTDIR="$OPTARG"
75b9219980d3 Add RDISTDIR option used by Isabelle RPM.
aspinall
parents: 15574
diff changeset
    67
      NO_OPTS=""
75b9219980d3 Add RDISTDIR option used by Isabelle RPM.
aspinall
parents: 15574
diff changeset
    68
      ;;
5403
aa04ac8bfeae -d DISTDIR;
wenzelm
parents: 5398
diff changeset
    69
    \?)
aa04ac8bfeae -d DISTDIR;
wenzelm
parents: 5398
diff changeset
    70
      usage
aa04ac8bfeae -d DISTDIR;
wenzelm
parents: 5398
diff changeset
    71
      ;;
aa04ac8bfeae -d DISTDIR;
wenzelm
parents: 5398
diff changeset
    72
  esac
aa04ac8bfeae -d DISTDIR;
wenzelm
parents: 5398
diff changeset
    73
done
5362
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
    74
5403
aa04ac8bfeae -d DISTDIR;
wenzelm
parents: 5398
diff changeset
    75
shift $(($OPTIND - 1))
aa04ac8bfeae -d DISTDIR;
wenzelm
parents: 5398
diff changeset
    76
aa04ac8bfeae -d DISTDIR;
wenzelm
parents: 5398
diff changeset
    77
aa04ac8bfeae -d DISTDIR;
wenzelm
parents: 5398
diff changeset
    78
# args
aa04ac8bfeae -d DISTDIR;
wenzelm
parents: 5398
diff changeset
    79
9788
wenzelm
parents: 7934
diff changeset
    80
[ "$#" -ne 0 -o -n "$NO_OPTS" ] && usage
5362
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
    81
15733
75b9219980d3 Add RDISTDIR option used by Isabelle RPM.
aspinall
parents: 15574
diff changeset
    82
if [ -z "$RDISTDIR" ]; then
75b9219980d3 Add RDISTDIR option used by Isabelle RPM.
aspinall
parents: 15574
diff changeset
    83
  RDISTDIR=$DISTDIR
75b9219980d3 Add RDISTDIR option used by Isabelle RPM.
aspinall
parents: 15574
diff changeset
    84
fi
5362
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
    85
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
    86
## main
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
    87
6459
1d13a86bfa6c fixed ISABELLE_HOME/lib/logo/isabelle-tiny.xpm;
wenzelm
parents: 6450
diff changeset
    88
echo "referring to distribution at $DISTDIR"
6417
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
    89
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
    90
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
    91
# standalone binaries
5362
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
    92
6082
590f9e3bf4d8 configure AUTO_BASH, AUTO_PERL;
wenzelm
parents: 5404
diff changeset
    93
#set by configure
15574
b1d1b5bfc464 Removed practically all references to Library.foldr.
skalberg
parents: 14981
diff changeset
    94
AUTO_BASH=/bin/bash
10555
2323ec838401 /usr/bin/env bash;
wenzelm
parents: 10504
diff changeset
    95
2323ec838401 /usr/bin/env bash;
wenzelm
parents: 10504
diff changeset
    96
case "$AUTO_BASH" in
2323ec838401 /usr/bin/env bash;
wenzelm
parents: 10504
diff changeset
    97
  /*)
2323ec838401 /usr/bin/env bash;
wenzelm
parents: 10504
diff changeset
    98
    BASH="$AUTO_BASH"
2323ec838401 /usr/bin/env bash;
wenzelm
parents: 10504
diff changeset
    99
    ;;
2323ec838401 /usr/bin/env bash;
wenzelm
parents: 10504
diff changeset
   100
  *)
2323ec838401 /usr/bin/env bash;
wenzelm
parents: 10504
diff changeset
   101
    BASH="/usr/bin/env bash"
2323ec838401 /usr/bin/env bash;
wenzelm
parents: 10504
diff changeset
   102
    ;;
2323ec838401 /usr/bin/env bash;
wenzelm
parents: 10504
diff changeset
   103
esac
5362
29ce4f1fe72c install binaries with absolute references to ISABELLE_HOME/bin;
wenzelm
parents:
diff changeset
   104
6417
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
   105
if [ -n "$BINDIR" ]; then
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
   106
  mkdir -p "$BINDIR" || fail "Bad directory: $BINDIR"
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
   107
11550
915c5de6480f smart selection of isabelle-process versus isabelle-interface;
wenzelm
parents: 11127
diff changeset
   108
  for NAME in isatool isabelle-process isabelle-interface
6417
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
   109
  do
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
   110
    BIN="$BINDIR/$NAME"
15733
75b9219980d3 Add RDISTDIR option used by Isabelle RPM.
aspinall
parents: 15574
diff changeset
   111
    DIST="$RDISTDIR/bin/$NAME"
6417
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
   112
    echo "installing $BIN"
10555
2323ec838401 /usr/bin/env bash;
wenzelm
parents: 10504
diff changeset
   113
    echo "#!$BASH" > "$BIN" || fail "Cannot write file: $BIN"
9788
wenzelm
parents: 7934
diff changeset
   114
    echo >> "$BIN"
wenzelm
parents: 7934
diff changeset
   115
    echo "exec \"$DIST\" \"\$@\"" >> "$BIN"
wenzelm
parents: 7934
diff changeset
   116
    chmod +x "$BIN"
6417
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
   117
  done
11550
915c5de6480f smart selection of isabelle-process versus isabelle-interface;
wenzelm
parents: 11127
diff changeset
   118
  for NAME in Isabelle isabelle
915c5de6480f smart selection of isabelle-process versus isabelle-interface;
wenzelm
parents: 11127
diff changeset
   119
  do
915c5de6480f smart selection of isabelle-process versus isabelle-interface;
wenzelm
parents: 11127
diff changeset
   120
    BIN="$BINDIR/$NAME"
915c5de6480f smart selection of isabelle-process versus isabelle-interface;
wenzelm
parents: 11127
diff changeset
   121
    DIST="$DISTDIR/bin/$NAME"
915c5de6480f smart selection of isabelle-process versus isabelle-interface;
wenzelm
parents: 11127
diff changeset
   122
    echo "installing $BIN"
915c5de6480f smart selection of isabelle-process versus isabelle-interface;
wenzelm
parents: 11127
diff changeset
   123
    cp "$DIST" "$BIN" || fail "Cannot write file: $BIN"
915c5de6480f smart selection of isabelle-process versus isabelle-interface;
wenzelm
parents: 11127
diff changeset
   124
    chmod +x "$BIN"
915c5de6480f smart selection of isabelle-process versus isabelle-interface;
wenzelm
parents: 11127
diff changeset
   125
  done
6417
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
   126
fi
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
   127
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
   128
11125
b70c3c1b499f handle KDE version 1 or 2;
wenzelm
parents: 10555
diff changeset
   129
# install KDE 1.x / 2.x application icon
5403
aa04ac8bfeae -d DISTDIR;
wenzelm
parents: 5398
diff changeset
   130
11125
b70c3c1b499f handle KDE version 1 or 2;
wenzelm
parents: 10555
diff changeset
   131
if [ -n "$KDE" ]; then
b70c3c1b499f handle KDE version 1 or 2;
wenzelm
parents: 10555
diff changeset
   132
  if [ "$KDE" = 1 ]; then
b70c3c1b499f handle KDE version 1 or 2;
wenzelm
parents: 10555
diff changeset
   133
    KDEHOME=~/.kde
b70c3c1b499f handle KDE version 1 or 2;
wenzelm
parents: 10555
diff changeset
   134
    KDEDESKTOP=~/Desktop
b70c3c1b499f handle KDE version 1 or 2;
wenzelm
parents: 10555
diff changeset
   135
    KDEAPP="$KDEDESKTOP/Isabelle.kdelnk"
b70c3c1b499f handle KDE version 1 or 2;
wenzelm
parents: 10555
diff changeset
   136
  elif [ "$KDE" = 2 ]; then
b70c3c1b499f handle KDE version 1 or 2;
wenzelm
parents: 10555
diff changeset
   137
    KDEHOME=~/.kde2
b70c3c1b499f handle KDE version 1 or 2;
wenzelm
parents: 10555
diff changeset
   138
    KDEDESKTOP=~/KDesktop
b70c3c1b499f handle KDE version 1 or 2;
wenzelm
parents: 10555
diff changeset
   139
    KDEAPP="$KDEDESKTOP/Isabelle.desktop"
b70c3c1b499f handle KDE version 1 or 2;
wenzelm
parents: 10555
diff changeset
   140
  else
b70c3c1b499f handle KDE version 1 or 2;
wenzelm
parents: 10555
diff changeset
   141
    fail "Unknown KDE version \"$KDE\""
b70c3c1b499f handle KDE version 1 or 2;
wenzelm
parents: 10555
diff changeset
   142
  fi
11127
wenzelm
parents: 11125
diff changeset
   143
  mkdir -p "$KDEDESKTOP" || fail "Bad directory: $KDEDESKTOP"
6417
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
   144
11125
b70c3c1b499f handle KDE version 1 or 2;
wenzelm
parents: 10555
diff changeset
   145
  KDEICONS="$KDEHOME/share/icons"
9788
wenzelm
parents: 7934
diff changeset
   146
  mkdir -p "$KDEICONS" || fail "Bad directory: $KDEICONS"
wenzelm
parents: 7934
diff changeset
   147
  mkdir -p "$KDEICONS/mini" || fail "Bad directory: $KDEICONS/mini"
6417
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
   148
9788
wenzelm
parents: 7934
diff changeset
   149
  [ -f "$KDEICONS/isabelle.xpm" ] || cp "$ISABELLE_HOME/lib/icons/isabelle.xpm" "$KDEICONS" || \
6545
a8a235a8a4a3 improved icons;
wenzelm
parents: 6459
diff changeset
   150
    fail "Cannot write file: $KDEICONS/isabelle.xpm"
9788
wenzelm
parents: 7934
diff changeset
   151
  [ -f "$KDEICONS/mini/isabelle.xpm" ] || \
wenzelm
parents: 7934
diff changeset
   152
    cp "$ISABELLE_HOME/lib/icons/isabelle-mini.xpm" "$KDEICONS/mini/isabelle.xpm" || \
6545
a8a235a8a4a3 improved icons;
wenzelm
parents: 6459
diff changeset
   153
    fail "Cannot write file: $KDEICONS/mini/isabelle.xpm"
6417
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
   154
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
   155
  echo "installing $KDEAPP"
9788
wenzelm
parents: 7934
diff changeset
   156
  echo "# KDE Config File" > "$KDEAPP" || fail "Cannot write file: $KDEAPP"
wenzelm
parents: 7934
diff changeset
   157
  echo "[KDE Desktop Entry]" >> "$KDEAPP"
wenzelm
parents: 7934
diff changeset
   158
  echo "Type=Application" >> "$KDEAPP"
15733
75b9219980d3 Add RDISTDIR option used by Isabelle RPM.
aspinall
parents: 15574
diff changeset
   159
  echo "Exec=\"$RDISTDIR/bin/isabelle-interface\" %f" >> "$KDEAPP"
9788
wenzelm
parents: 7934
diff changeset
   160
  echo "Icon=isabelle.xpm" >> "$KDEAPP"
wenzelm
parents: 7934
diff changeset
   161
  echo "TerminalOptions=" >> "$KDEAPP"
wenzelm
parents: 7934
diff changeset
   162
  echo "Path=" >> "$KDEAPP"
wenzelm
parents: 7934
diff changeset
   163
  echo "Terminal=0" >> "$KDEAPP"
wenzelm
parents: 7934
diff changeset
   164
  echo "Name=Isabelle" >> "$KDEAPP"
6417
39941b906910 -p option;
wenzelm
parents: 6082
diff changeset
   165
fi