Annotation of researchv10no/cmd/odist/pax/ship/shipin.save, revision 1.1

1.1     ! root        1: OLDEST_nmake=910111 OLDEST_pax=881111 OLDEST_shipop=910211
        !             2: :
        !             3: #
        !             4: # software shipment installation control
        !             5: #
        !             6: # @(#)shipin (ulysses!gsf) 03/31/91
        !             7: #
        !             8: # ship/shipin [options] [component ...] [name=value ...]
        !             9: #
        !            10: # options:
        !            11: #
        !            12: #      -c      don't compute closure if components specified
        !            13: #      -i      read in from spool but do not uncrate or build
        !            14: #              (files set up for shipout)
        !            15: #      -n      show actions but do not execute
        !            16: #      -r usr  usr is the shipment recipient
        !            17: #      -s dir  shipment spool hierarchy copied to dir
        !            18: #      -t      show component closure but do not build
        !            19: #      -u      uncrate shipment source but do not build
        !            20: #      -x      set -x
        !            21: #      -E      ignore previous tool build errors
        !            22: #      -F      force (re)build (not uncrating unless -u)
        !            23: #      -X tool exclude tools from uncrating or building
        !            24: #
        !            25: # The component arguments cause shipin to build only on those components.
        !            26: # All component source will be uncrated.
        !            27: #
        !            28: # The remaining arguments are passed as arguments to the generating
        !            29: # makes or shell scripts -- handy for `name=value' overrides.
        !            30: #
        !            31: # The minimum configuration must have an $INSTALLROOT/ship subdirectory.
        !            32: # See $INSTALLROOT/ship/README for more details.
        !            33: #
        !            34: 
        !            35: #
        !            36: # we don't do csh here
        !            37: #
        !            38: 
        !            39: ":" || exec sh $0 $argv:q || exit 1
        !            40: 
        !            41: #
        !            42: # this script may be overwritten while it is being executed
        !            43: # so copy it and exec from the copy
        !            44: #
        !            45: 
        !            46: case $1 in
        !            47: -x)    set -x
        !            48:        ;;
        !            49: *)     case $- in
        !            50:        *x*)    set '' -x ${1+"$@"}; shift ;;
        !            51:        esac
        !            52:        ;;
        !            53: esac
        !            54: case $- in
        !            55: *x*)   case $PS4 in
        !            56:        *'$LINENO'*)    ;;
        !            57:        *)              PS4='+[$LINENO]+ ' ;;
        !            58:        esac
        !            59:        ;;
        !            60: esac
        !            61: _command_=ship/shipin
        !            62: case $0 in
        !            63: *.save)        ;;
        !            64: *)     cp $_command_ $_command_.save 2>/dev/null && exec $_command_.save ${1+"$@"} ;;
        !            65: esac
        !            66: 
        !            67: #
        !            68: # the components in ORDER are built first
        !            69: # OLDEST_<cmd> is the oldest version of <cmd> that can be used
        !            70: #
        !            71: 
        !            72: INSTALLROOT=`pwd`
        !            73: export INSTALLROOT
        !            74: 
        !            75: ORDER="ksh nmake"
        !            76: 
        !            77: USER=${USER-${LOGNAME-`echo $HOME | sed 's/.*\///'`}}
        !            78: INSTALLER=$USER
        !            79: export INSTALLER
        !            80: RECIPIENT=${RECIPIENT-$USER}
        !            81: FROMSYS=`(uname -n || hostname || cat /etc/whoami) 2>/dev/null`
        !            82: PATH=:$PATH:$INSTALLROOT/bin
        !            83: export PATH
        !            84: case $PS4 in
        !            85: +\ *|+*\ )
        !            86:        ;;
        !            87: *)     PS4="+ $PS4"
        !            88:        export PS4
        !            89:        ;;
        !            90: esac
        !            91: 
        !            92: SHIP=$INSTALLROOT/ship
        !            93: BIN=$INSTALLROOT/bin
        !            94: _bypass_=Install
        !            95: LOG=in.log
        !            96: _mail_=/bin/mail
        !            97: OWNER=owner
        !            98: PAX_INFO="!PAX!CA!"
        !            99: _read_=
        !           100: REPORT=report
        !           101: SHIPDATE=[0-9][0-9][0-9][0-9][0-9][0-9]
        !           102: SHIPMENT=*$SHIPDATE
        !           103: SHIPSLOG=$SHIP/shipslog
        !           104: TMP=tmp
        !           105: 
        !           106: for f in $ORDER
        !           107: do     eval RELEASE_$f=
        !           108:        eval STATE_$f=
        !           109: done
        !           110: 
        !           111: if     (unalias make) 2> /dev/null
        !           112: then   unalias cp make rm
        !           113: fi
        !           114: 
        !           115: #
        !           116: # check for old exit status botch
        !           117: #
        !           118: 
        !           119: _set_=
        !           120: (set -e; false || true) && _set_=e || echo "$_command_: command errors ignored because of shell botch" >&2
        !           121: _set_="set -x$_set_;"
        !           122: 
        !           123: #
        !           124: # force the native preroot
        !           125: #
        !           126: 
        !           127: if     /etc/preroot / /bin/cat </dev/null >/dev/null 2>&1
        !           128: then   ccs=native
        !           129:        if      test -d /$ccs
        !           130:        then    r=`ls -lid / | sed 's,/.*,,'`
        !           131:                p=`ls -lid /$ccs | sed 's,/.*,,'`
        !           132:                case $p in
        !           133:                $r)     ;;
        !           134:                *)      CCS=$ccs
        !           135:                        export CCS
        !           136:                        exec /etc/preroot /$ccs ${SHELL-/bin/sh} $_command_ ${1+"$@"}
        !           137:                        ;;
        !           138:                esac
        !           139:        fi
        !           140: else   ccs=
        !           141: fi
        !           142: 
        !           143: #
        !           144: # gobble the options
        !           145: #
        !           146: 
        !           147: _closure_=1
        !           148: _exclude_=" bin cmd lib src shipslog "
        !           149: _force_=
        !           150: _ignore_=
        !           151: _intermediate_=
        !           152: _options_=
        !           153: _total_=
        !           154: _trace_=
        !           155: _uncrate_=
        !           156: _uuspool_=
        !           157: while  :
        !           158: do     case $# in
        !           159:        0)      break ;;
        !           160:        esac
        !           161:        case $1 in
        !           162:        -[rsX]) case $# in
        !           163:                1)      set '?'; continue ;;
        !           164:                esac
        !           165:                case $1 in
        !           166:                -r)     RECIPIENT=$2 ;;
        !           167:                -s)     _uuspool_="$_uuspool_ $2" ;;
        !           168:                -X)     _exclude_="$_exclude$2 " ;;
        !           169:                esac
        !           170:                _options_="$_options_ $1"
        !           171:                shift
        !           172:                ;;
        !           173:        -c)     _closure_= ORDER= ;;
        !           174:        -i)     _intermediate_=1 ;;
        !           175:        -n)     _trace_=echo ;;
        !           176:        -t)     _total_=1 _trace_=: _components_= ;;
        !           177:        -u)     _uncrate_=1 ;;
        !           178:        -x)     set -x ;;
        !           179:        -E)     _ignore_=1 ;;
        !           180:        -F)     _force_=1 ;;
        !           181:        --)     _options_="$_options_ $1"; shift; break ;;
        !           182:        '?'|[-+]*)      echo "Usage: $_command_ [-cintuxEF] [-r recipient] [-s spool-dir] [-X tool] [tool ...] [name=value ...]" >&2; exit 2 ;;
        !           183:        *)      break ;;
        !           184:        esac
        !           185:        _options_="$_options_ $1"
        !           186:        shift
        !           187: done
        !           188: 
        !           189: #
        !           190: # option controlled vars
        !           191: #
        !           192: 
        !           193: export RECIPIENT
        !           194: case $_uuspool_ in
        !           195: "")    case $SHIPSPOOL in
        !           196:        "")     SHIPSPOOL="/usr/spool/uucppublic/$RECIPIENT/* /usr/spool/uucppublic/receive/$RECIPIENT/*" ;;
        !           197:        esac
        !           198:        ;;
        !           199: *)     SHIPSPOOL=$_uuspool_ ;;
        !           200: esac
        !           201: export SHIPSPOOL
        !           202: 
        !           203: #
        !           204: # must be in $INSTALLROOT
        !           205: #
        !           206: 
        !           207: if     test ! -d ship
        !           208: then   echo "$_command_: must have \$INSTALLROOT/ship directory" >&2; exit 1
        !           209: fi
        !           210: 
        !           211: #
        !           212: # recover from previous incomplete shipins
        !           213: #
        !           214: 
        !           215: cd ship
        !           216: case $_trace_ in
        !           217: ?*)    $_trace_ cd ship ;;
        !           218: esac
        !           219: for f in shipseal*
        !           220: do     if      test -f $f
        !           221:        then    $_trace_ rm -f $f
        !           222:        fi
        !           223: done
        !           224: for f in O?*
        !           225: do     if      test -f $f
        !           226:        then    $_trace_ mv $f `echo $f | sed 's/^O//'`
        !           227:        fi
        !           228: done
        !           229: cd $INSTALLROOT
        !           230: case $_trace_ in
        !           231: ?*)    $_trace_ cd $INSTALLROOT ;;
        !           232: esac
        !           233: 
        !           234: #
        !           235: # shipop provides the C language ship support
        !           236: #
        !           237: 
        !           238: _shipop_=$SHIP/shipop
        !           239: test -f $_shipop_ && ($_shipop_) </dev/null >/dev/null 2>&1 && test "`sed -e '/^@(#)shipop .* [0-9][0-9]\/[0-9][0-9]\/[0-9][0-9]$/!d' -e 's/.*\(..\)\/\(..\)\/\(..\)$/\3\1\2/' < $_shipop_`" -ge "$OLDEST_shipop" 2>/dev/null || _shipop_=': WARNING : reship shipop.c'
        !           240: 
        !           241: #
        !           242: # check the manifest and mail the validation seal for each shipment
        !           243: # then copy from the spool area to $SHIP
        !           244: #
        !           245: # the validation seal will eventually be a digital signature
        !           246: #
        !           247: 
        !           248: _reship_=
        !           249: _verify_=
        !           250: for UUSHIP in $SHIPSPOOL
        !           251: do     if      test -d $UUSHIP
        !           252:        then    cd $UUSHIP
        !           253:                case $_trace_ in
        !           254:                ?*)     $_trace_ cd $UUSHIP ;;
        !           255:                esac
        !           256:                for f in ${SHIPDATE}*.*
        !           257:                do      if      test -f $f/manifest
        !           258:                        then    _manifest_=`cat $f/manifest`
        !           259:                                d=
        !           260:                                for i in $_manifest_
        !           261:                                do      if      test ! -f $i
        !           262:                                        then    echo "$f: $i has not arrived yet" >&2
        !           263:                                                d=1
        !           264:                                        fi
        !           265:                                done
        !           266:                                case $d in
        !           267:                                ?*)     continue ;;
        !           268:                                esac
        !           269:                                if      test -f $f/id
        !           270:                                then    _id_=`cat $f/id`
        !           271:                                        _key_=`echo "$_id_" | sed -e 's/[^      ]*[     ]//'`
        !           272:                                        _id_=`echo "$_id_" | sed -e 's/[        ].*//'`
        !           273:                                        case $_trace_ in
        !           274:                                        "")     case $_shipop_ in
        !           275:                                                $SHIP/shipop)
        !           276:                                                        ;;
        !           277:                                                *)      if      ($SHIP/shipop) </dev/null >/dev/null 2>&1
        !           278:                                                        then    _shipop=$SHIP/shipop
        !           279:                                                        else    for d in $SHIP $f
        !           280:                                                                do      if      test -f $d/shipop.c
        !           281:                                                                        then    cc -o $SHIP/shipop $d/shipop.c
        !           282:                                                                                rm -f shipop.o
        !           283:                                                                                if      ($SHIP/shipop) </dev/null >/dev/null 2>&1
        !           284:                                                                                then    _shipop_=$SHIP/shipop
        !           285:                                                                                else    case $_shipop_ in
        !           286:                                                                                        *ERROR*)
        !           287:                                                                                                ;;
        !           288:                                                                                        *)      _shipop_=': ERROR : shipop.c compile failed'
        !           289:                                                                                                echo "$f: warning: shipop required to validate shipments" >&2
        !           290:                                                                                                ;;
        !           291:                                                                                        esac
        !           292:                                                                                        rm -f $SHIP/shipop
        !           293:                                                                                fi
        !           294:                                                                                break
        !           295:                                                                        fi
        !           296:                                                                done
        !           297:                                                        fi
        !           298:                                                        ;;
        !           299:                                                esac
        !           300:                                                case $_shipop_ in
        !           301:                                                $SHIP/shipop)   _seal_=`$_shipop_ seal $_manifest_` ;;
        !           302:                                                *)              _seal_=$_shipop_ ;;
        !           303:                                                esac
        !           304:                                                $_mail_ $_id_ > /dev/null 2>&1 <<!
        !           305: Subject: software shipment seal
        !           306: $_key_ $_seal_
        !           307: !
        !           308:                                                ;;
        !           309:                                        esac
        !           310:                                else    case $_shipop_ in
        !           311:                                        *WARNING*)      ;;
        !           312:                                        *)              echo "$f: warning: shipment missing validation id" >&2 ;;
        !           313:                                        esac
        !           314:                                fi
        !           315:                                _unspool_=
        !           316:                                for i in $_manifest_
        !           317:                                do      case $i in
        !           318:                                        $f/shipin)      _reship_=1 ;;
        !           319:                                        $f/unspool)     _unspool_=$i ;;
        !           320:                                        esac
        !           321:                                        case $i in
        !           322:                                        $f/*)   b=`echo $i | sed 's/.*\///'`
        !           323:                                                if      test -f $SHIP/$b
        !           324:                                                then    $_trace_ cp $SHIP/$b $SHIP/O${b}
        !           325:                                                        _verify_="$_verify_ $b"
        !           326:                                                fi
        !           327:                                                ;;
        !           328:                                        esac
        !           329:                                done
        !           330:                                if      test "" != "$_unspool_" -a -f $_unspool_ && $_trace_ . $_unspool_
        !           331:                                then    : ok
        !           332:                                else    echo "$f: cannot unspool shipment" >&2; continue
        !           333:                                fi
        !           334:                                d=
        !           335:                                for i in $_manifest_
        !           336:                                do      case $i in
        !           337:                                        $f/*)   ;;
        !           338:                                        *.000)  d="$d $i" ;;
        !           339:                                        esac
        !           340:                                done
        !           341:                                d=`echo "$d " | sed -e 's,//*[^/ ]* , ,g'`
        !           342:                                $_trace_ rm -rf $f $d
        !           343:                        fi
        !           344:                done
        !           345:                cd $INSTALLROOT
        !           346:                case $_trace_ in
        !           347:                ?*)     $_trace_ cd $INSTALLROOT ;;
        !           348:                esac
        !           349:        fi
        !           350: done
        !           351: case $_trace_ in
        !           352: "")    _reship_=
        !           353:        cd $SHIP
        !           354:        for i in $_verify_
        !           355:        do      if      test "`sed -e '/^@(#).* [0-9][0-9]\/[0-9][0-9]\/[0-9][0-9]$/!d' -e 's/.*\(..\)\/\(..\)\/\(..\)$/\3\1\2/' < O$i`" -ge "`sed -e '/^@(#).* [0-9][0-9]\/[0-9][0-9]\/[0-9][0-9]$/!d' -e 's/.*\(..\)\/\(..\)\/\(..\)$/\3\1\2/' < $i`"
        !           356:                then    mv O$i $i
        !           357:                else    case $i in
        !           358:                        shipin) _reship_=1
        !           359:                                ;;
        !           360:                        shipop.c)       
        !           361:                                cc -o Oshipop shipop.c
        !           362:                                rm -f shipop.o
        !           363:                                if      (Oshipop) </dev/null >/dev/null 2>&1
        !           364:                                then    mv Oshipop shipop
        !           365:                                        _shipop_=$SHIP/shipop
        !           366:                                else    rm -f Oshipop
        !           367:                                fi
        !           368:                                ;;
        !           369:                        esac
        !           370:                        rm -f O$i
        !           371:                fi
        !           372:        done
        !           373:        cd $INSTALLROOT
        !           374:        ;;
        !           375: esac
        !           376: case $_reship_ in
        !           377: ?*)    $_trace_ exec $_command_ $_options_ ${1+"$@"} ;;
        !           378: esac
        !           379: 
        !           380: #
        !           381: # intermediate unpacking from spool area done
        !           382: #
        !           383: 
        !           384: case $_intermediate_ in
        !           385: ?*)    exit 0 ;;
        !           386: esac
        !           387: 
        !           388: #
        !           389: # must have shipop by this point
        !           390: #
        !           391: 
        !           392: if     test -f "$_shipop_" && ($_shipop_) </dev/null >/dev/null 2>&1
        !           393: then   :
        !           394: elif   test -f $SHIP/shipop.c && cc -o $SHIP/shipop $SHIP/shipop.c && ($SHIP/shipop) </dev/null >/dev/null 2>&1
        !           395: then   rm -f shipop.o
        !           396:        _shipop_=$SHIP/shipop
        !           397: else   echo "$_command_: must have shipop to continue [$_shipop_]" >&2
        !           398:        exit 1
        !           399: fi
        !           400: 
        !           401: #
        !           402: # grab the select args
        !           403: #
        !           404: 
        !           405: SELECT=" "
        !           406: while  :
        !           407: do     case $# in
        !           408:        0)      break ;;
        !           409:        esac
        !           410:        case $1 in
        !           411:        *=*)    break ;;
        !           412:        esac
        !           413:        SELECT="$SELECT$1 "
        !           414:        shift
        !           415: done
        !           416: 
        !           417: #
        !           418: # handle character class botch -- it's hard to believe 9th edition
        !           419: # did this, easier to believe BSD never added it
        !           420: #
        !           421: 
        !           422: cclasstype='^'
        !           423: case a in
        !           424: [${cclasstype}0]) ;;
        !           425: [!0])  cclasstype='!' ;;
        !           426: *)     cclasstype='' ;;
        !           427: esac
        !           428: 
        !           429: #
        !           430: # set up and verify the default directory hierarchy
        !           431: #
        !           432: 
        !           433: hierarchy="src src/cmd src/lib ship/shipslog"
        !           434: case $_uncrate_ in
        !           435: "")    hierarchy="$hierarchy bin etc fun include lib man man/man1 man/man3 man/man8" ;;
        !           436: esac
        !           437: for d in $hierarchy
        !           438: do     if      test ! -d $d
        !           439:        then    $_trace_ mkdir $d
        !           440:        fi
        !           441: done
        !           442: if     test ! -f src/Makefile
        !           443: then   case $_trace_ in
        !           444:        "")     echo ":MAKE: lib - cmd" > src/Makefile ;;
        !           445:        *)      $_trace_ echo ":MAKE: lib - cmd" "> src/Makefile" ;;
        !           446:        esac
        !           447: fi
        !           448: if     test ! -f src/lib/Makefile
        !           449: then   case $_trace_ in
        !           450:        "")     echo ":MAKE: libx - *" > src/lib/Makefile ;;
        !           451:        *)      $_trace_ echo ":MAKE: libx - *" "> src/lib/Makefile" ;;
        !           452:        esac
        !           453: fi
        !           454: if     test ! -f src/cmd/Makefile
        !           455: then   case $_trace_ in
        !           456:        "")     echo ":MAKE: probe - ccc cpp - *" > src/cmd/Makefile ;;
        !           457:        *)      $_trace_ echo ":MAKE: probe - ccc cpp - *" "> src/cmd/Makefile" ;;
        !           458:        esac
        !           459: fi
        !           460: 
        !           461: #
        !           462: # ignore and silent may be used by nmake generated bootstraps
        !           463: #
        !           464: 
        !           465: case $_trace_$_uncrate_ in
        !           466: "")    if      test ! -f bin/ignore
        !           467:        then    cat > bin/ignore <<'!'
        !           468: :
        !           469: "$@"
        !           470: exit 0
        !           471: !
        !           472:                chmod +x bin/ignore
        !           473:        fi
        !           474:        if      test ! -f bin/silent
        !           475:        then    cat > bin/silent <<'!'
        !           476: :
        !           477: case $1 in
        !           478: +|-|"") exit 0 ;;
        !           479: esac
        !           480: "$@"
        !           481: !
        !           482:                chmod +x bin/silent
        !           483:        fi
        !           484:        ;;
        !           485: esac
        !           486: trap 'exit 2' 1 2
        !           487: 
        !           488: #
        !           489: # check if we can use pax -- punt to cpio
        !           490: #
        !           491: 
        !           492: _path_=`echo $PATH | sed -e 's/:/ /g' -e 's,///*,/,g'`
        !           493: NEED_pax=
        !           494: CPIO=
        !           495: PAX=
        !           496: for p in $_path_
        !           497: do     for f in $p/pax $p/pax.save
        !           498:        do      if      ($f -f /dev/null -z /dev/null) >/dev/null 2>&1 && test "`sed -e '/^@(#)pax .* [0-9][0-9]\/[0-9][0-9]\/[0-9][0-9]$/!d' -e 's/.*\(..\)\/\(..\)\/\(..\)$/\3\1\2/' < $f`" -ge "$OLDEST_pax" 2>/dev/null
        !           499:                then    case $f in
        !           500:                        $BIN/pax)       if      test ! -f $f.save
        !           501:                                        then    $_trace_ cp $f $f.save
        !           502:                                        fi
        !           503:                                        ;;
        !           504:                        esac
        !           505:                        PAX=$f
        !           506:                        break 2
        !           507:                fi
        !           508:        done
        !           509: done
        !           510: case $PAX in
        !           511: "")    local=
        !           512:        for p in $_path_
        !           513:        do      if      test -f $p/cpio
        !           514:                then    case $p in
        !           515:                        $BIN)   local=$p/cpio ;;
        !           516:                        *)      CPIO=$p/cpio; break ;;
        !           517:                        esac
        !           518:                fi
        !           519:        done
        !           520:        case $CPIO in
        !           521:        "")     case $local in
        !           522:                "")     echo $_command_: must have cpio to uncrate >&2; exit 1 ;;
        !           523:                esac
        !           524:                CPIO=$local
        !           525:                ;;
        !           526:        esac
        !           527:        ;;
        !           528: esac
        !           529: 
        !           530: #
        !           531: # finish up initialization
        !           532: #
        !           533: 
        !           534: case $_trace_ in
        !           535: ?*)    $_trace_ cd $SHIP ;;
        !           536: esac
        !           537: cd $SHIP
        !           538: 
        !           539: #
        !           540: # uncrate the archives into the source tree
        !           541: #
        !           542: 
        !           543: COMPONENTS_SELECT=" "
        !           544: for NAME in *
        !           545: do     case $_exclude_ in
        !           546:        *" $NAME "*)    continue ;;
        !           547:        esac
        !           548:        if      test -f $NAME/items
        !           549:        then    # don't rebuild items under local control
        !           550:                echo "$_command_: warning: $NAME: delete ship/$NAME/items to build" >&2
        !           551:                continue
        !           552:        fi
        !           553:        case $cclasstype in
        !           554:        '!'|'^')
        !           555:                case $NAME in
        !           556:                *[${cclasstype}a-zA-Z_0-9]*)
        !           557:                        continue ;;
        !           558:                esac
        !           559:                ;;
        !           560:        '')     case "`echo $NAME | grep '[^a-zA-Z_0-9]'`" in
        !           561:                ?*)     continue ;;
        !           562:                esac
        !           563:                ;;
        !           564:        esac
        !           565:        if      test -d $NAME
        !           566:        then    _release_=
        !           567:                _state_=found
        !           568:                case $NAME in
        !           569:                *_*)    eval `echo $NAME | sed 's/\([^_]*\)_\(.*\)/_system_=\1 _tool_=\2/'`
        !           570:                        _root_=$INSTALLROOT/$_system_
        !           571:                        if      test ! -d $_root_
        !           572:                        then    $_trace_ mkdir $_root_
        !           573:                        fi
        !           574:                        for d in $hierarchy
        !           575:                        do      case $d in
        !           576:                                ship/*) ;;
        !           577:                                *)      if      test ! -d $_root_/$d
        !           578:                                        then    $_trace_ mkdir $_root_/$d
        !           579:                                        fi
        !           580:                                        ;;
        !           581:                                esac
        !           582:                        done
        !           583:                        ;;
        !           584:                *)      _root_=$INSTALLROOT
        !           585:                        _tool_=$NAME
        !           586:                        ;;
        !           587:                esac
        !           588:                case $_tool_ in
        !           589:                lib*)   _type_=lib ;;
        !           590:                *)      _type_=cmd ;;
        !           591:                esac
        !           592:                _source_=$_root_/src/$_type_/$_tool_
        !           593:                if      test ! -d $_source_
        !           594:                then    $_trace_ mkdir $_source_
        !           595:                fi
        !           596:                cd $NAME
        !           597:                base=   # newest base
        !           598:                delta=  # newest delta for newest base [not in dlist]
        !           599:                dlist=  # list of deltas for newest base [no delta]
        !           600:                need=   # pax needed to uncrate
        !           601:                new=    # delta shipments requiring new base
        !           602:                old=    # first base for new chain
        !           603:                remove= # old shipments to be removed
        !           604:                for d in $SHIPMENT
        !           605:                do      case $d in
        !           606:                        "$SHIPMENT")
        !           607:                                ;;
        !           608:                        *)      if      test -f $d/base
        !           609:                                then    remove="$remove $base $dlist $delta $need $new"
        !           610:                                        base=$d
        !           611:                                        delta=
        !           612:                                        need=
        !           613:                                        new=
        !           614:                                else    case $PAX in
        !           615:                                        "")     need="$need $d"
        !           616:                                                ;;
        !           617:                                        *)      case $base in
        !           618:                                                "")     dlist="$dlist $d"
        !           619:                                                        ;;
        !           620:                                                *)      if      test -f $d/$base
        !           621:                                                        then    dlist="$dlist $delta"
        !           622:                                                                delta=$d
        !           623:                                                        elif    test "" != "$delta" -a -f $d/$delta
        !           624:                                                        then    dlist="$dlist $base"
        !           625:                                                                case $new in
        !           626:                                                                "")     old=$base ;;
        !           627:                                                                esac
        !           628:                                                                new="$new $delta"
        !           629:                                                                base=$delta
        !           630:                                                                delta=$d
        !           631:                                                        else    dlist="$dlist $d"
        !           632:                                                        fi
        !           633:                                                        ;;
        !           634:                                                esac
        !           635:                                                ;;
        !           636:                                        esac
        !           637:                                fi
        !           638:                                ;;
        !           639:                        *)      dlist="$dlist $d"
        !           640:                                ;;
        !           641:                        esac
        !           642:                done
        !           643:                for i in $new
        !           644:                do      echo generate $NAME $i base from $old >&2
        !           645:                        case $_trace_ in
        !           646:                        "")     echo "generate $NAME $i base from $old [`date`]" >> $SHIP/$NAME/$LOG
        !           647:                                if      $PAX -rw -z $old/base < $i/$old > $i/base
        !           648:                                then    touch $i/GENERATED
        !           649:                                else    echo "cannot generate $i base from $old" >&2
        !           650:                                        echo "cannot generate $i base from $old" >> $SHIP/$NAME/$LOG
        !           651:                                        break
        !           652:                                fi
        !           653:                                ;;
        !           654:                        *)      $_trace_ "$PAX -rw -z $SHIP/$NAME/$old/base < $SHIP/$NAME/$i/$old > $i/base"
        !           655:                                $_trace_ touch $SHIP/$NAME/$i/GENERATED
        !           656:                                ;;
        !           657:                        esac
        !           658:                        old=$i
        !           659:                done
        !           660:                case $base in
        !           661:                "")     echo "$_command_: warning: $NAME: no base archive" >&2
        !           662:                        cd $SHIP
        !           663:                        continue
        !           664:                        ;;
        !           665:                esac
        !           666:                case `echo $remove $dlist` in
        !           667:                ?*)     case $_trace_ in
        !           668:                        "")     rm -rf $remove $dlist 2>/dev/null ;;
        !           669:                        *)      $_trace_ "(cd $NAME; rm -rf" $remove $dlist")" ;;
        !           670:                        esac
        !           671:                        ;;
        !           672:                esac
        !           673:                cd $_source_
        !           674:                case $delta in
        !           675:                "")     _release_=$base type=base ;;
        !           676:                *)      _release_=$delta type=delta ;;
        !           677:                esac
        !           678:                if      test 11 = "$_force_$_uncrate_" -o ! -f $SHIP/$NAME/$_release_/UNCRATED
        !           679:                then    echo uncrate $NAME $_release_ $type >&2
        !           680:                        case $_trace_ in
        !           681:                        "")     echo "uncrate $NAME $_release_ $type [`date`]" >> $SHIP/$NAME/$LOG ;;
        !           682:                        esac
        !           683:                        error=
        !           684:                        if      test ! -f $SHIP/$NAME/$_release_/items
        !           685:                        then    echo "$_command_: warning: $NAME: no items file" >&2
        !           686:                        fi
        !           687:                        case $type in
        !           688:                        base)   if      test ! -f $SHIP/$NAME/$_release_/GENERATED
        !           689:                                then    case $_trace_ in
        !           690:                                        "")     rm -rf * ;;
        !           691:                                        *)      $_trace_ "(cd $_source_; rm -rf *)" ;;
        !           692:                                        esac
        !           693:                                fi
        !           694:                                case $PAX in
        !           695:                                "")     case $_trace_ in
        !           696:                                        "")     if      $CPIO -icdmu < $SHIP/$NAME/$_release_/base
        !           697:                                                then    test -f $PAX_INFO && $_shipop_ xap `$CPIO -ictmu` && rm -f $PAX_INFO
        !           698:                                                else    error="$CPIO $type read failed"
        !           699:                                                fi
        !           700:                                                ;;
        !           701:                                        *)      $_trace_ "$CPIO -icdmu < $SHIP/$NAME/$_release_/base" ;;
        !           702:                                        esac
        !           703:                                        ;;
        !           704:                                *)      if      $_trace_ $PAX -r -f $SHIP/$NAME/$_release_/base
        !           705:                                        then    : ok
        !           706:                                        else    error="$PAX $type read failed"
        !           707:                                        fi
        !           708:                                        ;;
        !           709:                                esac
        !           710:                                ;;
        !           711:                        delta)  if      $_trace_ $PAX -r -f $SHIP/$NAME/$_release_/$base -z $SHIP/$NAME/$base/base
        !           712:                                then    $_trace_ touch $SHIP/$NAME/$base/UNCRATED
        !           713:                                else    error="$PAX $type read failed"
        !           714:                                fi
        !           715:                                ;;
        !           716:                        esac
        !           717:                        case $error in
        !           718:                        "")     $_trace_ touch $SHIP/$NAME/$_release_/UNCRATED ;;
        !           719:                        *)      echo "$_command_: $NAME: $_release_: uncrate error: $error" >&2
        !           720:                                case $_trace_ in
        !           721:                                "")     echo "uncrate $NAME $_release_ $type error: $error" >> $SHIP/$NAME/$LOG ;;
        !           722:                                esac
        !           723:                                _state_=error
        !           724:                                ;;
        !           725:                        esac
        !           726:                fi
        !           727:                cd $SHIP
        !           728:                eval STATE_$NAME=$_state_
        !           729:                case $_state_ in
        !           730:                error)  ;;
        !           731:                *)      eval RELEASE_$NAME=$_release_ SOURCE_$NAME=$_source_ TOOL_$NAME=$_tool_
        !           732:                        COMPONENTS_SELECT="$COMPONENTS_SELECT$NAME "
        !           733:                        for i in $need
        !           734:                        do      NEED_pax="$NEED_pax $NAME/$i"
        !           735:                        done
        !           736:                        ;;
        !           737:                esac
        !           738:        fi
        !           739: done
        !           740: case $COMPONENTS_SELECT in
        !           741: " ")   exit 0 ;;
        !           742: esac
        !           743: case $_uncrate_ in
        !           744: ?*)    case $NEED_pax in
        !           745:        ?*)     case $STATE_pax in
        !           746:                found)  ;;
        !           747:                *)      echo $_command_: pax required to uncrate$NEED_pax >&2 ;;
        !           748:                esac
        !           749:                ;;
        !           750:        esac
        !           751:        exit 0
        !           752:        ;;
        !           753: esac
        !           754: 
        !           755: #
        !           756: # determine the ordered list of components to (re)build
        !           757: #
        !           758: 
        !           759: case $SELECT in
        !           760: " ")   COMPONENTS="$ORDER $COMPONENTS_SELECT" ;;
        !           761: *)     COMPONENTS=
        !           762:        for NAME in $COMPONENTS_SELECT
        !           763:        do      case $SELECT in
        !           764:                *" $NAME "*)    COMPONENTS="$COMPONENTS $NAME" ;;
        !           765:                esac
        !           766:        done
        !           767:        ;;
        !           768: esac
        !           769: 
        !           770: #
        !           771: # get the component closure
        !           772: #
        !           773: 
        !           774: case $_closure_ in
        !           775: "")    ORDER=$COMPONENTS
        !           776:        ;;
        !           777: *)     ORDER=
        !           778:        for NAME in $COMPONENTS
        !           779:        do      old=
        !           780:                new=$NAME
        !           781:                while :
        !           782:                do      case $new in
        !           783:                        $old)   break ;;
        !           784:                        esac
        !           785:                        dup=
        !           786:                        for _item_ in $new
        !           787:                        do      # we assume ITEMS_* not in environment
        !           788:                                eval _items_='"$'ITEMS_$_item_'"'
        !           789:                                case $_items_ in
        !           790:                                "")     eval _release_='$'RELEASE_$_item_
        !           791:                                        _items_=`cat $_item_/$_release_/items 2>/dev/null`" $_item_"
        !           792:                                        eval ITEMS_$_item_='"$'_items_'"'
        !           793:                                        ;;
        !           794:                                esac
        !           795:                                dup="$dup $_items_"
        !           796:                        done
        !           797:                        old=$new
        !           798:                        new=
        !           799:                        for _item_ in $dup
        !           800:                        do      eval SEEN_$_item_=
        !           801:                        done
        !           802:                        for _item_ in $dup
        !           803:                        do      eval seen='$'SEEN_$_item_
        !           804:                                case $seen in
        !           805:                                "")     eval SEEN_$_item_=1
        !           806:                                        new="$new $_item_"
        !           807:                                        ;;
        !           808:                                esac
        !           809:                        done
        !           810:                done
        !           811:                eval ITEMS_$NAME='"'$new'"'
        !           812:                ORDER="$ORDER $new"
        !           813:        done
        !           814:        dup=$ORDER
        !           815:        ORDER=
        !           816:        for NAME in $dup
        !           817:        do      eval SEEN_$NAME=
        !           818:        done
        !           819:        for NAME in $dup
        !           820:        do      eval seen='$'SEEN_$NAME
        !           821:                case $seen in
        !           822:                "")     eval SEEN_$NAME=1
        !           823:                        ORDER="$ORDER $NAME"
        !           824:                        ;;
        !           825:                esac
        !           826:        done
        !           827:        ;;
        !           828: esac
        !           829: _built_=
        !           830: COMPONENTS=
        !           831: for NAME in $ORDER
        !           832: do     case $_exclude_ in
        !           833:        *" $NAME "*)    continue ;;
        !           834:        esac
        !           835:        eval _release_='$'RELEASE_$NAME
        !           836:        test -f $NAME/$_release_/items || continue
        !           837:        case $_force_ in
        !           838:        "")     _built_=$NAME/$_release_/BUILT
        !           839:                eval _items_='$'ITEMS_$NAME
        !           840:                for i in $_items_
        !           841:                do      case " $COMPONENTS " in
        !           842:                        *" $i "*)       _built_=; break ;;
        !           843:                        esac
        !           844:                        case $i in
        !           845:                        $NAME)  ;;
        !           846:                        *)      eval _built_='"'$_built_ $i/'$'RELEASE_$i/BUILT'"' ;;
        !           847:                        esac
        !           848:                done
        !           849:                case $_built_ in
        !           850:                ?*)     if      $_shipop_ newer $_built_
        !           851:                        then    continue
        !           852:                        fi
        !           853:                        ;;
        !           854:                esac
        !           855:                ;;
        !           856:        esac
        !           857:        $_trace_ rm -f $NAME/$_release_/BUILT
        !           858:        if      test "" != "$_force_" -o "" != "$_ignore_" -o ! -f $NAME/$_release_/ERROR
        !           859:        then    COMPONENTS="$COMPONENTS $NAME"
        !           860:                $_trace_ rm -f $NAME/$_release_/ERROR
        !           861:        elif    test ! -f $NAME/$_release_/BYPASS
        !           862:        then    echo "$_command_: $NAME/$_release_: new shipment required" >&2
        !           863:        fi
        !           864: done
        !           865: 
        !           866: #
        !           867: # check if we can use nmake from the start
        !           868: #
        !           869: 
        !           870: ACCEPT=nmake
        !           871: _make_=
        !           872: for p in $_path_
        !           873: do     if      test -f $p/nmake && test "`$p/nmake -n -f - 'error 0 $(MAKEVERSION:@/.*\(..\)\/\(..\)\/\(..\)$/\3\1\2/)' . 2>&1`" -ge "$OLDEST_nmake" 2>/dev/null
        !           874:        then    _make_=$p/nmake
        !           875:                STATE_nmake=installed
        !           876:                ACCEPT=
        !           877:                break
        !           878:        fi
        !           879: done
        !           880: case $_make_ in
        !           881: ""|$BIN/nmake)
        !           882:        MAKEPP=$INSTALLROOT/lib/cpp
        !           883:        MAKERULES=$INSTALLROOT/lib/make/makerules
        !           884:        export MAKEPP MAKERULES
        !           885:        _make_=$BIN/nmake
        !           886:        ;;
        !           887: esac
        !           888: MAKEPATH=
        !           889: VPATH=
        !           890: export MAKEPATH VPATH
        !           891: 
        !           892: #
        !           893: # (re)build the components
        !           894: #
        !           895: 
        !           896: cd $INSTALLROOT
        !           897: for NAME in $COMPONENTS
        !           898: do     eval _items_='$'ITEMS_$NAME
        !           899:        case $_trace_ in
        !           900:        "")     for i in $_items_
        !           901:                do      case $i in
        !           902:                        $NAME)  ;;
        !           903:                        *)      eval r='$'RELEASE_$i
        !           904:                                if      test ! -f $SHIP/$i/$r/BUILT
        !           905:                                then    echo "$i needed to build $NAME" >&2
        !           906:                                        echo "$i needed to build $NAME" >> $SHIP/$NAME/$LOG
        !           907:                                        continue 2
        !           908:                                fi
        !           909:                                ;;
        !           910:                        esac
        !           911:                done
        !           912:                ;;
        !           913:        esac
        !           914:        eval _release_='$'RELEASE_$NAME _source_='$'SOURCE_$NAME _tool_='$'TOOL_$NAME
        !           915:        case $_total_ in
        !           916:        ?*)     _components_="$_components_ $NAME/$_release_"
        !           917:                continue
        !           918:                ;;
        !           919:        esac
        !           920:        echo build $NAME $_release_ >&2
        !           921:        $_trace_ cd $_source_
        !           922:        case $_trace_ in
        !           923:        "")     start="`date`"
        !           924:                if      test -f $_bypass_
        !           925:                then    touch $SHIP/$NAME/$_release_/BYPASS
        !           926:                else    case $STATE_nmake in
        !           927:                        installed|ok)
        !           928:                                case $NAME in
        !           929:                                nmake)  $_make_ -o "ignorelock mismatch" ${1+"$@"}
        !           930:                                        MAKEPP=$INSTALLROOT/lib/cpp ./nmake -o "ignorelock mismatch" -bcf Makerules.mk
        !           931:                                        MAKEPP=$INSTALLROOT/lib/cpp MAKERULES=./Makerules.mo ./nmake -o "ignorelock mismatch" install ${1+"$@"}
        !           932:                                        ;;
        !           933:                                *)      $_make_ -o "ignorelock mismatch" install ${1+"$@"}
        !           934:                                        ;;
        !           935:                                esac
        !           936:                                error=$?
        !           937:                                ;;
        !           938:                        *)      if      test -f Mamfile
        !           939:                                then    # here it is -- make+state in v7 shell
        !           940: case $_read_ in
        !           941: "")    case `(echo ok | (read -r a; echo $a) 2>/dev/null)` in
        !           942:        ok)     _read_='read -r' ;;
        !           943:        *)      _read_=read ;;
        !           944:        esac
        !           945:        ;;
        !           946: esac
        !           947: (
        !           948: _list_=
        !           949: _main_=0
        !           950: _mam_=MAM
        !           951: _targ_=install
        !           952: 
        !           953: trap "rm -f $_mam_.*.tmp; exit 1" 1 2
        !           954: # some shells die with diff,next,same in vars
        !           955: : > $_mam_.diff.tmp
        !           956: exec 9> $_mam_.list.tmp
        !           957: if     test -f $_mam_.list -a -f $_mam_.time
        !           958: then   $_shipop_ state $_mam_.list < $_mam_.list | sort > $_mam_.sort.tmp
        !           959:        comm -12 $_mam_.time $_mam_.sort.tmp | sed 's/ .*//' > $_mam_.same.tmp
        !           960:        rm -f $_mam_.sort.tmp
        !           961: else   : > $_mam_.same.tmp
        !           962: fi
        !           963: 
        !           964: _index_=_
        !           965: _ifs_=$IFS
        !           966: case $_read_ in
        !           967: "read") # read strips \ -- thanks a lot
        !           968:        # tmp file avoids char at a time read
        !           969:        sed 's/\\/\\\\/g' Mamfile > $_mam_.read.tmp
        !           970:        exec < $_mam_.read.tmp
        !           971:        rm -f $_mam_.read.tmp
        !           972:        ;;
        !           973: *)     exec < Mamfile
        !           974:        ;;
        !           975: esac
        !           976: eval `sed -e '1,/^make /d' -e '/^setv /!d' -e 's/^setv \([^    ]*\).*/\1= /' Mamfile`
        !           977: for _data_
        !           978: do     eval `echo $_data_ | sed -e 's/\"/\\\\"/g' -e 's/=/=\\"/' -e 's/$/\\"/'`
        !           979: done
        !           980: while  IFS=' '; $_read_ _op_ _data_
        !           981: do     IFS=$_ifs_
        !           982:        case $_op_ in
        !           983:        "note") continue
        !           984:                ;;
        !           985:        "setv") set $_data_
        !           986:                eval _data_='$'$1
        !           987:                case $_data_ in
        !           988:                "")     _data_=$1
        !           989:                        shift
        !           990:                        eval $_data_="$*"
        !           991:                        ;;
        !           992:                esac
        !           993:                continue
        !           994:                ;;
        !           995:        "make") eval _name_$_index_=$_name_
        !           996:                eval _prev_$_index_=$_prev_
        !           997:                eval _cmds_$_index_='"'"$_cmds_"'"'
        !           998:                eval _attr_$_index_=$_attr_
        !           999:                eval _name_=$_data_
        !          1000:                _prev_=$_index_
        !          1001:                _cmds_=
        !          1002:                _attr_=U
        !          1003:                case $_main_ in
        !          1004:                0)      case $_name_ in
        !          1005:                        $_targ_)_main_=1 ;;
        !          1006:                        *)      _attr_= ;;
        !          1007:                        esac
        !          1008:                        ;;
        !          1009:                1)      case $_force_ in
        !          1010:                        "")     grep "^$_name_\$" $_mam_.same.tmp >/dev/null && _attr_= ;;
        !          1011:                        esac
        !          1012:                        ;;
        !          1013:                *)      _attr_=
        !          1014:                        ;;
        !          1015:                esac
        !          1016:                case $_attr_ in
        !          1017:                *U*)    echo $_name_ >> $_mam_.diff.tmp ;;
        !          1018:                esac
        !          1019:                _index_=_$_index_
        !          1020:                eval _name_$_index_=$_name_
        !          1021:                eval _prev_$_index_=$_prev_
        !          1022:                eval _cmds_$_index_=$_cmds_
        !          1023:                eval _attr_$_index_=$_attr_
        !          1024:                echo $_name_ >&9
        !          1025:                continue
        !          1026:                ;;
        !          1027:        "prev") case $_attr_ in
        !          1028:                *U*)    ;;
        !          1029:                *)      case $_force_ in
        !          1030:                        "")     if      grep "^$_data_\$" $_mam_.diff.tmp >/dev/null
        !          1031:                                then    _attr_=U$_attr_
        !          1032:                                elif    grep "^$_data_\$" $_mam_.same.tmp >/dev/null
        !          1033:                                then    :
        !          1034:                                else    _attr_=U$_attr_
        !          1035:                                fi
        !          1036:                                ;;
        !          1037:                        *)      _attr_=U$_attr_
        !          1038:                                ;;
        !          1039:                        esac
        !          1040:                        ;;
        !          1041:                esac
        !          1042:                continue
        !          1043:                ;;
        !          1044:        esac
        !          1045:        case $_index_ in
        !          1046:        _)      echo $_op_: missing make op >&2; continue ;;
        !          1047:        esac
        !          1048:        case $_op_ in
        !          1049:        "attr") case $_data_ in
        !          1050:                "meta"|"suff")  _attr_=M ;;
        !          1051:                esac
        !          1052:                ;;
        !          1053:        "exec"|"....")
        !          1054:                case $_cmds_ in
        !          1055:                "")     _cmds_=$_data_
        !          1056:                        ;;
        !          1057:                *)      _cmds_="$_cmds_
        !          1058: $_data_"
        !          1059:                        ;;
        !          1060:                esac
        !          1061:                ;;
        !          1062:        "done") eval _data_=$_data_
        !          1063:                _prop_=
        !          1064:                case $_name_ in
        !          1065:                $_targ_)        _main_=2 ;;
        !          1066:                esac
        !          1067:                case $_data_ in
        !          1068:                $_name_)case $_attr_ in
        !          1069:                        *M*)    ;;
        !          1070:                        *U*)    case $_cmds_ in
        !          1071:                                "")     case $_attr_ in
        !          1072:                                        *U*)    _prop_=U ;;
        !          1073:                                        esac
        !          1074:                                        ;;
        !          1075:                                *)      eval "($_set_$_cmds_) </dev/null" ||
        !          1076:                                        {
        !          1077:                                        _code_=$?
        !          1078:                                        case $_set_ in
        !          1079:                                        *-*e*)  ;;
        !          1080:                                        *)      case $_cmds_ in
        !          1081:                                                *if*then*fi*|"||")      _code_=0 ;;
        !          1082:                                                esac
        !          1083:                                                ;;
        !          1084:                                        esac
        !          1085:                                        case $_code_ in
        !          1086:                                        0)      ;;
        !          1087:                                        *)      echo "*** exit code $_code_ making $_name_" >&2
        !          1088:                                                rm -f $_mam_.*.tmp
        !          1089:                                                exit $_code_
        !          1090:                                                ;;
        !          1091:                                        esac
        !          1092:                                        }
        !          1093:                                        _prop_=U
        !          1094:                                        ;;
        !          1095:                                esac
        !          1096:                                ;;
        !          1097:                        esac
        !          1098:                        _index_=$_prev_
        !          1099:                        eval _name_='$'_name_$_index_
        !          1100:                        eval _prev_='$'_prev_$_index_
        !          1101:                        eval _cmds_='$'_cmds_$_index_
        !          1102:                        eval _attr_='$'_attr_$_index_
        !          1103:                        case $_attr_ in
        !          1104:                        *U*)    ;;
        !          1105:                        *)      _attr_=$_prop_$_attr_ ;;
        !          1106:                        esac
        !          1107:                        ;;
        !          1108:                *)      echo $_data_: $_op_ $_name_ expected >&2
        !          1109:                        ;;
        !          1110:                esac
        !          1111:                ;;
        !          1112:        esac
        !          1113: done
        !          1114: exec 9>&-
        !          1115: mv $_mam_.list.tmp $_mam_.list
        !          1116: rm -f $_mam_.*.tmp
        !          1117: $_shipop_ state $_mam_.list < $_mam_.list | sort > $_mam_.time
        !          1118: case $_main_ in
        !          1119: 2)     ;;
        !          1120: *)     echo "*** don't know how to make $_targ_" >&2; exit 1 ;;
        !          1121: esac
        !          1122: exit 0
        !          1123: ); error=$?
        !          1124:                                        # ... indent
        !          1125:                                elif    test -f makefile
        !          1126:                                then    make -f makefile install ${1+"$@"}; error=$?
        !          1127:                                elif    test -f Makescript
        !          1128:                                then    ./Makescript ${1+"$@"}; error=$?
        !          1129:                                elif    test -f $_tool_.bs
        !          1130:                                then    ./$_tool_.bs ${1+"$@"}; error=$?
        !          1131:                                else    echo "$_command_: cannot build $NAME" >&2; error=1
        !          1132:                                fi
        !          1133:                                ;;
        !          1134:                        esac
        !          1135:                        case $error+$NAME in
        !          1136:                        0+nmake) $BIN/nmake -n -f /dev/null debug </dev/null >/dev/null 2>&1 || error=1 ;;
        !          1137:                        esac
        !          1138:                        case $error in
        !          1139:                        0)      touch $SHIP/$NAME/$_release_/BUILT ;;
        !          1140:                        *)      touch $SHIP/$NAME/$_release_/ERROR ;;
        !          1141:                        esac
        !          1142:                fi 2>&1 | tee $SHIP/$NAME/$TMP 1>&2
        !          1143:                if      test -f $SHIP/$NAME/$_release_/BUILT
        !          1144:                then    state=ok
        !          1145:                elif    test -f $SHIP/$NAME/$_release_/BYPASS
        !          1146:                then    state=bypass
        !          1147:                else    state=error
        !          1148:                fi
        !          1149:                {
        !          1150:                        echo "build $NAME $_release_ $state [$start] [`date`]"
        !          1151:                        case $ccs in
        !          1152:                        ?*)     echo preroot CCS = $CCS ;;
        !          1153:                        esac
        !          1154:                        # some egreps blow this
        !          1155:                        sed \
        !          1156:                        -e '/^$/d' \
        !          1157:                        -e '/^[         ]/d' \
        !          1158:                        -e '/^+ /d' \
        !          1159:                        -e '/^[^        ]*:$/d' \
        !          1160:                        -e '/^[a-z] - /d' \
        !          1161:                        -e '/^[a-zA-Z_][a-zA-Z_0-9]*$/d' \
        !          1162:                        -e '/^[a-zA-Z_][a-zA-Z_0-9]*=/d' \
        !          1163:                        -e '/[Cc]opyright/d' \
        !          1164:                        -e '/: warning: assignment .* == was expected/d' \
        !          1165:                        -e '/: warning: if .* no effect/d' \
        !          1166:                        -e '/: warning: Symbol .* multiply defined/d' \
        !          1167:                                $SHIP/$NAME/$TMP
        !          1168:                        rm -f $SHIP/$NAME/$TMP
        !          1169:                } >> $SHIP/$NAME/$LOG 2> /dev/null
        !          1170:                eval STATE_$NAME=$state
        !          1171:                ;;
        !          1172:        *)      if      test -f $_source_/$_bypass_
        !          1173:                then    $_trace_ "refer to $_source_/$_bypass_ to install $NAME"
        !          1174:                else    case $STATE_nmake in
        !          1175:                        installed|ok)
        !          1176:                                case $NAME in
        !          1177:                                nmake)  $_trace_ $_make_ -o "ignorelock mismatch" ${1+"$@"}
        !          1178:                                        $_trace_ ./nmake -o "ignorelock mismatch" -bcf Makerules.mk
        !          1179:                                        $_trace_ ./nmake -o "ignorelock mismatch" install ${1+"$@"}
        !          1180:                                        ;;
        !          1181:                                *)      $_trace_ $_make_ -o "ignorelock mismatch" install ${1+"$@"}
        !          1182:                                        ;;
        !          1183:                                esac
        !          1184:                                ;;
        !          1185:                        *)      if      test -f $_source_/Mamfile
        !          1186:                                then    $_trace_ "mamexec < Mamfile"
        !          1187:                                elif    test -f $_source_/Makescript
        !          1188:                                then    $_trace_ ./Makescript ${1+"$@"}
        !          1189:                                elif    test -f $_source_/$_tool_.bs
        !          1190:                                then    $_trace_ ./$_tool_.bs ${1+"$@"}
        !          1191:                                else    $_trace_ install $NAME
        !          1192:                                fi
        !          1193:                                ;;
        !          1194:                        esac
        !          1195:                fi
        !          1196:                ;;
        !          1197:        esac
        !          1198:        $_trace_ cd $INSTALLROOT
        !          1199: 
        !          1200:        #
        !          1201:        # accept stuff built before nmake to sync the state files
        !          1202:        #
        !          1203: 
        !          1204:        case $NAME in
        !          1205:        $ACCEPT)
        !          1206:                for NAME in $COMPONENTS
        !          1207:                do      eval state='$'STATE_$NAME _source_='$'SOURCE_$NAME
        !          1208:                        case $state in
        !          1209:                        ok)     case $_trace_ in
        !          1210:                                "")     cd $_source_
        !          1211:                                        {
        !          1212:                                                $BIN/nmake -o "accept ignorelock mismatch" install
        !          1213:                                        } 2>&1 | tee $SHIP/$NAME/$TMP 1>&2
        !          1214:                                        {
        !          1215:                                                echo "accept $NAME"
        !          1216:                                                egrep -v '^([^  ]*:$|   |\+ |[a-z] - |[a-zA-Z_][a-zA-Z_0-9]*=|$)' $SHIP/$NAME/$TMP
        !          1217:                                                rm -f $SHIP/$NAME/$TMP
        !          1218:                                        } 2>&1 >> $SHIP/$NAME/$LOG
        !          1219:                                        cd $INSTALLROOT
        !          1220:                                        ;;
        !          1221:                                *)      $_trace_ cd $_source_
        !          1222:                                        $_trace_ $BIN/nmake -o "accept ignorelock mismatch" install
        !          1223:                                        $_trace_ cd $INSTALLROOT
        !          1224:                                        ;;
        !          1225:                                esac
        !          1226:                                ;;
        !          1227:                        esac
        !          1228:                done
        !          1229:                case $NAME in
        !          1230:                $ACCEPT)        break ;;
        !          1231:                esac
        !          1232:                ;;
        !          1233:        esac
        !          1234: done
        !          1235: case $_total_ in
        !          1236: ?*)    case $RANDOM in
        !          1237:        $RANDOM)cd $SHIP
        !          1238:                ls -Cd $_components_
        !          1239:                ;;
        !          1240:        *)      PS3=''
        !          1241:                eval '  select i in $_components_
        !          1242:                        do      :
        !          1243:                        done </dev/null'
        !          1244:                ;;
        !          1245:        esac
        !          1246:        exit 0
        !          1247:        ;;
        !          1248: esac
        !          1249: 
        !          1250: #
        !          1251: # check for installation reports
        !          1252: #
        !          1253: 
        !          1254: bypass=
        !          1255: owners=
        !          1256: 
        !          1257: for NAME in $COMPONENTS
        !          1258: do     eval state='$'STATE_$NAME _release_='$'RELEASE_$NAME _source_='$'SOURCE_$NAME
        !          1259:        case $state in
        !          1260:        bypass) bypass="$bypass
        !          1261:        $_source_/$_bypass_"
        !          1262:                        ;;
        !          1263:        esac
        !          1264:        o=$SHIP/$NAME/$_release_/$OWNER
        !          1265:        if      test -s $o
        !          1266:        then    r=`cat $SHIP/$NAME/$_release_/$REPORT 2>/dev/null`
        !          1267:                case $r in
        !          1268:                *\[no\]*)       r= ;;
        !          1269:                esac
        !          1270:                case $r' + '$state in
        !          1271:                ?*' + '*|*' + 'error)
        !          1272:                        address=`cat $o`
        !          1273:                        owner=`echo $address | sed -e 's/.*\(.............\)/\1/' -e 's/^[^a-zA-Z_]/_/' -e 's/[^a-zA-Z_0-9]/_/g'`
        !          1274:                        eval f='$'built_$owner
        !          1275:                        eval built_$owner='"$'f $NAME'"'
        !          1276:                        report=
        !          1277:                        for f in $SHIP/$NAME/$LOG $r
        !          1278:                        do      case `ls -dt $f $SHIPSLOG/!$owner 2>/dev/null` in
        !          1279:                                $f*)    report="$report $f" ;;
        !          1280:                                esac
        !          1281:                        done
        !          1282:                        case $report in
        !          1283:                        ?*)     eval f='$'address_$owner
        !          1284:                                case $f in
        !          1285:                                "")     owners="$owners $owner"
        !          1286:                                        eval address_$owner=$address
        !          1287:                                        ;;
        !          1288:                                esac
        !          1289:                                eval eval report_$owner=\\\"\$report_$owner \\\[$NAME\\\] $report\\\"
        !          1290:                                ;;
        !          1291:                        esac
        !          1292:                        ;;
        !          1293:                esac
        !          1294:        fi
        !          1295: done
        !          1296: 
        !          1297: #
        !          1298: # mail the bypass installation message
        !          1299: #
        !          1300: 
        !          1301: case $_trace_' + '$bypass in
        !          1302: ' + '?*) $_mail_ $INSTALLER > /dev/null 2>&1 <<!
        !          1303: Subject: software shipment manual installation
        !          1304: 
        !          1305: refer to the following for manual installation:$bypass
        !          1306: !
        !          1307:        ;;
        !          1308: esac
        !          1309: 
        !          1310: #
        !          1311: # mail the installation reports, one per owner
        !          1312: #
        !          1313: 
        !          1314: 
        !          1315: for owner in $owners
        !          1316: do     eval address='$'address_$owner
        !          1317:        case $_trace_ in
        !          1318:        "")     {
        !          1319:                        eval report='$'report_$owner
        !          1320:                        echo "Subject: software shipment report"
        !          1321:                        echo
        !          1322:                        eval f='"$'built_$owner'"'
        !          1323:                        case $INSTALLER in
        !          1324:                        $RECIPIENT)     echo "by $FROMSYS!$INSTALLER on [`date`] :" $f ;;
        !          1325:                        *)              echo "by $FROMSYS!$INSTALLER for $RECIPIENT on [`date`] :" $f ;;
        !          1326:                        esac
        !          1327:                        id="`(uname -a) 2>/dev/null`"
        !          1328:                        case $id in
        !          1329:                        ?*)     echo "system $id" ;;
        !          1330:                        esac
        !          1331:                        id=
        !          1332:                        for f in $report
        !          1333:                        do      case $f in
        !          1334:                                \[*\])  id="$f "; continue ;;
        !          1335:                                $SHIP/*)echo ----- $id`echo $f | sed 's/.*\///'` ----- ;;
        !          1336:                                *)      echo ----- $id$f ----- ;;
        !          1337:                                esac
        !          1338:                                cat $f
        !          1339:                                case $f in
        !          1340:                                $SHIP/*/$LOG) rm -f $f ;;
        !          1341:                                esac
        !          1342:                        done
        !          1343:                } > $SHIPSLOG/!$owner
        !          1344:                $_mail_ $address < $SHIPSLOG/!$owner > /dev/null 2>&1
        !          1345:                case $? in
        !          1346:                0)      ;;
        !          1347:                *)      $_mail_ $INSTALLER <<!
        !          1348: Subject: please forward this to $address
        !          1349: 
        !          1350: `cat $SHIPSLOG/!$owner`
        !          1351: !
        !          1352:                        ;;
        !          1353:                esac
        !          1354:                ;;
        !          1355:        *)      $_trace_ $_mail_ $address "< $SHIPSLOG/!$owner" ;;
        !          1356:        esac
        !          1357: done
        !          1358: 
        !          1359: #
        !          1360: # check if any components required pax to uncrate
        !          1361: #
        !          1362: 
        !          1363: case $NEED_pax in
        !          1364: ?*)    case $STATE_pax in
        !          1365:        ok)     $_trace_ exec $_command_ $_options_ $SELECT ${1+"$@"} ;;
        !          1366:        *)      echo $_command_: pax required to uncrate$NEED_pax >&2 ;;
        !          1367:        esac
        !          1368:        ;;
        !          1369: esac
        !          1370: 
        !          1371: #
        !          1372: # done
        !          1373: #
        !          1374: 
        !          1375: exit 0

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.