|
Packit |
b0b924 |
#! /bin/sh
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
# Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved.
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
# This program is free software; you can redistribute it and/or modify it
|
|
Packit |
b0b924 |
# under the terms of version 2 of the GNU General Public License as
|
|
Packit |
b0b924 |
# published by the Free Software Foundation.
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
# This program is distributed in the hope that it would be useful, but
|
|
Packit |
b0b924 |
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
b0b924 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
# Further, this software is distributed without any warranty that it is
|
|
Packit |
b0b924 |
# free of the rightful claim of any third person regarding infringement
|
|
Packit |
b0b924 |
# or the like. Any license provided herein, whether implied or
|
|
Packit |
b0b924 |
# otherwise, applies only to this software file. Patent licenses, if
|
|
Packit |
b0b924 |
# any, provided herein do not apply to combinations of this program with
|
|
Packit |
b0b924 |
# other software, or any other product whatsoever.
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
# You should have received a copy of the GNU General Public License along
|
|
Packit |
b0b924 |
# with this program; if not, write the Free Software Foundation, Inc., 59
|
|
Packit |
b0b924 |
# Temple Place - Suite 330, Boston MA 02111-1307, USA.
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
# Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
|
|
Packit |
b0b924 |
# Mountain View, CA 94043, or:
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
# http://www.sgi.com
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
# For further information regarding this notice, see:
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
# http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
# This script emulates bsd install and also recognises
|
|
Packit |
b0b924 |
# two environment variables, with the following semantics :-
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
# $DIST_MANIFEST - if set, the name of the file to append manifest
|
|
Packit |
b0b924 |
# information in the following format:
|
|
Packit |
b0b924 |
# File : f mode owner group src target
|
|
Packit |
b0b924 |
# Directory: d mode owner group target
|
|
Packit |
b0b924 |
# Symlink : l linkval target
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
# $DIST_ROOT - if set, prepend to target
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
# The sematics of all combinations of these two variables
|
|
Packit |
b0b924 |
# are as follows:
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
# $DIST_MANIFEST? $DIST_ROOT? | Copy? Append Manifest?
|
|
Packit |
b0b924 |
# -----------------------------+--------------------------
|
|
Packit |
b0b924 |
# not set not set | yes no
|
|
Packit |
b0b924 |
# not set set | yes no
|
|
Packit |
b0b924 |
# set not set | no yes
|
|
Packit |
b0b924 |
# set set | yes yes
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
_usage() {
|
|
Packit |
b0b924 |
echo "Usage: $prog [-o owner] [-g group] [-m mode] -d directory"
|
|
Packit |
b0b924 |
echo "or $prog [-D] [-o owner] [-g group] [-m mode] file directory/file"
|
|
Packit |
b0b924 |
echo "or $prog [-o owner] [-g group] [-m mode] file [file ...] directory"
|
|
Packit |
b0b924 |
echo "or $prog -S file target (creates \"target\" symlink)"
|
|
Packit |
b0b924 |
echo "or $prog -T lt_arg [-o owner] [-g group] [-m mode] libtool.lai directory"
|
|
Packit |
b0b924 |
echo ""
|
|
Packit |
b0b924 |
echo "The \$DIST_MANIFEST and \$DIST_ROOT environment variables affect the"
|
|
Packit |
b0b924 |
echo "behaviour of this command - see comments in the script."
|
|
Packit |
b0b924 |
echo "The -D flag is only available for the second usage, and causes"
|
|
Packit |
b0b924 |
echo "the target directory to be created before installing the file."
|
|
Packit |
b0b924 |
echo ""
|
|
Packit |
b0b924 |
exit 1
|
|
Packit |
b0b924 |
}
|
|
Packit |
b0b924 |
|
|
Packit |
b0b924 |
_chown ()
|
|
Packit |
b0b924 |
{
|
|
Packit |
b0b924 |
_st=255
|
|
Packit |
b0b924 |
if [ $# -eq 3 ] ; then
|
|
Packit |
b0b924 |
chown $1:$2 $3
|
|
Packit |
b0b924 |
_st=$?
|
|
Packit |
b0b924 |
if [ $_st -ne 0 ] ; then
|
|
Packit |
b0b924 |
if [ $REAL_UID != '0' ] ; then
|
|
Packit |
b0b924 |
if [ ! -f $DIST_ROOT/.chown.quiet ] ; then
|
|
Packit |
b0b924 |
echo '==============================================='
|
|
Packit |
b0b924 |
echo Ownership of files under ${DIST_ROOT:-/}
|
|
Packit |
b0b924 |
echo cannot be changed
|
|
Packit |
b0b924 |
echo '==============================================='
|
|
Packit |
b0b924 |
if [ -n "$DIST_ROOT" ] ; then
|
|
Packit |
b0b924 |
touch $DIST_ROOT/.chown.quiet
|
|
Packit |
b0b924 |
fi
|
|
Packit |
b0b924 |
fi
|
|
Packit |
b0b924 |
_st=0
|
|
Packit |
b0b924 |
fi
|
|
Packit |
b0b924 |
fi
|
|
Packit |
b0b924 |
fi
|
|
Packit |
b0b924 |
|
|
Packit |
b0b924 |
return $_st
|
|
Packit |
b0b924 |
}
|
|
Packit |
b0b924 |
|
|
Packit |
b0b924 |
|
|
Packit |
b0b924 |
_manifest ()
|
|
Packit |
b0b924 |
{
|
|
Packit |
b0b924 |
echo $* | sed -e 's/\/\//\//g' >>${DIST_MANIFEST:-/dev/null}
|
|
Packit |
b0b924 |
}
|
|
Packit |
b0b924 |
|
|
Packit |
b0b924 |
prog=`basename $0`
|
|
Packit |
b0b924 |
HERE=`pwd`
|
|
Packit |
b0b924 |
dflag=false
|
|
Packit |
b0b924 |
Dflag=false
|
|
Packit |
b0b924 |
Sflag=false
|
|
Packit |
b0b924 |
Tflag=false
|
|
Packit |
b0b924 |
DIRMODE=755
|
|
Packit |
b0b924 |
FILEMODE=644
|
|
Packit |
b0b924 |
OWNER=`id -u`
|
|
Packit |
b0b924 |
GROUP=`id -g`
|
|
Packit |
b0b924 |
REAL_UID=$OWNER
|
|
Packit |
b0b924 |
|
|
Packit |
b0b924 |
# default is to install and don't append manifest
|
|
Packit |
b0b924 |
INSTALL=true
|
|
Packit |
b0b924 |
MANIFEST=:
|
|
Packit |
b0b924 |
|
|
Packit |
b0b924 |
[ -n "$DIST_MANIFEST" -a -z "$DIST_ROOT" ] && INSTALL=false
|
|
Packit |
b0b924 |
[ -n "$DIST_MANIFEST" ] && MANIFEST="_manifest"
|
|
Packit |
b0b924 |
|
|
Packit |
b0b924 |
[ $# -eq 0 ] && _usage
|
|
Packit |
b0b924 |
|
|
Packit |
b0b924 |
if $INSTALL
|
|
Packit |
b0b924 |
then
|
|
Packit |
b0b924 |
CP=cp; LN=ln; MKDIR=mkdir; CHMOD=chmod; CHOWN=_chown
|
|
Packit |
b0b924 |
else
|
|
Packit |
b0b924 |
CP=true; LN=true; MKDIR=true; CHMOD=true; CHOWN=true
|
|
Packit |
b0b924 |
fi
|
|
Packit |
b0b924 |
|
|
Packit |
b0b924 |
[ -n "$DIST_ROOT" -a $REAL_UID -ne 0 ] && CHOWN=true
|
|
Packit |
b0b924 |
|
|
Packit |
b0b924 |
while getopts "Dcm:d:S:o:g:T:" c $*
|
|
Packit |
b0b924 |
do
|
|
Packit |
b0b924 |
case $c in
|
|
Packit |
b0b924 |
c)
|
|
Packit |
b0b924 |
;;
|
|
Packit |
b0b924 |
g)
|
|
Packit |
b0b924 |
GROUP=$OPTARG
|
|
Packit |
b0b924 |
;;
|
|
Packit |
b0b924 |
o)
|
|
Packit |
b0b924 |
OWNER=$OPTARG
|
|
Packit |
b0b924 |
;;
|
|
Packit |
b0b924 |
m)
|
|
Packit |
b0b924 |
DIRMODE=`expr $OPTARG`
|
|
Packit |
b0b924 |
FILEMODE=$DIRMODE
|
|
Packit |
b0b924 |
;;
|
|
Packit |
b0b924 |
D)
|
|
Packit |
b0b924 |
Dflag=true
|
|
Packit |
b0b924 |
;;
|
|
Packit |
b0b924 |
S)
|
|
Packit |
b0b924 |
symlink=$OPTARG
|
|
Packit |
b0b924 |
Sflag=true
|
|
Packit |
b0b924 |
;;
|
|
Packit |
b0b924 |
d)
|
|
Packit |
b0b924 |
dir=$DIST_ROOT/$OPTARG
|
|
Packit |
b0b924 |
dflag=true
|
|
Packit |
b0b924 |
;;
|
|
Packit |
b0b924 |
T)
|
|
Packit |
b0b924 |
lt_install=$OPTARG
|
|
Packit |
b0b924 |
Tflag=true
|
|
Packit |
b0b924 |
;;
|
|
Packit |
b0b924 |
*)
|
|
Packit |
b0b924 |
_usage
|
|
Packit |
b0b924 |
;;
|
|
Packit |
b0b924 |
esac
|
|
Packit |
b0b924 |
done
|
|
Packit |
b0b924 |
|
|
Packit |
b0b924 |
shift `expr $OPTIND - 1`
|
|
Packit |
b0b924 |
|
|
Packit |
b0b924 |
status=0
|
|
Packit |
b0b924 |
if $dflag
|
|
Packit |
b0b924 |
then
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
# first usage
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
$MKDIR -p $dir
|
|
Packit |
b0b924 |
status=$?
|
|
Packit |
b0b924 |
if [ $status -eq 0 ]
|
|
Packit |
b0b924 |
then
|
|
Packit |
b0b924 |
$CHMOD $DIRMODE $dir
|
|
Packit |
b0b924 |
status=$?
|
|
Packit |
b0b924 |
fi
|
|
Packit |
b0b924 |
if [ $status -eq 0 ]
|
|
Packit |
b0b924 |
then
|
|
Packit |
b0b924 |
$CHOWN $OWNER $GROUP $dir
|
|
Packit |
b0b924 |
status=$?
|
|
Packit |
b0b924 |
fi
|
|
Packit |
b0b924 |
$MANIFEST d $DIRMODE $OWNER $GROUP ${dir#$DIST_ROOT}
|
|
Packit |
b0b924 |
elif $Sflag
|
|
Packit |
b0b924 |
then
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
# fourth usage (symlink)
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
if [ $# -ne 1 ]
|
|
Packit |
b0b924 |
then
|
|
Packit |
b0b924 |
_usage
|
|
Packit |
b0b924 |
else
|
|
Packit |
b0b924 |
target=$DIST_ROOT/$1
|
|
Packit |
b0b924 |
fi
|
|
Packit |
b0b924 |
$LN -s -f $symlink $target
|
|
Packit |
b0b924 |
status=$?
|
|
Packit |
b0b924 |
$MANIFEST l $symlink ${target#$DIST_ROOT}
|
|
Packit |
b0b924 |
elif $Tflag
|
|
Packit |
b0b924 |
then
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
# -T (install libs built by libtool)
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
if [ $# -ne 2 ]
|
|
Packit |
b0b924 |
then
|
|
Packit |
b0b924 |
_usage
|
|
Packit |
b0b924 |
else
|
|
Packit |
b0b924 |
libtool_lai=$1
|
|
Packit |
b0b924 |
# source the libtool variables
|
|
Packit |
b0b924 |
if [ ! -f $libtool_lai ]
|
|
Packit |
b0b924 |
then
|
|
Packit |
b0b924 |
echo "$prog: Unable to find libtool library file $libtool_lai"
|
|
Packit |
b0b924 |
exit 2
|
|
Packit |
b0b924 |
fi
|
|
Packit |
b0b924 |
. ./$libtool_lai
|
|
Packit |
b0b924 |
target=$DIST_ROOT/$2
|
|
Packit |
b0b924 |
fi
|
|
Packit |
b0b924 |
case $lt_install in
|
|
Packit |
b0b924 |
so_dot_version)
|
|
Packit |
b0b924 |
# Loop until we find libfoo.so.x.y.z, then break out.
|
|
Packit |
b0b924 |
for solib in $library_names
|
|
Packit |
b0b924 |
do
|
|
Packit |
b0b924 |
# does it have enough parts? libfoo.so.x.y.z == 5
|
|
Packit |
b0b924 |
cnt=`echo "$solib" | sed -e 's/\./ /g' | wc -w`
|
|
Packit |
b0b924 |
if [ $cnt -eq 5 ]
|
|
Packit |
b0b924 |
then
|
|
Packit |
b0b924 |
install_name=$target/$solib
|
|
Packit |
b0b924 |
$CP $solib $install_name
|
|
Packit |
b0b924 |
status=$?
|
|
Packit |
b0b924 |
$MANIFEST f $FILEMODE $OWNER $GROUP $HERE/$solib ${install_name#$DIST_ROOT}
|
|
Packit |
b0b924 |
break
|
|
Packit |
b0b924 |
fi
|
|
Packit |
b0b924 |
done
|
|
Packit |
b0b924 |
;;
|
|
Packit |
b0b924 |
|
|
Packit |
b0b924 |
so_*)
|
|
Packit |
b0b924 |
case $lt_install in
|
|
Packit |
b0b924 |
so_dot_current)
|
|
Packit |
b0b924 |
# ln -s libfoo.so.x.y.z to libfoo.so.x
|
|
Packit |
b0b924 |
from_parts=5 # libfoo.so.x.y.z
|
|
Packit |
b0b924 |
to_parts=3 # libfoo.so.x
|
|
Packit |
b0b924 |
;;
|
|
Packit |
b0b924 |
so_base)
|
|
Packit |
b0b924 |
# ln -s libfoo.so.x to libfoo.so
|
|
Packit |
b0b924 |
from_parts=3 # libfoo.so.x
|
|
Packit |
b0b924 |
to_parts=2 # libfoo.so
|
|
Packit |
b0b924 |
;;
|
|
Packit |
b0b924 |
*)
|
|
Packit |
b0b924 |
echo "$prog: -T $lt_install invalid"
|
|
Packit |
b0b924 |
exit 2
|
|
Packit |
b0b924 |
;;
|
|
Packit |
b0b924 |
esac
|
|
Packit |
b0b924 |
|
|
Packit |
b0b924 |
# Loop until we find the names, then break out.
|
|
Packit |
b0b924 |
for solib in $library_names
|
|
Packit |
b0b924 |
do
|
|
Packit |
b0b924 |
# does it have enough parts?
|
|
Packit |
b0b924 |
cnt=`echo "$solib" | sed -e 's/\./ /g' | wc -w`
|
|
Packit |
b0b924 |
if [ $cnt -eq $from_parts ]
|
|
Packit |
b0b924 |
then
|
|
Packit |
b0b924 |
from_name=$solib
|
|
Packit |
b0b924 |
elif [ $cnt -eq $to_parts ]
|
|
Packit |
b0b924 |
then
|
|
Packit |
b0b924 |
to_name=$solib
|
|
Packit |
b0b924 |
fi
|
|
Packit |
b0b924 |
|
|
Packit |
b0b924 |
if [ -n "$from_name" ] && [ -n "$to_name" ]
|
|
Packit |
b0b924 |
then
|
|
Packit |
b0b924 |
install_name=$target/$to_name
|
|
Packit |
b0b924 |
$LN -s -f $from_name $install_name
|
|
Packit |
b0b924 |
status=$?
|
|
Packit |
b0b924 |
$MANIFEST l $from_name ${install_name#$DIST_ROOT}
|
|
Packit |
b0b924 |
break
|
|
Packit |
b0b924 |
fi
|
|
Packit |
b0b924 |
done
|
|
Packit |
b0b924 |
;;
|
|
Packit |
b0b924 |
old_lib)
|
|
Packit |
b0b924 |
install_name=$target/$old_library
|
|
Packit |
b0b924 |
$CP $old_library $install_name
|
|
Packit |
b0b924 |
status=$?
|
|
Packit |
b0b924 |
$MANIFEST f $FILEMODE $OWNER $GROUP $HERE/$old_library ${install_name#$DIST_ROOT}
|
|
Packit |
b0b924 |
;;
|
|
Packit |
b0b924 |
*)
|
|
Packit |
b0b924 |
echo "$prog: -T $lt_install invalid"
|
|
Packit |
b0b924 |
exit 2
|
|
Packit |
b0b924 |
;;
|
|
Packit |
b0b924 |
esac
|
|
Packit |
b0b924 |
|
|
Packit |
b0b924 |
case $lt_install in
|
|
Packit |
b0b924 |
old_lib|so_dot_version)
|
|
Packit |
b0b924 |
if [ $status -eq 0 ]
|
|
Packit |
b0b924 |
then
|
|
Packit |
b0b924 |
$CHMOD $FILEMODE $install_name
|
|
Packit |
b0b924 |
$CHOWN $OWNER $GROUP $install_name
|
|
Packit |
b0b924 |
fi
|
|
Packit |
b0b924 |
;;
|
|
Packit |
b0b924 |
esac
|
|
Packit |
b0b924 |
|
|
Packit |
b0b924 |
else
|
|
Packit |
b0b924 |
list=""
|
|
Packit |
b0b924 |
dir=""
|
|
Packit |
b0b924 |
if [ $# -eq 2 ]
|
|
Packit |
b0b924 |
then
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
# second usage
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
f=$1
|
|
Packit |
b0b924 |
dir=$DIST_ROOT/$2
|
|
Packit |
b0b924 |
if $Dflag
|
|
Packit |
b0b924 |
then
|
|
Packit |
b0b924 |
mkdir -p `dirname $dir`
|
|
Packit |
b0b924 |
fi
|
|
Packit |
b0b924 |
$CP $f $dir
|
|
Packit |
b0b924 |
status=$?
|
|
Packit |
b0b924 |
if [ $status -eq 0 ]
|
|
Packit |
b0b924 |
then
|
|
Packit |
b0b924 |
if [ -f $dir/$f ]
|
|
Packit |
b0b924 |
then
|
|
Packit |
b0b924 |
$CHMOD $FILEMODE $dir/$f
|
|
Packit |
b0b924 |
status=$?
|
|
Packit |
b0b924 |
if [ $status -eq 0 ]
|
|
Packit |
b0b924 |
then
|
|
Packit |
b0b924 |
$CHOWN $OWNER $GROUP $dir/$f
|
|
Packit |
b0b924 |
status=$?
|
|
Packit |
b0b924 |
fi
|
|
Packit |
b0b924 |
$MANIFEST f $FILEMODE $OWNER $GROUP $HERE/$f ${dir#$DIST_ROOT}/$f
|
|
Packit |
b0b924 |
else
|
|
Packit |
b0b924 |
$CHMOD $FILEMODE $dir
|
|
Packit |
b0b924 |
status=$?
|
|
Packit |
b0b924 |
if [ $status -eq 0 ]
|
|
Packit |
b0b924 |
then
|
|
Packit |
b0b924 |
$CHOWN $OWNER $GROUP $dir
|
|
Packit |
b0b924 |
status=$?
|
|
Packit |
b0b924 |
fi
|
|
Packit |
b0b924 |
$MANIFEST f $FILEMODE $OWNER $GROUP $HERE/$dir ${dir#$DIST_ROOT}
|
|
Packit |
b0b924 |
fi
|
|
Packit |
b0b924 |
fi
|
|
Packit |
b0b924 |
else
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
# third usage
|
|
Packit |
b0b924 |
#
|
|
Packit |
b0b924 |
n=1
|
|
Packit |
b0b924 |
while [ $# -gt 0 ]
|
|
Packit |
b0b924 |
do
|
|
Packit |
b0b924 |
if [ $# -gt 1 ]
|
|
Packit |
b0b924 |
then
|
|
Packit |
b0b924 |
list="$list $1"
|
|
Packit |
b0b924 |
else
|
|
Packit |
b0b924 |
dir=$DIST_ROOT/$1
|
|
Packit |
b0b924 |
fi
|
|
Packit |
b0b924 |
shift
|
|
Packit |
b0b924 |
done
|
|
Packit |
b0b924 |
|
|
Packit |
b0b924 |
for f in $list
|
|
Packit |
b0b924 |
do
|
|
Packit |
b0b924 |
$CP $f $dir
|
|
Packit |
b0b924 |
status=$?
|
|
Packit |
b0b924 |
if [ $status -eq 0 ]
|
|
Packit |
b0b924 |
then
|
|
Packit |
b0b924 |
$CHMOD $FILEMODE $dir/$f
|
|
Packit |
b0b924 |
status=$?
|
|
Packit |
b0b924 |
if [ $status -eq 0 ]
|
|
Packit |
b0b924 |
then
|
|
Packit |
b0b924 |
$CHOWN $OWNER $GROUP $dir/$f
|
|
Packit |
b0b924 |
status=$?
|
|
Packit |
b0b924 |
fi
|
|
Packit |
b0b924 |
$MANIFEST f $FILEMODE $OWNER $GROUP $HERE/$f ${dir#$DIST_ROOT}/$f
|
|
Packit |
b0b924 |
fi
|
|
Packit |
b0b924 |
[ $status -ne 0 ] && break
|
|
Packit |
b0b924 |
done
|
|
Packit |
b0b924 |
fi
|
|
Packit |
b0b924 |
fi
|
|
Packit |
b0b924 |
|
|
Packit |
b0b924 |
exit $status
|