# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # #ident "%Z%%M% %I% %E% SMI" # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # ONLDCPIO=/tmp/SUNWonld.cpio.$$ LINKERALIAS=linker_install@eng.sun.com # # This script handles the installation of the new sgstools on # both Solaris10 systems (which libraries moved to '/lib') and # pre Solaris10 systems where libraries reside under '/usr/lib'. # # We test to deterine if '/lib' is a symlink (pre Solaris10) or a # directory (Solaris10 & later). We key off of that for # everything below. # if [ -h ${BASEDIR}/lib ] then LIBBASE=usr/lib ETCLIST="etc/lib/ld.so.1 etc/lib/libdl.so.1" else LIBBASE=lib fi export LIBBASE build_liblist () { # # Build '/lib' file list for backing up # cd $BASEDIR/$SGSDIR/lib find . \( -type f -o -type l \) -print | while read file do if [ \( -f $BASEDIR/$LIBBASE/$file \) -o \ \( -h $BASEDIR/$LIBBASE/$file \) ]; then echo $LIBBASE/$file fi done } build_filelist() { # # Build rest of files # cd $BASEDIR/$SGSDIR find usr \( -type f -o -type l \) -print | while read file do if [ \( -f $BASEDIR/$file \) -o \ \( -h $BASEDIR/$file \) ]; then echo $file fi done } build_newitemsfile () { rm -f ${SGSBACKUPDIR}.newfiles # Build a list of files/directories that this package is going # add to the system that do not already exist. cd $BASEDIR/$SGSDIR/lib find . -depth -print | while read file do # Built in /bin/sh test lacks -e /usr/bin/test \! -e "$BASEDIR/$LIBBASE/$file" if [ $? = 0 ]; then echo $LIBBASE/$file >> ${SGSBACKUPDIR}.newfiles fi done cd $BASEDIR/$SGSDIR find usr -depth -print | while read file do /usr/bin/test \! -e "$BASEDIR/$file" if [ $? = 0 ]; then echo $file >> ${SGSBACKUPDIR}.newfiles fi done } # Generate a file containing the names of the files and directories # that are being added (as opposed to being replaced) to the system. # These items will need to be explicitly removed at uninstall. build_newitemsfile # # backup all existing SGStools. # LIBLIST=`build_liblist` FILELIST=`build_filelist` echo "Backup up existing SGS tools to $SGSBACKUPDIR..." cd $BASEDIR for file in $LIBLIST $FILELIST $ETCLIST do echo $file done | cpio -pdm $BASEDIR/$SGSBACKUPDIR # # Overwrite SGSTOOLS onto existing system. We use CPIO # because rm's a file and then installs a new one # instead of copying over a existing file. This is # required when updating libraries (and the run-time linker) # which are currently being used. # # # First '/lib' components # echo "Installing new SGSTOOLS from $BASEDIR/$SGSDIR" prev_bindnow=$LD_BIND_NOW LD_BIND_NOW=1 export LD_BIND_NOW cd $BASEDIR/$SGSDIR/lib find . -depth -print | cpio -o -O $ONLDCPIO cd $BASEDIR/$LIBBASE cpio -imdu < $ONLDCPIO rm -f $ONLDCPIO # # Then everything else # cd $BASEDIR/$SGSDIR find usr -depth -print | cpio -o -O $ONLDCPIO cd $BASEDIR cpio -imdu < $ONLDCPIO rm -f $ONLDCPIO # # Populate '/etc/lib' directories on systems with the # run-time linker installed under '/usr/lib/ld.so.1' # if [ "${ETCLIST}x" != "x" ]; then cp $BASEDIR/usr/lib/ld.so.1 $BASEDIR/etc/lib/ld.so.1.onld cp $BASEDIR/usr/lib/libdl.so.1 $BASEDIR/etc/lib/libdl.so.1.onld cd $BASEDIR/etc/lib mv ld.so.1.onld ld.so.1 mv libdl.so.1.onld libdl.so.1 fi LD_BIND_NOW=$prev_bindnow #### #### E-mail sent to track installations of SUNWonld package. #### purely for statistical purposes. #### ###if [ -f /usr/lib/sendmail ] ###then ### HOSTINFO=`uname -a` ### DATE=`date` ### ENVLIST=`env` ### /usr/lib/sendmail $LINKERALIAS << EOF ###To: $LINKERALIAS ###Subject: SUNWonld Linker Package Installation: $PRODVERS ###Content-type: text/plain ###Precedence: junk ###-------- ### ###Package Installation ###uname: $HOSTINFO ###date: $DATE ###VERSION: $VERSION ###ENV: ###$ENVLIST ###$ENV ### ###. ###EOF ###fi