12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787 |
- 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
|