cdesktopenv/cde/programs/dtksh/ksh93/ship/shipin

1788 lines
38 KiB
Plaintext
Executable File

csh=obsolete || exec sh $0 $argv:q
OLDEST_nmake=950509 OLDEST_pax=950509
csh=obsolete || exec sh $0 $argv:q
#
# software shipment installation control
#
: "this id string works around a bug introduced sometime in 1991
@(#)shipin (AT&T Bell Laboratories) 05/09/95
"
#
# ship/shipin [options] [component ...] [name=value ...]
#
# options:
#
# -c don't compute closure if components specified
# -d for debugging
# -i read in from spool but do not uncrate or build
# (files set up for shipout)
# -n show actions but do not execute
# -p don't run proto on uncrate
# -r usr usr is the shipment recipient
# -s dir shipment spool hierarchy copied to dir
# -t show component closure but do not build
# -u uncrate shipment source but do not build
# -x set -x
# -E ignore previous tool build errors
# -F force (re)build (no uncrating unless -u)
# -L don't generate proto line syncs on uncrate
# -O preserve old shipments
# -P delete #pragma prototyped on input
# -X tool exclude tools from uncrating or building
#
# The component arguments cause shipin to build only on those components.
# All component source will be uncrated.
#
# The remaining arguments are passed as arguments to the generating
# makes or shell scripts -- handy for `name=value' overrides.
#
# The minimum configuration must have an $INSTALLROOT/ship subdirectory.
# See $INSTALLROOT/ship/README for more details.
#
# If $CC is not set then CC=$INSTALLROOT/bin/cc if it exists. This
# provides a workaround hook for botches in the compilation system
# that go beyond setting CC and CCFLAGS. Botches are so bad/ugly/temporary
# that we refuse to incorporate workarounds in our mainline code.
# Systems that currently require workarounds are:
# NeXT
# Win/NT
#
case $1 in
-x) set -x
;;
*) case $- in
*x*) set '' -x ${1+"$@"}; shift ;;
esac
;;
esac
case $- in
*x*) case $PS4 in
*'$LINENO'*) ;;
*) PS4='+$LINENO+ ' ;;
esac
;;
esac
# disable the builtin wc because ksh may hang during the execution later of "wc pic.o"
builtin -d wc
#
# this script may be overwritten while it is being executed
# so copy it and exec from the copy
#
_command_=ship/shipin
_command_save_=ship/SHIPin
_check_=": $* :"
case $_ship_check_ in
$_check_)
;;
*) _ship_check_=$_check_
export _ship_check_
cp $_command_ $_command_save_ 2>/dev/null && chmod +x $_command_save_ && exec $_command_save_ ${1+"$@"}
;;
esac
#
# the components in ORDER are built first
# OLDEST_<cmd> is the oldest version of <cmd> that can be used
#
INSTALLROOT=`pwd`
export INSTALLROOT
ORDER="pax ksh nmake"
USER=${USER-${LOGNAME-`echo $HOME | sed 's/.*\///'`}}
INSTALLER=$USER
export INSTALLER
RECIPIENT=${RECIPIENT-$USER}
FROMSYS=`(uname -n || hostname || cat /etc/whoami) 2>/dev/null`
d=/lib:/usr/lib:/usr/local/lib
for i in LD_LIBRARY_PATH
do eval v='$'$i
case $v in
"") eval $i='$'INSTALLROOT/lib ;;
*) eval $i='$'INSTALLROOT/lib:$v ;;
esac
export $i
done
OPATH=/bin:/usr/bin:$PATH
PATH=:$PATH:$INSTALLROOT/bin
export PATH
case $PS4 in
+\ *|+*\ )
;;
*) PS4="+ $PS4"
export PS4
;;
esac
SHIP=$INSTALLROOT/ship
BIN=$INSTALLROOT/bin
_bypass_=Install
LOG=in.log
_mail_=/bin/mail
OWNER=owner
_read_=
REPORT=report
SHIPDATE=[0-9][0-9][0-9][0-9][0-9][0-9]
SHIPMENT=*$SHIPDATE
SHIPSLOG=$SHIP/shipslog
TMP=tmp
for f in $ORDER
do eval RELEASE_$f=
eval STATE_$f=
done
if (unalias make) 2> /dev/null
then unalias cp make rm
fi
#
# check for old exit status botch
#
_set_=
(set -e; false || true) && _set_=e || echo "$_command_: command errors ignored because of shell botch" >&2
_set_="set -x$_set_;"
#
# gobble the options
#
_closure_=1
_debug_=
_exclude_=" bin cmd lib src shipslog "
_export_="CC CCFLAGS"
_force_=
_ignore_=
_intermediate_=
_options_=
_preserve_=
_proto_=1
_proto_default_=npr
_proto_opt_=
_total_=
_trace_=
_uncrate_=
_uuspool_=
while :
do case $# in
0) break ;;
esac
case $1 in
-[rsX]) case $# in
1) set '?'; continue ;;
esac
case $1 in
-r) RECIPIENT=$2 ;;
-s) _uuspool_="$_uuspool_ $2" ;;
-X) _exclude_="$_exclude$2 " ;;
esac
_options_="$_options_ $1"
shift
;;
-c) _closure_= ORDER= ;;
-d) _debug_=1 ;;
-i) _intermediate_=1 ;;
-n) _trace_=echo ;;
-p) _proto_= ;;
-t) _total_=1 _trace_=: _components_= ;;
-u) _uncrate_=1 ;;
-x) set -x ;;
-E) _ignore_=1 ;;
-F) _force_=1 ;;
-L) _proto_default_=pr ;;
-O) _preserve_=1 ;;
-P) _proto_opt_=z$_proto_opt_ ;;
--) _options_="$_options_ $1"; shift; break ;;
'?'|[-+]*) echo "Usage: $_command_ [-cinptuxEF] [-r recipient] [-s spool-dir] [-X tool] [tool ...] [name=value ...]" >&2; exit 2 ;;
*=*) eval `echo $1 | sed -e '/^[a-zA-Z0-9_]*=/!d' -e "s/\([^=]*\)=\(.*\)/i=\1 \1=\'\2\'/"`
_export_="$_export_ $i"
;;
*) break ;;
esac
_options_="$_options_ $1"
shift
done
#
# option controlled vars
#
export RECIPIENT
case $_uuspool_ in
"") case $SHIPSPOOL in
"") SHIPSPOOL="/var/spool/uucppublic/$RECIPIENT/* /var/spool/uucppublic/receive/$RECIPIENT/*" ;;
esac
;;
*) SHIPSPOOL=$_uuspool_ ;;
esac
export SHIPSPOOL
#
# must be in $INSTALLROOT
#
if test ! -d ship
then echo "$_command_: must have \$INSTALLROOT/ship directory" >&2; exit 1
fi
cd $SHIP
case $_trace_ in
?*) $_trace_ cd $SHIP ;;
esac
_tmp_=SHIPtmp
#
# best guess for cc command and flags
# probe info cached in $_ship_probe_
#
case $CC in
""|cc) test -f $INSTALLROOT/bin/cc && CC=$INSTALLROOT/bin/cc ;;
esac
case $CC in
$INSTALLROOT/bin/cc)
;;
*) _ship_probe_=SHIPprobe
_ship_probe_PATH=
_ship_probe_CC=
_ship_probe_CCFLAGS=
test -f $_ship_probe_ && . ./$_ship_probe_
case "+ $_ship_probe_PATH + $_ship_probe_CC +" in
"+ $PATH + $CC +")
CC="$_ship_probe_CC $_ship_probe_CCFLAGS"
case $_ship_probe_CCFLAGS in
?*) CC="$CC $_ship_probe_CCFLAGS" ;;
esac
;;
*) _ship_probe_PATH=$PATH
case $CC in
"") echo 'int main() { return 0; }' > ${_tmp_}0.c
cat > $_tmp_.c <<'!'
#include <stdio.h>
#include <limits.h>
#define STD_POSIX1 (1<<5)
#define STD_LIMITS (1<<4)
#define STD_C (0<<3)
#define STD_POSIX2 (1<<2)
#define STD_XOPEN (1<<1)
#define STD_ALL (1<<0)
main(argc, argv)
int argc;
char** argv;
{
int std = 0;
#ifdef __STDC__
std |= STD_C;
#endif
#ifdef CHAR_BIT
std |= STD_LIMITS;
#endif
#ifdef PIPE_BUF
std |= STD_POSIX1;
#endif
#ifdef LINE_MAX
std |= STD_POSIX2;
#endif
#ifdef DBL_MAX
std |= STD_XOPEN;
#endif
#ifdef PID_MAX
std |= STD_ALL;
#endif
printf("#ccflags#%04o#%s\n", std, argv[1]);
return 0;
}
!
CC="`ifs=\$IFS
IFS=:
set /opt/SUNWspro/bin:+:$PATH:+:/opt/gnu/bin:/usr/add-on/gnu/bin:/usr/local/bin
IFS=\$ifs
path=\$*
set cc 9 gcc 8 xlc 7 acc 6 apcc 5
std=
while :
do case \$# in
0|1) break ;;
esac
for bin in \$path -
do case \$bin in
+) std=1\$std; continue ;;
-) break 2 ;;
esac
test -x \$bin/\$1 && break
done
case $std in
1) cmd=\$1 ;;
*) cmd=\$bin/\$1 ;;
esac
seq=
rm -f ${_tmp_}0.exe
\$cmd -o ${_tmp_}0.exe ${_tmp_}0.c && ./${_tmp_}0.exe &&
for opt in \
'' \
-D_ALL_SOURCE \
-D_ANSI_SOURCE \
-D_ANSI_C_SOURCE \
-D_POSIX_SOURCE \
-D_XOPEN_SOURCE \
'-D_ANSI_SOURCE -D_POSIX_SOURCE' \
'-D_ANSI_SOURCE -D_XOPEN_SOURCE' \
'-D_ANSI_C_SOURCE -D_POSIX_SOURCE' \
'-D_ANSI_C_SOURCE -D_XOPEN_SOURCE' \
'-D_POSIX_SOURCE -D_XOPEN_SOURCE' \
'-D_ANSI_SOURCE -D_POSIX_SOURCE -D_XOPEN_SOURCE' \
'-D_ANSI_C_SOURCE -D_POSIX_SOURCE -D_XOPEN_SOURCE' \
-posix
do seq=x$seq
xxx=$cmd
case \$opt in
'') tie=1 ;;
*) xxx=\"\$xxx \$opt\" tie=0 ;;
esac
\$xxx $_tmp_.c -o $_tmp_.exe && ./$_tmp_.exe \"\$2#\$tie# \$seq#\$xxx\"
done
shift
shift
done 2>/dev/null | sort +0r -1 +1 | grep '^#ccflags#' | sed -e '2,$d' -e 's/.*#//'`"
rm -f ${_tmp_}*.*
;;
esac
case $CC in
"") CC=cc ;;
esac
echo 'int x;' > $_tmp_.c
rm -f $_tmp_.o 2>/dev/null
if $CC -c $_tmp_.c >/dev/null 2>&1 && test -f $_tmp_.o
then : ok
else echo "$_command_: must have CC=\"$CC\" to continue" >&2
exit 1
fi
_ship_probe_CC=$CC
_ship_probe_CCFLAGS=
#
# commit the wimps
#
echo "#if !defined(TEST) && (defined(__STDC__) || defined(__cplusplus))
(
#else
#include <stddef.h>
#include <stdlib.h>
#include <stdarg.h>
#include <sys/types.h>
#if defined(TEST)
#define glue(a,b) a ## b
glue(i, nt)
#else
int
#endif
int main(int argc, char** argv) { return 0; }
#endif
" > $_tmp_.c
if $CC $CCFLAGS -c $_tmp_.c >/dev/null 2>&1
then if $CC $CCFLAGS -DTEST -c $_tmp_.c >/dev/null 2>&1
then : ok
elif $CC -D__STDC__ $CCFLAGS -DTEST -c $_tmp_.c >/dev/null 2>&1
then CC="$CC -D__STDC__"
case $_ship_probe_CCFLAGS in
?*) _ship_probe_CCFLAGS="$_ship_probe_CCFLAGS " ;;
esac
_ship_probe_CCFLAGS="${_ship_probe_CCFLAGS}-D__STDC__"
fi
fi
echo "#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main() { return socket(0, 0, 0); }" > $_tmp_.c
for i in "" "-systype bsd43"
do if $CC $CCFLAGS $i -o $_tmp_.exe $_tmp_.c >/dev/null 2>&1
then case $i in
?*) CC="$CC $i"
case $_ship_probe_CCFLAGS in
?*) _ship_probe_CCFLAGS="$_ship_probe_CCFLAGS " ;;
esac
_ship_probe_CCFLAGS="${_ship_probe_CCFLAGS}$i"
;;
esac
break
fi
done
rm -f $_tmp_.*
{
echo _ship_probe_PATH="'$_ship_probe_PATH'"
echo _ship_probe_CC="'$_ship_probe_CC'"
echo _ship_probe_CCFLAGS="'$_ship_probe_CCFLAGS'"
} > $_ship_probe_
;;
esac
;;
esac
for i in $_export_
do eval d='"$'$i'"'
case $d in
?*) export $i ;;
esac
done
#
# check the manifest and then copy from the spool area to $SHIP
#
case $_debug_ in
?*) SHIPSPOOL= ;;
esac
for UUSHIP in $SHIPSPOOL
do if test -d $UUSHIP
then cd $UUSHIP
case $_trace_ in
?*) $_trace_ cd $UUSHIP ;;
esac
for f in ${SHIPDATE}*.*
do if test -f $f/manifest
then _manifest_=`cat $f/manifest`
d=
for i in $_manifest_
do if test ! -f $i
then case $i in
*/*/*) case $i in
*.???) p=`echo $i | sed -e 's/\....$//'` ;;
*) p=$i ;;
esac
if test -d $SHIP/$p
then continue
fi
;;
esac
echo "$f: $i has not arrived yet" >&2
d=1
fi
done
case $d in
?*) continue ;;
esac
_unspool_=
for i in $_manifest_
do case $i in
$f/unspool) _unspool_=$i ;;
esac
done
if test "" != "$_unspool_" -a -f $_unspool_ && $_trace_ . $_unspool_
then : ok
else echo "$f: cannot unspool shipment" >&2; continue
fi
d=
for i in $_manifest_
do case $i in
$f/*) ;;
*.000) d="$d $i" ;;
*/*.*) ;;
*/*/*) d="$d $i" ;;
esac
done
d=`echo "$d " | sed -e 's,//*[^/ ]* , ,g'`
$_trace_ rm -rf $f $d
fi
done
cd $INSTALLROOT
case $_trace_ in
?*) $_trace_ cd $INSTALLROOT ;;
esac
fi
done
#
# check for shipment support update
#
# B install in $BIN
# M must exist
# P must exist on PATH
#
_path_=`echo $PATH | sed -e 's/:/ /g' -e 's,///*,/,g'`
_stamp_='`sed -e /@(#)$c'\''.* (AT.T.*).* [0-9][0-9]\\/[0-9][0-9]\\/[0-9][0-9]/!d'\'' -e '\''s/.*@(#).* (.*).* \\(..\\)\\/\\(..\\)\\/\\(..\\).*/\\3\\1\\2/'\'' -e q $f 2>/dev/null`'
_update_=
cd $SHIP
set iffe .sh BM \
in '' M \
op .c M \
proto .c BM \
ar /usr/ccs/bin P \
-- ${1+"$@"}
while :
do case $1 in
--) shift; break ;;
esac
_cmd_=$1
_suf_=$2
_flg_=$3
shift; shift; shift
case $_flg_ in
*B*) c=$_cmd_ ;;
*) c=ship$_cmd_ ;;
esac
case $_flg_ in
*P*) for i in $_path_
do if test -x $i/$_cmd_
then _flg_=
break
fi
done
case $_flg_ in
*P*) for i in $_suf_
do if test -x $i/$_cmd_
then PATH=$PATH:$i
_path_="$_path_ $i"
_flg_=
break
fi
done
case $_flg_ in
*P*) echo "$_command_: must have $_cmd_ to continue" >&2
exit 1
;;
esac
;;
esac
continue
;;
esac
eval _ship${_cmd_}_=$SHIP/ship$_cmd_
case $_trace_ in
?*) continue ;;
esac
if test -f ship$_cmd_$_suf_
then f=ship$_cmd_$_suf_; eval new=$_stamp_
if test -f SHIP$_cmd_$_suf_
then f=SHIP$_cmd_$_suf_; eval old=$_stamp_
else old=0
fi
else case $_flg_ in
*M*) echo "$_command_: must have ship$_cmd_$_suf_ to continue" >&2
exit 1
;;
esac
eval _ship${_cmd_}_=
continue
fi
# the variable "old" can be empty, to avoid "arithmetic syntax error" from ksh, set it to 0
if test "$new" -gt "${old:-0}"
then case $_suf_ in
?*) cp ship$_cmd_$_suf_ SHIP$_cmd_$_suf_ ;;
esac
elif test "$new" -lt "$old"
then cp SHIP$_cmd_$_suf_ ship$_cmd_$_suf_
new=$old
_update_="$_update_ $_cmd_$_suf_"
fi
case $_suf_ in
?*) f=ship$_cmd_; eval old=$_stamp_
case $_suf_ in
.c) test -f $f && ./$f </dev/null >/dev/null 2>&1 || old=0 ;;
esac
# the variable "old" can be empty, to avoid "arithmetic syntax error" from ksh, set it to 0
if test "$new" -gt "${old:-0}"
then case $old in
""|0) ;;
*) cp ship$_cmd_ SHIP$_cmd_ ;;
esac
case $_suf_ in
.c) if $CC $CCFLAGS -o SHIPa.out ship$_cmd_$_suf_
then mv SHIPa.out ship$_cmd_
else case $old in
""|0) case $_flg_ in
*M*) echo "$_command_: must have ship$_cmd_ to continue" >&2
exit 1
;;
esac
eval _ship${_cmd_}_=
continue
;;
esac
fi
;;
.sh) cp ship$_cmd_$_suf_ ship$_cmd_
chmod +x ship$_cmd_
;;
esac
else new=$old
fi
esac
case $_flg_ in
*B*) f=$BIN/$_cmd_; eval old=$_stamp_
# the variable "old" can be empty, to avoid "arithmetic syntax error" from ksh, set it to 0
if test "$new" -gt "${old:-0}"
then if test ! -d $BIN
then mkdir $BIN
fi
cp ship$_cmd_ $BIN/$_cmd_
fi
;;
esac
done
case $_trace_ in
"") test -x $BIN/feature || ln $BIN/iffe $BIN/feature ;;
esac
case $_proto_ in
"") _shipproto_= ;;
esac
cd $INSTALLROOT
case " $_update_ " in
*" in "*) $_trace_ exec $_command_ $_options_ ${1+"$@"} ;;
esac
#
# intermediate unpacking from spool area done
#
case $_debug_$_intermediate_ in
?*) exit 0 ;;
esac
#
# grab the select args
#
SELECT=" "
while :
do case $# in
0) break ;;
esac
case $1 in
*=*) break ;;
esac
SELECT="$SELECT$1 "
shift
done
#
# handle character class botch -- it's hard to believe 9th edition
# did this, easier to believe BSD never added it
#
cclasstype='^'
case a in
[${cclasstype}0]) ;;
[!0]) cclasstype='!' ;;
*) cclasstype='' ;;
esac
#
# set up and verify the default directory hierarchy
#
hierarchy="src src/cmd src/lib ship/shipslog"
case $_uncrate_ in
"") hierarchy="$hierarchy bin fun include lib man man/man1 man/man3 man/man8" ;;
esac
for d in $hierarchy
do if test ! -d $d
then $_trace_ mkdir $d
fi
done
if test ! -f src/Makefile
then case $_trace_ in
"") echo ":MAKE: lib - cmd" > src/Makefile ;;
*) $_trace_ echo ":MAKE: lib - cmd" "> src/Makefile" ;;
esac
fi
if test ! -f src/lib/Makefile
then case $_trace_ in
"") echo ':MAKE: lib[0-9]* - libast - *' > src/lib/Makefile ;;
*) $_trace_ echo ':MAKE: lib[0-9]* - libast - *' '> src/lib/Makefile' ;;
esac
fi
if test ! -f src/cmd/Makefile
then case $_trace_ in
"") echo ':MAKE: probe - cpp - *' > src/cmd/Makefile ;;
*) $_trace_ echo ':MAKE: probe - cpp - *' '> src/cmd/Makefile' ;;
esac
fi
#
# ignore and silent may be used by nmake generated bootstraps
#
case $_trace_$_uncrate_ in
"") if test ! -f bin/ignore
then cat > bin/ignore <<'!'
:
"$@"
exit 0
!
chmod +x bin/ignore
fi
if test ! -f bin/silent
then cat > bin/silent <<'!'
:
case $1 in
+|-|"") exit 0 ;;
esac
"$@"
!
chmod +x bin/silent
fi
;;
esac
trap 'exit 2' 1 2
#
# check if we can use nmake from the start
# if so then limit proto to notices only
#
ACCEPT=nmake
_make_=
for p in $_path_
do if test -f $p/nmake && test "`$p/nmake -n -f - 'error 0 \$(MAKEVERSION:@/.*\\(..\\)\\/\\(..\\)\\/\\(..\\)\$/\\3\\1\\2/)' 'nop:' nop </dev/null 2>&1`" -ge "$OLDEST_nmake" 2>/dev/null
then l=`echo $p | sed 's,[^/]*\$,lib,'`
_make_="$p/nmake MAKEPP=$l/cpp MAKERULES=$l/make/makerules"
ACCEPT=
_proto_default_=d$_proto_default_
break
fi
done
_proto_default_=$_proto_default_$_proto_opt_
#
# some context for nohup.out
#
if test -f nohup.out
then _nohup_="==============================================================================="
echo "$_nohup_"
id="`(uname -a) 2>/dev/null`"
case $id in
?*) echo "system $id" ;;
esac
echo "installroot $INSTALLROOT"
case $SHIPSPOOL in
*"*"*) ;;
*) echo "shipspool $SHIPSPOOL" ;;
esac
case $INSTALLER in
$RECIPIENT) echo "by $FROMSYS!$INSTALLER" ;;
*) echo "by $FROMSYS!$INSTALLER for $RECIPIENT" ;;
esac
echo "archive $AR_PATH $AR_DELTA"
case $_make_ in
?*) x=$_make_ ;;
*) x=mamexec ;;
esac
echo "build $x"
echo "cc $CC $CCFLAGS"
case $CCS in
?*) echo "preroot $CCS" ;;
esac
echo "start `date`"
echo "$_nohup_"
else _nohup_=
fi
#
# finish up initialization
#
case $_trace_ in
?*) $_trace_ cd $SHIP ;;
esac
cd $SHIP
#
# uncrate the archives into the source tree
#
COMPONENTS_SELECT=" "
for NAME in *
do case $_exclude_ in
*" $NAME "*) continue ;;
esac
if test -f $NAME/items
then # don't rebuild items under local control
echo "$_command_: warning: $NAME: delete ship/$NAME/items to build" >&2
continue
fi
case $cclasstype in
'!'|'^')
case $NAME in
*[${cclasstype}a-zA-Z_0-9]*)
continue ;;
esac
;;
'') case "`echo $NAME | grep '[^a-zA-Z_0-9]'`" in
?*) continue ;;
esac
;;
esac
if test -d $NAME
then _release_=
_state_=found
case $NAME in
*_*) eval `echo $NAME | sed 's/\([^_]*\)_\(.*\)/_system_=\1 _tool_=\2/'`
_root_=$INSTALLROOT/$_system_
if test ! -d $_root_
then $_trace_ mkdir $_root_
fi
for d in $hierarchy
do case $d in
ship/*) ;;
*) if test ! -d $_root_/$d
then $_trace_ mkdir $_root_/$d
fi
;;
esac
done
;;
*) _root_=$INSTALLROOT
_tool_=$NAME
;;
esac
case $_tool_ in
lib*) _type_=lib ;;
*) _type_=cmd ;;
esac
_source_=$_root_/src/$_type_/$_tool_
if test ! -d $_source_
then $_trace_ mkdir $_source_
fi
cd $NAME
base= # newest base
delta= # newest delta for newest base [not in dlist]
dlist= # list of deltas for newest base [no delta]
need= # pax needed to uncrate
new= # delta shipments requiring new base
old= # first base for new chain
remove= # old shipments to be removed
type= # base|delete|delta|patch
for d in $SHIPMENT
do case $d in
"$SHIPMENT") continue ;;
esac
if test -f $d/base -o -f $d/delete
then remove="$remove $base $dlist $delta $need $new"
base=$d
delta=
need=
new=
if test -f $d/delete
then type=delete
else type=base
fi
else if test "" != "$base" -a -f $d/$base && egrep 'DELTA!!!|!PAX!D!' $d/$base >/dev/null
then case $AR_DELTA in
"") need="$need $d"
continue
;;
esac
type=delta
else type=patch
fi
case $base in
"") dlist="$dlist $d"
;;
*) if test -f $d/$base
then dlist="$dlist $delta"
delta=$d
elif test "" != "$delta" -a -f $d/$delta
then dlist="$dlist $base"
case $new in
"") old=$base ;;
esac
new="$new $delta"
base=$delta
delta=$d
else dlist="$dlist $d"
fi
;;
esac
fi
done
case $type in
delete) case $NAME in
lib*) i=lib ;;
*) i=cmd ;;
esac
cd $SHIP
$_trace_ rm -rf $SHIP/$NAME $INSTALLROOT/src/$i/$NAME
continue
;;
esac
for i in $new
do echo generate $NAME $i base from $old >&2
case $_trace_ in
"") echo "generate $NAME $i base from $old [`date`]" >> $SHIP/$NAME/$LOG
case $type in
delta) $AR_DELTA -rf $i/$old -z $old/base -wf $i/base
_code_=$?
;;
patch) mkdir /tmp/ship.$$
cd /tmp/ship.$$
$AR_READ < $SHIP/$NAME/$old/base &&
$AR_READ < $SHIP/$NAME/$i/$old &&
{
$AR_LIST < $SHIP/$NAME/$old/base
$AR_LIST < $SHIP/$NAME/$i/$old
} | sort -u | $AR_WRITE > $SHIP/$NAME/$i/base
_code_=$?
cd $SHIP/$NAME
rm -rf /tmp/ship.$$
;;
esac
case $_code_ in
0) touch $i/GENERATED
;;
*) echo "cannot generate $i base from $old" >&2
echo "cannot generate $i base from $old" >> $SHIP/$NAME/$LOG
break
;;
esac
;;
*) $_trace_ $AR_DELTA -rf $SHIP/$NAME/$i/$old -z $SHIP/$NAME/$old/base -wf $i/base
$_trace_ touch $SHIP/$NAME/$i/GENERATED
;;
esac
old=$i
done
case $base in
"") echo "$_command_: warning: $NAME: no base archive" >&2
cd $SHIP
continue
;;
esac
case $_preserve_ in
?*) case `echo $remove $dlist` in
?*) case $_trace_ in
"") rm -rf $remove $dlist 2>/dev/null ;;
*) $_trace_ "(cd $NAME; rm -rf" $remove $dlist")" ;;
esac
;;
esac
;;
esac
$_trace_ cd $_source_
case $delta in
"") _release_=$base ;;
*) _release_=$delta ;;
esac
if test 11 = "$_force_$_uncrate_" -o ! -f $SHIP/$NAME/$_release_/UNCRATED
then echo uncrate $NAME $_release_ $type >&2
case $_trace_ in
"") echo "uncrate $NAME $_release_ $type [`date`]" >> $SHIP/$NAME/$LOG ;;
esac
error=
if test -f $SHIP/$NAME/$_release_/delete
then cd $SHIP
rm -rf $NAME
continue
fi
if test ! -f $SHIP/$NAME/$_release_/items
then echo "$_command_: warning: $NAME: no items file" >&2
fi
_proto_options_="-${_proto_default_}c`cat $SHIP/$NAME/$_release_/copyright 2>/dev/null`"
if test "" = "$AAR_LIST" -o "delta" = "$type" || $OAR_LIST < $SHIP/$NAME/$base/base >/dev/null 2>&1
then AR_PATH=$OAR_PATH
AR_LIST=$OAR_LIST
AR_READ=$OAR_READ
AR_WRITE=$OAR_WRITE
else AR_PATH=$AAR_PATH
AR_LIST=$AAR_LIST
AR_READ=$AAR_READ
AR_WRITE=$AAR_WRITE
fi
for i in base $base
do case $type in
base|patch)
case $type in
base) if test ! -f $SHIP/$NAME/$_release_/GENERATED
then case $_trace_ in
"") rm -rf * ;;
*) $_trace_ "(cd $_source_; rm -rf *)" ;;
esac
fi
;;
esac
_base_=$i
case $_base_ in
base) _release_=$base ;;
*) _release_=$delta ;;
esac
case $_trace_ in
"") if $AR_READ < $SHIP/$NAME/$_release_/$_base_
then case $_shipproto_ in
?*) $AR_LIST <$SHIP/$NAME/$_release_/$_base_ 2>/dev/null | grep '\.[chlyY]$' | $_shipproto_ -l - "${_proto_options_}"
;;
esac
if test -d features && test ! -d feature
then ln -s features feature 2>/dev/null
elif test -d feature && test ! -d features
then ln -s feature features 2>/dev/null
fi
else error="$AR_PATH $type read failed"
fi
;;
*) $_trace_ "$AR_READ < $SHIP/$NAME/$_release_/$_base_"
case $_shipproto_ in
?*) $_trace_ "$AR_LIST <$SHIP/$NAME/$_release_/$_base_ 2>/dev/null | grep '\.[chlyY]\$' | $_shipproto_ -l - ${_proto_options_}" ;;
esac
;;
esac
case $type in
base) break ;;
esac
;;
delta) if $_trace_ $AR_DELTA -rf $SHIP/$NAME/$_release_/$base -z $SHIP/$NAME/$base/base
then $_trace_ touch $SHIP/$NAME/$base/UNCRATED
case $_shipproto_ in
?*) case $_trace_ in
"") ($AR_DELTA -f $SHIP/$NAME/$base/base '*.[chlyY]'; $AR_DELTA -f $SHIP/$NAME/$_release_/$base '*.[chlyY]') 2>/dev/null | sort -u | $_shipproto_ -l - "${_proto_options_}" ;;
*) $_trace_ "($AR_DELTA -f $SHIP/$NAME/$base/base '*.[chlyY]'; $AR_DELTA -f $SHIP/$NAME/$_release_/$base '*.[chlyY]') 2>/dev/null | sort -u | $_shipproto_ -l - ${_proto_options_}" ;;
esac
;;
esac
case $_trace_ in
"") if test -d features && test ! -d feature
then ln -s features feature 2>/dev/null
elif test -d feature && test ! -d features
then ln -s feature features 2>/dev/null
fi
;;
esac
else error="$AR_DELTA $type read failed"
fi
break
;;
esac
done
case $error in
"") $_trace_ touch $SHIP/$NAME/$_release_/UNCRATED ;;
*) echo "$_command_: $NAME: $_release_: uncrate error: $error" >&2
case $_trace_ in
"") echo "uncrate $NAME $_release_ $type error: $error" >> $SHIP/$NAME/$LOG ;;
esac
_state_=error
;;
esac
fi
cd $SHIP
eval STATE_$NAME=$_state_
case $_state_ in
error) ;;
*) case $need in
?*) for i in $need
do NEED_pax="$NEED_pax $NAME/$i"
done
;;
*) eval RELEASE_$NAME=$_release_ SOURCE_$NAME=$_source_ TOOL_$NAME=$_tool_
COMPONENTS_SELECT="$COMPONENTS_SELECT$NAME "
;;
esac
;;
esac
fi
done
case $COMPONENTS_SELECT in
" ") exit 0 ;;
esac
case $_uncrate_ in
?*) case $NEED_pax in
?*) case $STATE_pax in
found) ;;
*) echo $_command_: pax required to uncrate$NEED_pax >&2 ;;
esac
;;
esac
exit 0
;;
esac
#
# determine the ordered list of components to (re)build
#
case $SELECT in
" ") COMPONENTS="$ORDER $COMPONENTS_SELECT" ;;
*) COMPONENTS=
for NAME in $COMPONENTS_SELECT
do case $SELECT in
*" $NAME "*) COMPONENTS="$COMPONENTS $NAME" ;;
esac
done
;;
esac
#
# get the component closure
#
case $_closure_ in
"") ORDER=$COMPONENTS
;;
*) ORDER=
for NAME in $COMPONENTS
do old=
new=$NAME
while :
do case $new in
$old) break ;;
esac
dup=
for _item_ in $new
do # we assume ITEMS_* not in environment
eval _items_='"$'ITEMS_$_item_'"'
case $_items_ in
"") eval _release_='$'RELEASE_$_item_
_items_=`cat $_item_/$_release_/items 2>/dev/null`" $_item_"
eval ITEMS_$_item_='"$'_items_'"'
;;
esac
dup="$dup $_items_"
done
old=$new
new=
for _item_ in $dup
do eval SEEN_$_item_=
done
for _item_ in $dup
do eval seen='$'SEEN_$_item_
case $seen in
"") eval SEEN_$_item_=1
new="$new $_item_"
;;
esac
done
done
eval ITEMS_$NAME='"'$new'"'
ORDER="$ORDER $new"
done
dup=$ORDER
ORDER=
for NAME in $dup
do eval SEEN_$NAME=
done
for NAME in $dup
do eval seen='$'SEEN_$NAME
case $seen in
"") eval SEEN_$NAME=1
ORDER="$ORDER $NAME"
;;
esac
done
;;
esac
_built_=
COMPONENTS=
for NAME in $ORDER
do case $_exclude_ in
*" $NAME "*) continue ;;
esac
eval _release_='$'RELEASE_$NAME
test -f $NAME/$_release_/items || continue
case $_force_ in
"") _built_=$NAME/$_release_/BUILT
eval _items_='$'ITEMS_$NAME
for i in $_items_
do case " $COMPONENTS " in
*" $i "*) _built_=; break ;;
esac
case $i in
$NAME) ;;
*) eval _built_='"'$_built_ $i/'$'RELEASE_$i/BUILT'"' ;;
esac
done
case $_built_ in
?*) if $_shipop_ newer $_built_
then continue
fi
;;
esac
;;
esac
$_trace_ rm -f $NAME/$_release_/BUILT
if test "" != "$_force_" -o "" != "$_ignore_" -o ! -f $NAME/$_release_/ERROR
then COMPONENTS="$COMPONENTS $NAME"
$_trace_ rm -f $NAME/$_release_/ERROR
elif test ! -f $NAME/$_release_/BYPASS
then echo "$_command_: $NAME/$_release_: new shipment required" >&2
fi
done
#
# tame the environment
#
case $_make_ in
?*) STATE_nmake=installed ;;
esac
case $_make_ in
""|$BIN/nmake)
MAKEPP=$INSTALLROOT/lib/cpp
MAKERULES=$INSTALLROOT/lib/make/makerules
export MAKEPP MAKERULES
_make_=$BIN/nmake
;;
esac
COSHELL_OPTIONS=nodevfd
ENV=
MAKE_OPTIONS="clobber compare link=lib*.a*"
MAKEPATH=
PATH=:$INSTALLROOT/bin:$PATH
VPATH=
export COSHELL_OPTIONS ENV MAKE_OPTIONS MAKEPATH PATH VPATH
case $_AST_FEATURES in
"") _AST_FEATURES='UNIVERSE - att PATH_RESOLVE - logical'
export _AST_FEATURES
;;
esac
#
# (re)build the components
#
cd $INSTALLROOT
for NAME in $COMPONENTS
do case $_exclude_ in
*" $NAME "*) continue ;;
esac
eval _items_='$'ITEMS_$NAME
case $_trace_ in
"") for i in $_items_
do case $i in
$NAME) ;;
*) eval r='$'RELEASE_$i
if test ! -f $SHIP/$i/$r/BUILT
then if test -f $SHIP/$i/$r/ERROR
then m="had build errors"
elif test -f $SHIP/$i/$r/UNCRATED
then m="was not built"
else m="was not shipped"
fi
m="$NAME requires $i but $i $m"
echo "$m" >&2
echo "$m" >> $SHIP/$NAME/$LOG
continue 2
fi
;;
esac
done
;;
esac
eval _release_='$'RELEASE_$NAME _source_='$'SOURCE_$NAME _tool_='$'TOOL_$NAME
case $_total_ in
?*) _components_="$_components_ $NAME/$_release_"
continue
;;
esac
echo build $NAME $_release_ >&2
$_trace_ cd $_source_
case $_trace_ in
"") start="`date`"
if test -f $_bypass_
then touch $SHIP/$NAME/$_release_/BYPASS
else case $STATE_nmake in
installed|ok)
case $NAME in
nmake) $_make_ -o "ignorelock mismatch" ${1+"$@"}
MAKEPP=$INSTALLROOT/lib/cpp ./nmake -o "ignorelock mismatch" -bcf Makerules.mk
MAKEPP=$INSTALLROOT/lib/cpp MAKERULES=./Makerules.mo ./nmake -o "ignorelock mismatch" install ${1+"$@"}
;;
*) $_make_ -o "ignorelock mismatch" install ${1+"$@"}
;;
esac
error=$?
;;
*) if test -f Mamfile
then # here it is -- make+state in v7 shell
case $_read_ in
"") case `(echo ok | (read -r a; echo $a) 2>/dev/null)` in
ok) _read_='read -r' ;;
*) _read_=read ;;
esac
eval `(
mkdir /tmp/mam$$
cd /tmp/mam$$
echo 'int main(){return 0;}' > main.c
if $CC -c main.c >/dev/null 2>&1
then if $CC -L. main.o -lc >/dev/null 2>&1
then $CC -L. main.o -lc > libc.a >/dev/null 2>&1 || echo "mam_cc_L=' '"
fi
fi
echo "int f(){return(0);} int main(){return(f());}" > pic.c
if $CC -c pic.c >/dev/null 2>e
then e=\`wc -l e\`
s=\`wc pic.o\`
set x -Kpic -fpic -pic +z '-G 0'
while :
do shift
case $# in
0) break ;;
esac
rm -f pic.o pic.exe
$CC $1 -c pic.c >/dev/null 2>e && test -f pic.o && $CC $1 -o ./pic.exe pic.o >/dev/null 2>&1 && test -f pic.exe || continue
case \`wc -l e\` in
$e) ;;
*) continue ;;
esac
case $1 in
???*) os=\`wc pic.o\`
case $os in
$s) continue ;;
esac
m=\`echo " $1" | sed -e 's/^ [-+]//g' -e 's/./-& /g' -e 's/[-+] //g'\`
rm -f pic.o pic.exe
if $CC $m -c pic.c >/dev/null 2>e && test -f pic.o && $CC $m -o ./pic.exe pic.o >/dev/null 2>&1 && test -f pic.exe
then case \`wc -l e\` in
$e) continue
;;
*) case \`wc pic.o\` in
$s|$os) continue ;;
esac
;;
esac
fi
echo "mam_cc_PIC='$1'"
break
;;
*) case \`wc pic.o\` in
$s) ;;
*) echo "mam_cc_PIC='$1'"
break
;;
esac
;;
esac
done
fi
cd /
rm -rf /tmp/mam$$
)`
;;
esac
case $_redirect_ in
"") case `(a=old; eval a=new </dev/null; echo $a) 2>/dev/null` in
new) _redirect_=new ;;
*) _redirect_=old ;;
esac
;;
esac
(
_code_=1
_list_=
_main_=0
_mam_=MAM
_targ_=install
trap "
mv $_mam_.list.tmp $_mam_.list
rm -f $_mam_.*.tmp
$_shipop_ state $_mam_.list < $_mam_.list | sort > $_mam_.time
trap 0 1 2
exit \$_code_
" 0 1 2
# some shells die with diff,next,same in vars
: > $_mam_.diff.tmp
exec 9> $_mam_.list.tmp
if test -f $_mam_.list -a -f $_mam_.time
then $_shipop_ state $_mam_.list < $_mam_.list | sort > $_mam_.sort.tmp
comm -12 $_mam_.time $_mam_.sort.tmp | sed 's/ .*//' > $_mam_.same.tmp
rm -f $_mam_.sort.tmp
else : > $_mam_.same.tmp
fi
_index_=_
_ifs_=$IFS
case $_read_ in
"read") # read strips \ -- thanks a lot
# tmp file avoids char at a time read
sed 's/\\/\\\\/g' Mamfile > $_mam_.read.tmp
exec < $_mam_.read.tmp
;;
*) exec < Mamfile
;;
esac
eval `sed -e '1,/^make /d' -e '/^setv /!d' -e 's/^setv \([^ ]*\).*/\1= /' Mamfile`
for _data_
do eval `echo $_data_ | sed -e 's/\"/\\\\"/g' -e 's/=/=\\"/' -e 's/\$/\\"/'`
done
_old_=1
while IFS=' '; $_read_ _op_ _arg_ _val_
do IFS=$_ifs_
case $_op_ in
"note") continue
;;
"info") case $_arg_ in
"mam") _old_= ;;
esac
continue
;;
"setv") eval _data_='$'$_arg_
case $_index_:$_data_ in
__*:*|*:)
case $_redirect_ in
new) eval $_arg_="$_val_" </dev/null
;;
old) exec 8<&0 0</dev/null
eval $_arg_="$_val_"
exec 0<&8 8<&-
;;
esac
;;
esac
continue
;;
"make") eval _name_$_index_=$_name_
eval _prev_$_index_=$_prev_
eval _cmds_$_index_='"$_cmds_"'
eval _attr_$_index_=$_attr_
eval _name_=$_arg_
_prev_=$_index_
_cmds_=
_attr_=u
case $_main_ in
0) case $_name_ in
$_targ_)_main_=1 ;;
*) _attr_= ;;
esac
;;
1) case $_force_ in
"") grep "^$_name_\$" $_mam_.same.tmp >/dev/null && _attr_= ;;
esac
;;
*) _attr_=
;;
esac
case " $_val_ " in
*" metarule "*) _attr_=M$_attr_ ;;
esac
case $_attr_ in
*u*) echo $_name_ >> $_mam_.diff.tmp ;;
esac
_index_=_$_index_
eval _name_$_index_=$_name_
eval _prev_$_index_=$_prev_
eval _cmds_$_index_=$_cmds_
eval _attr_$_index_=$_attr_
echo $_name_ >&9
continue
;;
"prev") case $_attr_ in
*u*) ;;
*) case $_force_ in
"") eval _arg_=$_arg_
if grep "^$_arg_\$" $_mam_.diff.tmp >/dev/null
then _attr_=u$_attr_
elif grep "^$_arg_\$" $_mam_.same.tmp >/dev/null
then :
else _attr_=u$_attr_
fi
;;
*) _attr_=u$_attr_
;;
esac
;;
esac
continue
;;
esac
case $_index_ in
_) echo $_op_: missing make op >&2; continue ;;
esac
case $_op_ in
"attr") case $_arg_ in
"meta"|"suff") _attr_=M ;;
esac
;;
"exec"|"....")
case $_old_ in
"") _arg_=$_val_
;;
*) case $_val_ in
?*) _arg_="$_arg_ $_val_" ;;
esac
;;
esac
case $_cmds_ in
"") _cmds_=$_arg_
;;
*) _cmds_="$_cmds_
$_arg_"
;;
esac
;;
"done") eval _arg_=$_arg_
_prop_=
case $_arg_ in
$_targ_) _main_=2 ;;
esac
case $_arg_ in
$_name_)case $_attr_ in
*M*) ;;
*u*) case $_cmds_ in
"") case $_attr_ in
*u*) _prop_=u ;;
esac
;;
*) eval "($_set_$_cmds_) </dev/null" ||
{
_status_=$?
case $_set_ in
*-*e*) ;;
*) case $_cmds_ in
*if*then*fi*|"||") _status_=0 ;;
esac
;;
esac
case $_status_ in
0) ;;
*) echo "*** exit code $_status_ making $_name_" >&2
_code_=$_status_
exit $_code_
;;
esac
}
_prop_=u
echo $_name_ >> $_mam_.diff.tmp
;;
esac
;;
esac
_index_=$_prev_
eval _name_='$'_name_$_index_
eval _prev_='$'_prev_$_index_
eval _cmds_='$'_cmds_$_index_
eval _attr_='$'_attr_$_index_
case $_attr_ in
*u*) ;;
*) _attr_=$_prop_$_attr_ ;;
esac
;;
*) echo $_arg_: $_op_ $_name_ expected >&2
;;
esac
;;
esac
done
exec 9>&-
case $_main_ in
2) _code_=0 ;;
*) echo "*** don't know how to make $_targ_" >&2 ;;
esac
exit $_code_
); error=$?
# ... indent
elif test -f makefile
then make -f makefile install ${1+"$@"}; error=$?
elif test -f Makescript
then ./Makescript ${1+"$@"}; error=$?
elif test -f $_tool_.bs
then ./$_tool_.bs ${1+"$@"}; error=$?
else echo "$_command_: cannot build $NAME" >&2; error=1
fi
;;
esac
case $error+$NAME in
0+nmake) $BIN/nmake -n -f /dev/null debug </dev/null >/dev/null 2>&1 || error=1 ;;
esac
case $error in
0) touch $SHIP/$NAME/$_release_/BUILT ;;
*) touch $SHIP/$NAME/$_release_/ERROR ;;
esac
fi 2>&1 | (PATH=$OPATH; tee $SHIP/$NAME/$TMP 1>&2)
if test -f $SHIP/$NAME/$_release_/BUILT
then state=ok
elif test -f $SHIP/$NAME/$_release_/BYPASS
then state=bypass
else state=error
fi
{
echo "build $NAME $_release_ $state [$start] [`date`]"
case $CCS in
?*) echo preroot CCS = $CCS ;;
esac
# some egreps blow this
sed \
-e '/^$/d' \
-e '/^[ ]/d' \
-e '/^+ /d' \
-e '/^[^ ]*:$/d' \
-e '/^[a-z] - /d' \
-e '/^[a-zA-Z_][a-zA-Z_0-9]*$/d' \
-e '/^[a-zA-Z_][a-zA-Z_0-9]*=/d' \
-e '/[Cc]opyright/d' \
-e '/: warning: assignment .* == was expected/d' \
-e '/: warning: if .* no effect/d' \
-e '/: warning: Symbol .* multiply defined/d' \
$SHIP/$NAME/$TMP
rm -f $SHIP/$NAME/$TMP
} >> $SHIP/$NAME/$LOG 2> /dev/null
eval STATE_$NAME=$state
;;
*) if test -f $_source_/$_bypass_
then $_trace_ "refer to $_source_/$_bypass_ to install $NAME"
else case $STATE_nmake in
installed|ok)
case $NAME in
nmake) $_trace_ $_make_ -o "ignorelock mismatch" ${1+"$@"}
$_trace_ ./nmake -o "ignorelock mismatch" -bcf Makerules.mk
$_trace_ ./nmake -o "ignorelock mismatch" install ${1+"$@"}
;;
*) $_trace_ $_make_ -o "ignorelock mismatch" install ${1+"$@"}
;;
esac
;;
*) if test -f $_source_/Mamfile
then $_trace_ "mamexec < Mamfile"
elif test -f $_source_/Makescript
then $_trace_ ./Makescript ${1+"$@"}
elif test -f $_source_/$_tool_.bs
then $_trace_ ./$_tool_.bs ${1+"$@"}
else $_trace_ install $NAME
fi
;;
esac
fi
;;
esac
$_trace_ cd $INSTALLROOT
#
# accept stuff built before nmake to sync the state files
#
case $NAME in
$ACCEPT)
for NAME in $COMPONENTS
do eval state='$'STATE_$NAME _source_='$'SOURCE_$NAME
case $state in
ok) case $_trace_ in
"") cd $_source_
{
$BIN/nmake -o "accept ignorelock mismatch touch" install force_shared=1
case $NAME in
lib*) $BIN/nmake -o "accept" install ;;
esac
} 2>&1 | (PATH=$OPATH; tee $SHIP/$NAME/$TMP 1>&2)
{
echo "accept $NAME"
egrep -v '^([^ ]*:$| |\+ |[a-z] - |[a-zA-Z_][a-zA-Z_0-9]*=|$)' $SHIP/$NAME/$TMP
rm -f $SHIP/$NAME/$TMP
} 2>&1 >> $SHIP/$NAME/$LOG
cd $INSTALLROOT
;;
*) $_trace_ cd $_source_
$_trace_ $BIN/nmake -o "accept ignorelock mismatch touch" install force_shared=1
case $NAME in
lib*) $_trace_ $BIN/nmake -o "accept" install ;;
esac
$_trace_ cd $INSTALLROOT
;;
esac
;;
esac
done
case $NAME in
$ACCEPT) break ;;
esac
;;
esac
done
case $_total_ in
?*) case $RANDOM in
$RANDOM)cd $SHIP
ls -Cd $_components_
;;
*) PS3=''
eval ' select i in $_components_
do :
done </dev/null'
;;
esac
exit 0
;;
esac
#
# nohup.out again
#
case $_nohup_ in
?*) echo "$_nohup_"
echo "done `date`"
echo "$_nohup_"
;;
esac
#
# check for installation reports
#
bypass=
owners=
for NAME in $COMPONENTS
do eval state='$'STATE_$NAME _release_='$'RELEASE_$NAME _source_='$'SOURCE_$NAME
case $state in
bypass) bypass="$bypass
$_source_/$_bypass_"
;;
esac
o=$SHIP/$NAME/$_release_/$OWNER
if test -s $o
then r=`cat $SHIP/$NAME/$_release_/$REPORT 2>/dev/null`
case $r in
*\[no\]*) r= ;;
esac
case $r' + '$state in
?*' + '*|*' + 'error)
address=`cat $o`
owner=`echo $address | sed -e 's/.*\(.............\)/\1/' -e 's/^[^a-zA-Z_]/_/' -e 's/[^a-zA-Z_0-9]/_/g'`
eval f='$'built_$owner
eval built_$owner='"$'f $NAME'"'
report=
for f in $SHIP/$NAME/$LOG $r
do case `ls -dt $f $SHIPSLOG/!$owner 2>/dev/null` in
$f*) report="$report $f" ;;
esac
done
case $report in
?*) eval f='$'address_$owner
case $f in
"") owners="$owners $owner"
eval address_$owner=$address
;;
esac
eval eval report_$owner=\\\"\$report_$owner \\\[$NAME\\\] $report\\\"
;;
esac
;;
esac
fi
done
#
# check if any components required pax to uncrate
#
case $NEED_pax in
?*) AR_DELTA=$INSTALLROOT/bin/pax
($AR_DELTA -f /dev/null -z /dev/null) >/dev/null 2>&1 || STATE_pax=error
case $STATE_pax in
ok) $_trace_ exec $_command_ $_options_ $SELECT ${1+"$@"} ;;
*) echo $_command_: pax required to uncrate$NEED_pax >&2 ;;
esac
;;
esac
#
# done
#
exit 0