1*b1cdbd2cSJim Jagielski#!/usr/bin/env bash
2*b1cdbd2cSJim Jagielski# *************************************************************
3*b1cdbd2cSJim Jagielski#
4*b1cdbd2cSJim Jagielski#  Licensed to the Apache Software Foundation (ASF) under one
5*b1cdbd2cSJim Jagielski#  or more contributor license agreements.  See the NOTICE file
6*b1cdbd2cSJim Jagielski#  distributed with this work for additional information
7*b1cdbd2cSJim Jagielski#  regarding copyright ownership.  The ASF licenses this file
8*b1cdbd2cSJim Jagielski#  to you under the Apache License, Version 2.0 (the
9*b1cdbd2cSJim Jagielski#  "License"); you may not use this file except in compliance
10*b1cdbd2cSJim Jagielski#  with the License.  You may obtain a copy of the License at
11*b1cdbd2cSJim Jagielski#
12*b1cdbd2cSJim Jagielski#    http://www.apache.org/licenses/LICENSE-2.0
13*b1cdbd2cSJim Jagielski#
14*b1cdbd2cSJim Jagielski#  Unless required by applicable law or agreed to in writing,
15*b1cdbd2cSJim Jagielski#  software distributed under the License is distributed on an
16*b1cdbd2cSJim Jagielski#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17*b1cdbd2cSJim Jagielski#  KIND, either express or implied.  See the License for the
18*b1cdbd2cSJim Jagielski#  specific language governing permissions and limitations
19*b1cdbd2cSJim Jagielski#  under the License.
20*b1cdbd2cSJim Jagielski#
21*b1cdbd2cSJim Jagielski# *************************************************************
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim JagielskiADD="no"
24*b1cdbd2cSJim JagielskiLINK="no"
25*b1cdbd2cSJim JagielskiUPDATE="no"
26*b1cdbd2cSJim JagielskiUSAGE="Usage: $0 [-a] [-l] [-h] <pkg-source-dir> <office-installation-dir>"
27*b1cdbd2cSJim Jagielski
28*b1cdbd2cSJim Jagielskihelp()
29*b1cdbd2cSJim Jagielski{
30*b1cdbd2cSJim Jagielski  echo
31*b1cdbd2cSJim Jagielski  echo "User Mode Installation script for developer and knowledgeable early access tester"
32*b1cdbd2cSJim Jagielski  echo
33*b1cdbd2cSJim Jagielski  echo "This installation method is not intended for use in a production environment!"
34*b1cdbd2cSJim Jagielski  echo "Using this script is unsupported and completely at your own risk"
35*b1cdbd2cSJim Jagielski  echo
36*b1cdbd2cSJim Jagielski  echo "Usage:" $0 "<pkg-source-dir> <office-installation-dir> [-l]"
37*b1cdbd2cSJim Jagielski  echo "    <pkg-source-dir>:       directory *only* containing the Solaris pkg packages to be installed"
38*b1cdbd2cSJim Jagielski  echo "                            or language pack shell script containing the Solaris pkg packages"
39*b1cdbd2cSJim Jagielski  echo "    <office-installation-dir>: directory to where the office and the pkg database will get installed into"
40*b1cdbd2cSJim Jagielski  echo
41*b1cdbd2cSJim Jagielski  echo "Optional Parameter:"
42*b1cdbd2cSJim Jagielski  echo "    -a :              add to an existing <office-installation-dir>"
43*b1cdbd2cSJim Jagielski  echo "    -l :              create a link \"soffice\" in $HOME"
44*b1cdbd2cSJim Jagielski  echo "    -h :              output this help"
45*b1cdbd2cSJim Jagielski}
46*b1cdbd2cSJim Jagielski
47*b1cdbd2cSJim Jagielskitry_to_unpack_languagepack_file()
48*b1cdbd2cSJim Jagielski{
49*b1cdbd2cSJim Jagielski  FILENAME=$PACKAGE_PATH
50*b1cdbd2cSJim Jagielski
51*b1cdbd2cSJim Jagielski  # Checking, if $FILENAME is a language pack.
52*b1cdbd2cSJim Jagielski  # String "language package" has to exist in the shell script file.
53*b1cdbd2cSJim Jagielski  # If this is no language pack, the installation is not supported
54*b1cdbd2cSJim Jagielski
55*b1cdbd2cSJim Jagielski  SEARCHSTRING=`head -n 10 $FILENAME | grep "language package"`
56*b1cdbd2cSJim Jagielski
57*b1cdbd2cSJim Jagielski  if [ ! -z "$SEARCHSTRING" ]
58*b1cdbd2cSJim Jagielski  then
59*b1cdbd2cSJim Jagielski    echo "First parameter $FILENAME is a language pack";
60*b1cdbd2cSJim Jagielski  else
61*b1cdbd2cSJim Jagielski    printf "\nERROR: First parameter $FILENAME is a file, but no language pack shell script.\n"
62*b1cdbd2cSJim Jagielski    echo $USAGE
63*b1cdbd2cSJim Jagielski    exit 2
64*b1cdbd2cSJim Jagielski  fi
65*b1cdbd2cSJim Jagielski
66*b1cdbd2cSJim Jagielski  echo "Unpacking shell script $FILENAME"
67*b1cdbd2cSJim Jagielski  # TAILLINE=`head -n 20 $FILENAME | sed --quiet 's/linenum=//p'`
68*b1cdbd2cSJim Jagielski  TAILLINE=`head -n 20 $FILENAME | sed -n 's/linenum=//p'`
69*b1cdbd2cSJim Jagielski
70*b1cdbd2cSJim Jagielski  if [ -x "/usr/bin/mktemp" ]  # available in Solaris 10
71*b1cdbd2cSJim Jagielski  then
72*b1cdbd2cSJim Jagielski    UNPACKDIR=`mktemp -d`
73*b1cdbd2cSJim Jagielski  else
74*b1cdbd2cSJim Jagielski    UNPACKDIR=/var/tmp/install_$$
75*b1cdbd2cSJim Jagielski    mkdir $UNPACKDIR
76*b1cdbd2cSJim Jagielski  fi
77*b1cdbd2cSJim Jagielski
78*b1cdbd2cSJim Jagielski  echo $UNPACKDIR
79*b1cdbd2cSJim Jagielski  tail +$TAILLINE $FILENAME | gunzip | (cd $UNPACKDIR; tar xvf -)
80*b1cdbd2cSJim Jagielski
81*b1cdbd2cSJim Jagielski  # Setting the new package path, in which the packages exist
82*b1cdbd2cSJim Jagielski  PACKAGE_PATH=$UNPACKDIR
83*b1cdbd2cSJim Jagielski
84*b1cdbd2cSJim Jagielski  # Setting variable UPDATE, because an Office installation has to exist, if a language pack shall be installed
85*b1cdbd2cSJim Jagielski  UPDATE="yes"
86*b1cdbd2cSJim Jagielski}
87*b1cdbd2cSJim Jagielski
88*b1cdbd2cSJim Jagielskipkg_error()
89*b1cdbd2cSJim Jagielski{
90*b1cdbd2cSJim Jagielski  # pkg command failed, check for admin log and report help
91*b1cdbd2cSJim Jagielski  if [ -f /tmp/.ai.pkg.zone.lock-afdb66cf-1dd1-11b2-a049-000d560ddc3e ]
92*b1cdbd2cSJim Jagielski  then
93*b1cdbd2cSJim Jagielski    echo "####################################################################"
94*b1cdbd2cSJim Jagielski    echo "#     Installation failed due to stale administrative lock         #"
95*b1cdbd2cSJim Jagielski    echo "####################################################################"
96*b1cdbd2cSJim Jagielski    printf "\nERROR: please remove the following file first:\n"
97*b1cdbd2cSJim Jagielski	ls -l /tmp/.ai.pkg.zone.lock-afdb66cf-1dd1-11b2-a049-000d560ddc3e
98*b1cdbd2cSJim Jagielski  fi
99*b1cdbd2cSJim Jagielski  rm -f $GETUID_SO
100*b1cdbd2cSJim Jagielski  exit 1
101*b1cdbd2cSJim Jagielski}
102*b1cdbd2cSJim Jagielski
103*b1cdbd2cSJim Jagielskiget_pkg_list()
104*b1cdbd2cSJim Jagielski{
105*b1cdbd2cSJim Jagielski  cd $1; ls -1
106*b1cdbd2cSJim Jagielski}
107*b1cdbd2cSJim Jagielski
108*b1cdbd2cSJim Jagielski#
109*b1cdbd2cSJim Jagielski# this script is for userland not for root
110*b1cdbd2cSJim Jagielski#
111*b1cdbd2cSJim Jagielski
112*b1cdbd2cSJim Jagielskiif [ $UID -eq 0 ]
113*b1cdbd2cSJim Jagielskithen
114*b1cdbd2cSJim Jagielski  printf "\nThis script is for installation without administrative rights only\nPlease use pkgadd/patchadd to install as root\n"
115*b1cdbd2cSJim Jagielski  help
116*b1cdbd2cSJim Jagielski  exit 2
117*b1cdbd2cSJim Jagielskifi
118*b1cdbd2cSJim Jagielski
119*b1cdbd2cSJim Jagielskiwhile getopts "alh" VALUE
120*b1cdbd2cSJim Jagielskido
121*b1cdbd2cSJim Jagielski  echo $VALUE
122*b1cdbd2cSJim Jagielski  case $VALUE in
123*b1cdbd2cSJim Jagielski    a)      ADD="yes"; break;;
124*b1cdbd2cSJim Jagielski    h)      help; exit 0;;
125*b1cdbd2cSJim Jagielski    l)      LINK="yes"; break;;
126*b1cdbd2cSJim Jagielski    ?)      echo $USAGE; exit 2;;
127*b1cdbd2cSJim Jagielski  esac
128*b1cdbd2cSJim Jagielskidone
129*b1cdbd2cSJim Jagielskishift `expr $OPTIND - 1`
130*b1cdbd2cSJim Jagielski
131*b1cdbd2cSJim Jagielskiif [ $# != 2 ]
132*b1cdbd2cSJim Jagielskithen
133*b1cdbd2cSJim Jagielski  echo $USAGE
134*b1cdbd2cSJim Jagielski  exit 2
135*b1cdbd2cSJim Jagielskifi
136*b1cdbd2cSJim Jagielski
137*b1cdbd2cSJim Jagielski# Determine whether this is a patch or a regular install set ..
138*b1cdbd2cSJim Jagielski/bin/bash -c "ls $1/*/patchinfo >/dev/null 2>&1"
139*b1cdbd2cSJim Jagielskiif [ "$?" = 0 ]
140*b1cdbd2cSJim Jagielskithen
141*b1cdbd2cSJim Jagielski  UPDATE="yes"
142*b1cdbd2cSJim Jagielski  PATCH_PATH="$1"
143*b1cdbd2cSJim Jagielski  PATCH_INFO_LIST=`/bin/bash -c "cd $1; ls */patchinfo"`
144*b1cdbd2cSJim Jagielski  PATCH_LIST=`for i in ${PATCH_INFO_LIST}; do dirname $i; done`
145*b1cdbd2cSJim Jagielskielif [ -f "$1/patchinfo" ]
146*b1cdbd2cSJim Jagielskithen
147*b1cdbd2cSJim Jagielski  UPDATE="yes"
148*b1cdbd2cSJim Jagielski  PATCH_PATH=`dirname "$1"`
149*b1cdbd2cSJim Jagielski  PATCH_LIST=`basename "$1"`
150*b1cdbd2cSJim Jagielskielse
151*b1cdbd2cSJim Jagielski  if [ -d "$1/packages" ]
152*b1cdbd2cSJim Jagielski  then
153*b1cdbd2cSJim Jagielski    PACKAGE_PATH="$1/packages"
154*b1cdbd2cSJim Jagielski  else
155*b1cdbd2cSJim Jagielski    PACKAGE_PATH=$1
156*b1cdbd2cSJim Jagielski  fi
157*b1cdbd2cSJim Jagielski
158*b1cdbd2cSJim Jagielski  #
159*b1cdbd2cSJim Jagielski  # If the first parameter is a shell script (download installation set), the packages have to
160*b1cdbd2cSJim Jagielski  # be unpacked into temp directory
161*b1cdbd2cSJim Jagielski  #
162*b1cdbd2cSJim Jagielski  if [ -f "$PACKAGE_PATH" ]
163*b1cdbd2cSJim Jagielski  then
164*b1cdbd2cSJim Jagielski    try_to_unpack_languagepack_file
165*b1cdbd2cSJim Jagielski  fi
166*b1cdbd2cSJim Jagielski
167*b1cdbd2cSJim Jagielski  #
168*b1cdbd2cSJim Jagielski  # Create sed filter script for unwanted packages
169*b1cdbd2cSJim Jagielski  #
170*b1cdbd2cSJim Jagielski
171*b1cdbd2cSJim Jagielski  cat > /tmp/userinstall_filer.$$ << EOF
172*b1cdbd2cSJim Jagielski/SUNWadabas/d
173*b1cdbd2cSJim Jagielski/^SUNWj[0-9]/d
174*b1cdbd2cSJim Jagielski/-desktop-int/d
175*b1cdbd2cSJim Jagielski/-shared-mime-info/d
176*b1cdbd2cSJim Jagielski/-cde/d
177*b1cdbd2cSJim JagielskiEOF
178*b1cdbd2cSJim Jagielski
179*b1cdbd2cSJim Jagielski  # Do not install gnome-integration package on systems without GNOME
180*b1cdbd2cSJim Jagielski  pkginfo -q SUNWgnome-vfs
181*b1cdbd2cSJim Jagielski  if [ $? -ne 0 ]
182*b1cdbd2cSJim Jagielski  then
183*b1cdbd2cSJim Jagielski
184*b1cdbd2cSJim Jagielski    echo '/-gnome/d' >> /tmp/userinstall_filer.$$
185*b1cdbd2cSJim Jagielski  fi
186*b1cdbd2cSJim Jagielski
187*b1cdbd2cSJim Jagielski  # pkgdep sorts the packages based on their dependencies
188*b1cdbd2cSJim Jagielski  PKGDEP="`dirname $0`/pkgdep"
189*b1cdbd2cSJim Jagielski  if [ ! -x $PKGDEP ]; then
190*b1cdbd2cSJim Jagielski    PKGDEP="get_pkg_list"
191*b1cdbd2cSJim Jagielski  fi
192*b1cdbd2cSJim Jagielski
193*b1cdbd2cSJim Jagielski  #
194*b1cdbd2cSJim Jagielski  # Get the list of packages to install
195*b1cdbd2cSJim Jagielski  #
196*b1cdbd2cSJim Jagielski
197*b1cdbd2cSJim Jagielski  PKG_LIST=`$PKGDEP $PACKAGE_PATH | sed -f  /tmp/userinstall_filer.$$`
198*b1cdbd2cSJim Jagielski  rm -f /tmp/userinstall_filer.$$
199*b1cdbd2cSJim Jagielski
200*b1cdbd2cSJim Jagielski  if [ -z "$PKG_LIST" ]
201*b1cdbd2cSJim Jagielski  then
202*b1cdbd2cSJim Jagielski    printf "\n$0: No packages found in $PACKAGE_PATH\n"
203*b1cdbd2cSJim Jagielski    exit 2
204*b1cdbd2cSJim Jagielski  fi
205*b1cdbd2cSJim Jagielski
206*b1cdbd2cSJim Jagielski  echo "Packages found:"
207*b1cdbd2cSJim Jagielski  for i in $PKG_LIST ; do
208*b1cdbd2cSJim Jagielski    echo $i
209*b1cdbd2cSJim Jagielski  done
210*b1cdbd2cSJim Jagielskifi
211*b1cdbd2cSJim Jagielski
212*b1cdbd2cSJim JagielskiINSTALL_ROOT=$2
213*b1cdbd2cSJim Jagielskiif [ "$UPDATE" = "yes" ]
214*b1cdbd2cSJim Jagielskithen
215*b1cdbd2cSJim Jagielski  if [ ! -d ${INSTALL_ROOT}/var/sadm/install/admin ]
216*b1cdbd2cSJim Jagielski  then
217*b1cdbd2cSJim Jagielski    printf "\n$0: No package database in ${INSTALL_ROOT}.\n"
218*b1cdbd2cSJim Jagielski    exit 2
219*b1cdbd2cSJim Jagielski  fi
220*b1cdbd2cSJim Jagielskielse
221*b1cdbd2cSJim Jagielski  if [ "$ADD" = "no" ]
222*b1cdbd2cSJim Jagielski  then
223*b1cdbd2cSJim Jagielski    rmdir ${INSTALL_ROOT} 2>/dev/null
224*b1cdbd2cSJim Jagielski    if [ -d ${INSTALL_ROOT} ]
225*b1cdbd2cSJim Jagielski    then
226*b1cdbd2cSJim Jagielski      printf "\n$0: ${INSTALL_ROOT} exists and is not empty.\n"
227*b1cdbd2cSJim Jagielski      exit 2
228*b1cdbd2cSJim Jagielski    fi
229*b1cdbd2cSJim Jagielski  fi
230*b1cdbd2cSJim Jagielski  mkdir -p ${INSTALL_ROOT}/var/sadm/install/admin
231*b1cdbd2cSJim Jagielskifi
232*b1cdbd2cSJim Jagielski
233*b1cdbd2cSJim Jagielski# Previous versions of this script did not write this file
234*b1cdbd2cSJim Jagielskiif [ ! -f ${INSTALL_ROOT}/var/sadm/install/admin/default ]
235*b1cdbd2cSJim Jagielskithen
236*b1cdbd2cSJim Jagielski  cat > ${INSTALL_ROOT}/var/sadm/install/admin/default << EOF
237*b1cdbd2cSJim Jagielskiaction=nocheck
238*b1cdbd2cSJim Jagielskiconflict=nocheck
239*b1cdbd2cSJim Jagielskisetuid=nocheck
240*b1cdbd2cSJim Jagielskiidepend=nocheck
241*b1cdbd2cSJim Jagielskimail=
242*b1cdbd2cSJim JagielskiEOF
243*b1cdbd2cSJim Jagielskifi
244*b1cdbd2cSJim Jagielski
245*b1cdbd2cSJim Jagielskiif [ ! "${INSTALL_ROOT:0:1}" = "/" ]; then
246*b1cdbd2cSJim Jagielski  INSTALL_ROOT=`cd ${INSTALL_ROOT}; pwd`
247*b1cdbd2cSJim Jagielskifi
248*b1cdbd2cSJim Jagielski
249*b1cdbd2cSJim Jagielski# This script must exist to make extension registration work
250*b1cdbd2cSJim Jagielski# always overwrite to get the latest version.
251*b1cdbd2cSJim Jagielskimkdir -p ${INSTALL_ROOT}/usr/lib
252*b1cdbd2cSJim Jagielskicat > ${INSTALL_ROOT}/usr/lib/postrun << \EOF
253*b1cdbd2cSJim Jagielski#!/bin/sh
254*b1cdbd2cSJim Jagielskiset -e
255*b1cdbd2cSJim Jagielski
256*b1cdbd2cSJim Jagielski# Override UserInstallation in bootstraprc for unopkg ..
257*b1cdbd2cSJim JagielskiUserInstallation='$OOO_BASE_DIR/../UserInstallation'
258*b1cdbd2cSJim Jagielskiexport UserInstallation
259*b1cdbd2cSJim Jagielski
260*b1cdbd2cSJim Jagielskiif [ -x /usr/bin/mktemp ]
261*b1cdbd2cSJim Jagielskithen
262*b1cdbd2cSJim Jagielski  CMD=`/usr/bin/mktemp /tmp/userinstall.XXXXXX`
263*b1cdbd2cSJim Jagielskielse
264*b1cdbd2cSJim Jagielski  CMD=/tmp/userinstall.$$; echo "" > $CMD
265*b1cdbd2cSJim Jagielskifi
266*b1cdbd2cSJim Jagielski
267*b1cdbd2cSJim Jagielskised -e 's|/opt/|${PKG_INSTALL_ROOT}/opt/|g' > $CMD
268*b1cdbd2cSJim Jagielski/bin/sh -e $CMD
269*b1cdbd2cSJim Jagielskirm -f $CMD
270*b1cdbd2cSJim JagielskiEOF
271*b1cdbd2cSJim Jagielskichmod +x ${INSTALL_ROOT}/usr/lib/postrun 2>/dev/null
272*b1cdbd2cSJim Jagielski
273*b1cdbd2cSJim Jagielski# create local tmp directory to install on S10
274*b1cdbd2cSJim JagielskiLOCAL_TMP=
275*b1cdbd2cSJim Jagielskiif [ -x /usr/bin/mktemp ]
276*b1cdbd2cSJim Jagielskithen
277*b1cdbd2cSJim Jagielski  LOCAL_TMP=`mktemp -d`
278*b1cdbd2cSJim Jagielski  rmdir ${INSTALL_ROOT}/tmp 2>/dev/null
279*b1cdbd2cSJim Jagielski  ln -s ${LOCAL_TMP} ${INSTALL_ROOT}/tmp
280*b1cdbd2cSJim Jagielskifi
281*b1cdbd2cSJim Jagielski
282*b1cdbd2cSJim Jagielski#
283*b1cdbd2cSJim Jagielski# the tail of the script contains a shared object for overloading the getuid()
284*b1cdbd2cSJim Jagielski# and a few other calls
285*b1cdbd2cSJim Jagielski#
286*b1cdbd2cSJim Jagielski
287*b1cdbd2cSJim JagielskiGETUID_SO=/tmp/getuid.so.$$
288*b1cdbd2cSJim Jagielskilinenum=???
289*b1cdbd2cSJim Jagielskitail +$linenum $0 > $GETUID_SO
290*b1cdbd2cSJim Jagielski
291*b1cdbd2cSJim Jagielski#
292*b1cdbd2cSJim Jagielski# Perform the installation
293*b1cdbd2cSJim Jagielski#
294*b1cdbd2cSJim Jagielskiif [ "$UPDATE" = "yes" ]
295*b1cdbd2cSJim Jagielskithen
296*b1cdbd2cSJim Jagielski  # restore original "bootstraprc" prior to patching
297*b1cdbd2cSJim Jagielski  for i in ${PKG_LIST}; do
298*b1cdbd2cSJim Jagielski    my_dir=${INSTALL_ROOT}`pkgparam -d ${PACKAGE_PATH} "$i" BASEDIR`
299*b1cdbd2cSJim Jagielski    find "$my_dir" -type f -name bootstraprc.orig -exec sh -ce 'mv "$0" `dirname "$0"`/bootstraprc' {} \;
300*b1cdbd2cSJim Jagielski  done
301*b1cdbd2cSJim Jagielski
302*b1cdbd2cSJim Jagielski  # copy INST_RELEASE file
303*b1cdbd2cSJim Jagielski  if [ ! -f ${INSTALL_ROOT}/var/sadm/system/admin/INST_RELEASE ]
304*b1cdbd2cSJim Jagielski  then
305*b1cdbd2cSJim Jagielski    mkdir -p ${INSTALL_ROOT}/var/sadm/system/admin 2>/dev/null
306*b1cdbd2cSJim Jagielski    cp -f /var/sadm/system/admin/INST_RELEASE ${INSTALL_ROOT}/var/sadm/system/admin/INST_RELEASE
307*b1cdbd2cSJim Jagielski  fi
308*b1cdbd2cSJim Jagielski
309*b1cdbd2cSJim Jagielski  # The case UPDATE="yes" is valid for patch installation and for language packs.
310*b1cdbd2cSJim Jagielski  # For patches the variable PKG_LIST is empty, for language packs it is not empty.
311*b1cdbd2cSJim Jagielski  # Patches have to be installed with patchadd, language packs with pkgadd
312*b1cdbd2cSJim Jagielski
313*b1cdbd2cSJim Jagielski  if [ -z "${PKG_LIST}" ]
314*b1cdbd2cSJim Jagielski  then
315*b1cdbd2cSJim Jagielski    LD_PRELOAD_32=$GETUID_SO /usr/sbin/patchadd -R ${INSTALL_ROOT} -M ${PATCH_PATH} ${PATCH_LIST} 2>&1 | grep -v '/var/sadm/patch' || pkg_error
316*b1cdbd2cSJim Jagielski  else
317*b1cdbd2cSJim Jagielski    LD_PRELOAD_32=$GETUID_SO /usr/sbin/pkgadd -d ${PACKAGE_PATH} -R ${INSTALL_ROOT} ${PKG_LIST} >/dev/null || pkg_error
318*b1cdbd2cSJim Jagielski  fi
319*b1cdbd2cSJim Jagielski
320*b1cdbd2cSJim Jagielskielse
321*b1cdbd2cSJim Jagielski
322*b1cdbd2cSJim Jagielski  # Create BASEDIR directories to avoid manual user interaction
323*b1cdbd2cSJim Jagielski  for i in ${PKG_LIST}; do
324*b1cdbd2cSJim Jagielski    mkdir -m 0755 -p ${INSTALL_ROOT}`pkgparam -d ${PACKAGE_PATH} $i BASEDIR` 2>/dev/null
325*b1cdbd2cSJim Jagielski  done
326*b1cdbd2cSJim Jagielski
327*b1cdbd2cSJim Jagielski  if [ ! "${INSTALL_ROOT:0:1}" = "/" ]; then
328*b1cdbd2cSJim Jagielski    INSTALL_ROOT=`cd ${INSTALL_ROOT}; pwd`
329*b1cdbd2cSJim Jagielski  fi
330*b1cdbd2cSJim Jagielski
331*b1cdbd2cSJim Jagielski  echo "####################################################################"
332*b1cdbd2cSJim Jagielski  echo "#     Installation of the found packages                           #"
333*b1cdbd2cSJim Jagielski  echo "####################################################################"
334*b1cdbd2cSJim Jagielski  echo
335*b1cdbd2cSJim Jagielski  echo "Path to the packages       : " $PACKAGE_PATH
336*b1cdbd2cSJim Jagielski  echo "Path to the installation   : " $INSTALL_ROOT
337*b1cdbd2cSJim Jagielski
338*b1cdbd2cSJim Jagielski  LD_PRELOAD_32=$GETUID_SO /usr/sbin/pkgadd -d ${PACKAGE_PATH} -R ${INSTALL_ROOT} ${PKG_LIST} >/dev/null || pkg_error
339*b1cdbd2cSJim Jagielskifi
340*b1cdbd2cSJim Jagielski
341*b1cdbd2cSJim Jagielskirm -f $GETUID_SO
342*b1cdbd2cSJim Jagielskirm -f /tmp/.ai.pkg.zone.lock*
343*b1cdbd2cSJim Jagielski
344*b1cdbd2cSJim Jagielski# remove local tmp directory
345*b1cdbd2cSJim Jagielskiif [ ! -z ${LOCAL_TMP} ]
346*b1cdbd2cSJim Jagielskithen
347*b1cdbd2cSJim Jagielski  rm -f ${LOCAL_TMP}/.ai.pkg.zone.lock*
348*b1cdbd2cSJim Jagielski  rmdir ${LOCAL_TMP}
349*b1cdbd2cSJim Jagielski  rm -f ${INSTALL_ROOT}/tmp
350*b1cdbd2cSJim Jagielski  mkdir ${INSTALL_ROOT}/tmp
351*b1cdbd2cSJim Jagielskifi
352*b1cdbd2cSJim Jagielski
353*b1cdbd2cSJim Jagielski#
354*b1cdbd2cSJim Jagielski# Create a link into the users home directory
355*b1cdbd2cSJim Jagielski#
356*b1cdbd2cSJim Jagielski
357*b1cdbd2cSJim Jagielskiif [ "$LINK" = "yes" ]
358*b1cdbd2cSJim Jagielskithen
359*b1cdbd2cSJim Jagielski  rm -f $HOME/soffice 2>/dev/null
360*b1cdbd2cSJim Jagielski  find `cd "$INSTALL_ROOT" && pwd` -name soffice -type f -perm -u+x -exec /bin/sh -ce 'ln -sf "$0" "$HOME/soffice" && echo "Creating link from $0 to $HOME/soffice"' {} \;
361*b1cdbd2cSJim Jagielskifi
362*b1cdbd2cSJim Jagielski
363*b1cdbd2cSJim Jagielski# patch the "bootstraprc" to create a self-containing installation
364*b1cdbd2cSJim Jagielskifor i in ${PKG_LIST}; do
365*b1cdbd2cSJim Jagielski  my_dir=${INSTALL_ROOT}`pkgparam -d ${PACKAGE_PATH} "$i" BASEDIR`
366*b1cdbd2cSJim Jagielski  find "$my_dir" -type f -name bootstraprc -exec sh -ce 'test ! -f "$0".orig && mv "$0" "$0".orig && sed '\''s,^UserInstallation=$SYSUSERCONFIG.*,UserInstallation=$OOO_BASE_DIR/../UserInstallation,'\'' "$0".orig > "$0"' {} \;
367*b1cdbd2cSJim Jagielskidone
368*b1cdbd2cSJim Jagielski
369*b1cdbd2cSJim Jagielski# if an unpack directory exists, it can be removed now
370*b1cdbd2cSJim Jagielskiif [ ! -z "$UNPACKDIR" ]
371*b1cdbd2cSJim Jagielskithen
372*b1cdbd2cSJim Jagielski  # for i in ${PKG_LIST}; do
373*b1cdbd2cSJim Jagielski  #   cd $UNPACKDIR; rm -rf $i
374*b1cdbd2cSJim Jagielski  # done
375*b1cdbd2cSJim Jagielski  # rmdir $UNPACKDIR
376*b1cdbd2cSJim Jagielski
377*b1cdbd2cSJim Jagielski  rm -rf $UNPACKDIR
378*b1cdbd2cSJim Jagielski  echo "Removed temporary directory $UNPACKDIR"
379*b1cdbd2cSJim Jagielskifi
380*b1cdbd2cSJim Jagielski
381*b1cdbd2cSJim Jagielskiecho
382*b1cdbd2cSJim Jagielskiecho "Installation done ..."
383*b1cdbd2cSJim Jagielskiexit 0
384*b1cdbd2cSJim Jagielski
385