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