1*b30d1939SAndy Fiddaman######################################################################## 2*b30d1939SAndy Fiddaman# # 3*b30d1939SAndy Fiddaman# This software is part of the ast package # 4*b30d1939SAndy Fiddaman# Copyright (c) 1994-2012 AT&T Intellectual Property # 5*b30d1939SAndy Fiddaman# and is licensed under the # 6*b30d1939SAndy Fiddaman# Eclipse Public License, Version 1.0 # 7*b30d1939SAndy Fiddaman# by AT&T Intellectual Property # 8*b30d1939SAndy Fiddaman# # 9*b30d1939SAndy Fiddaman# A copy of the License is available at # 10*b30d1939SAndy Fiddaman# http://www.eclipse.org/org/documents/epl-v10.html # 11*b30d1939SAndy Fiddaman# (with md5 checksum b35adb5213ca9657e911e9befb180842) # 12*b30d1939SAndy Fiddaman# # 13*b30d1939SAndy Fiddaman# Information and Software Systems Research # 14*b30d1939SAndy Fiddaman# AT&T Research # 15*b30d1939SAndy Fiddaman# Florham Park NJ # 16*b30d1939SAndy Fiddaman# # 17*b30d1939SAndy Fiddaman# Glenn Fowler <gsf@research.att.com> # 18*b30d1939SAndy Fiddaman# # 19*b30d1939SAndy Fiddaman######################################################################## 20*b30d1939SAndy Fiddaman### this script contains archaic constructs that work with all sh variants ### 21*b30d1939SAndy Fiddaman# package - source and binary package control 22*b30d1939SAndy Fiddaman# Glenn Fowler <gsf@research.att.com> 23*b30d1939SAndy Fiddaman 24*b30d1939SAndy Fiddamancommand=package 25*b30d1939SAndy Fiddaman 26*b30d1939SAndy Fiddamancase $-:$BASH_VERSION in 27*b30d1939SAndy Fiddaman*x*:[0123456789]*) : bash set -x is broken :; set +ex ;; 28*b30d1939SAndy Fiddamanesac 29*b30d1939SAndy Fiddaman 30*b30d1939SAndy Fiddaman# ksh checks -- ksh between 2007-11-05 and 2011-11-11 conflict with new -lcmd -- wea culpa 31*b30d1939SAndy Fiddamanchecksh() 32*b30d1939SAndy Fiddaman{ 33*b30d1939SAndy Fiddaman egrep 'Version.*(88|1993)' $1 >/dev/null 2>&1 || 34*b30d1939SAndy Fiddaman $1 -c '(( .sh.version >= 20111111 ))' >/dev/null 2>&1 35*b30d1939SAndy Fiddaman} 36*b30d1939SAndy Fiddaman 37*b30d1939SAndy Fiddamancase $_AST_BIN_PACKAGE_:$SHELL:$0 in 38*b30d1939SAndy Fiddaman1:*:*|*:/bin/sh:*) 39*b30d1939SAndy Fiddaman ;; 40*b30d1939SAndy Fiddaman*:*/*:*/*) 41*b30d1939SAndy Fiddaman _AST_BIN_PACKAGE_=1 # prevent non-interactive sh .rc referencing bin/package recursion # 42*b30d1939SAndy Fiddaman export _AST_BIN_PACKAGE_ 43*b30d1939SAndy Fiddaman if checksh $SHELL 44*b30d1939SAndy Fiddaman then : no -lcmd conflict : 45*b30d1939SAndy Fiddaman else case " $* " in 46*b30d1939SAndy Fiddaman *" debug "*|*" DEBUG "*|*" show "*) 47*b30d1939SAndy Fiddaman echo $command: $SHELL: warning: possible -lcmd conflict -- falling back to /bin/sh >&2 48*b30d1939SAndy Fiddaman ;; 49*b30d1939SAndy Fiddaman esac 50*b30d1939SAndy Fiddaman SHELL=/bin/sh 51*b30d1939SAndy Fiddaman export SHELL 52*b30d1939SAndy Fiddaman exec $SHELL "$0" "$@" 53*b30d1939SAndy Fiddaman fi 54*b30d1939SAndy Fiddaman ;; 55*b30d1939SAndy Fiddamanesac 56*b30d1939SAndy Fiddaman 57*b30d1939SAndy FiddamanLC_ALL=C 58*b30d1939SAndy Fiddamanexport LC_ALL 59*b30d1939SAndy Fiddaman 60*b30d1939SAndy Fiddamansrc="cmd contrib etc lib" 61*b30d1939SAndy Fiddamanuse="/usr/common /exp /usr/local /usr/add-on /usr/addon /usr/tools /usr /opt" 62*b30d1939SAndy Fiddamanusr="/home" 63*b30d1939SAndy Fiddamanlib="" # nee /usr/local/lib /usr/local/shlib 64*b30d1939SAndy Fiddamanccs="/usr/kvm /usr/ccs/bin" 65*b30d1939SAndy Fiddamanorg="gnu GNU" 66*b30d1939SAndy Fiddamanmakefiles="Mamfile Nmakefile nmakefile Makefile makefile" 67*b30d1939SAndy Fiddamanenv="HOSTTYPE NPROC PACKAGEROOT INSTALLROOT PATH" 68*b30d1939SAndy Fiddamanchecksum=md5sum 69*b30d1939SAndy Fiddamanchecksum_commands="$checksum md5" 70*b30d1939SAndy Fiddamanchecksum_empty="d41d8cd98f00b204e9800998ecf8427e" 71*b30d1939SAndy Fiddaman 72*b30d1939SAndy Fiddamanpackage_use='=$HOSTTYPE=$PACKAGEROOT=$INSTALLROOT=$EXECROOT=$CC=' 73*b30d1939SAndy Fiddaman 74*b30d1939SAndy FiddamanPACKAGE_admin_tail_timeout=${PACKAGE_admin_tail_timeout:-"1m"} 75*b30d1939SAndy Fiddaman 76*b30d1939SAndy FiddamanCROSS=0 77*b30d1939SAndy Fiddaman 78*b30d1939SAndy Fiddamanadmin_db=admin.db 79*b30d1939SAndy Fiddamanadmin_env=admin.env 80*b30d1939SAndy Fiddamanadmin_ditto="ditto --checksum --delete --verbose" 81*b30d1939SAndy Fiddamanadmin_ditto_update=--update 82*b30d1939SAndy Fiddamanadmin_ditto_skip="OFFICIAL|core|old|*.core|*.tmp|.nfs*" 83*b30d1939SAndy Fiddamanadmin_list='PACKAGE.$type.lst' 84*b30d1939SAndy Fiddamanadmin_ping="ping -c 1 -w 5" 85*b30d1939SAndy Fiddaman 86*b30d1939SAndy Fiddamandefault_url=default.url 87*b30d1939SAndy FiddamanMAKESKIP=${MAKESKIP:-"*[-.]*"} 88*b30d1939SAndy FiddamanRATZ=ratz 89*b30d1939SAndy FiddamanSED= 90*b30d1939SAndy FiddamanTAR=tar 91*b30d1939SAndy FiddamanTARFLAGS=xv 92*b30d1939SAndy FiddamanTARPROBE=B 93*b30d1939SAndy FiddamanTR= 94*b30d1939SAndy Fiddaman 95*b30d1939SAndy Fiddamanall_types='*.*|sun4' # all but sun4 match *.* 96*b30d1939SAndy Fiddaman 97*b30d1939SAndy Fiddamancase `(getopts '[-][123:xyz]' opt --xyz; echo 0$opt) 2>/dev/null` in 98*b30d1939SAndy Fiddaman0123) USAGE=$' 99*b30d1939SAndy Fiddaman[-? 100*b30d1939SAndy Fiddaman@(#)$Id: package (AT&T Research) 2012-06-28 $ 101*b30d1939SAndy Fiddaman]'$USAGE_LICENSE$' 102*b30d1939SAndy Fiddaman[+NAME?package - source and binary package control] 103*b30d1939SAndy Fiddaman[+DESCRIPTION?The \bpackage\b command controls source and binary 104*b30d1939SAndy Fiddaman packages. It is a \bsh\b(1) script coded for maximal portability. All 105*b30d1939SAndy Fiddaman package files are in the \b$PACKAGEROOT\b directory tree. 106*b30d1939SAndy Fiddaman \b$PACKAGEROOT\b must at minumum contain a \bbin/package\b command or a 107*b30d1939SAndy Fiddaman \blib/package\b directory. Binary package files are in the 108*b30d1939SAndy Fiddaman \b$INSTALLROOT\b (\b$PACKAGEROOT/arch/\b\ahosttype\a) tree, where 109*b30d1939SAndy Fiddaman \ahosttpe\a=`\bpackage\b`. All \aactions\a but \bhost\b and \buse\b 110*b30d1939SAndy Fiddaman require the current directory to be under \b$PACKAGEROOT\b. See 111*b30d1939SAndy Fiddaman \bDETAILS\b for more information.] 112*b30d1939SAndy Fiddaman[+?Note that no environment variables need be set by the user; 113*b30d1939SAndy Fiddaman \bpackage\b determines the environment based on the current working 114*b30d1939SAndy Fiddaman directory. The \buse\b action starts a \bsh\b(1) with the environment 115*b30d1939SAndy Fiddaman initialized. \bCC\b, \bCCFLAGS\b, \bHOSTTYPE\b and \bSHELL\b may be set 116*b30d1939SAndy Fiddaman by explicit command argument assignments to override the defaults.] 117*b30d1939SAndy Fiddaman[+?Packages are composed of components. Each component is built and 118*b30d1939SAndy Fiddaman installed by an \bast\b \bnmake\b(1) makefile. Each package is also 119*b30d1939SAndy Fiddaman described by an \bnmake\b makefile that lists its components and 120*b30d1939SAndy Fiddaman provides a content description. The package makefile and component 121*b30d1939SAndy Fiddaman makefiles provide all the information required to read, write, build 122*b30d1939SAndy Fiddaman and install packages.] 123*b30d1939SAndy Fiddaman[+?Package recipients only need \bsh\b(1) and \bcc\b(1) to build and 124*b30d1939SAndy Fiddaman install source packages, and \bsh\b to install binary packages. 125*b30d1939SAndy Fiddaman \bnmake\b and \bksh93\b are required to write new packages. An 126*b30d1939SAndy Fiddaman \b$INSTALLROOT/bin/cc\b script may be supplied for some architectures. 127*b30d1939SAndy Fiddaman This script supplies a reasonable set of default options for compilers 128*b30d1939SAndy Fiddaman that accept multiple dialects or generate multiple object/executable 129*b30d1939SAndy Fiddaman formats.] 130*b30d1939SAndy Fiddaman[+?The command arguments are composed of a sequence of words: zero or 131*b30d1939SAndy Fiddaman more \aqualifiers\a, one \aaction\a, and zero or more action-specific 132*b30d1939SAndy Fiddaman \aarguments\a, and zero or more \aname=value\a definitions. \apackage\a 133*b30d1939SAndy Fiddaman names a particular package. The naming scheme is a \b-\b separated 134*b30d1939SAndy Fiddaman hierarchy; the leftmost parts describe ownership, e.g., 135*b30d1939SAndy Fiddaman \bgnu-fileutils\b, \bast-base\b. If no packages are specified then all 136*b30d1939SAndy Fiddaman packages are operated on. \boptget\b(3) documentation options are also 137*b30d1939SAndy Fiddaman supported. The default with no arguments is \bhost type\b.] 138*b30d1939SAndy Fiddaman[+?The qualifiers are:] 139*b30d1939SAndy Fiddaman { 140*b30d1939SAndy Fiddaman [+authorize \aname\a?Remote authorization user name or license 141*b30d1939SAndy Fiddaman acceptance phrase.] 142*b30d1939SAndy Fiddaman [+debug|environment?Show environment and actions but do not 143*b30d1939SAndy Fiddaman execute.] 144*b30d1939SAndy Fiddaman [+flat?Collapse \b$INSTALLROOT\b { bin fun include lib } onto 145*b30d1939SAndy Fiddaman \b$PACKAGEROOT\b.] 146*b30d1939SAndy Fiddaman [+force?Force the action to override saved state.] 147*b30d1939SAndy Fiddaman [+never?Run make -N and show other actions.] 148*b30d1939SAndy Fiddaman [+only?Only operate on the specified packages.] 149*b30d1939SAndy Fiddaman [+password \apassword\a?Remote authorization or license 150*b30d1939SAndy Fiddaman acceptance password.] 151*b30d1939SAndy Fiddaman [+quiet?Do not list captured action output.] 152*b30d1939SAndy Fiddaman [+show?Run make -n and show other actions.] 153*b30d1939SAndy Fiddaman [+verbose?Provide detailed action output.] 154*b30d1939SAndy Fiddaman [+DEBUG?Trace the package script actions in detail.] 155*b30d1939SAndy Fiddaman } 156*b30d1939SAndy Fiddaman[+?The actions are:] 157*b30d1939SAndy Fiddaman { 158*b30d1939SAndy Fiddaman [+admin\b [\ball\b]] [\bdb\b \afile\a]] [\bon\b \apattern\a]][\aaction\a ...]]?Apply 159*b30d1939SAndy Fiddaman \aaction\a ... to the hosts listed in \afile\a. If \afile\a is 160*b30d1939SAndy Fiddaman omitted then \badmin.db\b is assumed. The caller must have 161*b30d1939SAndy Fiddaman \brcp\b(1) and \brsh\b(1) or \bscp\b(1) and \bssh\b(1) access 162*b30d1939SAndy Fiddaman to the hosts. Output for \aaction\a is saved per-host in the 163*b30d1939SAndy Fiddaman file \aaction\a\b.log/\b\ahost\a. Logs can be viewed by 164*b30d1939SAndy Fiddaman \bpackage admin\b [\bon\b \ahost\a]] \bresults\b [\aaction\a]]. 165*b30d1939SAndy Fiddaman By default only local PACKAGEROOT hosts are selected from 166*b30d1939SAndy Fiddaman \afile\a; \ball\b selects all hosts. \bon\b \apattern\a selects 167*b30d1939SAndy Fiddaman only hosts matching the \b|\b separated \apattern\a. \afile\a 168*b30d1939SAndy Fiddaman contains four types of lines. Blank lines and lines beginning 169*b30d1939SAndy Fiddaman with \b#\b are ignored. Lines starting with \aid\a=\avalue\a 170*b30d1939SAndy Fiddaman are variable assignments. Set admin_ping to local conventions 171*b30d1939SAndy Fiddaman if \"'$admin_ping$'\" fails. If a package list is not specified 172*b30d1939SAndy Fiddaman on the command line the \aaction\a applies to all packages; a 173*b30d1939SAndy Fiddaman variable assigment \bpackage\b=\"\alist\a\" applies \aaction\a 174*b30d1939SAndy Fiddaman to the packages in \alist\a for subsequent hosts in \afile\a. 175*b30d1939SAndy Fiddaman The remaining line type is a host description consisting of 6 176*b30d1939SAndy Fiddaman tab separated fields. The first 3 are mandatory; the remaining 177*b30d1939SAndy Fiddaman 3 are updated by the \badmin\b action. \afile\a is saved in 178*b30d1939SAndy Fiddaman \afile\a\b.old\b before update. The fields are:] 179*b30d1939SAndy Fiddaman { 180*b30d1939SAndy Fiddaman [+hosttype?The host type as reported by 181*b30d1939SAndy Fiddaman \"\bpackage\b\".] 182*b30d1939SAndy Fiddaman [+[user@]]host?The host name and optionally user name 183*b30d1939SAndy Fiddaman for \brcp\b(1) and \brsh\b(1) access.] 184*b30d1939SAndy Fiddaman [+[remote::[[master]]::]]]]PACKAGEROOT?The absolute remote package 185*b30d1939SAndy Fiddaman root directory and optionally the remote protocol (rsh 186*b30d1939SAndy Fiddaman or ssh) if the directory is on a different server than 187*b30d1939SAndy Fiddaman the master package root directory. If 188*b30d1939SAndy Fiddaman \blib/package/admin/'$admin_env$'\b exists under this 189*b30d1939SAndy Fiddaman directory then it is sourced by \bsh\b(1) before 190*b30d1939SAndy Fiddaman \aaction\a is done. If this field begins with \b-\b 191*b30d1939SAndy Fiddaman then the host is ignored. If this field contains \b:\b 192*b30d1939SAndy Fiddaman then \bditto\b(1) is used to sync the remote \bsrc\b 193*b30d1939SAndy Fiddaman directory hierarchy to the local one. If [\amaster\a]]: 194*b30d1939SAndy Fiddaman is specified then the sync is deferred to the \amaster\a 195*b30d1939SAndy Fiddaman host. If \amaster\a is omitted (two :) then the sync is 196*b30d1939SAndy Fiddaman disabled. These directories must exist on the remote side: 197*b30d1939SAndy Fiddaman \blib/package\b, \bsrc/cmd\b, \bsrc/lib\b.] 198*b30d1939SAndy Fiddaman [+date?\aYYMMDD\a of the last action.] 199*b30d1939SAndy Fiddaman [+time?Elapsed wall time for the last action.] 200*b30d1939SAndy Fiddaman [+M T W?The \badmin\b action \bmake\b, \btest\b and 201*b30d1939SAndy Fiddaman \bwrite\b action error counts. A non-numeric value in 202*b30d1939SAndy Fiddaman any of these fields disables the corresponding action.] 203*b30d1939SAndy Fiddaman [+owner?The owner contact information.] 204*b30d1939SAndy Fiddaman [+attributes?\aname=value\a attributes. Should at least contain 205*b30d1939SAndy Fiddaman \bcc\b=\acompiler-version\a.] 206*b30d1939SAndy Fiddaman } 207*b30d1939SAndy Fiddaman [+clean | clobber?Delete the \barch/\b\aHOSTTYPE\a hierarchy; this 208*b30d1939SAndy Fiddaman deletes all generated files and directories for \aHOSTTYPE\a. 209*b30d1939SAndy Fiddaman The heirarchy can be rebuilt by \bpackage make\b.] 210*b30d1939SAndy Fiddaman [+contents\b [ \apackage\a ... ]]?List description and 211*b30d1939SAndy Fiddaman components for \apackage\a on the standard output.] 212*b30d1939SAndy Fiddaman [+copyright\b [ \apackage\a ... ]]?List the general copyright 213*b30d1939SAndy Fiddaman notice(s) for \apackage\a on the standard output. Note that 214*b30d1939SAndy Fiddaman individual components in \apackage\a may contain additional or 215*b30d1939SAndy Fiddaman replacement notices.] 216*b30d1939SAndy Fiddaman [+export\b [ \avariable\a ...]]?List \aname\a=\avalue\a for 217*b30d1939SAndy Fiddaman \avariable\a, one per line. If the \bonly\b attribute is 218*b30d1939SAndy Fiddaman specified then only the variable values are listed. If no 219*b30d1939SAndy Fiddaman variables are specified then \b'$env$'\b are assumed.] 220*b30d1939SAndy Fiddaman [+help\b [ \aaction\a ]]?Display help text on the standard 221*b30d1939SAndy Fiddaman error (standard output for \aaction\a).] 222*b30d1939SAndy Fiddaman [+host\b [ \aattribute\a ... ]]?List 223*b30d1939SAndy Fiddaman architecture/implementation dependent host information on the 224*b30d1939SAndy Fiddaman standard output. \btype\b is listed if no attributes are 225*b30d1939SAndy Fiddaman specified. Information is listed on a single line in 226*b30d1939SAndy Fiddaman \aattribute\a order. The attributes are:] 227*b30d1939SAndy Fiddaman { 228*b30d1939SAndy Fiddaman [+canon \aname\a?An external host type name to be 229*b30d1939SAndy Fiddaman converted to \bpackage\b syntax.] 230*b30d1939SAndy Fiddaman [+cpu?The number of cpus; 1 if the host is not a 231*b30d1939SAndy Fiddaman multiprocessor.] 232*b30d1939SAndy Fiddaman [+name?The host name.] 233*b30d1939SAndy Fiddaman [+rating?The cpu rating in pseudo mips; the value is 234*b30d1939SAndy Fiddaman useful useful only in comparisons with rating values of 235*b30d1939SAndy Fiddaman other hosts. Other than a vax rating (mercifully) fixed 236*b30d1939SAndy Fiddaman at 1, ratings can vary wildly but consistently from 237*b30d1939SAndy Fiddaman vendor mips ratings. \bcc\b(1) may be required to 238*b30d1939SAndy Fiddaman determine the rating.] 239*b30d1939SAndy Fiddaman [+type?The host type, usually in the form 240*b30d1939SAndy Fiddaman \avendor\a.\aarchitecture\a, with an optional trailing 241*b30d1939SAndy Fiddaman -\aversion\a. The main theme is that type names within 242*b30d1939SAndy Fiddaman a family of architectures are named in a similar, 243*b30d1939SAndy Fiddaman predictable style. OS point release information is 244*b30d1939SAndy Fiddaman avoided as much as possible, but vendor resistance to 245*b30d1939SAndy Fiddaman release incompatibilities has for the most part been 246*b30d1939SAndy Fiddaman futile.] 247*b30d1939SAndy Fiddaman } 248*b30d1939SAndy Fiddaman [+html\b [ \aaction\a ]]?Display html help text on the standard 249*b30d1939SAndy Fiddaman error (standard output for \aaction\a).] 250*b30d1939SAndy Fiddaman [+install\b [ \aarchitecture\a ... ]] \adirectory\a [ \apackage\a ... ]]?Copy 251*b30d1939SAndy Fiddaman the package binary hierarchy to \adirectory\a. If 252*b30d1939SAndy Fiddaman \aarchitecture\a is omitted then all architectures are 253*b30d1939SAndy Fiddaman installed. If \bflat\b is specified then exactly one 254*b30d1939SAndy Fiddaman \aarchitecture\a must be specified; this architecture will be 255*b30d1939SAndy Fiddaman installed in \adirectory\a without the \barch/\b\aHOSTTYPE\a 256*b30d1939SAndy Fiddaman directory prefixes. Otherwise each architecture will be 257*b30d1939SAndy Fiddaman installed in a separate \barch/\b\aHOSTTYPE\a subdirectory of 258*b30d1939SAndy Fiddaman \adirectory\a. The \aarchitecture\a \b-\b names the current 259*b30d1939SAndy Fiddaman architecture. \adirectory\a must be an existing directory. If 260*b30d1939SAndy Fiddaman \apackage\a is omitted then all binary packages are installed. 261*b30d1939SAndy Fiddaman This action requires \bnmake\b.] 262*b30d1939SAndy Fiddaman [+license\b [ \apackage\a ... ]]?List the source license(s) for 263*b30d1939SAndy Fiddaman \apackage\a on the standard output. Note that individual 264*b30d1939SAndy Fiddaman components in \apackage\a may contain additional or replacement 265*b30d1939SAndy Fiddaman licenses.] 266*b30d1939SAndy Fiddaman [+list\b [ \apackage\a ... ]]?List the name, version and 267*b30d1939SAndy Fiddaman prerequisites for \apackage\a on the standard output.] 268*b30d1939SAndy Fiddaman [+make\b [ \apackage\a ]] [ \aoption\a ... ]] [ \atarget\a ... ]]?Build 269*b30d1939SAndy Fiddaman and install. The default \atarget\a is \binstall\b, which makes 270*b30d1939SAndy Fiddaman and installs \apackage\a. If the standard output is a terminal 271*b30d1939SAndy Fiddaman then the output is also captured in 272*b30d1939SAndy Fiddaman \b$INSTALLROOT/lib/package/gen/make.out\b. The build is done in 273*b30d1939SAndy Fiddaman the \b$INSTALLROOT\b directory tree viewpathed on top of the 274*b30d1939SAndy Fiddaman \b$PACKAGEROOT\b directory tree. If \bflat\b is specified then 275*b30d1939SAndy Fiddaman the \b$INSTALLROOT\b { bin fun include lib } directories are 276*b30d1939SAndy Fiddaman linked to the same directories in the package root. Only one 277*b30d1939SAndy Fiddaman architecture may be \bflat\b. Leaf directory names matching the 278*b30d1939SAndy Fiddaman \b|\b-separated shell pattern \b$MAKESKIP\b are ignored. The 279*b30d1939SAndy Fiddaman \bview\b action is done before making. \aoption\a operands are 280*b30d1939SAndy Fiddaman passed to the underlying make command.] 281*b30d1939SAndy Fiddaman [+read\b [ \apackage\a ... | \aarchive\a ... ]]?Read the named 282*b30d1939SAndy Fiddaman package or archive(s). Must be run from the package root 283*b30d1939SAndy Fiddaman directory. Archives are searched for in \b.\b and 284*b30d1939SAndy Fiddaman \blib/package/tgz\b. Each package archive is read only once. 285*b30d1939SAndy Fiddaman The file \blib/package/tgz/\b\apackage\a[.\atype\a]]\b.tim\b 286*b30d1939SAndy Fiddaman tracks the read time. See the \bwrite\b action for archive 287*b30d1939SAndy Fiddaman naming conventions. Text file archive member are assumed to be 288*b30d1939SAndy Fiddaman ASCII or UTF-8 encoded.] 289*b30d1939SAndy Fiddaman [+regress?\bdiff\b(1) the current and previous \bpackage test\b 290*b30d1939SAndy Fiddaman results.] 291*b30d1939SAndy Fiddaman [+release\b [ [\aCC\a]]\aYY-MM-DD\a [ [\acc\a]]\ayy-mm-dd\a ]]]] [ \apackage\a ]]?Display 292*b30d1939SAndy Fiddaman recent changes for the date range [\aCC\a]]\aYY-MM-DD\a (up to 293*b30d1939SAndy Fiddaman [\acc\a]]\ayy-mm-dd\a.), where \b-\b means lowest (or highest.) 294*b30d1939SAndy Fiddaman If no dates are specified then changes for the last 4 months 295*b30d1939SAndy Fiddaman are listed. \apackage\a may be a package or component name.] 296*b30d1939SAndy Fiddaman [+remove\b [ \apackage\a ]]?Remove files installed for 297*b30d1939SAndy Fiddaman \apackage\a.] 298*b30d1939SAndy Fiddaman [+results\b [ \bfailed\b ]] [ \bpath\b ]] [ \bold\b ]] [\bmake\b | \btest\b | \bwrite\b ]]?List 299*b30d1939SAndy Fiddaman results and interesting messages captured by the most recent 300*b30d1939SAndy Fiddaman \bmake\b (default), \btest\b or \bwrite\b action. \bold\b 301*b30d1939SAndy Fiddaman specifies the previous results, if any (current and previous 302*b30d1939SAndy Fiddaman results are retained.) \b$HOME/.pkgresults\b, if it exists, 303*b30d1939SAndy Fiddaman must contain an \begrep\b(1) expression of result lines to be 304*b30d1939SAndy Fiddaman ignored. \bfailed\b lists failures only and \bpath\b lists the 305*b30d1939SAndy Fiddaman results file path name only.] 306*b30d1939SAndy Fiddaman [+setup\b [ beta ]] [ binary ]] [ source ]] [ \aarchitecture\a ... ]] [ \aurl\a ]] [ \apackage\a ... ]]?This 307*b30d1939SAndy Fiddaman action initializes the current directory as a package root, runs the 308*b30d1939SAndy Fiddaman \bupdate\b action to download new or out of date packages, and runs the 309*b30d1939SAndy Fiddaman \bread\b action on those packages. If \bflat\b is specified then the 310*b30d1939SAndy Fiddaman \b$INSTALLROOT\b { bin fun include lib } directories are linked to the 311*b30d1939SAndy Fiddaman same directories in the package root. Only one architecture may be 312*b30d1939SAndy Fiddaman \bflat\b. See the \bupdate\b and \bread\b action descriptions for 313*b30d1939SAndy Fiddaman argument details.] 314*b30d1939SAndy Fiddaman [+test\b [ \apackage\a ]]?Run the regression tests for 315*b30d1939SAndy Fiddaman \apackage\a. If the standard output is a terminal then the 316*b30d1939SAndy Fiddaman output is also captured in 317*b30d1939SAndy Fiddaman \b$INSTALLROOT/lib/package/gen/test.out\b. In general a package 318*b30d1939SAndy Fiddaman must be made before it can be tested. Components tested with 319*b30d1939SAndy Fiddaman the \bregress\b(1) command require \bksh93\b. If \bonly\b is 320*b30d1939SAndy Fiddaman also specified then only the listed package components are 321*b30d1939SAndy Fiddaman tested, otherwise the closure of the components is tested.] 322*b30d1939SAndy Fiddaman [+update\b [ beta ]] [ binary ]] [ source ]] [\aarchitecture\a ... ]] [ \aurl\a ]] [ \apackage\a ... ]]?Download 323*b30d1939SAndy Fiddaman the latest release of the selected and required packages from \aurl\a 324*b30d1939SAndy Fiddaman (e.g., \bhttp://www.research.att.com/sw/download\b) into the directory 325*b30d1939SAndy Fiddaman \b$PACKAGEROOT/lib/package/tgz\b. \bbeta\b acesses beta packages; 326*b30d1939SAndy Fiddaman download these at your own risk. If \aarchitecture\a is omitted then 327*b30d1939SAndy Fiddaman only architectures already present in the \btgz\b directory will be 328*b30d1939SAndy Fiddaman downloaded. If \aarchitecture\a is \b-\b then all posted architectures 329*b30d1939SAndy Fiddaman will be downloaded. If \aurl\a matches \b*.url\b then it is interpreted 330*b30d1939SAndy Fiddaman as a file containing shell variable assignments for \burl\b, 331*b30d1939SAndy Fiddaman \bauthorize\b and \bpassword\b. If \aurl\a is omitted then the 332*b30d1939SAndy Fiddaman definitions for \burl\b, \bauthorize\b and \bpassword\b in 333*b30d1939SAndy Fiddaman \b$PACKAGEROOT/lib/package/tgz/default.url\b, if it exists, are used. 334*b30d1939SAndy Fiddaman If \b$PACKAGEROOT/lib/package/tgz/default.url\b does not exist then it 335*b30d1939SAndy Fiddaman is initialized with the current \burl\b, \bauthorize\b and \bpassword\b 336*b30d1939SAndy Fiddaman values and read permission for the current user only. If \apackage\a is 337*b30d1939SAndy Fiddaman omitted then only packages already present in the tgz directory will be 338*b30d1939SAndy Fiddaman downloaded. If \apackage\a is \b-\b then all posted packages will be 339*b30d1939SAndy Fiddaman downloaded. If \bsource\b and \bbinary\b are omitted then both source 340*b30d1939SAndy Fiddaman and binary packages will be downloaded. If \bonly\b is specified then 341*b30d1939SAndy Fiddaman only the named packages are updated; otherwise the closure of required 342*b30d1939SAndy Fiddaman packages is updated. This action requires \bwget\b(1), \blynx\b(1), 343*b30d1939SAndy Fiddaman \bcurl\b(1) or a shell that supports io to 344*b30d1939SAndy Fiddaman \b/dev/tcp/\b\ahost\a/\aport\a.] 345*b30d1939SAndy Fiddaman [+use\b [ \auid\a | \apackage\a | . [ 32 | 64 ]] | 32 | 64 | - ]] [ command ...]]?Run 346*b30d1939SAndy Fiddaman \acommand\a, or an interactive shell if \acommand\a is omitted, 347*b30d1939SAndy Fiddaman with the environment initialized for using the package (can you 348*b30d1939SAndy Fiddaman say \ashared\a \alibrary\a or \adll\a without cussing?) If 349*b30d1939SAndy Fiddaman \auid\a or \apackage\a or \a.\a is specified then it is used 350*b30d1939SAndy Fiddaman to determine a \b$PACKAGEROOT\b, possibly different from 351*b30d1939SAndy Fiddaman the current directory. For example, to try out bozo`s package: 352*b30d1939SAndy Fiddaman \bpackage use bozo\b. The \buse\b action may be run from any 353*b30d1939SAndy Fiddaman directory. If the file \b$INSTALLROOT/lib/package/profile\b is 354*b30d1939SAndy Fiddaman readable then it is sourced to initialize the environment. 32 or 64 355*b30d1939SAndy Fiddaman implies \b$PACKAGEROOT\b of . and specifies the target architecture 356*b30d1939SAndy Fiddaman word size (which may be silently ignored.)] 357*b30d1939SAndy Fiddaman [+verify\b [ \apackage\a ]]?Verify installed binary files 358*b30d1939SAndy Fiddaman against the checksum files in 359*b30d1939SAndy Fiddaman \b$INSTALLROOT/lib/\b\apackage\a\b/gen/*.sum\b. The checksum 360*b30d1939SAndy Fiddaman files contain mode, user and group information. If the checksum 361*b30d1939SAndy Fiddaman matches for a given file then the mode, user and group are 362*b30d1939SAndy Fiddaman changed as necessary to match the checksum entry. A warning is 363*b30d1939SAndy Fiddaman printed on the standard error for each mismatch. Requires the 364*b30d1939SAndy Fiddaman \bast\b package \bcksum\b(1) command.] 365*b30d1939SAndy Fiddaman [+view\b?Initialize the architecture specific viewpath 366*b30d1939SAndy Fiddaman hierarchy. If \bflat\b is specified then the \b$INSTALLROOT\b { 367*b30d1939SAndy Fiddaman bin fun include lib } directories are linked to the same 368*b30d1939SAndy Fiddaman directories in the package root. Only one architecture may be 369*b30d1939SAndy Fiddaman \bflat\b. The \bmake\b action implicitly calls this action.] 370*b30d1939SAndy Fiddaman [+write\b [\aformat\a]] \atype\a ... [ \apackage\a ...]]?Write 371*b30d1939SAndy Fiddaman a package archive for \apackage\a. All work is done in the 372*b30d1939SAndy Fiddaman \b$PACKAGEROOT/lib/package\b directory. \aformat\a-specific 373*b30d1939SAndy Fiddaman files are placed in the \aformat\a subdirectory. A 374*b30d1939SAndy Fiddaman \apackage\a[.\atype\a]]\b.tim\b file in this directory tracks 375*b30d1939SAndy Fiddaman the write time and prevents a package from being read in the 376*b30d1939SAndy Fiddaman same root it was written. If more than one file is generated 377*b30d1939SAndy Fiddaman for a particular \aformat\a then those files are placed in the 378*b30d1939SAndy Fiddaman \aformat\a/\apackage\a subdirectory. File names in the 379*b30d1939SAndy Fiddaman \aformat\a subdirectory will contain the package name, a 380*b30d1939SAndy Fiddaman \ayyyy-mm-dd\a date, and for binary packages, \aHOSTTYPE\a. If 381*b30d1939SAndy Fiddaman \apackage\a is omitted then an ordered list of previously 382*b30d1939SAndy Fiddaman written packages is generated. If \bonly\b is specified then 383*b30d1939SAndy Fiddaman only the named packages will be written; otherwise prerequisite 384*b30d1939SAndy Fiddaman packages are written first. Package components must be listed 385*b30d1939SAndy Fiddaman in \apackage\a\b.pkg\b. \aformat\a may be one of:] 386*b30d1939SAndy Fiddaman { 387*b30d1939SAndy Fiddaman [+cyg?Generate a \bcygwin\b package.] 388*b30d1939SAndy Fiddaman [+exp?Generate an \bexptools\b maintainer source 389*b30d1939SAndy Fiddaman archive and \aNPD\a file, suitable for \bexpmake\b(1)] 390*b30d1939SAndy Fiddaman [+lcl?Generate a package archive suitable for 391*b30d1939SAndy Fiddaman restoration into the local source tree (i.e., the 392*b30d1939SAndy Fiddaman source is not annotated for licencing.)] 393*b30d1939SAndy Fiddaman [+pkg?Generate a \bpkgmk\b(1) package suitable for 394*b30d1939SAndy Fiddaman \bpkgadd\b(1).] 395*b30d1939SAndy Fiddaman [+rpm?Generate an \brpm\b(1) package.] 396*b30d1939SAndy Fiddaman [+tgz?Generate a \bgzip\b(1) \btar\b(1) package 397*b30d1939SAndy Fiddaman archive. This is the default.] 398*b30d1939SAndy Fiddaman [+tst?Generate a \btgz\b format package archive in the 399*b30d1939SAndy Fiddaman \btst\b subdirectory. Version state files are not updated.] 400*b30d1939SAndy Fiddaman } 401*b30d1939SAndy Fiddaman [+?\btype\b specifies the package type which must be one of 402*b30d1939SAndy Fiddaman \bsource\b, \bbinary\b or \bruntime\b. A source package 403*b30d1939SAndy Fiddaman contains the source needed to build the corresponding binary 404*b30d1939SAndy Fiddaman package. A binary package includes the libraries and headers 405*b30d1939SAndy Fiddaman needed for compiling and linking against the public interfaces. 406*b30d1939SAndy Fiddaman A runtime package contains the commands and required dynamic 407*b30d1939SAndy Fiddaman libraries.] 408*b30d1939SAndy Fiddaman [+?A package may be either a \bbase\b or \bdelta\b. A base 409*b30d1939SAndy Fiddaman package contains a complete copy of all components. A delta 410*b30d1939SAndy Fiddaman package contains only changes from a previous base package. 411*b30d1939SAndy Fiddaman Delta recipients must have the \bast\b \bpax\b(1) command (in 412*b30d1939SAndy Fiddaman the \bast-base\b package.) If neither \bbase\b nor \bdelta\b is 413*b30d1939SAndy Fiddaman specified, then the current base is overwritten if there are no 414*b30d1939SAndy Fiddaman deltas referring to the current base. Only the \btgz\b and 415*b30d1939SAndy Fiddaman \blcl\b formats support \bdelta\b. If \bbase\b is specified 416*b30d1939SAndy Fiddaman then a new base and two delta archives are generated: one delta 417*b30d1939SAndy Fiddaman to generate the new base from the old, and one delta to 418*b30d1939SAndy Fiddaman generate the old base from the new; the old base is then 419*b30d1939SAndy Fiddaman removed. If \bdelta\b is specified then a new delta referring 420*b30d1939SAndy Fiddaman to the current base is written.] 421*b30d1939SAndy Fiddaman [+?\apackage\a\b.pkg\b may reference other packages. By default 422*b30d1939SAndy Fiddaman a pointer to those packages is written. The recipient \bpackage 423*b30d1939SAndy Fiddaman read\b will then check that all required packages have been 424*b30d1939SAndy Fiddaman downloaded. If \bclosure\b is specified then the components for 425*b30d1939SAndy Fiddaman all package references are included in the generated package. 426*b30d1939SAndy Fiddaman This may be useful for \blcl\b and versioning.] 427*b30d1939SAndy Fiddaman [+?All formats but \blcl\b annotate each \bsource\b file (not 428*b30d1939SAndy Fiddaman already annotated) with a license comment as it is written to 429*b30d1939SAndy Fiddaman the package archive using \bproto\b(1).] 430*b30d1939SAndy Fiddaman } 431*b30d1939SAndy Fiddaman[+DETAILS?The package directory hierarchy is rooted at 432*b30d1939SAndy Fiddaman \b$PACKAGEROOT\b. All source and binaries reside under this tree. A two 433*b30d1939SAndy Fiddaman level viewpath is used to separate source and binaries. The top view is 434*b30d1939SAndy Fiddaman architecture specific, the bottom view is shared source. All building 435*b30d1939SAndy Fiddaman is done in the architecture specific view; no source view files are 436*b30d1939SAndy Fiddaman intentionally changed. This means that many different binary 437*b30d1939SAndy Fiddaman architectures can be made from a single copy of the source.] 438*b30d1939SAndy Fiddaman[+?Independent \b$PACKAGEROOT\b hierarchies can be combined by 439*b30d1939SAndy Fiddaman appending \b$INSTALLROOT:$PACKAGEROOT\b pairs to \bVPATH\b. The 440*b30d1939SAndy Fiddaman \bVPATH\b viewing order is from left to right. Each \b$PACKAGEROOT\b 441*b30d1939SAndy Fiddaman must have a \b$PACKAGEROOT/lib/package\b directory.] 442*b30d1939SAndy Fiddaman[+?Each package contains one or more components. Component source for 443*b30d1939SAndy Fiddaman the \afoo\a command is in \b$PACKAGEROOT/src/cmd/\b\afoo\a, and source 444*b30d1939SAndy Fiddaman for the \abar\a library is in \b$PACKAGEROOT/src/lib/lib\b\abar\a. This 445*b30d1939SAndy Fiddaman naming is for convenience only; the underlying makefiles handle 446*b30d1939SAndy Fiddaman inter-component build order. The \bINIT\b component, which contains 447*b30d1939SAndy Fiddaman generic package support files, is always made first, then the 448*b30d1939SAndy Fiddaman components named \bINIT\b*, then the component order determined by the 449*b30d1939SAndy Fiddaman closure of component makefile dependencies.] 450*b30d1939SAndy Fiddaman[+?\b$PACKAGEROOT/lib/package\b contains package specific files. The 451*b30d1939SAndy Fiddaman package naming convention is \agroup\a[-\apart\a]]; e.g., \bast-base\b, 452*b30d1939SAndy Fiddaman \bgnu-fileutils\b. The *\b.pkg\b files are ast \bnmake\b(1) makefiles 453*b30d1939SAndy Fiddaman that contain the package name, package components, references to other 454*b30d1939SAndy Fiddaman packages, and a short package description. *\b.pkg\b files are used by 455*b30d1939SAndy Fiddaman \bpackage write\b to generate new source and binary packages.] 456*b30d1939SAndy Fiddaman[+?\b$PACKAGEROOT/lib/package/\b\agroup\a\b.lic\b files contain license 457*b30d1939SAndy Fiddaman information that is used by the \bast\b \bproto\b(1) and \bnmake\b(1) 458*b30d1939SAndy Fiddaman commands to generate source and binary license strings. \agroup\a is 459*b30d1939SAndy Fiddaman determined by the first \b:PACKAGE:\b operator name listed in the 460*b30d1939SAndy Fiddaman component \bnmake\b makefile. \agroup\a\b.lic\b files are part of the 461*b30d1939SAndy Fiddaman licensing documentation. Each component may have its own \bLICENSE\b file 462*b30d1939SAndy Fiddaman that overrides the \agroup\a\b.lic\b file. The full text of the licenses 463*b30d1939SAndy Fiddaman are in the \b$PACKAGEROOT/lib/package/LICENSES\b and 464*b30d1939SAndy Fiddaman \b$INSTALLROOT/lib/package/LICENSES\b directories.] 465*b30d1939SAndy Fiddaman[+?A few files are generated in \b$PACKAGEROOT/lib/package/gen\b and 466*b30d1939SAndy Fiddaman \b$INSTALLROOT/lib/package/gen\b. \apackage\a\b.ver\b contains one line 467*b30d1939SAndy Fiddaman consisting of \apackage version release\a \b1\b for the most recent 468*b30d1939SAndy Fiddaman instance of \apackage\a read into \b$PACKAGEROOT\b, where \apackage\a 469*b30d1939SAndy Fiddaman is the package name, \aversion\a is the \aYYYY-MM-DD\a base version, 470*b30d1939SAndy Fiddaman and \arelease\a is \aversion\a for the base release or \aYYYY-MM-DD\a 471*b30d1939SAndy Fiddaman for delta releases. \apackage\a\b.req\b contains *\b.ver\b entries for 472*b30d1939SAndy Fiddaman the packages required by \apackage\a, except that the fourth field is 473*b30d1939SAndy Fiddaman \b0\b instead of \b1\b. All packages except \bINIT\b require the 474*b30d1939SAndy Fiddaman \bINIT\b package. A simple sort of \apackage\a\b.pkg\b and *\b.ver\b 475*b30d1939SAndy Fiddaman determines if the required package have been read in. Finally, 476*b30d1939SAndy Fiddaman \apackage\a\b.README\b and \apackage\a\a.html\b contain the README text 477*b30d1939SAndy Fiddaman for \apackage\a and all its components. Included are all changes added 478*b30d1939SAndy Fiddaman to the component \bRELEASE\b, \bCHANGES\b or \bChangeLog\b files dated 479*b30d1939SAndy Fiddaman since the two most recent base releases. Component \bRELEASE\b files 480*b30d1939SAndy Fiddaman contain tag lines of the form [\aYY\a]]\aYY-MM-DD\a [ \atext\a ]] (or 481*b30d1939SAndy Fiddaman \bdate\b(1) format dates) followed by README text, in reverse 482*b30d1939SAndy Fiddaman chronological order (newer entries at the top of the file.) \bpackage 483*b30d1939SAndy Fiddaman release\b lists this information, and \bpackage contents ...\b lists 484*b30d1939SAndy Fiddaman the descriptions and components.] 485*b30d1939SAndy Fiddaman[+?\b$HOSTYPE\b names the current binary architecture and is determined 486*b30d1939SAndy Fiddaman by the output of \bpackage\b (no arguments.) The \b$HOSTTYPE\b naming 487*b30d1939SAndy Fiddaman scheme is used to separate incompatible executable and object formats. 488*b30d1939SAndy Fiddaman All architecture specific binaries are placed under \b$INSTALLROOT\b 489*b30d1939SAndy Fiddaman (\b$PACKAGEROOT/arch/$HOSTTYPE\b.) There are a few places that match 490*b30d1939SAndy Fiddaman against \b$HOSTTYPE\b when making binaries; these are limited to 491*b30d1939SAndy Fiddaman makefile compiler workarounds, e.g., if \b$HOSTTYPE\b matches \bhp.*\b 492*b30d1939SAndy Fiddaman then turn off the optimizer for these objects. All other architecture 493*b30d1939SAndy Fiddaman dependent logic is handled either by the \bast\b \biffe\b(1) command or 494*b30d1939SAndy Fiddaman by component specific configure scripts. Explicit \b$HOSTYPE\b 495*b30d1939SAndy Fiddaman values matching *,*cc*[,-*,...]] optionally set the default \bCC\b and 496*b30d1939SAndy Fiddaman \bCCFLAGS\b. This is handy for build farms that support different 497*b30d1939SAndy Fiddaman compilers on the same architecture.] 498*b30d1939SAndy Fiddaman[+?Each component contains an \bast\b \bnmake\b(1) makefile (either 499*b30d1939SAndy Fiddaman \bNmakefile\b or \bMakefile\b) and a \bMAM\b (make abstract machine) 500*b30d1939SAndy Fiddaman file (\bMamfile\b.) A Mamfile contains a portable makefile description 501*b30d1939SAndy Fiddaman that is used by \bmamake\b(1) to simulate \bnmake\b. Currently there is 502*b30d1939SAndy Fiddaman no support for old-make/gnu-make makefiles; if the binaries are just 503*b30d1939SAndy Fiddaman being built then \bmamake\b will suffice; if source or makefile 504*b30d1939SAndy Fiddaman modifications are anticipated then \bnmake\b (in the \bast-base\b 505*b30d1939SAndy Fiddaman package) should be used. Mamfiles are automatically generated by 506*b30d1939SAndy Fiddaman \bpackage write\b.] 507*b30d1939SAndy Fiddaman[+?Most component C source is prototyped. If \b$CC\b (default value 508*b30d1939SAndy Fiddaman \bcc\b) is not a prototyping C compiler then \bpackage make\b runs 509*b30d1939SAndy Fiddaman \bproto\b(1) on portions of the \b$PACKAGEROOT/src\b tree and places 510*b30d1939SAndy Fiddaman the converted output files in the \b$PACKAGEROOT/proto/src\b tree. 511*b30d1939SAndy Fiddaman Converted files are then viewpathed over the original source. 512*b30d1939SAndy Fiddaman \bproto\b(1) converts an ANSI C subset to code that is compatible with 513*b30d1939SAndy Fiddaman K&R, ANSI, and C++ dialects.] 514*b30d1939SAndy Fiddaman[+?All scripts and commands under \b$PACKAGEROOT\b use \b$PATH\b 515*b30d1939SAndy Fiddaman relative pathnames (via the \bast\b \bpathpath\b(3) function); there 516*b30d1939SAndy Fiddaman are no imbedded absolute pathnames. This means that binaries generated 517*b30d1939SAndy Fiddaman under \b$PACKAGEROOT\b may be copied to a different root; users need 518*b30d1939SAndy Fiddaman only change their \b$PATH\b variable to reference the new installation 519*b30d1939SAndy Fiddaman root \bbin\b directory. \bpackage install\b installs binary packages in 520*b30d1939SAndy Fiddaman a new \b$INSTALLROOT\b.] 521*b30d1939SAndy Fiddaman 522*b30d1939SAndy Fiddaman[ qualifier ... ] [ action ] [ arg ... ] [ n=v ... ] 523*b30d1939SAndy Fiddaman 524*b30d1939SAndy Fiddaman[+SEE ALSO?\bautoconfig\b(1), \bcksum\b(1), \bexecrate\b(1), \bexpmake\b(1), 525*b30d1939SAndy Fiddaman \bgzip\b(1), \bmake\b(1), \bmamake\b(1), \bnmake\b(1), \bpax\b(1), 526*b30d1939SAndy Fiddaman \bpkgadd\b(1), \bpkgmk\b(1), \bproto\b(1), \bratz\b(1), \brpm\b(1), 527*b30d1939SAndy Fiddaman \bsh\b(1), \btar\b(1), \boptget\b(3)] 528*b30d1939SAndy Fiddaman' 529*b30d1939SAndy Fiddaman case $* in 530*b30d1939SAndy Fiddaman help) set -- --man ;; 531*b30d1939SAndy Fiddaman esac 532*b30d1939SAndy Fiddaman while getopts -a $command "$USAGE" OPT 533*b30d1939SAndy Fiddaman do : 534*b30d1939SAndy Fiddaman done 535*b30d1939SAndy Fiddaman shift $OPTIND-1 536*b30d1939SAndy Fiddaman ;; 537*b30d1939SAndy Fiddamanesac 538*b30d1939SAndy Fiddaman 539*b30d1939SAndy Fiddaman# check the args 540*b30d1939SAndy Fiddaman 541*b30d1939SAndy Fiddamancase $AR in 542*b30d1939SAndy Fiddaman'') AR=ar ;; 543*b30d1939SAndy Fiddamanesac 544*b30d1939SAndy Fiddamancase $CC in 545*b30d1939SAndy Fiddaman'') CC=cc ;; 546*b30d1939SAndy Fiddamanesac 547*b30d1939SAndy Fiddamancase $LD in 548*b30d1939SAndy Fiddaman'') LD=ld ;; 549*b30d1939SAndy Fiddamanesac 550*b30d1939SAndy Fiddamancase $NM in 551*b30d1939SAndy Fiddaman'') NM=nm ;; 552*b30d1939SAndy Fiddamanesac 553*b30d1939SAndy Fiddaman 554*b30d1939SAndy Fiddamanaction= 555*b30d1939SAndy Fiddamanadmin_all=1 556*b30d1939SAndy Fiddamanadmin_on= 557*b30d1939SAndy Fiddamanauthorize= 558*b30d1939SAndy Fiddamanbit= 559*b30d1939SAndy Fiddamanexec= 560*b30d1939SAndy Fiddamanflat=0 561*b30d1939SAndy Fiddamanforce=0 562*b30d1939SAndy Fiddamanglobal= 563*b30d1939SAndy Fiddamanhi= 564*b30d1939SAndy Fiddamanhtml=0 565*b30d1939SAndy Fiddamanifs=${IFS-' 566*b30d1939SAndy Fiddaman '} 567*b30d1939SAndy Fiddamanlo= 568*b30d1939SAndy Fiddamanmake= 569*b30d1939SAndy Fiddamanmakeflags='-k -K' 570*b30d1939SAndy Fiddamannmakeflags= 571*b30d1939SAndy Fiddamannmakesep= 572*b30d1939SAndy Fiddamannl=" 573*b30d1939SAndy Fiddaman" 574*b30d1939SAndy Fiddamannoexec= 575*b30d1939SAndy Fiddamanonly=0 576*b30d1939SAndy Fiddamanoutput= 577*b30d1939SAndy Fiddamanpackage_src= 578*b30d1939SAndy Fiddamanpassword= 579*b30d1939SAndy Fiddamanquiet=0 580*b30d1939SAndy Fiddamanshow=: 581*b30d1939SAndy Fiddamantab=" " 582*b30d1939SAndy Fiddamanverbose=0 583*b30d1939SAndy FiddamanAUTHORIZE= 584*b30d1939SAndy FiddamanDEBUG= 585*b30d1939SAndy FiddamanHURL= 586*b30d1939SAndy FiddamanPROTOROOT=- 587*b30d1939SAndy FiddamanSHELLMAGIC=- 588*b30d1939SAndy Fiddaman 589*b30d1939SAndy Fiddamanunset FIGNORE BINDIR DLLDIR ETCDIR FUNDIR INCLUDEDIR LIBDIR LOCALEDIR MANDIR SHAREDIR 2>/dev/null || true 590*b30d1939SAndy Fiddaman 591*b30d1939SAndy Fiddamanwhile : 592*b30d1939SAndy Fiddamando case $# in 593*b30d1939SAndy Fiddaman 0) set host type ;; 594*b30d1939SAndy Fiddaman esac 595*b30d1939SAndy Fiddaman case $1 in 596*b30d1939SAndy Fiddaman admin|clean|clobber|contents|copyright|export|host|install|license|list|make|read|regress|release|remove|results|setup|test|update|use|verify|view|write|TEST) 597*b30d1939SAndy Fiddaman action=$1 598*b30d1939SAndy Fiddaman shift 599*b30d1939SAndy Fiddaman break 600*b30d1939SAndy Fiddaman ;; 601*b30d1939SAndy Fiddaman authorize) 602*b30d1939SAndy Fiddaman case $# in 603*b30d1939SAndy Fiddaman 1) echo $command: $1: authorization user name argument expected >&2; exit 1 ;; 604*b30d1939SAndy Fiddaman esac 605*b30d1939SAndy Fiddaman shift 606*b30d1939SAndy Fiddaman authorize=$1 607*b30d1939SAndy Fiddaman shift 608*b30d1939SAndy Fiddaman continue 609*b30d1939SAndy Fiddaman ;; 610*b30d1939SAndy Fiddaman debug|environment) 611*b30d1939SAndy Fiddaman exec=echo make=echo show=echo 612*b30d1939SAndy Fiddaman ;; 613*b30d1939SAndy Fiddaman flat) flat=1 614*b30d1939SAndy Fiddaman ;; 615*b30d1939SAndy Fiddaman force) force=1 616*b30d1939SAndy Fiddaman ;; 617*b30d1939SAndy Fiddaman never) exec=echo noexec=-N 618*b30d1939SAndy Fiddaman ;; 619*b30d1939SAndy Fiddaman only) only=1 620*b30d1939SAndy Fiddaman ;; 621*b30d1939SAndy Fiddaman password) 622*b30d1939SAndy Fiddaman case $# in 623*b30d1939SAndy Fiddaman 1) echo $command: $1: authorization password argument expected >&2; exit 1 ;; 624*b30d1939SAndy Fiddaman esac 625*b30d1939SAndy Fiddaman shift 626*b30d1939SAndy Fiddaman password=$1 627*b30d1939SAndy Fiddaman shift 628*b30d1939SAndy Fiddaman continue 629*b30d1939SAndy Fiddaman ;; 630*b30d1939SAndy Fiddaman quiet) quiet=1 631*b30d1939SAndy Fiddaman ;; 632*b30d1939SAndy Fiddaman show) exec=echo noexec=-n 633*b30d1939SAndy Fiddaman ;; 634*b30d1939SAndy Fiddaman verbose)verbose=1 635*b30d1939SAndy Fiddaman ;; 636*b30d1939SAndy Fiddaman DEBUG) DEBUG=1 637*b30d1939SAndy Fiddaman PS4='+$LINENO:$SECONDS+ ' 638*b30d1939SAndy Fiddaman set -x 639*b30d1939SAndy Fiddaman ;; 640*b30d1939SAndy Fiddaman help|HELP|html|man|--[?m]*) 641*b30d1939SAndy Fiddaman case $1 in 642*b30d1939SAndy Fiddaman help) code=0 643*b30d1939SAndy Fiddaman case $2 in 644*b30d1939SAndy Fiddaman '') exec 1>&2 ;; 645*b30d1939SAndy Fiddaman esac 646*b30d1939SAndy Fiddaman ;; 647*b30d1939SAndy Fiddaman html) code=0 html=1 648*b30d1939SAndy Fiddaman ;; 649*b30d1939SAndy Fiddaman *) code=2 650*b30d1939SAndy Fiddaman exec 1>&2 651*b30d1939SAndy Fiddaman ;; 652*b30d1939SAndy Fiddaman esac 653*b30d1939SAndy Fiddaman case $html in 654*b30d1939SAndy Fiddaman 1) bO="<HTML> 655*b30d1939SAndy Fiddaman<HEAD> 656*b30d1939SAndy Fiddaman<TITLE>$2 package installation instructions</TITLE> 657*b30d1939SAndy Fiddaman<HEAD> 658*b30d1939SAndy Fiddaman<BODY bgcolor=white link=teal vlink=dimgray>" 659*b30d1939SAndy Fiddaman eO='</BODY> 660*b30d1939SAndy Fiddaman</HTML>' 661*b30d1939SAndy Fiddaman bH="<CENTER><H3><FONT face=courier color=red>" 662*b30d1939SAndy Fiddaman eH='</FONT></H3></CENTER>' 663*b30d1939SAndy Fiddaman bP='<P>' 664*b30d1939SAndy Fiddaman bL='<P><TABLE cellpadding=0 cellspacing=2>' 665*b30d1939SAndy Fiddaman bL2='<P><TABLE border=0 cellpadding=0 cellspacing=2>' 666*b30d1939SAndy Fiddaman eL='</TABLE><P>' 667*b30d1939SAndy Fiddaman bT='<TR><TD align=right valign=top><B>' 668*b30d1939SAndy Fiddaman bD='</B></TD><TD align=left>' eD='</TD></TR>' 669*b30d1939SAndy Fiddaman bB='<B>' eB='</B>' 670*b30d1939SAndy Fiddaman bI='<I>' eI='</I>' 671*b30d1939SAndy Fiddaman bX='<PRE>' eX='</PRE>' 672*b30d1939SAndy Fiddaman bF='<TT>' eF='</TT>' 673*b30d1939SAndy Fiddaman Camp='&' 674*b30d1939SAndy Fiddaman Mcurl='<A href=../../man/man1/curl.html>curl</A>(1)' 675*b30d1939SAndy Fiddaman Mdate='<A href=../../man/man1/date.html>date</A>(1)' 676*b30d1939SAndy Fiddaman Mfile='<A href=../../man/man1/file.html>file</A>(1)' 677*b30d1939SAndy Fiddaman Mgunzip='<A href=../../man/man1/gzip.html>gunzip</A>(1)' 678*b30d1939SAndy Fiddaman Mhurl='<A href=../../man/man1/hurl.html>hurl</A>(1)' 679*b30d1939SAndy Fiddaman Mlynx='<A href=../../man/man1/lynx.html>lynx</A>(1)' 680*b30d1939SAndy Fiddaman Mnmake='<A href=../../man/man1/nmake.html>nmake</A>(1)' 681*b30d1939SAndy Fiddaman Mpackage='<A href=../../man/man1/package.html>package</A>(1)' 682*b30d1939SAndy Fiddaman Mproto='<A href=../../man/man1/proto.html>proto</A>(1)' 683*b30d1939SAndy Fiddaman Mratz='<A href=../../man/man1/ratz.html>ratz</A>' 684*b30d1939SAndy Fiddaman Mtar='<A href=../../man/man1/tar.html>tar</A>(1)' 685*b30d1939SAndy Fiddaman Mwget='<A href=../../man/man1/wget.html>wget</A>(1)' 686*b30d1939SAndy Fiddaman ;; 687*b30d1939SAndy Fiddaman *) bO='' eO='' 688*b30d1939SAndy Fiddaman bH='' eH=':' 689*b30d1939SAndy Fiddaman bP='' 690*b30d1939SAndy Fiddaman bL='' eL='' 691*b30d1939SAndy Fiddaman bL2='' 692*b30d1939SAndy Fiddaman bT=' ' 693*b30d1939SAndy Fiddaman bD=' ' eD='' 694*b30d1939SAndy Fiddaman bB='' eB='' 695*b30d1939SAndy Fiddaman bI='' eI='' 696*b30d1939SAndy Fiddaman bX='' eX='' 697*b30d1939SAndy Fiddaman bF='"' eF='"' 698*b30d1939SAndy Fiddaman Camp='&' 699*b30d1939SAndy Fiddaman Mcurl='curl(1)' 700*b30d1939SAndy Fiddaman Mdate='date(1)' 701*b30d1939SAndy Fiddaman Mfile='file(1)' 702*b30d1939SAndy Fiddaman Mgunzip='gunzip(1)' 703*b30d1939SAndy Fiddaman Mhurl='hurl(1)' 704*b30d1939SAndy Fiddaman Mlynx='lynx(1)' 705*b30d1939SAndy Fiddaman Mnmake='nmake(1)' 706*b30d1939SAndy Fiddaman Mpackage='package(1)' 707*b30d1939SAndy Fiddaman Mproto='proto(1)' 708*b30d1939SAndy Fiddaman Mratz='ratz' 709*b30d1939SAndy Fiddaman Mtar='tar(1)' 710*b30d1939SAndy Fiddaman Mwget='wget(1)' 711*b30d1939SAndy Fiddaman ;; 712*b30d1939SAndy Fiddaman esac 713*b30d1939SAndy Fiddaman case $2 in 714*b30d1939SAndy Fiddaman binary) echo "${bO} 715*b30d1939SAndy Fiddaman${bH}Binary Package Installation Instructions${eH} 716*b30d1939SAndy Fiddaman${bL} 717*b30d1939SAndy Fiddaman${bT}(1)${bD}Do not install packages as ${bI}root/super-user${eI}. Although some components may 718*b30d1939SAndy Fiddaman have setuid executables, few must be owned by ${bI}root${eI}. These are best 719*b30d1939SAndy Fiddaman changed manually when the security implications are understood.${eD} 720*b30d1939SAndy Fiddaman${bT}(2)${bD}Choose a package root directory and cd to it. This will be a local work 721*b30d1939SAndy Fiddaman area for all packages.${eD} 722*b30d1939SAndy Fiddaman${bT}(3)${bD}These instructions bypass the ${bI}click to download${eI} package links on the 723*b30d1939SAndy Fiddaman download site. If you already clicked, or if your system does not have 724*b30d1939SAndy Fiddaman ${Mcurl}, ${Mhurl}, ${Mlynx} or ${Mwget} then use the alternate instructions 725*b30d1939SAndy Fiddaman for (3),(4),(5) in plan ${bB}B${eB} below. Plan ${bB}B${eB} installs the ${Mhurl} 726*b30d1939SAndy Fiddaman script which works with ksh and modern bash. The top level URL is:${bX} 727*b30d1939SAndy Fiddaman URL=http://www.research.att.com/sw/download${eX}${eD} 728*b30d1939SAndy Fiddaman${bT}(4)${bD}If the ${bB}bin/package${eB} script does not exist then run:${bX} 729*b30d1939SAndy Fiddaman test -d bin || mkdir bin 730*b30d1939SAndy Fiddaman url=\$URL/package 731*b30d1939SAndy Fiddaman (wget -O - \$url||curl -L \$url||hurl \$url) > bin/package 732*b30d1939SAndy Fiddaman chmod +x bin/package${eX}${eD} 733*b30d1939SAndy Fiddaman${bT}(5)${bD}Determine the list of package names you want from the download site, then 734*b30d1939SAndy Fiddaman use the ${Mpackage} command to do the actual download:${bX} 735*b30d1939SAndy Fiddaman bin/package authorize \"${bI}NAME${eI}\" password \"${bI}PASSWORD${eI}\" \\ 736*b30d1939SAndy Fiddaman setup binary \$URL ${bI}PACKAGE${eI} ...${eX} 737*b30d1939SAndy Fiddaman (Refer to the ${bB}AUTHORIZATION${eB} paragraph on the main download page for 738*b30d1939SAndy Fiddaman ${bI}NAME${eI}/${bI}PASSWORD${eI} details.) This downloads the closure of the latest 739*b30d1939SAndy Fiddaman binary package(s); covered and up-to-date packages are not downloaded again unless 740*b30d1939SAndy Fiddaman ${bB}package force ...${eB} is specified. Package content is verified using ${bB}${checksum}${eB}. 741*b30d1939SAndy Fiddaman If the package root will contain only one architecture then you can install in ${bB}bin${eB} and 742*b30d1939SAndy Fiddaman ${bB}lib${eB} instead of ${bB}arch/${eB}${bI}HOSTTYPE${eI}${bB}/bin${eB} and ${bB}arch/${eB}${bI}HOSTTYPE${eI}${bB}/lib${eB} by running this 743*b30d1939SAndy Fiddaman instead:${bX} 744*b30d1939SAndy Fiddaman bin/package authorize \"${bI}NAME${eI}\" password \"${bI}PASSWORD${eI}\" \\ 745*b30d1939SAndy Fiddaman flat setup binary \$URL ${bB}PACKAGE${eB} ...${eX} 746*b30d1939SAndy Fiddaman To update the same packages from the same URL run:${bX} 747*b30d1939SAndy Fiddaman bin/package setup binary${eX}${eD} 748*b30d1939SAndy Fiddaman${bT}(6)${bD}The packaged binaries are position independent, i.e., they do not 749*b30d1939SAndy Fiddaman contain hard-coded paths. However, commands with related files, like 750*b30d1939SAndy Fiddaman ${Mfile} and ${Mnmake}, require the path of the bin directory to be 751*b30d1939SAndy Fiddaman exported in ${bB}PATH${eb}.${eD} 752*b30d1939SAndy Fiddaman${bT}(7)${bD}You can run the binaries directly from the package root, or you can 753*b30d1939SAndy Fiddaman install them in a public root (requires the ${bI}AT${Camp}T${eI} ${Mnmake} command):${bX} 754*b30d1939SAndy Fiddaman bin/package flat install ${bI}DIRECTORY PACKAGE${eI}${eX} 755*b30d1939SAndy Fiddaman This will install in ${bI}DIRECTORY${eI}${bB}/bin${eB} and ${bI}DIRECTORY${eI}${bB}/lib${eB}. If you want to 756*b30d1939SAndy Fiddaman preserve the ${bB}arch/${eB}${bI}HOSTTYPE${eI} hierarchy under ${bI}DIRECTORY${eI} then omit the 757*b30d1939SAndy Fiddaman ${bB}flat${eB} argument. If you don't have ${Mnmake} then the following will do a 758*b30d1939SAndy Fiddaman flat install:${bX} 759*b30d1939SAndy Fiddaman cd \$INSTALLROOT 760*b30d1939SAndy Fiddaman cp -p -r bin lib include ${bI}DIRECTORY${eI}${eX}${eD} 761*b30d1939SAndy Fiddaman${bT}(8)${bD}To summarize, after the first time, the download cycle for the latest 762*b30d1939SAndy Fiddaman binary release is:${bX} 763*b30d1939SAndy Fiddaman bin/package setup binary${eX}${eD}${eL} 764*b30d1939SAndy Fiddaman 765*b30d1939SAndy Fiddaman${bH}Binary Package Installation Instructions -- Plan B${eH} 766*b30d1939SAndy Fiddaman${bL} 767*b30d1939SAndy Fiddaman${bT}(3)${bD}Create the subdirectory ${bB}lib/package/tgz${eB} and download all package archives 768*b30d1939SAndy Fiddaman into that directory.${eD} 769*b30d1939SAndy Fiddaman${bT}(4)${bD}If the ${bB}bin/package${eB} script does not exist then manually read the ${bB}INIT${eB} 770*b30d1939SAndy Fiddaman binary package:${bX} 771*b30d1939SAndy Fiddaman gunzip < lib/package/tgz/INIT.${bI}YYYY-MM-DD.HOSTTYPE${eI}.tgz | 772*b30d1939SAndy Fiddaman ${TAR} ${TARFLAGS}f -${eX} 773*b30d1939SAndy Fiddaman Note that some browsers automatically unzip downloaded without warning. 774*b30d1939SAndy Fiddaman If the gunzip fails try: 775*b30d1939SAndy Fiddaman ${TAR} ${TARFLAGS}f -${eX} lib/package/tgz/INIT.${bI}YYYY-MM-DD.HOSTTYPE${eI}.tgz 776*b30d1939SAndy Fiddaman If your system does not have ${Mtar} or ${Mgunzip} then download the ${Mratz} 777*b30d1939SAndy Fiddaman binary package:${bX} 778*b30d1939SAndy Fiddaman mkdir bin 779*b30d1939SAndy Fiddaman cp lib/package/tgz/ratz.${bI}YYYY-MM-DD.HOSTTYPE${eI}.exe bin/ratz 780*b30d1939SAndy Fiddaman chmod +x bin/ratz 781*b30d1939SAndy Fiddaman bin/ratz -lm < lib/package/tgz/INIT.${bI}YYYY-MM-DD/HOSTTYPE${eI}.tgz 782*b30d1939SAndy Fiddaman${bT}(5)${bD}Read all unread package archive(s):${bX} 783*b30d1939SAndy Fiddaman bin/package read${eX} 784*b30d1939SAndy Fiddaman Both source and binary packages will be read by this step.${eD}${eL}${eO}" 785*b30d1939SAndy Fiddaman ;; 786*b30d1939SAndy Fiddaman intro) echo "${bO} 787*b30d1939SAndy Fiddaman${bH}Package Hierarchy Details${eH} 788*b30d1939SAndy Fiddaman${bP} 789*b30d1939SAndy FiddamanThe package directory hierarchy is rooted at ${bB}\$PACKAGEROOT${eB}. All source and 790*b30d1939SAndy Fiddamanbinaries reside under this tree. A two level viewpath is used to separate 791*b30d1939SAndy Fiddamansource and binaries. The top view is architecture specific, the bottom view 792*b30d1939SAndy Fiddamanis shared source. All building is done in the architecture specific view; 793*b30d1939SAndy Fiddamanno source view files are intentionally changed. This means that many 794*b30d1939SAndy Fiddamandifferent binary architectures can be made from a single copy of the source. 795*b30d1939SAndy Fiddaman${bP} 796*b30d1939SAndy FiddamanEach package contains one or more components. Component source for the ${bI}FOO${eI} 797*b30d1939SAndy Fiddamancommand is in ${bB}\$PACKAGEROOT/src/cmd/${eB}${bI}FOO${eI}, and source for the ${bI}BAR${eI} library is 798*b30d1939SAndy Fiddamanin ${bB}\$PACKAGEROOT/src/lib/lib${eB}${bI}BAR${eI}. This naming is for convenience only; the 799*b30d1939SAndy Fiddamanunderlying makefiles handle inter-component build order. The ${bB}INIT${eB} component, 800*b30d1939SAndy Fiddamanwhich contains generic package support files, is always made first, then the 801*b30d1939SAndy Fiddamancomponents named ${bB}INIT${eB}*, then the order determined by the closure of component 802*b30d1939SAndy Fiddamanmakefile dependencies. 803*b30d1939SAndy Fiddaman${bP} 804*b30d1939SAndy Fiddaman${bB}\$PACKAGEROOT/lib/package${eB} contains package specific files. The package naming 805*b30d1939SAndy Fiddamanconvention is ${bI}GROUP${eI}[${bI}-PART${eI}]; e.g., ${bB}ast-base${eB}, ${bB}gnu-fileutils${eB}. The *${bB}.pkg${eB} files 806*b30d1939SAndy Fiddamanare ${bB}ast${eB} ${Mnmake} makefiles that contain the package name, package components, 807*b30d1939SAndy Fiddamanreferences to other packages, and a short package description. *${bB}.pkg${eB} files 808*b30d1939SAndy Fiddamanare used by ${bF}package write${eF} to generate new source and binary packages. 809*b30d1939SAndy Fiddaman${bP} 810*b30d1939SAndy Fiddaman${bB}\$PACKAGEROOT/lib/package/${eB}${bI}GROUP${eI}${bB}.lic${eB} files contain license information that 811*b30d1939SAndy Fiddamanis used by the ${bB}ast${eB} ${Mproto} and ${Mnmake} commands to generate source and 812*b30d1939SAndy Fiddamanbinary license strings. ${bI}GROUP${eI} is determined by the first ${bB}:PACKAGE:${eB} operator 813*b30d1939SAndy Fiddamanname listed in the component ${bB}nmake${eB} makefile. ${bI}GROUP${eI}${bB}.lic${eB} files are part of the 814*b30d1939SAndy Fiddamanlicensing documentation. Each component may have its own ${bB}LICENSE${eB} file that 815*b30d1939SAndy Fiddamanoverrides the ${bI}GROUP${eI}${bB}.lic${eB} file. The full text of the licenses are in the 816*b30d1939SAndy Fiddaman${bB}\$PACKAGEROOT/lib/package/LICENSES${eB} and ${bB}\$INSTALLROOT/lib/package/LICENSES${eB} 817*b30d1939SAndy Fiddamandirectories. 818*b30d1939SAndy Fiddaman${bP} 819*b30d1939SAndy FiddamanA few files are generated in ${bB}\$PACKAGEROOT/lib/package/gen${eB} and 820*b30d1939SAndy Fiddaman${bB}\$INSTALLROOT/lib/package/gen${eB}. ${bI}PACKAGE${eI}${bB}.ver${eB} contains one line consisting of${bX} 821*b30d1939SAndy Fiddaman ${bI}PACKAGE VERSION RELEASE${eI} 1${eX} 822*b30d1939SAndy Fiddamanfor the most recent instance of ${bI}PACKAGE${eI} read into ${bB}\$PACKAGEROOT${eB}, where 823*b30d1939SAndy Fiddaman${bI}PACKAGE${eI} is the package name, ${bI}VERSION${eI} is the ${bI}YYYY-MM-DD${eI} base version, 824*b30d1939SAndy Fiddamanand ${bI}RELEASE${eI} is ${bI}VERSION${eI} for the base release or ${bI}YYYY-MM-DD${eI} for delta releases. 825*b30d1939SAndy Fiddaman${bI}PACKAGE${eI}${bB}.req${eB} contains *${bB}.ver${eB} entries for the packages required by 826*b30d1939SAndy Fiddaman${bI}PACKAGE${eI}, except that the fourth field is 0 instead of 1. All packages 827*b30d1939SAndy Fiddamanexcept ${bB}INIT${eB} and ${Mratz} require the ${bB}INIT${eB} package. A simple sort of ${bI}PACKAGE${eI}${bB}.pkg${eB} 828*b30d1939SAndy Fiddamanand *${bB}.ver${eB} determines if the required package have been read in. Finally, 829*b30d1939SAndy Fiddaman${bI}PACKAGE${eI}${bB}.README${eB} contains the ${bB}README${eB} text for ${bI}PACKAGE${eI} and all its 830*b30d1939SAndy Fiddamancomponents. Included are all changes added to the component ${bB}RELEASE${eB}, 831*b30d1939SAndy Fiddaman${bB}CHANGES${eB} or ${bB}ChangeLog${eB} files dated since the two most recent base 832*b30d1939SAndy Fiddamanreleases. Component ${bB}RELEASE${eB} files contain tag lines of the form 833*b30d1939SAndy Fiddaman[${bI}CC${eI}]${bI}YY-MM-DD${eI} [ ${bI}TEXT${eI} ] (or ${Mdate} format dates) followed by README 834*b30d1939SAndy Fiddamantext, in reverse chronological order (newer entries at the top of the 835*b30d1939SAndy Fiddamanfile.) ${bF}package release${eF} generates this information, and 836*b30d1939SAndy Fiddaman${bF}package contents ...${eF} lists the descriptions and components. 837*b30d1939SAndy Fiddaman${bP} 838*b30d1939SAndy Fiddaman${bB}\$HOSTYPE${eB} names the current binary architecture and is determined by the 839*b30d1939SAndy Fiddamanoutput of ${bF}package${eF} (no arguments.) The ${bB}\$HOSTTYPE${eB} naming scheme is used 840*b30d1939SAndy Fiddamanto separate incompatible executable and object formats. All architecture 841*b30d1939SAndy Fiddamanspecific binaries are placed under ${bB}\$INSTALLROOT${eB} (${bB}\$PACKAGEROOT/arch/\$HOSTTYPE${eB}.) 842*b30d1939SAndy FiddamanThere are a few places that match against ${bB}\$HOSTTYPE${eB} when making binaries; these 843*b30d1939SAndy Fiddamanare limited to makefile compiler workarounds, e.g., if ${bB}\$HOSTTYPE${eB} matches 844*b30d1939SAndy Fiddaman'hp.*' then turn off the optimizer for these objects. All other architecture 845*b30d1939SAndy Fiddamandependent logic is handled either by ${bB}\$INSTALLROOT/bin/iffe${eB} or by component 846*b30d1939SAndy Fiddamanspecific configure scripts. Explicit ${bB}\$HOSTYPE${eB} values matching *,*cc*[,-*,...] 847*b30d1939SAndy Fiddamanoptionally set the default ${bB}CC${eB} and ${bB}CCFLAGS${eB}. This is handy for build 848*b30d1939SAndy Fiddamanfarms that support different compilers on the same architecture. 849*b30d1939SAndy Fiddaman${bP} 850*b30d1939SAndy FiddamanEach component contains an ${bB}ast${eB} ${Mnmake} makefile (either ${bB}Nmakefile${eB} or ${bB}Makefile${eB}) 851*b30d1939SAndy Fiddamanand a ${bI}MAM${eI} (make abstract machine) file (${bB}Mamfile${eB}.) A Mamfile contains a portable 852*b30d1939SAndy Fiddamanmakefile description that is used by ${bB}\$INSTALLROOT/bin/mamake${eB} to simulate 853*b30d1939SAndy Fiddaman${bB}nmake${eB}. Currently there is no support for old-make/gnu-make makefiles; if 854*b30d1939SAndy Fiddamanthe binaries are just being built then ${bB}mamake${eB} will suffice; if source or 855*b30d1939SAndy Fiddamanmakefile modifications are anticipated then ${bB}nmake${eB} (from the ${bB}ast-open${eB} or 856*b30d1939SAndy Fiddaman${bB}ast-base${eB} package) should be used. Mamfiles are automatically generated by 857*b30d1939SAndy Fiddaman${bF}package write${eF}. 858*b30d1939SAndy Fiddaman${bP} 859*b30d1939SAndy FiddamanMost component C source is prototyped. If ${bB}\$CC${eB} (default value ${bB}cc${eB}) is not a 860*b30d1939SAndy Fiddamanprototyping C compiler then ${bF}package make${eF} runs ${Mproto} on portions of the 861*b30d1939SAndy Fiddaman${bB}\$PACKAGEROOT/src${eB} tree and places the converted output files in the 862*b30d1939SAndy Fiddaman${bB}\$PACKAGEROOT/proto/src${eB} tree. Converted files are then viewpathed over the 863*b30d1939SAndy Fiddamanoriginal source. The ${bB}ast${eB} ${Mproto} command converts an ANSI C subset to code 864*b30d1939SAndy Fiddamanthat is compatible with K&R, ANSI, and C++ dialects. 865*b30d1939SAndy Fiddaman${bP} 866*b30d1939SAndy FiddamanAll scripts and commands under ${bB}\$PACKAGEROOT${eB} use ${bB}\$PATH${eB} relative pathnames; 867*b30d1939SAndy Fiddamanthere are no imbedded absolute pathnames. This means that binaries generated 868*b30d1939SAndy Fiddamanunder ${bB}\$PACKAGEROOT${eB} may be copied to a different root; users need only change 869*b30d1939SAndy Fiddamantheir ${bB}\$PATH${eB} variable to reference the new instalation root bin directory. 870*b30d1939SAndy Fiddaman${bF}package install${eF} installs binary packages in a new ${bB}\$INSTALLROOT${eB}. 871*b30d1939SAndy Fiddaman${eO}" 872*b30d1939SAndy Fiddaman ;; 873*b30d1939SAndy Fiddaman source) echo "${bO} 874*b30d1939SAndy Fiddaman${bH}Source Package Installation Instructions${eH} 875*b30d1939SAndy Fiddaman${bL} 876*b30d1939SAndy Fiddaman${bT}(1)${bD}Do not install packages as ${bI}root/super-user${eI}. Although some components may 877*b30d1939SAndy Fiddaman have setuid executables, few must be owned by ${bI}root${eI}. These are best 878*b30d1939SAndy Fiddaman changed manually when the security implications are understood.${eD} 879*b30d1939SAndy Fiddaman${bT}(2)${bD}Choose a package root directory and cd to it. This will be a local work 880*b30d1939SAndy Fiddaman area for all packages. 881*b30d1939SAndy Fiddaman${bT}(3)${bD}These instructions bypass the ${bI}click to download${eI} package links on the 882*b30d1939SAndy Fiddaman download site. If you already clicked, or if your system does not have 883*b30d1939SAndy Fiddaman ${Mcurl}, ${Mhurl}, ${Mlynx} or ${Mwget} then use the alternate instructions 884*b30d1939SAndy Fiddaman for (3),(4),(5) in plan ${bB}B${eB} below. Plan ${bB}B${eB} installs the ${Mhurl} 885*b30d1939SAndy Fiddaman script which works with ksh and modern bash. The top level URL is:${bX} 886*b30d1939SAndy Fiddaman URL=http://www.research.att.com/sw/download${eX}${eD} 887*b30d1939SAndy Fiddaman${bT}(4)${bD}If the ${bB}bin/package${eB} script does not exist then run:${bX} 888*b30d1939SAndy Fiddaman test -d bin || mkdir bin 889*b30d1939SAndy Fiddaman url=\$URL/package 890*b30d1939SAndy Fiddaman (wget -O - \$url||curl -L \$url||hurl \$url) > bin/package 891*b30d1939SAndy Fiddaman chmod +x bin/package${eX}${eD} 892*b30d1939SAndy Fiddaman${bT}(5)${bD}Determine the list of package names you want from the download site, then 893*b30d1939SAndy Fiddaman use the ${Mpackage} command to do the actual download:${bX} 894*b30d1939SAndy Fiddaman bin/package authorize \"${bI}NAME${eI}\" password \"${bI}PASSWORD${eI}\" \\ 895*b30d1939SAndy Fiddaman setup source \$URL ${bB}PACKAGE${eB} ...${eX} 896*b30d1939SAndy Fiddaman (Refer to the ${bB}AUTHORIZATION${eB} paragraph on the main download page for 897*b30d1939SAndy Fiddaman ${bI}NAME${eI}/${bI}PASSWORD${eI} details.) This downloads the closure of the latest 898*b30d1939SAndy Fiddaman source package(s); covered and up-to-date packages are not downloaded again unless 899*b30d1939SAndy Fiddaman ${bB}package force ...${eB} is specified. Package content is verified using ${bB}${checksum}${eB}. 900*b30d1939SAndy Fiddaman If the package root will contain only one architecture then you can install in ${bB}bin${eB} and 901*b30d1939SAndy Fiddaman ${bB}lib${eB} instead of ${bB}arch/${eB}${bI}HOSTTYPE${eI}${bB}/bin${eB} and ${bB}arch/${eB}${bI}HOSTTYPE${eI}${bB}/lib${eB} by running this 902*b30d1939SAndy Fiddaman instead:${bX} 903*b30d1939SAndy Fiddaman bin/package authorize \"${bI}NAME${eI}\" password \"${bI}PASSWORD${eI}\" \\ 904*b30d1939SAndy Fiddaman flat setup source \$URL ${bB}PACKAGE${eB} ...${eX} 905*b30d1939SAndy Fiddaman To update the same packages from the same URL run:${bX} 906*b30d1939SAndy Fiddaman bin/package setup source${eX}${eD} 907*b30d1939SAndy Fiddaman${bT}(6)${bD}Build and install; all generated files are placed under ${bB}arch/${eB}${bI}HOSTTYPE${eI} 908*b30d1939SAndy Fiddaman (${bB}\$INSTALLROOT${eB}), where ${bI}HOSTTYPE${eI} is the output of ${bB}bin/package${eB} (with no 909*b30d1939SAndy Fiddaman arguments.) ${bI}name=value${eI} arguments are supported; ${bB}CC${eB} and ${bB}debug=1${eB} (compile 910*b30d1939SAndy Fiddaman with -g instead of -O) are likely candidates. The output is written to 911*b30d1939SAndy Fiddaman the terminal and captured in ${bB}\$INSTALLROOT/lib/package/gen/make.out${eB}:${bX} 912*b30d1939SAndy Fiddaman bin/package make${eX}${eD} 913*b30d1939SAndy Fiddaman${bT}(7)${bD}List make results and interesting errors:${bX} 914*b30d1939SAndy Fiddaman bin/package results${eX} 915*b30d1939SAndy Fiddaman Run the regression tests:${bX} 916*b30d1939SAndy Fiddaman bin/package test${eX} 917*b30d1939SAndy Fiddaman List test results and errors:${bX} 918*b30d1939SAndy Fiddaman bin/package results test${eX}${eD} 919*b30d1939SAndy Fiddaman${bT}(8)${bD}The generated binaries are position independent, i.e., they do not 920*b30d1939SAndy Fiddaman contain hard-coded paths. However, commands with related files, like 921*b30d1939SAndy Fiddaman ${Mfile} and ${Mnmake}, require the path of the bin directory to be 922*b30d1939SAndy Fiddaman exported in ${bB}PATH${eb}.${eD} 923*b30d1939SAndy Fiddaman${bT}(9)${bD}You can run the binaries directly from the package root, or you can 924*b30d1939SAndy Fiddaman install them in a public root after you are satisfied with the make and 925*b30d1939SAndy Fiddaman test actions (requires the ${bI}AT${Camp}T${eI} ${Mnmake} command):${bX} 926*b30d1939SAndy Fiddaman bin/package flat install ${bI}DIRECTORY PACKAGE${eI}${eX} 927*b30d1939SAndy Fiddaman This will install in ${bI}DIRECTORY${eI}${bB}/bin${eB} and ${bI}DIRECTORY${eI}${bB}/lib${eB}. If you want to 928*b30d1939SAndy Fiddaman preserve the ${bB}arch/${eB}${bI}HOSTTYPE${eI} hierarchy under ${bI}DIRECTORY${eI} then omit the 929*b30d1939SAndy Fiddaman ${bB}flat${eB} argument. If you don't have ${Mnmake} then the following will do a 930*b30d1939SAndy Fiddaman flat install:${bX} 931*b30d1939SAndy Fiddaman cd \$INSTALLROOT 932*b30d1939SAndy Fiddaman cp -p -r bin lib include ${bI}DIRECTORY${eI}${eX}${eD} 933*b30d1939SAndy Fiddaman${bT}(10)${bD}To summarize, after the first time the download, build, and test cycle 934*b30d1939SAndy Fiddaman for the latest source release is:${bX} 935*b30d1939SAndy Fiddaman bin/package setup source 936*b30d1939SAndy Fiddaman bin/package make 937*b30d1939SAndy Fiddaman bin/package test${eX}${eD}${eL} 938*b30d1939SAndy Fiddaman 939*b30d1939SAndy Fiddaman${bH}Source Package Installation Instructions -- Plan B${eH} 940*b30d1939SAndy Fiddaman${bL} 941*b30d1939SAndy Fiddaman${bT}(3)${bD}Create the subdirectory ${bB}lib/package/tgz${eB} and download all package archives 942*b30d1939SAndy Fiddaman into that directory.${eD} 943*b30d1939SAndy Fiddaman${bT}(4)${bD}If the ${bB}bin/package${eB} script does not exist then manually read the ${bB}INIT${eB} 944*b30d1939SAndy Fiddaman source package:${bX} 945*b30d1939SAndy Fiddaman gunzip < lib/package/tgz/INIT.${bI}YYYY-MM-DD${eI}.tgz | ${TAR} ${TARFLAGS}f -${eX} 946*b30d1939SAndy Fiddaman Note that some browsers automatically unzip downloaded without warning. 947*b30d1939SAndy Fiddaman If the gunzip fails try: 948*b30d1939SAndy Fiddaman ${TAR} ${TARFLAGS}f -${eX} lib/package/tgz/INIT.${bI}YYYY-MM-DD${eI}.tgz 949*b30d1939SAndy Fiddaman If your system does not have ${Mtar} or ${Mgunzip} then download the ${Mratz} 950*b30d1939SAndy Fiddaman source package, compile it, and manually read the ${bB}INIT${eB} 951*b30d1939SAndy Fiddaman source package:${bX} 952*b30d1939SAndy Fiddaman mkdir bin 953*b30d1939SAndy Fiddaman cp lib/package/tgz/ratz.${bI}YYYY-MM-DD${eI}.c lib/package/tgz/ratz.c 954*b30d1939SAndy Fiddaman cc -o bin/ratz lib/package/tgz/ratz.c 955*b30d1939SAndy Fiddaman bin/ratz -lm < lib/package/tgz/INIT.${bI}YYYY-MM-DD${eI}.tgz 956*b30d1939SAndy Fiddaman${bT}(5)${bD}Read all unread package archive(s):${bX} 957*b30d1939SAndy Fiddaman bin/package read${eX} 958*b30d1939SAndy Fiddaman Both source and binary packages will be read by this step.${eD}${eL}${eO}" 959*b30d1939SAndy Fiddaman ;; 960*b30d1939SAndy Fiddaman *) echo "Usage: $command [ qualifier ... ] [ action ] [ arg ... ] [ n=v ... ] 961*b30d1939SAndy Fiddaman 962*b30d1939SAndy Fiddaman The $command command controls source and binary packages. It must be run 963*b30d1939SAndy Fiddaman within the package root directory tree. See \"$command help intro\" for 964*b30d1939SAndy Fiddaman details. In the following, PACKAGE names either a package or a component 965*b30d1939SAndy Fiddaman within a package; if omitted, all packages are operated on. The default 966*b30d1939SAndy Fiddaman action is \"host type\". 967*b30d1939SAndy Fiddaman 968*b30d1939SAndy Fiddaman qualifier: 969*b30d1939SAndy Fiddaman authorize NAME Remote authorization name or license acceptance phrase. 970*b30d1939SAndy Fiddaman debug|environment Show environment and actions; do not execute. 971*b30d1939SAndy Fiddaman flat Collapse \$INSTALLROOT { bin fun include lib } onto \$PACKAGEROOT. 972*b30d1939SAndy Fiddaman force Force the action to override saved state. 973*b30d1939SAndy Fiddaman never Run make -N; otherwise show other actions. 974*b30d1939SAndy Fiddaman only Only operate on the specified packages. 975*b30d1939SAndy Fiddaman password PASSWORD Remote authorization or license acceptance password. 976*b30d1939SAndy Fiddaman quiet Do not list captured make and test action output. 977*b30d1939SAndy Fiddaman show Run make -n; otherwise show other actions. 978*b30d1939SAndy Fiddaman DEBUG Trace the package script actions in detail for debugging. 979*b30d1939SAndy Fiddaman action: 980*b30d1939SAndy Fiddaman admin [ all ] [ db FILE ] [ on PATTERN ] [ action ... ] 981*b30d1939SAndy Fiddaman Apply ACTION ... to the hosts listed in FILE. If FILE is 982*b30d1939SAndy Fiddaman omitted then "admin.db" is assumed. The caller must have rcp(1) 983*b30d1939SAndy Fiddaman and rsh(1) or scp(1) and ssh(1) access to the hosts. Output 984*b30d1939SAndy Fiddaman for the action is saved per-host in ACTION.log/HOST. Logs 985*b30d1939SAndy Fiddaman can be viewed by \"package admin [on HOST] results [ACTION]\". 986*b30d1939SAndy Fiddaman By default only local PACKAGEROOT hosts are selected from FILE; 987*b30d1939SAndy Fiddaman \"all\" selects all hosts. \"on PATTERN\" selects only 988*b30d1939SAndy Fiddaman hosts matching the | separated PATTERN. FILE contains four 989*b30d1939SAndy Fiddaman types of lines. Blank lines and lines beginning with # are 990*b30d1939SAndy Fiddaman ignored. Lines starting with id=value are variable assignments. 991*b30d1939SAndy Fiddaman Set admin_ping to local conventions if \"$admin_ping\" fails. 992*b30d1939SAndy Fiddaman If a package list is not specified on the command line the 993*b30d1939SAndy Fiddaman action applies to all packages; a variable assigment 994*b30d1939SAndy Fiddaman package=list applies action to the packages in list for 995*b30d1939SAndy Fiddaman subsequent hosts in FILE. The remaining line type is a host 996*b30d1939SAndy Fiddaman description consisting of 6 tab separated fields. The first 3 997*b30d1939SAndy Fiddaman are mandatory; the remaining 3 are updated by the admin action: 998*b30d1939SAndy Fiddaman hosttype 999*b30d1939SAndy Fiddaman The host type as reported by package. 1000*b30d1939SAndy Fiddaman [user@]host 1001*b30d1939SAndy Fiddaman The host name and optionally user name for rcp(1) 1002*b30d1939SAndy Fiddaman and rsh(1) access. 1003*b30d1939SAndy Fiddaman [remote:[[master]:]]PACKAGEROOT 1004*b30d1939SAndy Fiddaman The absolute remote package root directory and 1005*b30d1939SAndy Fiddaman optionally the remote prorocol (rsh or ssh) if 1006*b30d1939SAndy Fiddaman the directory is on a different server than the 1007*b30d1939SAndy Fiddaman master package root directory. If 1008*b30d1939SAndy Fiddaman lib/package/admin/$admin_env exists under 1009*b30d1939SAndy Fiddaman this directory then it is sourced by sh(1) 1010*b30d1939SAndy Fiddaman before ACTION is done. If this field begins with - 1011*b30d1939SAndy Fiddaman then the host is ignored. If this field contains 1012*b30d1939SAndy Fiddaman : then ditto(1) is used to sync the remote src 1013*b30d1939SAndy Fiddaman directory hierarchy to the local one. If [master]: 1014*b30d1939SAndy Fiddaman is specified then the sync is deferred to the 1015*b30d1939SAndy Fiddaman master host. If master is omitted (two :) then 1016*b30d1939SAndy Fiddaman the sync is disabled. These directories must exist 1017*b30d1939SAndy Fiddaman on the remote side: lib/package, src/cmd, src/lib. 1018*b30d1939SAndy Fiddaman date YYMMDD of the last action. 1019*b30d1939SAndy Fiddaman date Elapsed wall time of the last action. 1020*b30d1939SAndy Fiddaman M T W The admin action make, test and write action error 1021*b30d1939SAndy Fiddaman counts. A non-numeric value in any of these fields 1022*b30d1939SAndy Fiddaman disables the corresponding action. 1023*b30d1939SAndy Fiddaman owner The owner contact information. 1024*b30d1939SAndy Fiddaman attributes 1025*b30d1939SAndy Fiddaman NAME=VALUE attributes. Should at least contain 1026*b30d1939SAndy Fiddaman cc=compiler-version. 1027*b30d1939SAndy Fiddaman clean | clobber 1028*b30d1939SAndy Fiddaman Delete the arch/HOSTTYPE hierarchy; this deletes all generated 1029*b30d1939SAndy Fiddaman files and directories for HOSTTYPE. The heirarchy can be rebuilt 1030*b30d1939SAndy Fiddaman by package make.] 1031*b30d1939SAndy Fiddaman contents [ package ... ] 1032*b30d1939SAndy Fiddaman List description and components for PACKAGE on the standard 1033*b30d1939SAndy Fiddaman output. 1034*b30d1939SAndy Fiddaman copyright [ package ... ] 1035*b30d1939SAndy Fiddaman List the general copyright notice(s) for PACKAGE on the 1036*b30d1939SAndy Fiddaman standard output. Note that individual components in PACKAGE 1037*b30d1939SAndy Fiddaman may contain additional or replacement notices. 1038*b30d1939SAndy Fiddaman export [ VARIABLE ... ] 1039*b30d1939SAndy Fiddaman List NAME=VALUE for each VARIABLE, one per line. If the 1040*b30d1939SAndy Fiddaman \"only\" attribute is specified then only the variable 1041*b30d1939SAndy Fiddaman values are listed. If no variables are specified then 1042*b30d1939SAndy Fiddaman $env are assumed. 1043*b30d1939SAndy Fiddaman help [ ACTION ] 1044*b30d1939SAndy Fiddaman Display help text on the standard error [ standard output 1045*b30d1939SAndy Fiddaman for ACTION ]. 1046*b30d1939SAndy Fiddaman host [ canon cpu name rating type ... ] 1047*b30d1939SAndy Fiddaman List architecture/implementation dependent host information 1048*b30d1939SAndy Fiddaman on the standard output. type is listed if no attributes are 1049*b30d1939SAndy Fiddaman specified. Information is listed on a single line in attributes 1050*b30d1939SAndy Fiddaman order. The attributes are: 1051*b30d1939SAndy Fiddaman canon The next argument is a host type name to be 1052*b30d1939SAndy Fiddaman converted to package syntax. 1053*b30d1939SAndy Fiddaman cpu The number of cpus; 1 if the host is not a 1054*b30d1939SAndy Fiddaman multiprocessor. 1055*b30d1939SAndy Fiddaman name The host name. 1056*b30d1939SAndy Fiddaman rating The cpu rating in pseudo mips; the value is useful 1057*b30d1939SAndy Fiddaman useful only in comparisons with rating values of 1058*b30d1939SAndy Fiddaman other hosts. Other than a vax rating fixed at 1, 1059*b30d1939SAndy Fiddaman ratings can vary wildly but consistently from 1060*b30d1939SAndy Fiddaman vendor mips ratings. cc(1) may be required to 1061*b30d1939SAndy Fiddaman determine the rating. 1062*b30d1939SAndy Fiddaman type The host type, usually of the form 1063*b30d1939SAndy Fiddaman vendor.architecture, with an optional trailing 1064*b30d1939SAndy Fiddaman -version. The main theme is that type names within 1065*b30d1939SAndy Fiddaman a family of architectures are named in a similar, 1066*b30d1939SAndy Fiddaman predictable style. Os point release information is 1067*b30d1939SAndy Fiddaman avoided as much as possible, but vendor resistance 1068*b30d1939SAndy Fiddaman to release incompatibilities has for the most part 1069*b30d1939SAndy Fiddaman been futile. 1070*b30d1939SAndy Fiddaman html [ ACTION ] 1071*b30d1939SAndy Fiddaman Display html help text on the standard error [ standard output 1072*b30d1939SAndy Fiddaman for ACTION ]. 1073*b30d1939SAndy Fiddaman install [ ARCHITECTURE ... ] DIR [ PACKAGE ... ] 1074*b30d1939SAndy Fiddaman Copy the package binary hierarchy to DIR. If ARCHITECTURE is 1075*b30d1939SAndy Fiddaman omitted then all architectures are installed. If the \"flat\" 1076*b30d1939SAndy Fiddaman attribute is specified then exactly one ARCHITECTURE must be 1077*b30d1939SAndy Fiddaman specified; this architecture will be installed in DIR without 1078*b30d1939SAndy Fiddaman the \"arch/HOSTTYPE\" directory prefixes. Otherwise each 1079*b30d1939SAndy Fiddaman architecture will be installed in a separate \"arch/HOSTTYPE\" 1080*b30d1939SAndy Fiddaman subdirectory of DIR. The ARCHITECTURE - names the current 1081*b30d1939SAndy Fiddaman architecture. DIR must be an existing directory. If PACKAGE 1082*b30d1939SAndy Fiddaman is omitted then all binary packages are installed. This action 1083*b30d1939SAndy Fiddaman requires nmake. 1084*b30d1939SAndy Fiddaman license [ package ... ] 1085*b30d1939SAndy Fiddaman List the source license(s) for PACKAGE on the standard output. 1086*b30d1939SAndy Fiddaman Note that individual components in PACKAGE may contain 1087*b30d1939SAndy Fiddaman additional or replacement licenses. 1088*b30d1939SAndy Fiddaman list [ PACKAGE ... ] 1089*b30d1939SAndy Fiddaman List the name, version and prerequisites for PACKAGE on the 1090*b30d1939SAndy Fiddaman standard output. 1091*b30d1939SAndy Fiddaman make [ PACKAGE ] [ OPTION ... ] [ TARGET ... ] 1092*b30d1939SAndy Fiddaman Build and install. The default TARGET is install, which 1093*b30d1939SAndy Fiddaman makes and installs all packages. If the standard output 1094*b30d1939SAndy Fiddaman is a terminal then the output is also captured in 1095*b30d1939SAndy Fiddaman \$INSTALLROOT/lib/package/gen/make.out. The build is done 1096*b30d1939SAndy Fiddaman in the \$INSTALLROOT directory tree viewpathed on top of 1097*b30d1939SAndy Fiddaman the \$PACKAGEROOT directory tree. If \"flat\" is specified then 1098*b30d1939SAndy Fiddaman the \$INSTALLROOT { bin fun include lib } directories are 1099*b30d1939SAndy Fiddaman linked to the same directories in the package root. Only 1100*b30d1939SAndy Fiddaman one architecture may be flat. Leaf directory names matching 1101*b30d1939SAndy Fiddaman the |-separated shell pattern \$MAKESKIP are ignored. The 1102*b30d1939SAndy Fiddaman view action is done before making. OPTION operands are 1103*b30d1939SAndy Fiddaman passed to the underlying make command. 1104*b30d1939SAndy Fiddaman read [ package ... | archive ... ] 1105*b30d1939SAndy Fiddaman Read the named package archive(s). Must be run from the 1106*b30d1939SAndy Fiddaman package root directory. Archives are searched for in . 1107*b30d1939SAndy Fiddaman and lib/package/tgz. Each package is read only once. The 1108*b30d1939SAndy Fiddaman file lib/package/tgz/package[.type].tim tracks the read time. 1109*b30d1939SAndy Fiddaman See the write action for archive naming conventions. Text 1110*b30d1939SAndy Fiddaman file archive member are assumed to be ASCII or UTF-8 encoded. 1111*b30d1939SAndy Fiddaman regress diff(1) the current and previous package test results. 1112*b30d1939SAndy Fiddaman release [ [CC]YY-MM-DD [ [cc]yy-mm-dd ] ] [ package ] 1113*b30d1939SAndy Fiddaman Display recent changes since [CC]YY-MM-DD (up to [cc]yy-mm-dd), 1114*b30d1939SAndy Fiddaman where - means lowest (or highest.) If no dates are specified 1115*b30d1939SAndy Fiddaman then changes for the last 4 months are listed. PACKAGE may 1116*b30d1939SAndy Fiddaman be a package or component name. 1117*b30d1939SAndy Fiddaman remove PACKAGE 1118*b30d1939SAndy Fiddaman Remove files installed for PACKAGE. 1119*b30d1939SAndy Fiddaman results [ path ] [ old ] [ make | test ] 1120*b30d1939SAndy Fiddaman List results and interesting messages captured by the most 1121*b30d1939SAndy Fiddaman recent make (default), test or write action. old specifies the 1122*b30d1939SAndy Fiddaman previous results, if any (current and previous results are 1123*b30d1939SAndy Fiddaman retained.) $HOME/.pkgresults, if it exists, must contain an 1124*b30d1939SAndy Fiddaman egrep(1) expression of result lines to be ignored. failed lists 1125*b30d1939SAndy Fiddaman failures only and path lists the results file path only. 1126*b30d1939SAndy Fiddaman setup [ beta ] [ binary ] [ source ] [ ARCHITECTURE ... ] [ URL ] [ PACKAGE ... ] 1127*b30d1939SAndy Fiddaman The action initializes the current directory as a package root, 1128*b30d1939SAndy Fiddaman runs the update action to download new or out of date packages, 1129*b30d1939SAndy Fiddaman and runs the read action on those packages. If \"flat\" is 1130*b30d1939SAndy Fiddaman specified then the \$INSTALLROOT { bin fun include lib } 1131*b30d1939SAndy Fiddaman directories are linked to the same directories in the package 1132*b30d1939SAndy Fiddaman root. Only one architecture may be flat. See the update and 1133*b30d1939SAndy Fiddaman read actions for argument details. 1134*b30d1939SAndy Fiddaman test [ PACKAGE ] 1135*b30d1939SAndy Fiddaman Run the regression tests for PACKAGE. If the standard output 1136*b30d1939SAndy Fiddaman is a terminal then the output is also captured in 1137*b30d1939SAndy Fiddaman \$INSTALLROOT/lib/package/gen/test.out. In general a package 1138*b30d1939SAndy Fiddaman must be made before it can be tested. Components tested with 1139*b30d1939SAndy Fiddaman the \bregress\b(1) command require \bksh93\b. If only is 1140*b30d1939SAndy Fiddaman also specified then only the listed package components are 1141*b30d1939SAndy Fiddaman tested, otherwise the closure of the components is tested. 1142*b30d1939SAndy Fiddaman update [ beta ] [ binary ] [ source ] [ ARCHITECTURE ... ] [ URL ] [ PACKAGE ... ] 1143*b30d1939SAndy Fiddaman Download the latest release of the selected and required 1144*b30d1939SAndy Fiddaman packages from URL (e.g., 1145*b30d1939SAndy Fiddaman http://www.research.att.com/sw/download) into the directory 1146*b30d1939SAndy Fiddaman \$PACKAGEROOT/lib/package/tgz. beta acesses beta packages; 1147*b30d1939SAndy Fiddaman download these at your own risk. If ARCHITECTURE is omitted 1148*b30d1939SAndy Fiddaman then only architectures already present in the tgz directory 1149*b30d1939SAndy Fiddaman will be downloaded. If ARCHITECTURE is - then all posted 1150*b30d1939SAndy Fiddaman architectures will be downloaded. If URL matches *.url then 1151*b30d1939SAndy Fiddaman it is interpreted as a file containing shell variable 1152*b30d1939SAndy Fiddaman assignments for url, authorize and password. If URL is 1153*b30d1939SAndy Fiddaman omitted then the definitions for url, authorize and password 1154*b30d1939SAndy Fiddaman in \$PACKAGEROOT/lib/package/tgz/$default_url, if it exists, 1155*b30d1939SAndy Fiddaman are used. If \$PACKAGEROOT/lib/package/tgz/$default_url does 1156*b30d1939SAndy Fiddaman not exist then it is initialized with the current url, 1157*b30d1939SAndy Fiddaman authorize and password values and read permission for the 1158*b30d1939SAndy Fiddaman current user only. If PACKAGE is omitted then only 1159*b30d1939SAndy Fiddaman packages already present in the tgz directory will be 1160*b30d1939SAndy Fiddaman downloaded. If PACKAGE is - then all posted packages will be 1161*b30d1939SAndy Fiddaman downloaded. If source and binary are omitted then both source 1162*b30d1939SAndy Fiddaman and binary packages will be downloaded. If \bonly\b is 1163*b30d1939SAndy Fiddaman specified then only the named packages are updated; otherwise 1164*b30d1939SAndy Fiddaman the closure of required packages is updated. This action 1165*b30d1939SAndy Fiddaman requires wget(1), lynx(1), curl(1) or a shell that supports 1166*b30d1939SAndy Fiddaman io to /dev/tcp/HOST/PORT. 1167*b30d1939SAndy Fiddaman use [ uid | PACKAGE | . [ 32 | 64 ] | 32 | 64 | - ] [ COMMAND ... ] 1168*b30d1939SAndy Fiddaman Run COMMAND or an interactive shell if COMMAND is omitted, with 1169*b30d1939SAndy Fiddaman the environment initialized for using the package (can you say 1170*b30d1939SAndy Fiddaman shared library without cussing?) If uid or PACKAGE or . is 1171*b30d1939SAndy Fiddaman specified then it is used to determine a \$PACKAGEROOT, 1172*b30d1939SAndy Fiddaman possibly different from the current directory. For example, to 1173*b30d1939SAndy Fiddaman try out bozo's package: \"package use bozo\". In this case the 1174*b30d1939SAndy Fiddaman command may be run from any directory. If the file 1175*b30d1939SAndy Fiddaman \$INSTALLROOT/lib/package/profile is readable then it is 1176*b30d1939SAndy Fiddaman sourced to initialize the environment. 32 or 64 implies 1177*b30d1939SAndy Fiddaman \$PACKAGEROOT of . and specifies the target architecture word 1178*b30d1939SAndy Fiddaman size (which may be silently ignored.) 1179*b30d1939SAndy Fiddaman verify [ PACKAGE ] 1180*b30d1939SAndy Fiddaman Verify installed binary files against the checksum files in 1181*b30d1939SAndy Fiddaman \$INSTALLROOT/lib/package/gen/*.sum. The checksum files contain 1182*b30d1939SAndy Fiddaman mode, user and group information. If the checksum matches 1183*b30d1939SAndy Fiddaman for a given file then the mode, user and group are changed 1184*b30d1939SAndy Fiddaman as necessary to match the checksum entry. A warning is printed 1185*b30d1939SAndy Fiddaman on the standard error for each mismatch. Requires the ast 1186*b30d1939SAndy Fiddaman package cksum(1) command. 1187*b30d1939SAndy Fiddaman view 1188*b30d1939SAndy Fiddaman Initialize the architecture specific viewpath hierarchy. The 1189*b30d1939SAndy Fiddaman make action implicitly calls this action. If \"flat\" is specified 1190*b30d1939SAndy Fiddaman then the \$INSTALLROOT { bin fun include lib } directories are 1191*b30d1939SAndy Fiddaman linked to the same directories in the package root. Only one 1192*b30d1939SAndy Fiddaman architecture may be flat. 1193*b30d1939SAndy Fiddaman write [closure] [cyg|exp|lcl|pkg|rpm|tgz|tst] [base|delta] 1194*b30d1939SAndy Fiddaman [binary|runtime|source] PACKAGE 1195*b30d1939SAndy Fiddaman Write a package archive for PACKAGE. All work is done in the 1196*b30d1939SAndy Fiddaman \$PACKAGEROOT/lib/package directory. FORMAT-specific files 1197*b30d1939SAndy Fiddaman are placed in the FORMAT subdirectory. A PACKAGE[.TYPE].tim 1198*b30d1939SAndy Fiddaman file in this directory tracksthe write time and prevents a 1199*b30d1939SAndy Fiddaman package from being read in the same root it was written. If 1200*b30d1939SAndy Fiddaman more than one file is generated for a particular FORMAT then 1201*b30d1939SAndy Fiddaman those files are placed in the FORMAT/PACKAGE subdirectory. 1202*b30d1939SAndy Fiddaman File names in the FORMAT subdirectory will contain the package 1203*b30d1939SAndy Fiddaman name, a YYYY-MM-DD date, and for binary packages, HOSTTYPE. 1204*b30d1939SAndy Fiddaman If PACKAGE is omitted then an ordered list of previously 1205*b30d1939SAndy Fiddaman written packages is generated. If \"only\" is specified then 1206*b30d1939SAndy Fiddaman only the named packages will be written; otherwise 1207*b30d1939SAndy Fiddaman prerequisite packages are written first. Package components 1208*b30d1939SAndy Fiddaman must be listed in PACKAGE.pkg. FORMAT may be one of: 1209*b30d1939SAndy Fiddaman cyg generate a cygwin package 1210*b30d1939SAndy Fiddaman exp generate an exptools(1) maintainer source archive 1211*b30d1939SAndy Fiddaman and NPD file in the exp subdirectory, suitable for 1212*b30d1939SAndy Fiddaman expmake(1); support files are placed in the 1213*b30d1939SAndy Fiddaman exp/PACKAGE subdirectory 1214*b30d1939SAndy Fiddaman lcl generate a package archive or delta in the lcl 1215*b30d1939SAndy Fiddaman subdirectory, suitable for restoration into the 1216*b30d1939SAndy Fiddaman primary source tree (no source licence annotation) 1217*b30d1939SAndy Fiddaman pkg generate a pkgmk(1) package, suitable for pkgadd(1) 1218*b30d1939SAndy Fiddaman rpm generate an rpm(1) package 1219*b30d1939SAndy Fiddaman tgz generate a gzip(1) tar(1) package archive; this is 1220*b30d1939SAndy Fiddaman the default 1221*b30d1939SAndy Fiddaman tst generate tgz FORMAT package archive in the tst 1222*b30d1939SAndy Fiddaman subdirectory; version state files are not updated 1223*b30d1939SAndy Fiddaman The package type must be one of source, binary or runtime. 1224*b30d1939SAndy Fiddaman A source package contains the source needed to build the 1225*b30d1939SAndy Fiddaman corresponding binary package. A binary package includes the 1226*b30d1939SAndy Fiddaman libraries and headers needed for compiling and linking 1227*b30d1939SAndy Fiddaman against the public interfaces. A runtime package contains 1228*b30d1939SAndy Fiddaman the commands and required dynamic libraries. A package may 1229*b30d1939SAndy Fiddaman be either a base or delta. A base package contains a 1230*b30d1939SAndy Fiddaman complete copy of all components. A delta package contains 1231*b30d1939SAndy Fiddaman only changes from a previous base package. Delta recipients 1232*b30d1939SAndy Fiddaman must have the ast pax(1) command (in the ast-base package.) 1233*b30d1939SAndy Fiddaman If neither base nor delta is specified, then the current 1234*b30d1939SAndy Fiddaman base is overwritten if there are no deltas referring to the 1235*b30d1939SAndy Fiddaman current base. Only the tgz and lcl formats support delta. 1236*b30d1939SAndy Fiddaman If base is specified then a new base and two delta archives 1237*b30d1939SAndy Fiddaman are generated: one delta to generate the new base from the 1238*b30d1939SAndy Fiddaman old, and one delta to generate the old base from the new; 1239*b30d1939SAndy Fiddaman the old base is then removed. If delta is specified then a 1240*b30d1939SAndy Fiddaman new delta referring to the current base is written. 1241*b30d1939SAndy Fiddaman package.pkg may reference other packages. By default a 1242*b30d1939SAndy Fiddaman pointer to those packages is written. The recipient package 1243*b30d1939SAndy Fiddaman read will then check that all required packages have been 1244*b30d1939SAndy Fiddaman downloaded. If closure is specified then the components for 1245*b30d1939SAndy Fiddaman all package references are included in the generated 1246*b30d1939SAndy Fiddaman package. This may be useful for lcl and versioning. All 1247*b30d1939SAndy Fiddaman formats but lcl annotate each source file (not already 1248*b30d1939SAndy Fiddaman annotated) with a license comment as it is written to the 1249*b30d1939SAndy Fiddaman package archive using proto(1). 1250*b30d1939SAndy Fiddaman name=value: 1251*b30d1939SAndy Fiddaman variable definition: typically CC=cc or CCFLAGS=-g." 1252*b30d1939SAndy Fiddaman ;; 1253*b30d1939SAndy Fiddaman esac 1254*b30d1939SAndy Fiddaman exit $code 1255*b30d1939SAndy Fiddaman ;; 1256*b30d1939SAndy Fiddaman *=*) set DEFAULT host type "$@" 1257*b30d1939SAndy Fiddaman ;; 1258*b30d1939SAndy Fiddaman *) echo "Usage: $command [ options ] [ qualifier ... ] [ action ] [ arg ... ] [ n=v ... ]" >&2 1259*b30d1939SAndy Fiddaman exit 2 1260*b30d1939SAndy Fiddaman ;; 1261*b30d1939SAndy Fiddaman esac 1262*b30d1939SAndy Fiddaman global="$global $1" 1263*b30d1939SAndy Fiddaman shift 1264*b30d1939SAndy Fiddamandone 1265*b30d1939SAndy Fiddaman 1266*b30d1939SAndy Fiddaman# gather HOSTTYPE *,* options 1267*b30d1939SAndy Fiddaman# ,*cc*,-*,... set CC and CCFLAGS 1268*b30d1939SAndy Fiddaman 1269*b30d1939SAndy Fiddamanhostopts() 1270*b30d1939SAndy Fiddaman{ 1271*b30d1939SAndy Fiddaman _ifs_=$IFS 1272*b30d1939SAndy Fiddaman IFS=, 1273*b30d1939SAndy Fiddaman set '' $HOSTTYPE 1274*b30d1939SAndy Fiddaman IFS=$_ifs_ 1275*b30d1939SAndy Fiddaman shift 1276*b30d1939SAndy Fiddaman while : 1277*b30d1939SAndy Fiddaman do case $# in 1278*b30d1939SAndy Fiddaman 0|1) break ;; 1279*b30d1939SAndy Fiddaman esac 1280*b30d1939SAndy Fiddaman shift 1281*b30d1939SAndy Fiddaman case $1 in 1282*b30d1939SAndy Fiddaman *cc*) CC=$1 1283*b30d1939SAndy Fiddaman while : 1284*b30d1939SAndy Fiddaman do case $# in 1285*b30d1939SAndy Fiddaman 0|1) break ;; 1286*b30d1939SAndy Fiddaman esac 1287*b30d1939SAndy Fiddaman case $2 in 1288*b30d1939SAndy Fiddaman -*) case $assign_CCFLAGS in 1289*b30d1939SAndy Fiddaman ?*) assign_CCFLAGS="$assign_CCFLAGS " ;; 1290*b30d1939SAndy Fiddaman esac 1291*b30d1939SAndy Fiddaman assign_CCFLAGS="$assign_CCFLAGS$2" 1292*b30d1939SAndy Fiddaman shift 1293*b30d1939SAndy Fiddaman ;; 1294*b30d1939SAndy Fiddaman *) break 1295*b30d1939SAndy Fiddaman ;; 1296*b30d1939SAndy Fiddaman esac 1297*b30d1939SAndy Fiddaman done 1298*b30d1939SAndy Fiddaman ;; 1299*b30d1939SAndy Fiddaman esac 1300*b30d1939SAndy Fiddaman done 1301*b30d1939SAndy Fiddaman} 1302*b30d1939SAndy Fiddaman 1303*b30d1939SAndy Fiddaman# collect command line targets and definitions 1304*b30d1939SAndy Fiddaman 1305*b30d1939SAndy Fiddamancase $_PACKAGE_HOSTTYPE_ in 1306*b30d1939SAndy Fiddaman?*) HOSTTYPE=$_PACKAGE_HOSTTYPE_ 1307*b30d1939SAndy Fiddaman KEEP_HOSTTYPE=1 1308*b30d1939SAndy Fiddaman ;; 1309*b30d1939SAndy Fiddaman*) KEEP_HOSTTYPE=0 1310*b30d1939SAndy Fiddaman ;; 1311*b30d1939SAndy Fiddamanesac 1312*b30d1939SAndy FiddamanKEEP_PACKAGEROOT=0 1313*b30d1939SAndy FiddamanKEEP_SHELL=0 1314*b30d1939SAndy FiddamanUSER_VPATH= 1315*b30d1939SAndy Fiddamanargs= 1316*b30d1939SAndy Fiddamanassign= 1317*b30d1939SAndy Fiddamanassign_CCFLAGS= 1318*b30d1939SAndy Fiddamanfor i 1319*b30d1939SAndy Fiddamando case $i in 1320*b30d1939SAndy Fiddaman *:*=*) args="$args $i" 1321*b30d1939SAndy Fiddaman continue 1322*b30d1939SAndy Fiddaman ;; 1323*b30d1939SAndy Fiddaman *=*) eval `echo ' ' "$i" | sed 's,^[ ]*\([^=]*\)=\(.*\),n=\1 v='\''\2'\'','` 1324*b30d1939SAndy Fiddaman ;; 1325*b30d1939SAndy Fiddaman esac 1326*b30d1939SAndy Fiddaman case $i in 1327*b30d1939SAndy Fiddaman AR=*|LD=*|NM=*) 1328*b30d1939SAndy Fiddaman assign="$assign $n='$v'" 1329*b30d1939SAndy Fiddaman eval $n='$'v 1330*b30d1939SAndy Fiddaman ;; 1331*b30d1939SAndy Fiddaman CC=*) eval $n='$'v 1332*b30d1939SAndy Fiddaman ;; 1333*b30d1939SAndy Fiddaman CCFLAGS=*) 1334*b30d1939SAndy Fiddaman eval $n='$'v 1335*b30d1939SAndy Fiddaman assign_CCFLAGS="CCFLAGS=\"\$CCFLAGS\"" 1336*b30d1939SAndy Fiddaman ;; 1337*b30d1939SAndy Fiddaman HOSTTYPE=*) 1338*b30d1939SAndy Fiddaman eval $n='$'v 1339*b30d1939SAndy Fiddaman case $HOSTTYPE in 1340*b30d1939SAndy Fiddaman ?*) KEEP_HOSTTYPE=1 ;; 1341*b30d1939SAndy Fiddaman esac 1342*b30d1939SAndy Fiddaman ;; 1343*b30d1939SAndy Fiddaman HURL=*) eval $n='$'v 1344*b30d1939SAndy Fiddaman ;; 1345*b30d1939SAndy Fiddaman PACKAGEROOT=*) 1346*b30d1939SAndy Fiddaman eval $n='$'v 1347*b30d1939SAndy Fiddaman case $PACKAGEROOT in 1348*b30d1939SAndy Fiddaman ?*) KEEP_PACKAGEROOT=1 ;; 1349*b30d1939SAndy Fiddaman esac 1350*b30d1939SAndy Fiddaman ;; 1351*b30d1939SAndy Fiddaman SHELL=*)eval $n='$'v 1352*b30d1939SAndy Fiddaman case $SHELL in 1353*b30d1939SAndy Fiddaman ?*) KEEP_SHELL=1 ;; 1354*b30d1939SAndy Fiddaman esac 1355*b30d1939SAndy Fiddaman ;; 1356*b30d1939SAndy Fiddaman TAR=*) eval $n='$'v 1357*b30d1939SAndy Fiddaman ;; 1358*b30d1939SAndy Fiddaman TARFLAGS=*) 1359*b30d1939SAndy Fiddaman eval $n='$'v 1360*b30d1939SAndy Fiddaman ;; 1361*b30d1939SAndy Fiddaman VPATH=*)eval USER_$n='$'v 1362*b30d1939SAndy Fiddaman ;; 1363*b30d1939SAndy Fiddaman 'debug=1') 1364*b30d1939SAndy Fiddaman makeflags="$makeflags --debug-symbols" 1365*b30d1939SAndy Fiddaman ;; 1366*b30d1939SAndy Fiddaman 'strip=1') 1367*b30d1939SAndy Fiddaman makeflags="$makeflags --strip-symbols" 1368*b30d1939SAndy Fiddaman ;; 1369*b30d1939SAndy Fiddaman *=*) assign="$assign $n='$v'" 1370*b30d1939SAndy Fiddaman ;; 1371*b30d1939SAndy Fiddaman *) args="$args $i" 1372*b30d1939SAndy Fiddaman ;; 1373*b30d1939SAndy Fiddaman esac 1374*b30d1939SAndy Fiddamandone 1375*b30d1939SAndy Fiddamancase $HOSTTYPE in 1376*b30d1939SAndy Fiddaman*,*) hostopts $HOSTTYPE ;; 1377*b30d1939SAndy Fiddamanesac 1378*b30d1939SAndy Fiddamancase $assign_CCFLAGS in 1379*b30d1939SAndy Fiddaman?*) assign="$assign $assign_CCFLAGS" 1380*b30d1939SAndy Fiddamanesac 1381*b30d1939SAndy Fiddamancase $CC in 1382*b30d1939SAndy Fiddaman''|cc) ;; 1383*b30d1939SAndy Fiddaman*) export CC ;; 1384*b30d1939SAndy Fiddamanesac 1385*b30d1939SAndy Fiddaman 1386*b30d1939SAndy Fiddaman# grab action specific args 1387*b30d1939SAndy Fiddaman 1388*b30d1939SAndy Fiddamancase $action in 1389*b30d1939SAndy Fiddamanadmin) while : 1390*b30d1939SAndy Fiddaman do case $# in 1391*b30d1939SAndy Fiddaman 0) set list 1392*b30d1939SAndy Fiddaman break 1393*b30d1939SAndy Fiddaman ;; 1394*b30d1939SAndy Fiddaman esac 1395*b30d1939SAndy Fiddaman case $1 in 1396*b30d1939SAndy Fiddaman all) admin_all=1 1397*b30d1939SAndy Fiddaman ;; 1398*b30d1939SAndy Fiddaman db) case $# in 1399*b30d1939SAndy Fiddaman 1) echo $command: $action: $1: db file argument expected >&2 1400*b30d1939SAndy Fiddaman exit 1 1401*b30d1939SAndy Fiddaman ;; 1402*b30d1939SAndy Fiddaman esac 1403*b30d1939SAndy Fiddaman shift 1404*b30d1939SAndy Fiddaman admin_db=$1 1405*b30d1939SAndy Fiddaman ;; 1406*b30d1939SAndy Fiddaman on) case $# in 1407*b30d1939SAndy Fiddaman 1) echo $command: $action: $1: host pattern argument expected >&2 1408*b30d1939SAndy Fiddaman exit 1 1409*b30d1939SAndy Fiddaman ;; 1410*b30d1939SAndy Fiddaman esac 1411*b30d1939SAndy Fiddaman shift 1412*b30d1939SAndy Fiddaman admin_on=$1 1413*b30d1939SAndy Fiddaman ;; 1414*b30d1939SAndy Fiddaman *) break 1415*b30d1939SAndy Fiddaman ;; 1416*b30d1939SAndy Fiddaman esac 1417*b30d1939SAndy Fiddaman shift 1418*b30d1939SAndy Fiddaman done 1419*b30d1939SAndy Fiddaman admin_action=$1 1420*b30d1939SAndy Fiddaman admin_args=$* 1421*b30d1939SAndy Fiddaman for i 1422*b30d1939SAndy Fiddaman do case $i in 1423*b30d1939SAndy Fiddaman debug|environment|force|never|only|quiet|show|DEBUG) 1424*b30d1939SAndy Fiddaman ;; 1425*b30d1939SAndy Fiddaman *) admin_action=$i 1426*b30d1939SAndy Fiddaman break 1427*b30d1939SAndy Fiddaman ;; 1428*b30d1939SAndy Fiddaman esac 1429*b30d1939SAndy Fiddaman done 1430*b30d1939SAndy Fiddaman ;; 1431*b30d1939SAndy Fiddamansetup) PACKAGEROOT=${PWD:-`pwd`} 1432*b30d1939SAndy Fiddaman export PACKAGEROOT 1433*b30d1939SAndy Fiddaman KEEP_PACKAGEROOT=1 1434*b30d1939SAndy Fiddaman ;; 1435*b30d1939SAndy Fiddamanuse) case $1 in 1436*b30d1939SAndy Fiddaman .|32|64)case $1 in 1437*b30d1939SAndy Fiddaman 32|64) bit=$1 ;; 1438*b30d1939SAndy Fiddaman esac 1439*b30d1939SAndy Fiddaman shift 1440*b30d1939SAndy Fiddaman 1441*b30d1939SAndy Fiddaman # HOSTTYPE specific setup 1442*b30d1939SAndy Fiddaman 1443*b30d1939SAndy Fiddaman case $HOSTTYPE in 1444*b30d1939SAndy Fiddaman win32.*)sys=uwin 1445*b30d1939SAndy Fiddaman wow=`uname -i` 1446*b30d1939SAndy Fiddaman case $bit in 1447*b30d1939SAndy Fiddaman 32) case $HOSTTYPE in 1448*b30d1939SAndy Fiddaman *-64) HOSTTYPE=${HOSTTYPE%-64} ;; 1449*b30d1939SAndy Fiddaman esac 1450*b30d1939SAndy Fiddaman case $wow in 1451*b30d1939SAndy Fiddaman */32) ;; 1452*b30d1939SAndy Fiddaman *) vpath / /$bit ;; 1453*b30d1939SAndy Fiddaman esac 1454*b30d1939SAndy Fiddaman ;; 1455*b30d1939SAndy Fiddaman 64) case $HOSTTYPE in 1456*b30d1939SAndy Fiddaman *-64) ;; 1457*b30d1939SAndy Fiddaman *) HOSTTYPE=$HOSTTYPE-64 ;; 1458*b30d1939SAndy Fiddaman esac 1459*b30d1939SAndy Fiddaman case $wow in 1460*b30d1939SAndy Fiddaman */32) echo $command: cannot build $bit-bit on $wow $sys >&2; exit 2 ;; 1461*b30d1939SAndy Fiddaman *) vpath / /$bit ;; 1462*b30d1939SAndy Fiddaman esac 1463*b30d1939SAndy Fiddaman ;; 1464*b30d1939SAndy Fiddaman esac 1465*b30d1939SAndy Fiddaman case $bit in 1466*b30d1939SAndy Fiddaman '') PS1="($sys) " ;; 1467*b30d1939SAndy Fiddaman *) PS1="($sys-$bit) " ;; 1468*b30d1939SAndy Fiddaman esac 1469*b30d1939SAndy Fiddaman 1470*b30d1939SAndy Fiddaman $exec umask 002 1471*b30d1939SAndy Fiddaman $exec unset MAKESKIP 1472*b30d1939SAndy Fiddaman 1473*b30d1939SAndy Fiddaman $exec export P=$PWD 1474*b30d1939SAndy Fiddaman $exec export A=$P/arch/$HOSTTYPE 1475*b30d1939SAndy Fiddaman 1476*b30d1939SAndy Fiddaman $exec export CDPATH=:..:$A/src/cmd:$A/src/lib:$A/src/uwin:$P/lib/package 1477*b30d1939SAndy Fiddaman $exec export INSTALLROOT=$A 1478*b30d1939SAndy Fiddaman $exec export PACKAGEROOT=$P 1479*b30d1939SAndy Fiddaman $exec export PATH=$A/bin:$P/bin:$PATH 1480*b30d1939SAndy Fiddaman $exec export PS1="$PS1" 1481*b30d1939SAndy Fiddaman $exec export VPATH=$A:$P 1482*b30d1939SAndy Fiddaman $exec export nativepp=/usr/lib 1483*b30d1939SAndy Fiddaman 1484*b30d1939SAndy Fiddaman if test '' != "$INSTALLROOT" -a -d $INSTALLROOT/include/ast 1485*b30d1939SAndy Fiddaman then $exec export PACKAGE_ast=$INSTALLROOT 1486*b30d1939SAndy Fiddaman elif test -d ${PWD%/*}/ast/arch/$HOSTTYPE 1487*b30d1939SAndy Fiddaman then $exec export PACKAGE_ast=${PWD%/*}/ast/arch/$HOSTTYPE 1488*b30d1939SAndy Fiddaman fi 1489*b30d1939SAndy Fiddaman 1490*b30d1939SAndy Fiddaman # run the command 1491*b30d1939SAndy Fiddaman 1492*b30d1939SAndy Fiddaman case $# in 1493*b30d1939SAndy Fiddaman 0) case $show in 1494*b30d1939SAndy Fiddaman ':') $exec exec $SHELL ;; 1495*b30d1939SAndy Fiddaman esac 1496*b30d1939SAndy Fiddaman ;; 1497*b30d1939SAndy Fiddaman *) $exec exec $SHELL -c "$@" 1498*b30d1939SAndy Fiddaman ;; 1499*b30d1939SAndy Fiddaman esac 1500*b30d1939SAndy Fiddaman exit 1501*b30d1939SAndy Fiddaman ;; 1502*b30d1939SAndy Fiddaman esac 1503*b30d1939SAndy Fiddaman PACKAGEROOT=${PWD:-`pwd`} 1504*b30d1939SAndy Fiddaman $show export PACKAGEROOT 1505*b30d1939SAndy Fiddaman esac 1506*b30d1939SAndy Fiddaman ;; 1507*b30d1939SAndy Fiddamanesac 1508*b30d1939SAndy Fiddaman 1509*b30d1939SAndy Fiddaman# true if arg is a valid PACKAGEROOT 1510*b30d1939SAndy Fiddaman 1511*b30d1939SAndy Fiddamanpackageroot() # dir 1512*b30d1939SAndy Fiddaman{ 1513*b30d1939SAndy Fiddaman test -d $1/lib/$command -o -x $1/bin/$command 1514*b30d1939SAndy Fiddaman} 1515*b30d1939SAndy Fiddaman 1516*b30d1939SAndy Fiddaman# true if arg is executable 1517*b30d1939SAndy Fiddaman 1518*b30d1939SAndy Fiddamanexecutable() # [!] command 1519*b30d1939SAndy Fiddaman{ 1520*b30d1939SAndy Fiddaman case $1 in 1521*b30d1939SAndy Fiddaman '!') test ! -x "$2" -a ! -x "$2.exe"; return ;; 1522*b30d1939SAndy Fiddaman *) test -x "$1" -o -x "$1.exe"; return ;; 1523*b30d1939SAndy Fiddaman esac 1524*b30d1939SAndy Fiddaman} 1525*b30d1939SAndy Fiddaman 1526*b30d1939SAndy Fiddaman# initialize SHELLMAGIC 1527*b30d1939SAndy Fiddaman# tangible proof of cygwin's disdain for unix (well, this and execrate) 1528*b30d1939SAndy Fiddaman 1529*b30d1939SAndy Fiddamanshellmagic() 1530*b30d1939SAndy Fiddaman{ 1531*b30d1939SAndy Fiddaman case $SHELLMAGIC in 1532*b30d1939SAndy Fiddaman '') ;; 1533*b30d1939SAndy Fiddaman -) if test -f /emx/bin/sh.exe 1534*b30d1939SAndy Fiddaman then SHELLMAGIC='#!/emx/bin/sh.exe'$nl 1535*b30d1939SAndy Fiddaman elif test -f /bin/env.exe 1536*b30d1939SAndy Fiddaman then SHELLMAGIC='#!/bin/env sh'$nl 1537*b30d1939SAndy Fiddaman else SHELLMAGIC= 1538*b30d1939SAndy Fiddaman fi 1539*b30d1939SAndy Fiddaman ;; 1540*b30d1939SAndy Fiddaman esac 1541*b30d1939SAndy Fiddaman} 1542*b30d1939SAndy Fiddaman 1543*b30d1939SAndy Fiddaman# true if arg is executable command on $PATH 1544*b30d1939SAndy Fiddaman 1545*b30d1939SAndy Fiddamanonpath() # command 1546*b30d1939SAndy Fiddaman{ 1547*b30d1939SAndy Fiddaman _onpath_b=$1 1548*b30d1939SAndy Fiddaman case $_onpath_b in 1549*b30d1939SAndy Fiddaman /*) if executable $_onpath_b 1550*b30d1939SAndy Fiddaman then _onpath_=$_onpath_b 1551*b30d1939SAndy Fiddaman return 0 1552*b30d1939SAndy Fiddaman fi 1553*b30d1939SAndy Fiddaman return 1 1554*b30d1939SAndy Fiddaman ;; 1555*b30d1939SAndy Fiddaman esac 1556*b30d1939SAndy Fiddaman IFS=':' 1557*b30d1939SAndy Fiddaman set '' $PATH 1558*b30d1939SAndy Fiddaman IFS=$ifs 1559*b30d1939SAndy Fiddaman shift 1560*b30d1939SAndy Fiddaman for _onpath_d 1561*b30d1939SAndy Fiddaman do case $_onpath_d in 1562*b30d1939SAndy Fiddaman '') _onpath_d=. ;; 1563*b30d1939SAndy Fiddaman esac 1564*b30d1939SAndy Fiddaman if executable "$_onpath_d/$_onpath_b" 1565*b30d1939SAndy Fiddaman then _onpath_=$_onpath_d/$_onpath_b 1566*b30d1939SAndy Fiddaman return 0 1567*b30d1939SAndy Fiddaman fi 1568*b30d1939SAndy Fiddaman done 1569*b30d1939SAndy Fiddaman return 1 1570*b30d1939SAndy Fiddaman} 1571*b30d1939SAndy Fiddaman 1572*b30d1939SAndy Fiddaman# true if no nmake or nmake not from AT&T or nmake too old 1573*b30d1939SAndy Fiddaman 1574*b30d1939SAndy Fiddamannonmake() # nmake 1575*b30d1939SAndy Fiddaman{ 1576*b30d1939SAndy Fiddaman _nonmake_version=`( $1 -n -f - 'print $(MAKEVERSION:@/.*AT&T.* //:/-//G:@/.* .*/19960101/)' . ) </dev/null 2>/dev/null || echo 19840919` 1577*b30d1939SAndy Fiddaman if test $_nonmake_version -lt 20001031 1578*b30d1939SAndy Fiddaman then return 0 1579*b30d1939SAndy Fiddaman fi 1580*b30d1939SAndy Fiddaman return 1 1581*b30d1939SAndy Fiddaman} 1582*b30d1939SAndy Fiddaman 1583*b30d1939SAndy Fiddaman# determine local host attributes 1584*b30d1939SAndy Fiddaman 1585*b30d1939SAndy Fiddamanhostinfo() # attribute ... 1586*b30d1939SAndy Fiddaman{ 1587*b30d1939SAndy Fiddaman case $DEBUG in 1588*b30d1939SAndy Fiddaman 1) set -x ;; 1589*b30d1939SAndy Fiddaman esac 1590*b30d1939SAndy Fiddaman map= 1591*b30d1939SAndy Fiddaman something= 1592*b30d1939SAndy Fiddaman path=$PATH 1593*b30d1939SAndy Fiddaman for i in $ccs 1594*b30d1939SAndy Fiddaman do PATH=$PATH:$i 1595*b30d1939SAndy Fiddaman done 1596*b30d1939SAndy Fiddaman for i in $use 1597*b30d1939SAndy Fiddaman do for j in $org 1598*b30d1939SAndy Fiddaman do PATH=$PATH:$i/$j/bin 1599*b30d1939SAndy Fiddaman done 1600*b30d1939SAndy Fiddaman PATH=$PATH:$i/bin 1601*b30d1939SAndy Fiddaman done 1602*b30d1939SAndy Fiddaman # LD_LIBRARY_PATH may be out of sync with PATH here 1603*b30d1939SAndy Fiddaman case $SED in 1604*b30d1939SAndy Fiddaman '') SED=sed 1605*b30d1939SAndy Fiddaman $SED 1d < /dev/null > /dev/null 2>&1 || 1606*b30d1939SAndy Fiddaman for dir in /bin /usr/bin 1607*b30d1939SAndy Fiddaman do if test -x $dir/$SED 1608*b30d1939SAndy Fiddaman then SED=$dir/$SED 1609*b30d1939SAndy Fiddaman break 1610*b30d1939SAndy Fiddaman fi 1611*b30d1939SAndy Fiddaman done 1612*b30d1939SAndy Fiddaman TR=tr 1613*b30d1939SAndy Fiddaman $TR < /dev/null > /dev/null 2>&1 || 1614*b30d1939SAndy Fiddaman for dir in /bin /usr/bin 1615*b30d1939SAndy Fiddaman do if test -x $dir/$TR 1616*b30d1939SAndy Fiddaman then TR=$dir/$TR 1617*b30d1939SAndy Fiddaman break 1618*b30d1939SAndy Fiddaman fi 1619*b30d1939SAndy Fiddaman done 1620*b30d1939SAndy Fiddaman ;; 1621*b30d1939SAndy Fiddaman esac 1622*b30d1939SAndy Fiddaman case $PACKAGE_PATH in 1623*b30d1939SAndy Fiddaman ?*) for i in `echo $PACKAGE_PATH | $SED 's,:, ,g'` 1624*b30d1939SAndy Fiddaman do PATH=$PATH:$i/bin 1625*b30d1939SAndy Fiddaman done 1626*b30d1939SAndy Fiddaman ;; 1627*b30d1939SAndy Fiddaman esac 1628*b30d1939SAndy Fiddaman 1629*b30d1939SAndy Fiddaman # validate the args 1630*b30d1939SAndy Fiddaman 1631*b30d1939SAndy Fiddaman canon= 1632*b30d1939SAndy Fiddaman cc=$CC 1633*b30d1939SAndy Fiddaman for info 1634*b30d1939SAndy Fiddaman do case $canon in 1635*b30d1939SAndy Fiddaman -) canon=$info 1636*b30d1939SAndy Fiddaman ;; 1637*b30d1939SAndy Fiddaman *) case $info in 1638*b30d1939SAndy Fiddaman */*|*[cC][cC]) 1639*b30d1939SAndy Fiddaman cc=$info 1640*b30d1939SAndy Fiddaman ;; 1641*b30d1939SAndy Fiddaman canon) canon=- 1642*b30d1939SAndy Fiddaman something=1 1643*b30d1939SAndy Fiddaman ;; 1644*b30d1939SAndy Fiddaman cpu|name|rating|type) 1645*b30d1939SAndy Fiddaman something=1 1646*b30d1939SAndy Fiddaman ;; 1647*b30d1939SAndy Fiddaman *) echo "$command: $action: $info: unknown attribute" >&2 1648*b30d1939SAndy Fiddaman exit 1 1649*b30d1939SAndy Fiddaman ;; 1650*b30d1939SAndy Fiddaman esac 1651*b30d1939SAndy Fiddaman ;; 1652*b30d1939SAndy Fiddaman esac 1653*b30d1939SAndy Fiddaman done 1654*b30d1939SAndy Fiddaman case $canon in 1655*b30d1939SAndy Fiddaman -) echo "$command: $action: canon: host type name expected" >&2 1656*b30d1939SAndy Fiddaman exit 1 1657*b30d1939SAndy Fiddaman ;; 1658*b30d1939SAndy Fiddaman esac 1659*b30d1939SAndy Fiddaman case $something in 1660*b30d1939SAndy Fiddaman "") set "$@" type ;; 1661*b30d1939SAndy Fiddaman esac 1662*b30d1939SAndy Fiddaman case $DEBUG in 1663*b30d1939SAndy Fiddaman '') exec 9>&2 1664*b30d1939SAndy Fiddaman exec 2>/dev/null 1665*b30d1939SAndy Fiddaman ;; 1666*b30d1939SAndy Fiddaman esac 1667*b30d1939SAndy Fiddaman 1668*b30d1939SAndy Fiddaman # compute the info 1669*b30d1939SAndy Fiddaman 1670*b30d1939SAndy Fiddaman _hostinfo_= 1671*b30d1939SAndy Fiddaman for info 1672*b30d1939SAndy Fiddaman do 1673*b30d1939SAndy Fiddaman case $info in 1674*b30d1939SAndy Fiddaman cpu) case $NPROC in 1675*b30d1939SAndy Fiddaman [123456789]*) 1676*b30d1939SAndy Fiddaman _hostinfo_="$_hostinfo_ $NPROC" 1677*b30d1939SAndy Fiddaman continue 1678*b30d1939SAndy Fiddaman ;; 1679*b30d1939SAndy Fiddaman esac 1680*b30d1939SAndy Fiddaman cpu=`grep -ic '^processor[ ][ ]*:[ ]*[0123456789]' /proc/cpuinfo` 1681*b30d1939SAndy Fiddaman case $cpu in 1682*b30d1939SAndy Fiddaman [123456789]*) 1683*b30d1939SAndy Fiddaman _hostinfo_="$_hostinfo_ $cpu" 1684*b30d1939SAndy Fiddaman continue 1685*b30d1939SAndy Fiddaman ;; 1686*b30d1939SAndy Fiddaman esac 1687*b30d1939SAndy Fiddaman cpu=1 1688*b30d1939SAndy Fiddaman # exact match 1689*b30d1939SAndy Fiddaman set \ 1690*b30d1939SAndy Fiddaman hinv '^Processor [0123456789]' \ 1691*b30d1939SAndy Fiddaman psrinfo 'on-line' \ 1692*b30d1939SAndy Fiddaman 'cat /reg/LOCAL_MACHINE/Hardware/Description/System/CentralProcessor' '.' \ 1693*b30d1939SAndy Fiddaman 'cat /proc/registry/HKEY_LOCAL_MACHINE/Hardware/Description/System/CentralProcessor' '.' \ 1694*b30d1939SAndy Fiddaman 1695*b30d1939SAndy Fiddaman while : 1696*b30d1939SAndy Fiddaman do case $# in 1697*b30d1939SAndy Fiddaman 0) break ;; 1698*b30d1939SAndy Fiddaman esac 1699*b30d1939SAndy Fiddaman i=`$1 2>/dev/null | grep -c "$2"` 1700*b30d1939SAndy Fiddaman case $i in 1701*b30d1939SAndy Fiddaman [123456789]*) 1702*b30d1939SAndy Fiddaman cpu=$i 1703*b30d1939SAndy Fiddaman break 1704*b30d1939SAndy Fiddaman ;; 1705*b30d1939SAndy Fiddaman esac 1706*b30d1939SAndy Fiddaman shift;shift 1707*b30d1939SAndy Fiddaman done 1708*b30d1939SAndy Fiddaman case $cpu in 1709*b30d1939SAndy Fiddaman 0|1) set \ 1710*b30d1939SAndy Fiddaman /bin/mpstat 1711*b30d1939SAndy Fiddaman 1712*b30d1939SAndy Fiddaman while : 1713*b30d1939SAndy Fiddaman do case $# in 1714*b30d1939SAndy Fiddaman 0) break ;; 1715*b30d1939SAndy Fiddaman esac 1716*b30d1939SAndy Fiddaman if executable $1 1717*b30d1939SAndy Fiddaman then case `$1 | grep -ic '^cpu '` in 1718*b30d1939SAndy Fiddaman 1) cpu=`$1 | grep -ic '^ *[0123456789][0123456789]* '` 1719*b30d1939SAndy Fiddaman break 1720*b30d1939SAndy Fiddaman ;; 1721*b30d1939SAndy Fiddaman esac 1722*b30d1939SAndy Fiddaman fi 1723*b30d1939SAndy Fiddaman shift 1724*b30d1939SAndy Fiddaman done 1725*b30d1939SAndy Fiddaman ;; 1726*b30d1939SAndy Fiddaman esac 1727*b30d1939SAndy Fiddaman case $cpu in 1728*b30d1939SAndy Fiddaman 0|1) # token match 1729*b30d1939SAndy Fiddaman set \ 1730*b30d1939SAndy Fiddaman /usr/kvm/mpstat 'cpu[0123456789]' \ 1731*b30d1939SAndy Fiddaman /usr/etc/cpustatus 'enable' \ 1732*b30d1939SAndy Fiddaman /usr/alliant/showsched 'CE' \ 1733*b30d1939SAndy Fiddaman 'ls /config/hw/system/cpu' 'cpu' \ 1734*b30d1939SAndy Fiddaman prtconf 'cpu-unit' \ 1735*b30d1939SAndy Fiddaman 1736*b30d1939SAndy Fiddaman while : 1737*b30d1939SAndy Fiddaman do case $# in 1738*b30d1939SAndy Fiddaman 0) break ;; 1739*b30d1939SAndy Fiddaman esac 1740*b30d1939SAndy Fiddaman i=`$1 2>/dev/null | $TR ' ' ' 1741*b30d1939SAndy Fiddaman 1742*b30d1939SAndy Fiddaman' | grep -c "^$2"` 1743*b30d1939SAndy Fiddaman case $i in 1744*b30d1939SAndy Fiddaman [123456789]*) 1745*b30d1939SAndy Fiddaman cpu=$i 1746*b30d1939SAndy Fiddaman break 1747*b30d1939SAndy Fiddaman ;; 1748*b30d1939SAndy Fiddaman esac 1749*b30d1939SAndy Fiddaman shift;shift 1750*b30d1939SAndy Fiddaman done 1751*b30d1939SAndy Fiddaman ;; 1752*b30d1939SAndy Fiddaman esac 1753*b30d1939SAndy Fiddaman case $cpu in 1754*b30d1939SAndy Fiddaman 0|1) # special match 1755*b30d1939SAndy Fiddaman set \ 1756*b30d1939SAndy Fiddaman \ 1757*b30d1939SAndy Fiddaman hinv \ 1758*b30d1939SAndy Fiddaman '/^[0123456789][0123456789]* .* Processors*$/' \ 1759*b30d1939SAndy Fiddaman '/[ ].*//' \ 1760*b30d1939SAndy Fiddaman \ 1761*b30d1939SAndy Fiddaman /usr/bin/hostinfo \ 1762*b30d1939SAndy Fiddaman '/^[0123456789][0123456789]* .* physically available\.*$/' \ 1763*b30d1939SAndy Fiddaman '/[ ].*//' \ 1764*b30d1939SAndy Fiddaman 1765*b30d1939SAndy Fiddaman while : 1766*b30d1939SAndy Fiddaman do case $# in 1767*b30d1939SAndy Fiddaman 0) break ;; 1768*b30d1939SAndy Fiddaman esac 1769*b30d1939SAndy Fiddaman i=`$1 2>/dev/null | $SED -e "${2}!d" -e "s${3}"` 1770*b30d1939SAndy Fiddaman case $i in 1771*b30d1939SAndy Fiddaman [123456789]*) 1772*b30d1939SAndy Fiddaman cpu=$i 1773*b30d1939SAndy Fiddaman break 1774*b30d1939SAndy Fiddaman ;; 1775*b30d1939SAndy Fiddaman esac 1776*b30d1939SAndy Fiddaman shift;shift;shift 1777*b30d1939SAndy Fiddaman done 1778*b30d1939SAndy Fiddaman ;; 1779*b30d1939SAndy Fiddaman esac 1780*b30d1939SAndy Fiddaman case $cpu in 1781*b30d1939SAndy Fiddaman 0|1) cpu=`( 1782*b30d1939SAndy Fiddaman cd ${TMPDIR:-/tmp} 1783*b30d1939SAndy Fiddaman tmp=hi$$ 1784*b30d1939SAndy Fiddaman trap 'rm -f $tmp.*' 0 1 2 1785*b30d1939SAndy Fiddaman cat > $tmp.c <<! 1786*b30d1939SAndy Fiddaman#include <stdio.h> 1787*b30d1939SAndy Fiddaman#include <pthread.h> 1788*b30d1939SAndy Fiddamanint main() 1789*b30d1939SAndy Fiddaman{ 1790*b30d1939SAndy Fiddaman printf("%d\n", pthread_num_processors_np()); 1791*b30d1939SAndy Fiddaman return 0; 1792*b30d1939SAndy Fiddaman} 1793*b30d1939SAndy Fiddaman! 1794*b30d1939SAndy Fiddaman for o in -lpthread '' 1795*b30d1939SAndy Fiddaman do if $CC $o -O -o $tmp.exe $tmp.c $o >/dev/null 2>&1 || 1796*b30d1939SAndy Fiddaman gcc $o -O -o $tmp.exe $tmp.c $o >/dev/null 2>&1 1797*b30d1939SAndy Fiddaman then ./$tmp.exe 1798*b30d1939SAndy Fiddaman break 1799*b30d1939SAndy Fiddaman fi 1800*b30d1939SAndy Fiddaman done 1801*b30d1939SAndy Fiddaman )` 1802*b30d1939SAndy Fiddaman case $cpu in 1803*b30d1939SAndy Fiddaman [0123456789]*) ;; 1804*b30d1939SAndy Fiddaman *) cpu=1 ;; 1805*b30d1939SAndy Fiddaman esac 1806*b30d1939SAndy Fiddaman ;; 1807*b30d1939SAndy Fiddaman esac 1808*b30d1939SAndy Fiddaman _hostinfo_="$_hostinfo_ $cpu" 1809*b30d1939SAndy Fiddaman ;; 1810*b30d1939SAndy Fiddaman name) _name_=`hostname || uname -n || cat /etc/whoami || echo local` 1811*b30d1939SAndy Fiddaman _hostinfo_="$_hostinfo_ $_name_" 1812*b30d1939SAndy Fiddaman ;; 1813*b30d1939SAndy Fiddaman rating) for rating in `grep -i ^bogomips /proc/cpuinfo 2>/dev/null | $SED -e 's,.*:[ ]*,,' -e 's,\(...*\)\..*,\1,' -e 's,\(\..\).*,\1,'` 1814*b30d1939SAndy Fiddaman do case $rating in 1815*b30d1939SAndy Fiddaman [0123456789]*) break ;; 1816*b30d1939SAndy Fiddaman esac 1817*b30d1939SAndy Fiddaman done 1818*b30d1939SAndy Fiddaman case $rating in 1819*b30d1939SAndy Fiddaman [0123456789]*) ;; 1820*b30d1939SAndy Fiddaman *) cd ${TMPDIR:-/tmp} 1821*b30d1939SAndy Fiddaman tmp=hi$$ 1822*b30d1939SAndy Fiddaman trap 'rm -f $tmp.*' 0 1 2 1823*b30d1939SAndy Fiddaman cat > $tmp.c <<! 1824*b30d1939SAndy Fiddaman#include <stdio.h> 1825*b30d1939SAndy Fiddaman#include <sys/types.h> 1826*b30d1939SAndy Fiddaman#if TD || TZ 1827*b30d1939SAndy Fiddaman#include <sys/time.h> 1828*b30d1939SAndy Fiddaman#else 1829*b30d1939SAndy Fiddamanextern time_t time(); 1830*b30d1939SAndy Fiddaman#endif 1831*b30d1939SAndy Fiddamanint main() 1832*b30d1939SAndy Fiddaman{ 1833*b30d1939SAndy Fiddaman register unsigned long i; 1834*b30d1939SAndy Fiddaman register unsigned long j; 1835*b30d1939SAndy Fiddaman register unsigned long k; 1836*b30d1939SAndy Fiddaman unsigned long l; 1837*b30d1939SAndy Fiddaman unsigned long m; 1838*b30d1939SAndy Fiddaman unsigned long t; 1839*b30d1939SAndy Fiddaman int x; 1840*b30d1939SAndy Fiddaman#if TD || TZ 1841*b30d1939SAndy Fiddaman struct timeval b; 1842*b30d1939SAndy Fiddaman struct timeval e; 1843*b30d1939SAndy Fiddaman#if TZ 1844*b30d1939SAndy Fiddaman struct timezone z; 1845*b30d1939SAndy Fiddaman#endif 1846*b30d1939SAndy Fiddaman#endif 1847*b30d1939SAndy Fiddaman l = 500; 1848*b30d1939SAndy Fiddaman m = 890; 1849*b30d1939SAndy Fiddaman x = 0; 1850*b30d1939SAndy Fiddaman for (;;) 1851*b30d1939SAndy Fiddaman { 1852*b30d1939SAndy Fiddaman#if TD || TZ 1853*b30d1939SAndy Fiddaman#if TZ 1854*b30d1939SAndy Fiddaman gettimeofday(&b, &z); 1855*b30d1939SAndy Fiddaman#else 1856*b30d1939SAndy Fiddaman gettimeofday(&b); 1857*b30d1939SAndy Fiddaman#endif 1858*b30d1939SAndy Fiddaman#else 1859*b30d1939SAndy Fiddaman t = (unsigned long)time((time_t*)0); 1860*b30d1939SAndy Fiddaman#endif 1861*b30d1939SAndy Fiddaman k = 0; 1862*b30d1939SAndy Fiddaman for (i = 0; i < l; i++) 1863*b30d1939SAndy Fiddaman for (j = 0; j < 50000; j++) 1864*b30d1939SAndy Fiddaman k += j; 1865*b30d1939SAndy Fiddaman#if TD || TZ 1866*b30d1939SAndy Fiddaman#if TZ 1867*b30d1939SAndy Fiddaman gettimeofday(&e, &z); 1868*b30d1939SAndy Fiddaman#else 1869*b30d1939SAndy Fiddaman gettimeofday(&e); 1870*b30d1939SAndy Fiddaman#endif 1871*b30d1939SAndy Fiddaman t = (e.tv_sec - b.tv_sec) * 1000 + (e.tv_usec - b.tv_usec) / 1000; 1872*b30d1939SAndy Fiddaman if (!x++ && t < 1000) 1873*b30d1939SAndy Fiddaman { 1874*b30d1939SAndy Fiddaman t = 10000 / t; 1875*b30d1939SAndy Fiddaman l = (l * t) / 10; 1876*b30d1939SAndy Fiddaman continue; 1877*b30d1939SAndy Fiddaman } 1878*b30d1939SAndy Fiddaman#else 1879*b30d1939SAndy Fiddaman t = ((unsigned long)time((time_t*)0) - t) * 1000; 1880*b30d1939SAndy Fiddaman if (!x++ && t < 20000) 1881*b30d1939SAndy Fiddaman { 1882*b30d1939SAndy Fiddaman t = 200000l / t; 1883*b30d1939SAndy Fiddaman l = (l * t) / 10; 1884*b30d1939SAndy Fiddaman continue; 1885*b30d1939SAndy Fiddaman } 1886*b30d1939SAndy Fiddaman#endif 1887*b30d1939SAndy Fiddaman#if PR 1888*b30d1939SAndy Fiddaman printf("[ k=%lu l=%lu m=%lu t=%lu ] ", k, l, m, t); 1889*b30d1939SAndy Fiddaman#endif 1890*b30d1939SAndy Fiddaman if (t == 0) 1891*b30d1939SAndy Fiddaman t = 1; 1892*b30d1939SAndy Fiddaman break; 1893*b30d1939SAndy Fiddaman } 1894*b30d1939SAndy Fiddaman printf("%lu\n", ((l * m) / 10) / t); 1895*b30d1939SAndy Fiddaman return k == 0; 1896*b30d1939SAndy Fiddaman} 1897*b30d1939SAndy Fiddaman! 1898*b30d1939SAndy Fiddaman rating= 1899*b30d1939SAndy Fiddaman for o in -DTZ -DTD '' 1900*b30d1939SAndy Fiddaman do if $CC $o -O -o $tmp.exe $tmp.c >/dev/null 2>&1 || 1901*b30d1939SAndy Fiddaman gcc $o -O -o $tmp.exe $tmp.c >/dev/null 2>&1 1902*b30d1939SAndy Fiddaman then rating=`./$tmp.exe` 1903*b30d1939SAndy Fiddaman break 1904*b30d1939SAndy Fiddaman fi 1905*b30d1939SAndy Fiddaman done 1906*b30d1939SAndy Fiddaman case $rating in 1907*b30d1939SAndy Fiddaman [0123456789]*) ;; 1908*b30d1939SAndy Fiddaman *) rating=1 ;; 1909*b30d1939SAndy Fiddaman esac 1910*b30d1939SAndy Fiddaman ;; 1911*b30d1939SAndy Fiddaman esac 1912*b30d1939SAndy Fiddaman _hostinfo_="$_hostinfo_ $rating" 1913*b30d1939SAndy Fiddaman ;; 1914*b30d1939SAndy Fiddaman type|canon) 1915*b30d1939SAndy Fiddaman case $CROSS:$canon in 1916*b30d1939SAndy Fiddaman 0:) case $cc in 1917*b30d1939SAndy Fiddaman cc) case $KEEP_HOSTTYPE:$HOSTTYPE in 1918*b30d1939SAndy Fiddaman 0:?*) if test -d ${PACKAGEROOT:-.}/arch/$HOSTTYPE 1919*b30d1939SAndy Fiddaman then KEEP_HOSTTYPE=1 1920*b30d1939SAndy Fiddaman fi 1921*b30d1939SAndy Fiddaman ;; 1922*b30d1939SAndy Fiddaman esac 1923*b30d1939SAndy Fiddaman ;; 1924*b30d1939SAndy Fiddaman esac 1925*b30d1939SAndy Fiddaman case $KEEP_HOSTTYPE in 1926*b30d1939SAndy Fiddaman 1) _hostinfo_="$_hostinfo_ $HOSTTYPE" 1927*b30d1939SAndy Fiddaman continue 1928*b30d1939SAndy Fiddaman ;; 1929*b30d1939SAndy Fiddaman esac 1930*b30d1939SAndy Fiddaman ;; 1931*b30d1939SAndy Fiddaman esac 1932*b30d1939SAndy Fiddaman case $cc in 1933*b30d1939SAndy Fiddaman /*) a=`$cc -dumpmachine $CCFLAGS 2>/dev/null` 1934*b30d1939SAndy Fiddaman case $a in 1935*b30d1939SAndy Fiddaman '') case $CCFLAGS in 1936*b30d1939SAndy Fiddaman ?*) a=`$cc -dumpmachine 2>/dev/null` ;; 1937*b30d1939SAndy Fiddaman esac 1938*b30d1939SAndy Fiddaman ;; 1939*b30d1939SAndy Fiddaman esac 1940*b30d1939SAndy Fiddaman case $a in 1941*b30d1939SAndy Fiddaman ''|*' '*|*/*:*) 1942*b30d1939SAndy Fiddaman ;; 1943*b30d1939SAndy Fiddaman *.*-*) _hostinfo_="$_hostinfo_ $a" 1944*b30d1939SAndy Fiddaman continue 1945*b30d1939SAndy Fiddaman ;; 1946*b30d1939SAndy Fiddaman *-*-*) case $canon in 1947*b30d1939SAndy Fiddaman '') canon=$a ;; 1948*b30d1939SAndy Fiddaman esac 1949*b30d1939SAndy Fiddaman ;; 1950*b30d1939SAndy Fiddaman *) _hostinfo_="$_hostinfo_ $a" 1951*b30d1939SAndy Fiddaman continue 1952*b30d1939SAndy Fiddaman ;; 1953*b30d1939SAndy Fiddaman esac 1954*b30d1939SAndy Fiddaman ;; 1955*b30d1939SAndy Fiddaman esac 1956*b30d1939SAndy Fiddaman IFS=: 1957*b30d1939SAndy Fiddaman set /$IFS$PATH 1958*b30d1939SAndy Fiddaman IFS=$ifs 1959*b30d1939SAndy Fiddaman shift 1960*b30d1939SAndy Fiddaman f=../lib/hostinfo/typemap 1961*b30d1939SAndy Fiddaman for i 1962*b30d1939SAndy Fiddaman do case $i in 1963*b30d1939SAndy Fiddaman "") i=. ;; 1964*b30d1939SAndy Fiddaman esac 1965*b30d1939SAndy Fiddaman case $canon in 1966*b30d1939SAndy Fiddaman '') case $cc in 1967*b30d1939SAndy Fiddaman /*|cc) ;; 1968*b30d1939SAndy Fiddaman *) if executable $i/$cc 1969*b30d1939SAndy Fiddaman then a=`$i/$cc -dumpmachine $CCFLAGS 2>/dev/null` 1970*b30d1939SAndy Fiddaman case $a in 1971*b30d1939SAndy Fiddaman '') case $CCFLAGS in 1972*b30d1939SAndy Fiddaman ?*) a=`$cc -dumpmachine 2>/dev/null` ;; 1973*b30d1939SAndy Fiddaman esac 1974*b30d1939SAndy Fiddaman ;; 1975*b30d1939SAndy Fiddaman esac 1976*b30d1939SAndy Fiddaman case $a in 1977*b30d1939SAndy Fiddaman ''|*' '*|*/*:*) 1978*b30d1939SAndy Fiddaman ;; 1979*b30d1939SAndy Fiddaman *-*) canon=$a 1980*b30d1939SAndy Fiddaman ;; 1981*b30d1939SAndy Fiddaman *) _hostinfo_="$_hostinfo_ $a" 1982*b30d1939SAndy Fiddaman continue 2 1983*b30d1939SAndy Fiddaman ;; 1984*b30d1939SAndy Fiddaman esac 1985*b30d1939SAndy Fiddaman fi 1986*b30d1939SAndy Fiddaman ;; 1987*b30d1939SAndy Fiddaman esac 1988*b30d1939SAndy Fiddaman ;; 1989*b30d1939SAndy Fiddaman esac 1990*b30d1939SAndy Fiddaman if test -f "$i/$f" 1991*b30d1939SAndy Fiddaman then map="`grep -v '^#' $i/$f` $map" 1992*b30d1939SAndy Fiddaman fi 1993*b30d1939SAndy Fiddaman done 1994*b30d1939SAndy Fiddaman 1995*b30d1939SAndy Fiddaman # inconsistent -dumpmachine filtered here 1996*b30d1939SAndy Fiddaman 1997*b30d1939SAndy Fiddaman case -${canon}- in 1998*b30d1939SAndy Fiddaman --|*-powerpc-*) 1999*b30d1939SAndy Fiddaman h=`hostname || uname -n || cat /etc/whoami` 2000*b30d1939SAndy Fiddaman case $h in 2001*b30d1939SAndy Fiddaman '') h=local ;; 2002*b30d1939SAndy Fiddaman esac 2003*b30d1939SAndy Fiddaman a=`arch || uname -m || att uname -m || uname -s || att uname -s` 2004*b30d1939SAndy Fiddaman case $a in 2005*b30d1939SAndy Fiddaman *[\ \ ]*) a=`echo $a | $SED "s/[ ]/-/g"` ;; 2006*b30d1939SAndy Fiddaman esac 2007*b30d1939SAndy Fiddaman case $a in 2008*b30d1939SAndy Fiddaman '') a=unknown ;; 2009*b30d1939SAndy Fiddaman esac 2010*b30d1939SAndy Fiddaman m=`mach || machine || uname -p || att uname -p` 2011*b30d1939SAndy Fiddaman case $m in 2012*b30d1939SAndy Fiddaman *[\ \ ]*) m=`echo $m | $SED "s/[ ]/-/g"` ;; 2013*b30d1939SAndy Fiddaman esac 2014*b30d1939SAndy Fiddaman case $m in 2015*b30d1939SAndy Fiddaman '') m=unknown ;; 2016*b30d1939SAndy Fiddaman esac 2017*b30d1939SAndy Fiddaman x=`uname -a || att uname -a` 2018*b30d1939SAndy Fiddaman case $x in 2019*b30d1939SAndy Fiddaman '') x="unknown $host unknown unknown unknown unknown unknown" ;; 2020*b30d1939SAndy Fiddaman esac 2021*b30d1939SAndy Fiddaman set "" $h $a $m $x 2022*b30d1939SAndy Fiddaman expected=$1 host=$2 arch=$3 mach=$4 os=$5 sys=$6 rel=$7 ver=$8 2023*b30d1939SAndy Fiddaman ;; 2024*b30d1939SAndy Fiddaman *) case $canon in 2025*b30d1939SAndy Fiddaman *-*) IFS=- 2026*b30d1939SAndy Fiddaman set "" $canon 2027*b30d1939SAndy Fiddaman shift 2028*b30d1939SAndy Fiddaman IFS=$ifs 2029*b30d1939SAndy Fiddaman case $# in 2030*b30d1939SAndy Fiddaman 2) host= mach= arch=$1 os=$2 sys= rel= ;; 2031*b30d1939SAndy Fiddaman *) host= mach=$2 arch=$1 os=$3 sys= rel= ;; 2032*b30d1939SAndy Fiddaman esac 2033*b30d1939SAndy Fiddaman case $os in 2034*b30d1939SAndy Fiddaman [abcdefghijklmnopqrstuvwxyz]*[0123456789]) 2035*b30d1939SAndy Fiddaman eval `echo $os | $SED -e 's/^\([^0123456789.]*\)\.*\(.*\)/os=\1 rel=\2/'` 2036*b30d1939SAndy Fiddaman ;; 2037*b30d1939SAndy Fiddaman esac 2038*b30d1939SAndy Fiddaman ;; 2039*b30d1939SAndy Fiddaman *) arch=$canon mach= os= sys= rel= 2040*b30d1939SAndy Fiddaman ;; 2041*b30d1939SAndy Fiddaman esac 2042*b30d1939SAndy Fiddaman ;; 2043*b30d1939SAndy Fiddaman esac 2044*b30d1939SAndy Fiddaman type=unknown 2045*b30d1939SAndy Fiddaman case $host in 2046*b30d1939SAndy Fiddaman *.*) host=`echo $host | $SED -e 's/\..*//'` ;; 2047*b30d1939SAndy Fiddaman esac 2048*b30d1939SAndy Fiddaman case $mach in 2049*b30d1939SAndy Fiddaman unknown) 2050*b30d1939SAndy Fiddaman mach= 2051*b30d1939SAndy Fiddaman ;; 2052*b30d1939SAndy Fiddaman [Rr][0123][0123456789][0123456789][0123456789]) 2053*b30d1939SAndy Fiddaman mach=mips1 2054*b30d1939SAndy Fiddaman ;; 2055*b30d1939SAndy Fiddaman [Rr][4][0123456789][0123456789][0123456789]) 2056*b30d1939SAndy Fiddaman mach=mips2 2057*b30d1939SAndy Fiddaman ;; 2058*b30d1939SAndy Fiddaman [Rr][56789][0123456789][0123456789][0123456789]|[Rr][123456789][0123456789][0123456789][0123456789][0123456789]) 2059*b30d1939SAndy Fiddaman mach=mips4 2060*b30d1939SAndy Fiddaman ;; 2061*b30d1939SAndy Fiddaman pc) arch=i386 2062*b30d1939SAndy Fiddaman mach= 2063*b30d1939SAndy Fiddaman ;; 2064*b30d1939SAndy Fiddaman [Pp][Oo][Ww][Ee][Rr][Pp][Cc]) 2065*b30d1939SAndy Fiddaman arch=ppc 2066*b30d1939SAndy Fiddaman mach= 2067*b30d1939SAndy Fiddaman ;; 2068*b30d1939SAndy Fiddaman *) case $arch in 2069*b30d1939SAndy Fiddaman 34[0123456789][0123456789]) 2070*b30d1939SAndy Fiddaman os=ncr 2071*b30d1939SAndy Fiddaman arch=i386 2072*b30d1939SAndy Fiddaman ;; 2073*b30d1939SAndy Fiddaman esac 2074*b30d1939SAndy Fiddaman ;; 2075*b30d1939SAndy Fiddaman esac 2076*b30d1939SAndy Fiddaman case $canon in 2077*b30d1939SAndy Fiddaman '') set \ 2078*b30d1939SAndy Fiddaman \ 2079*b30d1939SAndy Fiddaman /NextDeveloper -d next - \ 2080*b30d1939SAndy Fiddaman /config/hw/system/cpu -d tandem mach \ 2081*b30d1939SAndy Fiddaman 2082*b30d1939SAndy Fiddaman while : 2083*b30d1939SAndy Fiddaman do case $# in 2084*b30d1939SAndy Fiddaman 0) break ;; 2085*b30d1939SAndy Fiddaman esac 2086*b30d1939SAndy Fiddaman if test $2 $1 2087*b30d1939SAndy Fiddaman then os=$3 2088*b30d1939SAndy Fiddaman case $4 in 2089*b30d1939SAndy Fiddaman arch) mach=$arch ;; 2090*b30d1939SAndy Fiddaman mach) arch=$mach ;; 2091*b30d1939SAndy Fiddaman esac 2092*b30d1939SAndy Fiddaman break 2093*b30d1939SAndy Fiddaman fi 2094*b30d1939SAndy Fiddaman shift;shift;shift;shift 2095*b30d1939SAndy Fiddaman done 2096*b30d1939SAndy Fiddaman ;; 2097*b30d1939SAndy Fiddaman esac 2098*b30d1939SAndy Fiddaman case $os in 2099*b30d1939SAndy Fiddaman AIX*|aix*) 2100*b30d1939SAndy Fiddaman type=ibm.risc 2101*b30d1939SAndy Fiddaman ;; 2102*b30d1939SAndy Fiddaman HP-UX) case $arch in 2103*b30d1939SAndy Fiddaman 9000/[78]*) 2104*b30d1939SAndy Fiddaman type=hp.pa 2105*b30d1939SAndy Fiddaman ;; 2106*b30d1939SAndy Fiddaman */*) type=hp.`echo $arch | $SED 's,/,_,g'` 2107*b30d1939SAndy Fiddaman ;; 2108*b30d1939SAndy Fiddaman *) type=hp.$arch 2109*b30d1939SAndy Fiddaman ;; 2110*b30d1939SAndy Fiddaman esac 2111*b30d1939SAndy Fiddaman ;; 2112*b30d1939SAndy Fiddaman [Ii][Rr][Ii][Xx]*) 2113*b30d1939SAndy Fiddaman set xx `hinv | $SED -e '/^CPU:/!d' -e 's/CPU:[ ]*\([^ ]*\)[ ]*\([^ ]*\).*/\1 \2/' -e q | $TR ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` 2114*b30d1939SAndy Fiddaman shift 2115*b30d1939SAndy Fiddaman type=$1 2116*b30d1939SAndy Fiddaman n= 2117*b30d1939SAndy Fiddaman case $2 in 2118*b30d1939SAndy Fiddaman r[0123][0123456789][0123456789][0123456789]) 2119*b30d1939SAndy Fiddaman n=1 2120*b30d1939SAndy Fiddaman ;; 2121*b30d1939SAndy Fiddaman r[4][0123][0123456789][0123456789]) 2122*b30d1939SAndy Fiddaman n=2 2123*b30d1939SAndy Fiddaman ;; 2124*b30d1939SAndy Fiddaman r[4][456789][0123456789][0123456789]|r[5][0123456789][0123456789][0123456789]) 2125*b30d1939SAndy Fiddaman n=3 2126*b30d1939SAndy Fiddaman ;; 2127*b30d1939SAndy Fiddaman r[6789][0123456789][0123456789][0123456789]|r[123456789][0123456789][0123456789][0123456789][0123456789]) 2128*b30d1939SAndy Fiddaman n=4 2129*b30d1939SAndy Fiddaman ;; 2130*b30d1939SAndy Fiddaman esac 2131*b30d1939SAndy Fiddaman case $rel in 2132*b30d1939SAndy Fiddaman [01234].*|5.[012]|5.[012].*) 2133*b30d1939SAndy Fiddaman case $n in 2134*b30d1939SAndy Fiddaman 1) ;; 2135*b30d1939SAndy Fiddaman *) n=2 ;; 2136*b30d1939SAndy Fiddaman esac 2137*b30d1939SAndy Fiddaman ;; 2138*b30d1939SAndy Fiddaman 5.*) case $n in 2139*b30d1939SAndy Fiddaman 2) n=3 ;; 2140*b30d1939SAndy Fiddaman esac 2141*b30d1939SAndy Fiddaman ;; 2142*b30d1939SAndy Fiddaman esac 2143*b30d1939SAndy Fiddaman if executable $cc 2144*b30d1939SAndy Fiddaman then a=$cc 2145*b30d1939SAndy Fiddaman else IFS=: 2146*b30d1939SAndy Fiddaman set /$IFS$PATH 2147*b30d1939SAndy Fiddaman IFS=$ifs 2148*b30d1939SAndy Fiddaman shift 2149*b30d1939SAndy Fiddaman for i 2150*b30d1939SAndy Fiddaman do a=$i/$cc 2151*b30d1939SAndy Fiddaman if executable $a 2152*b30d1939SAndy Fiddaman then break 2153*b30d1939SAndy Fiddaman fi 2154*b30d1939SAndy Fiddaman done 2155*b30d1939SAndy Fiddaman fi 2156*b30d1939SAndy Fiddaman split=' 2157*b30d1939SAndy Fiddaman' 2158*b30d1939SAndy Fiddaman a=`strings $a < /dev/null | $SED -e 's/[^abcdefghijklmnopqrstuvwxyz0123456789]/ /g' -e 's/[ ][ ]*/\'"$split"'/g' | $SED -e "/^${type}[0123456789]$/!d" -e "s/^${type}//" -e q` 2159*b30d1939SAndy Fiddaman case $a in 2160*b30d1939SAndy Fiddaman [0123456789]) n=$a ;; 2161*b30d1939SAndy Fiddaman esac 2162*b30d1939SAndy Fiddaman case $n in 2163*b30d1939SAndy Fiddaman 4) a=`$cc -${type}3 2>&1` 2164*b30d1939SAndy Fiddaman case $a in 2165*b30d1939SAndy Fiddaman *unknown*|*install*|*conflict*) 2166*b30d1939SAndy Fiddaman ;; 2167*b30d1939SAndy Fiddaman *) n=3 2168*b30d1939SAndy Fiddaman ;; 2169*b30d1939SAndy Fiddaman esac 2170*b30d1939SAndy Fiddaman ;; 2171*b30d1939SAndy Fiddaman esac 2172*b30d1939SAndy Fiddaman a=`$cc -show F0oB@r.c 2>&1` 2173*b30d1939SAndy Fiddaman case $n:$a in 2174*b30d1939SAndy Fiddaman [!2]:*mips2*) n=2 ;; 2175*b30d1939SAndy Fiddaman [!23]:*mips3*) n=3 ;; 2176*b30d1939SAndy Fiddaman [!234]:*mips4*) n=4 ;; 2177*b30d1939SAndy Fiddaman esac 2178*b30d1939SAndy Fiddaman case $n:$a in 2179*b30d1939SAndy Fiddaman [!2]:*[Oo]32*) abi=-o32 ;; 2180*b30d1939SAndy Fiddaman [!3]:*[Nn]32*) abi=-n32 ;; 2181*b30d1939SAndy Fiddaman esac 2182*b30d1939SAndy Fiddaman mach=${type}$n 2183*b30d1939SAndy Fiddaman type=sgi.$mach 2184*b30d1939SAndy Fiddaman ;; 2185*b30d1939SAndy Fiddaman OSx*|SMP*|pyramid) 2186*b30d1939SAndy Fiddaman type=pyr 2187*b30d1939SAndy Fiddaman ;; 2188*b30d1939SAndy Fiddaman OS/390) type=mvs.390 2189*b30d1939SAndy Fiddaman ;; 2190*b30d1939SAndy Fiddaman [Ss][Cc][Oo]*) 2191*b30d1939SAndy Fiddaman type=sco 2192*b30d1939SAndy Fiddaman ;; 2193*b30d1939SAndy Fiddaman [Ss]ol*) 2194*b30d1939SAndy Fiddaman v=`echo $rel | $SED -e 's/^[25]\.//' -e 's/\.[^.]*$//'` 2195*b30d1939SAndy Fiddaman case $v in 2196*b30d1939SAndy Fiddaman [6789]|[1-9][0-9]) 2197*b30d1939SAndy Fiddaman ;; 2198*b30d1939SAndy Fiddaman *) v= 2199*b30d1939SAndy Fiddaman ;; 2200*b30d1939SAndy Fiddaman esac 2201*b30d1939SAndy Fiddaman case $arch in 2202*b30d1939SAndy Fiddaman '') case $mach in 2203*b30d1939SAndy Fiddaman '') arch=sun4 ;; 2204*b30d1939SAndy Fiddaman *) arch=$mach ;; 2205*b30d1939SAndy Fiddaman esac 2206*b30d1939SAndy Fiddaman ;; 2207*b30d1939SAndy Fiddaman esac 2208*b30d1939SAndy Fiddaman case $arch in 2209*b30d1939SAndy Fiddaman sparc) arch=sun4 ;; 2210*b30d1939SAndy Fiddaman esac 2211*b30d1939SAndy Fiddaman type=sol$v.$arch 2212*b30d1939SAndy Fiddaman ;; 2213*b30d1939SAndy Fiddaman [Ss]un*)type=`echo $arch | $SED -e 's/\(sun.\).*/\1/'` 2214*b30d1939SAndy Fiddaman case $type in 2215*b30d1939SAndy Fiddaman sparc) type=sun4 ;; 2216*b30d1939SAndy Fiddaman esac 2217*b30d1939SAndy Fiddaman case $rel in 2218*b30d1939SAndy Fiddaman [01234]*) 2219*b30d1939SAndy Fiddaman ;; 2220*b30d1939SAndy Fiddaman '') case $os in 2221*b30d1939SAndy Fiddaman *[Oo][Ss]) 2222*b30d1939SAndy Fiddaman ;; 2223*b30d1939SAndy Fiddaman *) type=sol.$type 2224*b30d1939SAndy Fiddaman ;; 2225*b30d1939SAndy Fiddaman esac 2226*b30d1939SAndy Fiddaman ;; 2227*b30d1939SAndy Fiddaman *) case $type in 2228*b30d1939SAndy Fiddaman '') case $mach in 2229*b30d1939SAndy Fiddaman sparc*) type=sun4 ;; 2230*b30d1939SAndy Fiddaman *) type=$mach ;; 2231*b30d1939SAndy Fiddaman esac 2232*b30d1939SAndy Fiddaman ;; 2233*b30d1939SAndy Fiddaman esac 2234*b30d1939SAndy Fiddaman v=`echo $rel | $SED -e 's/^[25]\.//' -e 's/\.[^.]*$//'` 2235*b30d1939SAndy Fiddaman case $v in 2236*b30d1939SAndy Fiddaman [6789]|[1-9][0-9]) 2237*b30d1939SAndy Fiddaman ;; 2238*b30d1939SAndy Fiddaman *) v= 2239*b30d1939SAndy Fiddaman ;; 2240*b30d1939SAndy Fiddaman esac 2241*b30d1939SAndy Fiddaman type=sol$v.$type 2242*b30d1939SAndy Fiddaman ;; 2243*b30d1939SAndy Fiddaman esac 2244*b30d1939SAndy Fiddaman case $type in 2245*b30d1939SAndy Fiddaman sun*|*.*) 2246*b30d1939SAndy Fiddaman ;; 2247*b30d1939SAndy Fiddaman *) type=sun.$type 2248*b30d1939SAndy Fiddaman ;; 2249*b30d1939SAndy Fiddaman esac 2250*b30d1939SAndy Fiddaman ;; 2251*b30d1939SAndy Fiddaman [Uu][Nn][Ii][Xx]_[Ss][Vv]) 2252*b30d1939SAndy Fiddaman type=unixware 2253*b30d1939SAndy Fiddaman ;; 2254*b30d1939SAndy Fiddaman UTS*|uts*) 2255*b30d1939SAndy Fiddaman if test -x /bin/u370 -o -x /bin/u390 2256*b30d1939SAndy Fiddaman then type=uts.390 2257*b30d1939SAndy Fiddaman else case $arch in 2258*b30d1939SAndy Fiddaman '') arch=$mach ;; 2259*b30d1939SAndy Fiddaman esac 2260*b30d1939SAndy Fiddaman type=uts.$arch 2261*b30d1939SAndy Fiddaman fi 2262*b30d1939SAndy Fiddaman ;; 2263*b30d1939SAndy Fiddaman $host) type=$arch 2264*b30d1939SAndy Fiddaman case $type in 2265*b30d1939SAndy Fiddaman *.*|*[0123456789]*86|*68*) 2266*b30d1939SAndy Fiddaman ;; 2267*b30d1939SAndy Fiddaman *) case $mach in 2268*b30d1939SAndy Fiddaman *[0123456789]*86|*68*|mips) 2269*b30d1939SAndy Fiddaman type=$type.$mach 2270*b30d1939SAndy Fiddaman ;; 2271*b30d1939SAndy Fiddaman esac 2272*b30d1939SAndy Fiddaman ;; 2273*b30d1939SAndy Fiddaman esac 2274*b30d1939SAndy Fiddaman ;; 2275*b30d1939SAndy Fiddaman unknown) 2276*b30d1939SAndy Fiddaman case $arch in 2277*b30d1939SAndy Fiddaman ?*) case $arch in 2278*b30d1939SAndy Fiddaman sun*) mach= ;; 2279*b30d1939SAndy Fiddaman esac 2280*b30d1939SAndy Fiddaman type=$arch 2281*b30d1939SAndy Fiddaman case $mach in 2282*b30d1939SAndy Fiddaman ?*) type=$type.$mach ;; 2283*b30d1939SAndy Fiddaman esac 2284*b30d1939SAndy Fiddaman ;; 2285*b30d1939SAndy Fiddaman esac 2286*b30d1939SAndy Fiddaman ;; 2287*b30d1939SAndy Fiddaman *) case $ver in 2288*b30d1939SAndy Fiddaman FTX*|ftx*) 2289*b30d1939SAndy Fiddaman case $mach in 2290*b30d1939SAndy Fiddaman *[0123456789][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]*) 2291*b30d1939SAndy Fiddaman mach=`echo $mach | $SED -e 's/[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]*$//'` 2292*b30d1939SAndy Fiddaman ;; 2293*b30d1939SAndy Fiddaman esac 2294*b30d1939SAndy Fiddaman type=stratus.$mach 2295*b30d1939SAndy Fiddaman ;; 2296*b30d1939SAndy Fiddaman *) case $arch in 2297*b30d1939SAndy Fiddaman [Oo][Ss][-/.]2) 2298*b30d1939SAndy Fiddaman type=os2 2299*b30d1939SAndy Fiddaman arch=$rel 2300*b30d1939SAndy Fiddaman ;; 2301*b30d1939SAndy Fiddaman *) type=`echo $os | $SED -e 's/[0123456789].*//' -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789.].*//'` 2302*b30d1939SAndy Fiddaman ;; 2303*b30d1939SAndy Fiddaman esac 2304*b30d1939SAndy Fiddaman case $type in 2305*b30d1939SAndy Fiddaman [Cc][Yy][Gg][Ww][Ii][Nn]_*) 2306*b30d1939SAndy Fiddaman type=cygwin 2307*b30d1939SAndy Fiddaman ;; 2308*b30d1939SAndy Fiddaman [Uu][Ww][Ii][Nn]*|[Ww]indows_[0123456789][0123456789]|[Ww]indows_[Nn][Tt]) 2309*b30d1939SAndy Fiddaman type=win32 2310*b30d1939SAndy Fiddaman arch=`echo $arch | $SED -e 's/_[^_]*$//'` 2311*b30d1939SAndy Fiddaman ;; 2312*b30d1939SAndy Fiddaman esac 2313*b30d1939SAndy Fiddaman case $arch in 2314*b30d1939SAndy Fiddaman '') case $mach in 2315*b30d1939SAndy Fiddaman ?*) type=$type.$mach ;; 2316*b30d1939SAndy Fiddaman esac 2317*b30d1939SAndy Fiddaman ;; 2318*b30d1939SAndy Fiddaman *) type=$type.$arch ;; 2319*b30d1939SAndy Fiddaman esac 2320*b30d1939SAndy Fiddaman ;; 2321*b30d1939SAndy Fiddaman esac 2322*b30d1939SAndy Fiddaman esac 2323*b30d1939SAndy Fiddaman case $type in 2324*b30d1939SAndy Fiddaman [0123456789]*) 2325*b30d1939SAndy Fiddaman case $mach in 2326*b30d1939SAndy Fiddaman ?*) type=$mach ;; 2327*b30d1939SAndy Fiddaman esac 2328*b30d1939SAndy Fiddaman case $type in 2329*b30d1939SAndy Fiddaman */MC) type=ncr.$type ;; 2330*b30d1939SAndy Fiddaman esac 2331*b30d1939SAndy Fiddaman ;; 2332*b30d1939SAndy Fiddaman *.*) ;; 2333*b30d1939SAndy Fiddaman *[0123456789]*86|*68*) 2334*b30d1939SAndy Fiddaman case $rel in 2335*b30d1939SAndy Fiddaman [34].[0123456789]*) 2336*b30d1939SAndy Fiddaman type=att.$type 2337*b30d1939SAndy Fiddaman ;; 2338*b30d1939SAndy Fiddaman esac 2339*b30d1939SAndy Fiddaman ;; 2340*b30d1939SAndy Fiddaman [abcdefghijklmnopqrstuvwxyz]*[0123456789]) 2341*b30d1939SAndy Fiddaman ;; 2342*b30d1939SAndy Fiddaman [abcdefghijklmnopqrstuvwxyz]*) case $mach in 2343*b30d1939SAndy Fiddaman $type) case $ver in 2344*b30d1939SAndy Fiddaman Fault*|fault*|FAULT*) 2345*b30d1939SAndy Fiddaman type=ft.$type 2346*b30d1939SAndy Fiddaman ;; 2347*b30d1939SAndy Fiddaman esac 2348*b30d1939SAndy Fiddaman ;; 2349*b30d1939SAndy Fiddaman ?*) case $arch in 2350*b30d1939SAndy Fiddaman '') type=$type.$mach ;; 2351*b30d1939SAndy Fiddaman *) type=$type.$arch ;; 2352*b30d1939SAndy Fiddaman esac 2353*b30d1939SAndy Fiddaman ;; 2354*b30d1939SAndy Fiddaman esac 2355*b30d1939SAndy Fiddaman ;; 2356*b30d1939SAndy Fiddaman esac 2357*b30d1939SAndy Fiddaman case $type in 2358*b30d1939SAndy Fiddaman *[-_]32|*[-_]64|*[-_]128) 2359*b30d1939SAndy Fiddaman bits=`echo $type | $SED 's,.*[-_],,'` 2360*b30d1939SAndy Fiddaman type=`echo $type | $SED 's,[-_][0-9]*$,,'` 2361*b30d1939SAndy Fiddaman ;; 2362*b30d1939SAndy Fiddaman *) bits= 2363*b30d1939SAndy Fiddaman ;; 2364*b30d1939SAndy Fiddaman esac 2365*b30d1939SAndy Fiddaman type=`echo $type | $SED -e 's%[-+/].*%%' | $TR ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` 2366*b30d1939SAndy Fiddaman case $type in 2367*b30d1939SAndy Fiddaman *.*) lhs=`echo $type | $SED -e 's/\..*//'` 2368*b30d1939SAndy Fiddaman rhs=`echo $type | $SED -e 's/.*\.//'` 2369*b30d1939SAndy Fiddaman case $rhs in 2370*b30d1939SAndy Fiddaman [x0123456789]*86) rhs=i$rhs ;; 2371*b30d1939SAndy Fiddaman 68*) rhs=m$rhs ;; 2372*b30d1939SAndy Fiddaman esac 2373*b30d1939SAndy Fiddaman case $rhs in 2374*b30d1939SAndy Fiddaman i[x23456789]86|i?[x23456789]86|*86pc) 2375*b30d1939SAndy Fiddaman rhs=i386 ;; 2376*b30d1939SAndy Fiddaman powerpc) rhs=ppc ;; 2377*b30d1939SAndy Fiddaman s[0123456789]*[0123456789]x) 2378*b30d1939SAndy Fiddaman rhs=`echo $rhs | $SED -e 's/x$/-64/'` ;; 2379*b30d1939SAndy Fiddaman esac 2380*b30d1939SAndy Fiddaman case $rhs in 2381*b30d1939SAndy Fiddaman arm[abcdefghijklmnopqrstuvwxyz_][0123456789]*) 2382*b30d1939SAndy Fiddaman rhs=arm ;; 2383*b30d1939SAndy Fiddaman hppa) rhs=pa ;; 2384*b30d1939SAndy Fiddaman esac 2385*b30d1939SAndy Fiddaman case $lhs in 2386*b30d1939SAndy Fiddaman ?*coff|?*dwarf|?*elf) 2387*b30d1939SAndy Fiddaman case $lhs in 2388*b30d1939SAndy Fiddaman ?*coff) x=coff ;; 2389*b30d1939SAndy Fiddaman ?*dwarf)x=coff ;; 2390*b30d1939SAndy Fiddaman ?*elf) x=elf ;; 2391*b30d1939SAndy Fiddaman esac 2392*b30d1939SAndy Fiddaman lhs=`echo ${lhs}XXX | $SED -e "s/${x}XXX//"` 2393*b30d1939SAndy Fiddaman ;; 2394*b30d1939SAndy Fiddaman esac 2395*b30d1939SAndy Fiddaman case $lhs in 2396*b30d1939SAndy Fiddaman bsdi) lhs=bsd ;; 2397*b30d1939SAndy Fiddaman darwin) case $rel in 2398*b30d1939SAndy Fiddaman [01234567].*) lhs=${lhs}7 ;; 2399*b30d1939SAndy Fiddaman esac 2400*b30d1939SAndy Fiddaman ;; 2401*b30d1939SAndy Fiddaman freebsd) case $rel in 2402*b30d1939SAndy Fiddaman [01234].*) lhs=${lhs}4 ;; 2403*b30d1939SAndy Fiddaman [123456789]*.*) lhs=${lhs}`echo $rel | $SED -e 's/\..*//'` ;; 2404*b30d1939SAndy Fiddaman esac 2405*b30d1939SAndy Fiddaman ;; 2406*b30d1939SAndy Fiddaman hpux) lhs=hp ;; 2407*b30d1939SAndy Fiddaman mvs) rhs=390 ;; 2408*b30d1939SAndy Fiddaman esac 2409*b30d1939SAndy Fiddaman case $lhs in 2410*b30d1939SAndy Fiddaman '') type=$rhs ;; 2411*b30d1939SAndy Fiddaman $rhs) type=$lhs ;; 2412*b30d1939SAndy Fiddaman *) type=$lhs.$rhs ;; 2413*b30d1939SAndy Fiddaman esac 2414*b30d1939SAndy Fiddaman ;; 2415*b30d1939SAndy Fiddaman esac 2416*b30d1939SAndy Fiddaman case $type in 2417*b30d1939SAndy Fiddaman sgi.mips*) 2418*b30d1939SAndy Fiddaman case $mach in 2419*b30d1939SAndy Fiddaman mips2) type=sgi.$mach 2420*b30d1939SAndy Fiddaman abi=-o32 2421*b30d1939SAndy Fiddaman ;; 2422*b30d1939SAndy Fiddaman mips3) type=sgi.$mach 2423*b30d1939SAndy Fiddaman abi=-n32 2424*b30d1939SAndy Fiddaman ;; 2425*b30d1939SAndy Fiddaman mips[456789]) 2426*b30d1939SAndy Fiddaman type=sgi.$mach 2427*b30d1939SAndy Fiddaman case $abi in 2428*b30d1939SAndy Fiddaman *-n32) ;; 2429*b30d1939SAndy Fiddaman *) abi=-64 ;; 2430*b30d1939SAndy Fiddaman esac 2431*b30d1939SAndy Fiddaman ;; 2432*b30d1939SAndy Fiddaman *) pwd=`pwd` 2433*b30d1939SAndy Fiddaman cd ${TMPDIR:-/tmp} 2434*b30d1939SAndy Fiddaman tmp=hi$$ 2435*b30d1939SAndy Fiddaman trap 'rm -f $tmp.*' 0 1 2 2436*b30d1939SAndy Fiddaman cat > $tmp.a.c <<! 2437*b30d1939SAndy Fiddamanextern int b(); 2438*b30d1939SAndy Fiddamanint main() { return b(); } 2439*b30d1939SAndy Fiddaman! 2440*b30d1939SAndy Fiddaman cat > $tmp.b.c <<! 2441*b30d1939SAndy Fiddamanint b() { return 0; } 2442*b30d1939SAndy Fiddaman! 2443*b30d1939SAndy Fiddaman abi= 2444*b30d1939SAndy Fiddaman if $cc -c $tmp.a.c 2445*b30d1939SAndy Fiddaman then for i in -n32 -o32 -64 2446*b30d1939SAndy Fiddaman do if $cc $i -c $tmp.b.c && 2447*b30d1939SAndy Fiddaman $cc -o $tmp.exe $tmp.a.o $tmp.b.o 2448*b30d1939SAndy Fiddaman then abi=$i 2449*b30d1939SAndy Fiddaman for i in 2 3 4 5 6 7 8 9 2450*b30d1939SAndy Fiddaman do case $i:$abi in 2451*b30d1939SAndy Fiddaman 2:-n32|2:-64|3:-64) 2452*b30d1939SAndy Fiddaman continue 2453*b30d1939SAndy Fiddaman ;; 2454*b30d1939SAndy Fiddaman esac 2455*b30d1939SAndy Fiddaman if $cc $abi -mips$i -c $tmp.b.c && 2456*b30d1939SAndy Fiddaman $cc -o $tmp.exe $tmp.a.o $tmp.b.o 2457*b30d1939SAndy Fiddaman then type=`echo $type | $SED -e 's/.$//'`$i 2458*b30d1939SAndy Fiddaman break 2459*b30d1939SAndy Fiddaman fi 2460*b30d1939SAndy Fiddaman done 2461*b30d1939SAndy Fiddaman break 2462*b30d1939SAndy Fiddaman fi 2463*b30d1939SAndy Fiddaman done 2464*b30d1939SAndy Fiddaman fi </dev/null >/dev/null 2>&1 2465*b30d1939SAndy Fiddaman rm -f $tmp.* 2466*b30d1939SAndy Fiddaman trap - 0 1 2 2467*b30d1939SAndy Fiddaman cd $pwd 2468*b30d1939SAndy Fiddaman ;; 2469*b30d1939SAndy Fiddaman esac 2470*b30d1939SAndy Fiddaman case $type$abi in 2471*b30d1939SAndy Fiddaman sgi.mips2-o32) 2472*b30d1939SAndy Fiddaman ;; 2473*b30d1939SAndy Fiddaman sgi.mips3) 2474*b30d1939SAndy Fiddaman type=$type-o32 2475*b30d1939SAndy Fiddaman ;; 2476*b30d1939SAndy Fiddaman sgi.mips3-n32) 2477*b30d1939SAndy Fiddaman ;; 2478*b30d1939SAndy Fiddaman sgi.mips4) 2479*b30d1939SAndy Fiddaman type=$type-o32 2480*b30d1939SAndy Fiddaman ;; 2481*b30d1939SAndy Fiddaman sgi.mips[456789]-64) 2482*b30d1939SAndy Fiddaman ;; 2483*b30d1939SAndy Fiddaman *) type=$type$abi 2484*b30d1939SAndy Fiddaman ;; 2485*b30d1939SAndy Fiddaman esac 2486*b30d1939SAndy Fiddaman ;; 2487*b30d1939SAndy Fiddaman *) case $bits in 2488*b30d1939SAndy Fiddaman '') case `file /bin/sh 2>/dev/null` in 2489*b30d1939SAndy Fiddaman *universal*64*) 2490*b30d1939SAndy Fiddaman pwd=`pwd` 2491*b30d1939SAndy Fiddaman cd ${TMPDIR:-/tmp} 2492*b30d1939SAndy Fiddaman tmp=hi$$ 2493*b30d1939SAndy Fiddaman trap 'rm -f $tmp.*' 0 1 2 2494*b30d1939SAndy Fiddaman cat > $tmp.a.c <<! 2495*b30d1939SAndy Fiddamanint main() { return 0; } 2496*b30d1939SAndy Fiddaman! 2497*b30d1939SAndy Fiddaman if $cc -o $tmp.a.exe $tmp.a.c 2498*b30d1939SAndy Fiddaman then case `file $tmp.a.exe` in 2499*b30d1939SAndy Fiddaman *64*) bits=64 ;; 2500*b30d1939SAndy Fiddaman esac 2501*b30d1939SAndy Fiddaman fi </dev/null >/dev/null 2>&1 2502*b30d1939SAndy Fiddaman rm -f $tmp.* 2503*b30d1939SAndy Fiddaman trap - 0 1 2 2504*b30d1939SAndy Fiddaman cd $pwd 2505*b30d1939SAndy Fiddaman ;; 2506*b30d1939SAndy Fiddaman esac 2507*b30d1939SAndy Fiddaman ;; 2508*b30d1939SAndy Fiddaman esac 2509*b30d1939SAndy Fiddaman ;; 2510*b30d1939SAndy Fiddaman esac 2511*b30d1939SAndy Fiddaman case $bits in 2512*b30d1939SAndy Fiddaman 32) case $type in 2513*b30d1939SAndy Fiddaman *.i386) bits= ;; 2514*b30d1939SAndy Fiddaman esac 2515*b30d1939SAndy Fiddaman ;; 2516*b30d1939SAndy Fiddaman esac 2517*b30d1939SAndy Fiddaman case $bits in 2518*b30d1939SAndy Fiddaman ?*) type=$type-$bits ;; 2519*b30d1939SAndy Fiddaman esac 2520*b30d1939SAndy Fiddaman 2521*b30d1939SAndy Fiddaman # last chance mapping 2522*b30d1939SAndy Fiddaman 2523*b30d1939SAndy Fiddaman set "" "" $map 2524*b30d1939SAndy Fiddaman while : 2525*b30d1939SAndy Fiddaman do case $# in 2526*b30d1939SAndy Fiddaman [012]) break ;; 2527*b30d1939SAndy Fiddaman esac 2528*b30d1939SAndy Fiddaman shift;shift 2529*b30d1939SAndy Fiddaman eval " case \$type in 2530*b30d1939SAndy Fiddaman $1) type=\$2; break ;; 2531*b30d1939SAndy Fiddaman esac" 2532*b30d1939SAndy Fiddaman done 2533*b30d1939SAndy Fiddaman _hostinfo_="$_hostinfo_ $type" 2534*b30d1939SAndy Fiddaman ;; 2535*b30d1939SAndy Fiddaman esac 2536*b30d1939SAndy Fiddaman done 2537*b30d1939SAndy Fiddaman set '' $_hostinfo_ 2538*b30d1939SAndy Fiddaman shift 2539*b30d1939SAndy Fiddaman _hostinfo_=$* 2540*b30d1939SAndy Fiddaman 2541*b30d1939SAndy Fiddaman # restore the global state 2542*b30d1939SAndy Fiddaman 2543*b30d1939SAndy Fiddaman PATH=$path 2544*b30d1939SAndy Fiddaman case $DEBUG in 2545*b30d1939SAndy Fiddaman '') exec 2>&9 2546*b30d1939SAndy Fiddaman exec 9>&- 2547*b30d1939SAndy Fiddaman ;; 2548*b30d1939SAndy Fiddaman esac 2549*b30d1939SAndy Fiddaman} 2550*b30d1939SAndy Fiddaman 2551*b30d1939SAndy Fiddaman# info message 2552*b30d1939SAndy Fiddaman 2553*b30d1939SAndy Fiddamannote() # message ... 2554*b30d1939SAndy Fiddaman{ 2555*b30d1939SAndy Fiddaman echo $command: "$@" >&2 2556*b30d1939SAndy Fiddaman} 2557*b30d1939SAndy Fiddaman 2558*b30d1939SAndy Fiddaman# cc checks 2559*b30d1939SAndy Fiddaman# 2560*b30d1939SAndy Fiddaman# CC: compiler base name name 2561*b30d1939SAndy Fiddaman# cc: full path, empty if not found 2562*b30d1939SAndy Fiddaman 2563*b30d1939SAndy Fiddamancheckcc() 2564*b30d1939SAndy Fiddaman{ 2565*b30d1939SAndy Fiddaman cc= 2566*b30d1939SAndy Fiddaman if onpath $CC 2567*b30d1939SAndy Fiddaman then cc=$_onpath_ 2568*b30d1939SAndy Fiddaman else case $CC in 2569*b30d1939SAndy Fiddaman cc) if onpath gcc 2570*b30d1939SAndy Fiddaman then CC=gcc 2571*b30d1939SAndy Fiddaman cc=$_onpath_ 2572*b30d1939SAndy Fiddaman fi 2573*b30d1939SAndy Fiddaman ;; 2574*b30d1939SAndy Fiddaman esac 2575*b30d1939SAndy Fiddaman fi 2576*b30d1939SAndy Fiddaman case $cc in 2577*b30d1939SAndy Fiddaman '') case $action in 2578*b30d1939SAndy Fiddaman make|test) note "$CC: not found"; exit 1 ;; 2579*b30d1939SAndy Fiddaman *) note "warning: $CC: not found" ;; 2580*b30d1939SAndy Fiddaman esac 2581*b30d1939SAndy Fiddaman ;; 2582*b30d1939SAndy Fiddaman esac 2583*b30d1939SAndy Fiddaman} 2584*b30d1939SAndy Fiddaman 2585*b30d1939SAndy Fiddaman# some actions have their own PACKAGEROOT or kick out early 2586*b30d1939SAndy Fiddaman 2587*b30d1939SAndy Fiddamancase $action in 2588*b30d1939SAndy Fiddamanhost) eval u=$package_use 2589*b30d1939SAndy Fiddaman case $u in 2590*b30d1939SAndy Fiddaman $PACKAGE_USE) 2591*b30d1939SAndy Fiddaman ;; 2592*b30d1939SAndy Fiddaman *) if onpath $0 2593*b30d1939SAndy Fiddaman then case $_onpath_ in 2594*b30d1939SAndy Fiddaman */arch/$HOSTTYPE/bin/package) 2595*b30d1939SAndy Fiddaman KEEP_HOSTTYPE=1 2596*b30d1939SAndy Fiddaman ;; 2597*b30d1939SAndy Fiddaman *) KEEP_HOSTTYPE=0 2598*b30d1939SAndy Fiddaman ;; 2599*b30d1939SAndy Fiddaman esac 2600*b30d1939SAndy Fiddaman else KEEP_HOSTTYPE=0 2601*b30d1939SAndy Fiddaman fi 2602*b30d1939SAndy Fiddaman ;; 2603*b30d1939SAndy Fiddaman esac 2604*b30d1939SAndy Fiddaman hostinfo $args 2605*b30d1939SAndy Fiddaman echo $_hostinfo_ 2606*b30d1939SAndy Fiddaman exit 0 2607*b30d1939SAndy Fiddaman ;; 2608*b30d1939SAndy Fiddamanexport|setup|use) 2609*b30d1939SAndy Fiddaman x= 2610*b30d1939SAndy Fiddaman ;; 2611*b30d1939SAndy Fiddaman*) x= 2612*b30d1939SAndy Fiddaman eval u=$package_use 2613*b30d1939SAndy Fiddaman case $u in 2614*b30d1939SAndy Fiddaman $PACKAGE_USE) 2615*b30d1939SAndy Fiddaman case :$PATH: in 2616*b30d1939SAndy Fiddaman *:$INSTALLROOT/bin:*) 2617*b30d1939SAndy Fiddaman case $LIBPATH: in 2618*b30d1939SAndy Fiddaman $INSTALLROOT/bin:$INSTALLROOT/lib:*) 2619*b30d1939SAndy Fiddaman case $SHLIB_PATH: in 2620*b30d1939SAndy Fiddaman $INSTALLROOT/lib:*) 2621*b30d1939SAndy Fiddaman x=1 2622*b30d1939SAndy Fiddaman ;; 2623*b30d1939SAndy Fiddaman esac 2624*b30d1939SAndy Fiddaman ;; 2625*b30d1939SAndy Fiddaman esac 2626*b30d1939SAndy Fiddaman ;; 2627*b30d1939SAndy Fiddaman esac 2628*b30d1939SAndy Fiddaman ;; 2629*b30d1939SAndy Fiddaman esac 2630*b30d1939SAndy Fiddaman ;; 2631*b30d1939SAndy Fiddamanesac 2632*b30d1939SAndy Fiddamanrun=- 2633*b30d1939SAndy Fiddamancase $x in 2634*b30d1939SAndy Fiddaman1) : accept the current package use environment 2635*b30d1939SAndy Fiddaman 2636*b30d1939SAndy Fiddaman OK=ok 2637*b30d1939SAndy Fiddaman KSH=$EXECROOT/bin/ksh 2638*b30d1939SAndy Fiddaman MAKE=nmake 2639*b30d1939SAndy Fiddaman NMAKE=$EXECROOT/bin/$MAKE 2640*b30d1939SAndy Fiddaman SUM=$EXECROOT/bin/sum 2641*b30d1939SAndy Fiddaman TEE=$EXECROOT/bin/tee 2642*b30d1939SAndy Fiddaman INITROOT=$PACKAGEROOT/src/cmd/INIT 2643*b30d1939SAndy Fiddaman checkcc 2644*b30d1939SAndy Fiddaman ;; 2645*b30d1939SAndy Fiddaman*) hosttype= 2646*b30d1939SAndy Fiddaman case $KEEP_PACKAGEROOT in 2647*b30d1939SAndy Fiddaman 0) case $action in 2648*b30d1939SAndy Fiddaman use) PACKAGEROOT= 2649*b30d1939SAndy Fiddaman case $show in 2650*b30d1939SAndy Fiddaman echo) exec=echo make=echo show=echo ;; 2651*b30d1939SAndy Fiddaman esac 2652*b30d1939SAndy Fiddaman set '' $args 2653*b30d1939SAndy Fiddaman shift 2654*b30d1939SAndy Fiddaman case $# in 2655*b30d1939SAndy Fiddaman 0) ;; 2656*b30d1939SAndy Fiddaman *) case $1 in 2657*b30d1939SAndy Fiddaman -|.) ;; 2658*b30d1939SAndy Fiddaman /*) PACKAGEROOT=$1 2659*b30d1939SAndy Fiddaman ;; 2660*b30d1939SAndy Fiddaman *) i=`echo ~$1` 2661*b30d1939SAndy Fiddaman if packageroot $i 2662*b30d1939SAndy Fiddaman then PACKAGEROOT=$i 2663*b30d1939SAndy Fiddaman else for i in `echo $HOME | sed -e 's,/[^/]*$,,'` $usr $use 2664*b30d1939SAndy Fiddaman do if packageroot $i/$1 2665*b30d1939SAndy Fiddaman then PACKAGEROOT=$i/$1 2666*b30d1939SAndy Fiddaman break 2667*b30d1939SAndy Fiddaman fi 2668*b30d1939SAndy Fiddaman done 2669*b30d1939SAndy Fiddaman case $PACKAGEROOT in 2670*b30d1939SAndy Fiddaman '') hosttype=$1 ;; 2671*b30d1939SAndy Fiddaman esac 2672*b30d1939SAndy Fiddaman fi 2673*b30d1939SAndy Fiddaman ;; 2674*b30d1939SAndy Fiddaman esac 2675*b30d1939SAndy Fiddaman shift 2676*b30d1939SAndy Fiddaman ;; 2677*b30d1939SAndy Fiddaman esac 2678*b30d1939SAndy Fiddaman run="$@" 2679*b30d1939SAndy Fiddaman ;; 2680*b30d1939SAndy Fiddaman esac 2681*b30d1939SAndy Fiddaman case $PACKAGEROOT in 2682*b30d1939SAndy Fiddaman '') PACKAGEROOT=${PWD:-`pwd`} ;; 2683*b30d1939SAndy Fiddaman esac 2684*b30d1939SAndy Fiddaman 2685*b30d1939SAndy Fiddaman # . must be within the PACKAGEROOT tree 2686*b30d1939SAndy Fiddaman 2687*b30d1939SAndy Fiddaman i=X$PACKAGEROOT 2688*b30d1939SAndy Fiddaman IFS=/ 2689*b30d1939SAndy Fiddaman set $i 2690*b30d1939SAndy Fiddaman IFS=$ifs 2691*b30d1939SAndy Fiddaman while : 2692*b30d1939SAndy Fiddaman do i=$1 2693*b30d1939SAndy Fiddaman shift 2694*b30d1939SAndy Fiddaman case $i in 2695*b30d1939SAndy Fiddaman X) break ;; 2696*b30d1939SAndy Fiddaman esac 2697*b30d1939SAndy Fiddaman done 2698*b30d1939SAndy Fiddaman case $PACKAGEROOT in 2699*b30d1939SAndy Fiddaman //*) d=/ ;; 2700*b30d1939SAndy Fiddaman *) d= ;; 2701*b30d1939SAndy Fiddaman esac 2702*b30d1939SAndy Fiddaman case $1 in 2703*b30d1939SAndy Fiddaman home) k=1 ;; 2704*b30d1939SAndy Fiddaman *) k=0 ;; 2705*b30d1939SAndy Fiddaman esac 2706*b30d1939SAndy Fiddaman for i 2707*b30d1939SAndy Fiddaman do case $i in 2708*b30d1939SAndy Fiddaman '') continue ;; 2709*b30d1939SAndy Fiddaman esac 2710*b30d1939SAndy Fiddaman d=$d/$i 2711*b30d1939SAndy Fiddaman case $k in 2712*b30d1939SAndy Fiddaman 2) k=1 2713*b30d1939SAndy Fiddaman ;; 2714*b30d1939SAndy Fiddaman 1) k=0 2715*b30d1939SAndy Fiddaman ;; 2716*b30d1939SAndy Fiddaman 0) case $i in 2717*b30d1939SAndy Fiddaman arch) k=2 2718*b30d1939SAndy Fiddaman ;; 2719*b30d1939SAndy Fiddaman *) if packageroot $d 2720*b30d1939SAndy Fiddaman then PACKAGEROOT=$d 2721*b30d1939SAndy Fiddaman fi 2722*b30d1939SAndy Fiddaman ;; 2723*b30d1939SAndy Fiddaman esac 2724*b30d1939SAndy Fiddaman ;; 2725*b30d1939SAndy Fiddaman esac 2726*b30d1939SAndy Fiddaman done 2727*b30d1939SAndy Fiddaman ;; 2728*b30d1939SAndy Fiddaman esac 2729*b30d1939SAndy Fiddaman INITROOT=$PACKAGEROOT/src/cmd/INIT 2730*b30d1939SAndy Fiddaman $show PACKAGEROOT=$PACKAGEROOT 2731*b30d1939SAndy Fiddaman $show export PACKAGEROOT 2732*b30d1939SAndy Fiddaman export PACKAGEROOT 2733*b30d1939SAndy Fiddaman 2734*b30d1939SAndy Fiddaman # initialize the architecture environment 2735*b30d1939SAndy Fiddaman 2736*b30d1939SAndy Fiddaman case $KEEP_HOSTTYPE in 2737*b30d1939SAndy Fiddaman 0) hostinfo type 2738*b30d1939SAndy Fiddaman HOSTTYPE=$_hostinfo_ 2739*b30d1939SAndy Fiddaman ;; 2740*b30d1939SAndy Fiddaman 1) _PACKAGE_HOSTTYPE_=$HOSTTYPE 2741*b30d1939SAndy Fiddaman export _PACKAGE_HOSTTYPE_ 2742*b30d1939SAndy Fiddaman ;; 2743*b30d1939SAndy Fiddaman esac 2744*b30d1939SAndy Fiddaman $show HOSTTYPE=$HOSTTYPE 2745*b30d1939SAndy Fiddaman $show export HOSTTYPE 2746*b30d1939SAndy Fiddaman export HOSTTYPE 2747*b30d1939SAndy Fiddaman INSTALLROOT=$PACKAGEROOT/arch/$HOSTTYPE 2748*b30d1939SAndy Fiddaman case $action in 2749*b30d1939SAndy Fiddaman admin|install|make|read|remove|test|verify|view|write) 2750*b30d1939SAndy Fiddaman ;; 2751*b30d1939SAndy Fiddaman *) if test ! -d $INSTALLROOT 2752*b30d1939SAndy Fiddaman then INSTALLROOT=$PACKAGEROOT 2753*b30d1939SAndy Fiddaman fi 2754*b30d1939SAndy Fiddaman ;; 2755*b30d1939SAndy Fiddaman esac 2756*b30d1939SAndy Fiddaman $show INSTALLROOT=$INSTALLROOT 2757*b30d1939SAndy Fiddaman $show export INSTALLROOT 2758*b30d1939SAndy Fiddaman export INSTALLROOT 2759*b30d1939SAndy Fiddaman 2760*b30d1939SAndy Fiddaman # check the basic package hierarchy 2761*b30d1939SAndy Fiddaman 2762*b30d1939SAndy Fiddaman case $action in 2763*b30d1939SAndy Fiddaman export|use) 2764*b30d1939SAndy Fiddaman packageroot $PACKAGEROOT || { 2765*b30d1939SAndy Fiddaman echo "$command: $PACKAGEROOT: invalid package root directory" >&2 2766*b30d1939SAndy Fiddaman exit 1 2767*b30d1939SAndy Fiddaman } 2768*b30d1939SAndy Fiddaman case $KEEP_HOSTTYPE:$hosttype in 2769*b30d1939SAndy Fiddaman 0:?*) if test -d ${PACKAGEROOT:-.}/arch/$hosttype 2770*b30d1939SAndy Fiddaman then KEEP_HOSTTYPE=1 2771*b30d1939SAndy Fiddaman HOSTTYPE=$hosttype 2772*b30d1939SAndy Fiddaman else echo "$command: $hosttype: package root not found" >&2 2773*b30d1939SAndy Fiddaman exit 1 2774*b30d1939SAndy Fiddaman fi 2775*b30d1939SAndy Fiddaman ;; 2776*b30d1939SAndy Fiddaman esac 2777*b30d1939SAndy Fiddaman ;; 2778*b30d1939SAndy Fiddaman *) packageroot $PACKAGEROOT || { 2779*b30d1939SAndy Fiddaman case $KEEP_PACKAGEROOT in 2780*b30d1939SAndy Fiddaman 1) ;; 2781*b30d1939SAndy Fiddaman *) echo "$command: $PACKAGEROOT: must be in the package root directory tree" >&2 2782*b30d1939SAndy Fiddaman exit 1 2783*b30d1939SAndy Fiddaman ;; 2784*b30d1939SAndy Fiddaman esac 2785*b30d1939SAndy Fiddaman } 2786*b30d1939SAndy Fiddaman 2787*b30d1939SAndy Fiddaman case $action in 2788*b30d1939SAndy Fiddaman admin) ;; 2789*b30d1939SAndy Fiddaman *) for i in arch arch/$HOSTTYPE 2790*b30d1939SAndy Fiddaman do test -d $PACKAGEROOT/$i || $exec mkdir $PACKAGEROOT/$i || exit 2791*b30d1939SAndy Fiddaman done 2792*b30d1939SAndy Fiddaman for i in lib 2793*b30d1939SAndy Fiddaman do test -d $INSTALLROOT/$i || $exec mkdir $INSTALLROOT/$i || exit 2794*b30d1939SAndy Fiddaman done 2795*b30d1939SAndy Fiddaman ;; 2796*b30d1939SAndy Fiddaman esac 2797*b30d1939SAndy Fiddaman 2798*b30d1939SAndy Fiddaman # no $INITROOT means INIT already installed elsewhere 2799*b30d1939SAndy Fiddaman 2800*b30d1939SAndy Fiddaman if test -d $INITROOT 2801*b30d1939SAndy Fiddaman then 2802*b30d1939SAndy Fiddaman # update the basic package commands 2803*b30d1939SAndy Fiddaman 2804*b30d1939SAndy Fiddaman for i in execrate ignore mamprobe silent 2805*b30d1939SAndy Fiddaman do test -h $PACKAGEROOT/bin/$i 2>/dev/null || 2806*b30d1939SAndy Fiddaman case `ls -t $INITROOT/$i.sh $PACKAGEROOT/bin/$i 2>/dev/null` in 2807*b30d1939SAndy Fiddaman "$INITROOT/$i.sh"*) 2808*b30d1939SAndy Fiddaman note update $PACKAGEROOT/bin/$i 2809*b30d1939SAndy Fiddaman shellmagic 2810*b30d1939SAndy Fiddaman case $SHELLMAGIC in 2811*b30d1939SAndy Fiddaman '') $exec cp $INITROOT/$i.sh $PACKAGEROOT/bin/$i || exit 2812*b30d1939SAndy Fiddaman ;; 2813*b30d1939SAndy Fiddaman *) case $exec in 2814*b30d1939SAndy Fiddaman '') { 2815*b30d1939SAndy Fiddaman echo "$SHELLMAGIC" 2816*b30d1939SAndy Fiddaman cat $INITROOT/$i.sh 2817*b30d1939SAndy Fiddaman } > $PACKAGEROOT/bin/$i || exit 2818*b30d1939SAndy Fiddaman ;; 2819*b30d1939SAndy Fiddaman *) echo "{ 2820*b30d1939SAndy Fiddamanecho \"$SHELLMAGIC\" 2821*b30d1939SAndy Fiddamancat $INITROOT/$i.sh 2822*b30d1939SAndy Fiddaman} > $PACKAGEROOT/bin/$i" 2823*b30d1939SAndy Fiddaman ;; 2824*b30d1939SAndy Fiddaman esac 2825*b30d1939SAndy Fiddaman ;; 2826*b30d1939SAndy Fiddaman esac 2827*b30d1939SAndy Fiddaman $exec chmod +x $PACKAGEROOT/bin/$i || exit 2828*b30d1939SAndy Fiddaman ;; 2829*b30d1939SAndy Fiddaman esac 2830*b30d1939SAndy Fiddaman done 2831*b30d1939SAndy Fiddaman fi 2832*b30d1939SAndy Fiddaman ;; 2833*b30d1939SAndy Fiddaman esac 2834*b30d1939SAndy Fiddaman path=$PATH 2835*b30d1939SAndy Fiddaman PATH=$INSTALLROOT/bin:$PACKAGEROOT/bin:$PATH 2836*b30d1939SAndy Fiddaman checkcc 2837*b30d1939SAndy Fiddaman PATH=$path 2838*b30d1939SAndy Fiddaman case $cc in 2839*b30d1939SAndy Fiddaman ?*) if test -f $INITROOT/hello.c 2840*b30d1939SAndy Fiddaman then 2841*b30d1939SAndy Fiddaman # check if $CC (full path $cc) is a cross compiler 2842*b30d1939SAndy Fiddaman 2843*b30d1939SAndy Fiddaman ( 2844*b30d1939SAndy Fiddaman cd /tmp || exit 3 2845*b30d1939SAndy Fiddaman cp $INITROOT/hello.c pkg$$.c || exit 3 2846*b30d1939SAndy Fiddaman $cc -o pkg$$.exe pkg$$.c > pkg$$.e 2>&1 || { 2847*b30d1939SAndy Fiddaman if $cc -Dnew=old -o pkg$$.exe pkg$$.c > /dev/null 2>&1 2848*b30d1939SAndy Fiddaman then echo "$command: ${warn}$CC: must be a C compiler (not C++)" >&2 2849*b30d1939SAndy Fiddaman else cat pkg$$.e 2850*b30d1939SAndy Fiddaman echo "$command: ${warn}$CC: failed to compile and link $INITROOT/hello.c -- is it a C compiler?" >&2 2851*b30d1939SAndy Fiddaman fi 2852*b30d1939SAndy Fiddaman exit 2 2853*b30d1939SAndy Fiddaman } 2854*b30d1939SAndy Fiddaman if ./pkg$$.exe >/dev/null 2>&1 2855*b30d1939SAndy Fiddaman then code=0 2856*b30d1939SAndy Fiddaman else code=1 2857*b30d1939SAndy Fiddaman fi 2858*b30d1939SAndy Fiddaman rm -f pkg$$.* 2859*b30d1939SAndy Fiddaman exit $code 2860*b30d1939SAndy Fiddaman ) 2861*b30d1939SAndy Fiddaman code=$? 2862*b30d1939SAndy Fiddaman case $code in 2863*b30d1939SAndy Fiddaman 1) CROSS=1 ;; 2864*b30d1939SAndy Fiddaman esac 2865*b30d1939SAndy Fiddaman fi 2866*b30d1939SAndy Fiddaman ;; 2867*b30d1939SAndy Fiddaman esac 2868*b30d1939SAndy Fiddaman EXECTYPE=$HOSTTYPE 2869*b30d1939SAndy Fiddaman EXECROOT=$INSTALLROOT 2870*b30d1939SAndy Fiddaman case $CROSS in 2871*b30d1939SAndy Fiddaman 0) # dll hackery -- why is this so complicated? 2872*b30d1939SAndy Fiddaman 2873*b30d1939SAndy Fiddaman abi= 2874*b30d1939SAndy Fiddaman case $HOSTTYPE in 2875*b30d1939SAndy Fiddaman sgi.mips[0123456789]*) 2876*b30d1939SAndy Fiddaman x=rld 2877*b30d1939SAndy Fiddaman if executable /lib32/$x || executable /lib64/$x 2878*b30d1939SAndy Fiddaman then case $INSTALLROOT in 2879*b30d1939SAndy Fiddaman */sgi.mips[0123456789]*) 2880*b30d1939SAndy Fiddaman u=`echo $INSTALLROOT | sed -e 's,-[^-/]*$,,' -e 's,.$,,'` 2881*b30d1939SAndy Fiddaman ;; 2882*b30d1939SAndy Fiddaman *) u= 2883*b30d1939SAndy Fiddaman ;; 2884*b30d1939SAndy Fiddaman esac 2885*b30d1939SAndy Fiddaman for a in "n=2 v= l=" "n=3 v=N32 l=lib32" "n=4-n32 v=N32 l=lib32" "n=4 v=64 l=lib64" 2886*b30d1939SAndy Fiddaman do eval $a 2887*b30d1939SAndy Fiddaman case $v in 2888*b30d1939SAndy Fiddaman N32) case $n:$HOSTTYPE in 2889*b30d1939SAndy Fiddaman *-n32:*-n32) ;; 2890*b30d1939SAndy Fiddaman *-n32:*) continue ;; 2891*b30d1939SAndy Fiddaman *:*-n32) continue ;; 2892*b30d1939SAndy Fiddaman esac 2893*b30d1939SAndy Fiddaman ;; 2894*b30d1939SAndy Fiddaman esac 2895*b30d1939SAndy Fiddaman case $l in 2896*b30d1939SAndy Fiddaman ?*) if executable ! /$l/$x 2897*b30d1939SAndy Fiddaman then continue 2898*b30d1939SAndy Fiddaman fi 2899*b30d1939SAndy Fiddaman ;; 2900*b30d1939SAndy Fiddaman esac 2901*b30d1939SAndy Fiddaman case $u in 2902*b30d1939SAndy Fiddaman '') case $HOSTTYPE in 2903*b30d1939SAndy Fiddaman sgi.mips$n|sgi.mips$n-*) 2904*b30d1939SAndy Fiddaman abi="$abi 'd=$INSTALLROOT v=$v'" 2905*b30d1939SAndy Fiddaman ;; 2906*b30d1939SAndy Fiddaman *) continue 2907*b30d1939SAndy Fiddaman ;; 2908*b30d1939SAndy Fiddaman esac 2909*b30d1939SAndy Fiddaman ;; 2910*b30d1939SAndy Fiddaman *) if test -d $u$n 2911*b30d1939SAndy Fiddaman then abi="$abi 'd=$u$n v=$v'" 2912*b30d1939SAndy Fiddaman fi 2913*b30d1939SAndy Fiddaman ;; 2914*b30d1939SAndy Fiddaman esac 2915*b30d1939SAndy Fiddaman done 2916*b30d1939SAndy Fiddaman fi 2917*b30d1939SAndy Fiddaman ;; 2918*b30d1939SAndy Fiddaman esac 2919*b30d1939SAndy Fiddaman case $abi in 2920*b30d1939SAndy Fiddaman '') abi="'d=$INSTALLROOT v='" ;; 2921*b30d1939SAndy Fiddaman esac 2922*b30d1939SAndy Fiddaman p=0 2923*b30d1939SAndy Fiddaman eval " 2924*b30d1939SAndy Fiddaman for a in $abi 2925*b30d1939SAndy Fiddaman do eval \$a 2926*b30d1939SAndy Fiddaman eval \" 2927*b30d1939SAndy Fiddaman case \\\$LD_LIBRARY\${v}_PATH: in 2928*b30d1939SAndy Fiddaman \\\$d/lib:*) 2929*b30d1939SAndy Fiddaman ;; 2930*b30d1939SAndy Fiddaman *) x=\\\$LD_LIBRARY\${v}_PATH 2931*b30d1939SAndy Fiddaman case \\\$x in 2932*b30d1939SAndy Fiddaman ''|:*) ;; 2933*b30d1939SAndy Fiddaman *) x=:\\\$x ;; 2934*b30d1939SAndy Fiddaman esac 2935*b30d1939SAndy Fiddaman LD_LIBRARY\${v}_PATH=\$d/lib\\\$x 2936*b30d1939SAndy Fiddaman export LD_LIBRARY\${v}_PATH 2937*b30d1939SAndy Fiddaman p=1 2938*b30d1939SAndy Fiddaman ;; 2939*b30d1939SAndy Fiddaman esac 2940*b30d1939SAndy Fiddaman \" 2941*b30d1939SAndy Fiddaman done 2942*b30d1939SAndy Fiddaman " 2943*b30d1939SAndy Fiddaman case $LD_LIBRARY_PATH in 2944*b30d1939SAndy Fiddaman '') ;; 2945*b30d1939SAndy Fiddaman *) for d in $lib 2946*b30d1939SAndy Fiddaman do case $HOSTTYPE in 2947*b30d1939SAndy Fiddaman *64) if test -d ${d}64 2948*b30d1939SAndy Fiddaman then d=${d}64 2949*b30d1939SAndy Fiddaman fi 2950*b30d1939SAndy Fiddaman ;; 2951*b30d1939SAndy Fiddaman esac 2952*b30d1939SAndy Fiddaman case :$LD_LIBRARY_PATH: in 2953*b30d1939SAndy Fiddaman *:$d:*) ;; 2954*b30d1939SAndy Fiddaman *) if test -d $d 2955*b30d1939SAndy Fiddaman then LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$d 2956*b30d1939SAndy Fiddaman p=1 2957*b30d1939SAndy Fiddaman fi 2958*b30d1939SAndy Fiddaman ;; 2959*b30d1939SAndy Fiddaman esac 2960*b30d1939SAndy Fiddaman done 2961*b30d1939SAndy Fiddaman ;; 2962*b30d1939SAndy Fiddaman esac 2963*b30d1939SAndy Fiddaman case $p in 2964*b30d1939SAndy Fiddaman 1) $show LD_LIBRARY_PATH=$LD_LIBRARY_PATH 2965*b30d1939SAndy Fiddaman $show export LD_LIBRARY_PATH 2966*b30d1939SAndy Fiddaman export LD_LIBRARY_PATH 2967*b30d1939SAndy Fiddaman ;; 2968*b30d1939SAndy Fiddaman esac 2969*b30d1939SAndy Fiddaman case $LIBPATH: in 2970*b30d1939SAndy Fiddaman $INSTALLROOT/bin:$INSTALLROOT/lib:*) 2971*b30d1939SAndy Fiddaman ;; 2972*b30d1939SAndy Fiddaman *) case $LIBPATH in 2973*b30d1939SAndy Fiddaman '') LIBPATH=/usr/lib:/lib ;; 2974*b30d1939SAndy Fiddaman esac 2975*b30d1939SAndy Fiddaman LIBPATH=$INSTALLROOT/bin:$INSTALLROOT/lib:$LIBPATH 2976*b30d1939SAndy Fiddaman $show LIBPATH=$LIBPATH 2977*b30d1939SAndy Fiddaman $show export LIBPATH 2978*b30d1939SAndy Fiddaman export LIBPATH 2979*b30d1939SAndy Fiddaman ;; 2980*b30d1939SAndy Fiddaman esac 2981*b30d1939SAndy Fiddaman case $SHLIB_PATH: in 2982*b30d1939SAndy Fiddaman $INSTALLROOT/lib:*) 2983*b30d1939SAndy Fiddaman ;; 2984*b30d1939SAndy Fiddaman *) SHLIB_PATH=$INSTALLROOT/lib${SHLIB_PATH:+:$SHLIB_PATH} 2985*b30d1939SAndy Fiddaman $show SHLIB_PATH=$SHLIB_PATH 2986*b30d1939SAndy Fiddaman $show export SHLIB_PATH 2987*b30d1939SAndy Fiddaman export SHLIB_PATH 2988*b30d1939SAndy Fiddaman ;; 2989*b30d1939SAndy Fiddaman esac 2990*b30d1939SAndy Fiddaman case $DYLD_LIBRARY_PATH: in 2991*b30d1939SAndy Fiddaman $INSTALLROOT/lib:*) 2992*b30d1939SAndy Fiddaman ;; 2993*b30d1939SAndy Fiddaman *) DYLD_LIBRARY_PATH=$INSTALLROOT/lib${DYLD_LIBRARY_PATH:+:$DYLD_LIBRARY_PATH} 2994*b30d1939SAndy Fiddaman $show DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH 2995*b30d1939SAndy Fiddaman $show export DYLD_LIBRARY_PATH 2996*b30d1939SAndy Fiddaman export DYLD_LIBRARY_PATH 2997*b30d1939SAndy Fiddaman ;; 2998*b30d1939SAndy Fiddaman esac 2999*b30d1939SAndy Fiddaman case $_RLD_ROOT in 3000*b30d1939SAndy Fiddaman $INSTALLROOT/arch*) ;; 3001*b30d1939SAndy Fiddaman ':') _RLD_ROOT=$INSTALLROOT/arch:/ ;; 3002*b30d1939SAndy Fiddaman /|*:/) _RLD_ROOT=$INSTALLROOT/arch:$_RLD_ROOT ;; 3003*b30d1939SAndy Fiddaman *) _RLD_ROOT=$INSTALLROOT/arch:$_RLD_ROOT:/ ;; 3004*b30d1939SAndy Fiddaman esac 3005*b30d1939SAndy Fiddaman $show _RLD_ROOT=$_RLD_ROOT 3006*b30d1939SAndy Fiddaman $show export _RLD_ROOT 3007*b30d1939SAndy Fiddaman export _RLD_ROOT 3008*b30d1939SAndy Fiddaman 3009*b30d1939SAndy Fiddaman # now set up PATH 3010*b30d1939SAndy Fiddaman # 3011*b30d1939SAndy Fiddaman # NOTE: PACKAGEROOT==INSTALLROOT is possible for binary installations 3012*b30d1939SAndy Fiddaman 3013*b30d1939SAndy Fiddaman case $PATH: in 3014*b30d1939SAndy Fiddaman $PACKAGEROOT/bin:*) 3015*b30d1939SAndy Fiddaman ;; 3016*b30d1939SAndy Fiddaman *) PATH=$PACKAGEROOT/bin:$PATH 3017*b30d1939SAndy Fiddaman ;; 3018*b30d1939SAndy Fiddaman esac 3019*b30d1939SAndy Fiddaman case $PATH: in 3020*b30d1939SAndy Fiddaman $INSTALLROOT/bin:*) 3021*b30d1939SAndy Fiddaman ;; 3022*b30d1939SAndy Fiddaman *) PATH=$INSTALLROOT/bin:$PATH 3023*b30d1939SAndy Fiddaman ;; 3024*b30d1939SAndy Fiddaman esac 3025*b30d1939SAndy Fiddaman $show PATH=$PATH 3026*b30d1939SAndy Fiddaman $show export PATH 3027*b30d1939SAndy Fiddaman export PATH 3028*b30d1939SAndy Fiddaman ;; 3029*b30d1939SAndy Fiddaman *) for i in package proto nmake 3030*b30d1939SAndy Fiddaman do if onpath $i 3031*b30d1939SAndy Fiddaman then EXECROOT=`echo $_onpath_ | sed -e 's,//*[^/]*//*[^/]*$,,'` 3032*b30d1939SAndy Fiddaman EXECTYPE=`echo $EXECROOT | sed -e 's,.*/,,'` 3033*b30d1939SAndy Fiddaman break 3034*b30d1939SAndy Fiddaman fi 3035*b30d1939SAndy Fiddaman done 3036*b30d1939SAndy Fiddaman case $HOSTTYPE in 3037*b30d1939SAndy Fiddaman $EXECTYPE) 3038*b30d1939SAndy Fiddaman OCC=$CC 3039*b30d1939SAndy Fiddaman CC=cc 3040*b30d1939SAndy Fiddaman hostinfo type 3041*b30d1939SAndy Fiddaman EXECTYPE=$_hostinfo_ 3042*b30d1939SAndy Fiddaman case $HOSTTYPE in 3043*b30d1939SAndy Fiddaman $EXECTYPE) 3044*b30d1939SAndy Fiddaman echo "$command: $CC: seems to be a cross-compiler" >&2 3045*b30d1939SAndy Fiddaman echo "$command: set HOSTTYPE to something other than the native $EXECTYPE" >&2 3046*b30d1939SAndy Fiddaman exit 1 3047*b30d1939SAndy Fiddaman ;; 3048*b30d1939SAndy Fiddaman esac 3049*b30d1939SAndy Fiddaman ;; 3050*b30d1939SAndy Fiddaman esac 3051*b30d1939SAndy Fiddaman $show EXECTYPE=$EXECTYPE 3052*b30d1939SAndy Fiddaman $show export EXECTYPE 3053*b30d1939SAndy Fiddaman export EXECTYPE 3054*b30d1939SAndy Fiddaman ;; 3055*b30d1939SAndy Fiddaman esac 3056*b30d1939SAndy Fiddaman $show EXECROOT=$EXECROOT 3057*b30d1939SAndy Fiddaman $show export EXECROOT 3058*b30d1939SAndy Fiddaman export EXECROOT 3059*b30d1939SAndy Fiddaman 3060*b30d1939SAndy Fiddaman # use these if possible 3061*b30d1939SAndy Fiddaman 3062*b30d1939SAndy Fiddaman OK=ok 3063*b30d1939SAndy Fiddaman KSH=$EXECROOT/bin/ksh 3064*b30d1939SAndy Fiddaman MAKE=nmake 3065*b30d1939SAndy Fiddaman NMAKE=$EXECROOT/bin/$MAKE 3066*b30d1939SAndy Fiddaman SUM=$EXECROOT/bin/sum 3067*b30d1939SAndy Fiddaman TEE=$EXECROOT/bin/tee 3068*b30d1939SAndy Fiddaman 3069*b30d1939SAndy Fiddaman # grab a decent default shell 3070*b30d1939SAndy Fiddaman 3071*b30d1939SAndy Fiddaman case $KEEP_SHELL in 3072*b30d1939SAndy Fiddaman 0) executable "$SHELL" || SHELL= 3073*b30d1939SAndy Fiddaman case $SHELL in 3074*b30d1939SAndy Fiddaman ?*) checksh $SHELL || SHELL= ;; 3075*b30d1939SAndy Fiddaman esac 3076*b30d1939SAndy Fiddaman case $SHELL in 3077*b30d1939SAndy Fiddaman ''|/bin/*|/usr/bin/*) 3078*b30d1939SAndy Fiddaman case $SHELL in 3079*b30d1939SAndy Fiddaman '') SHELL=/bin/sh ;; 3080*b30d1939SAndy Fiddaman esac 3081*b30d1939SAndy Fiddaman for i in ksh sh bash 3082*b30d1939SAndy Fiddaman do if onpath $i && checksh $_onpath_ 3083*b30d1939SAndy Fiddaman then SHELL=$_onpath_ 3084*b30d1939SAndy Fiddaman break 3085*b30d1939SAndy Fiddaman fi 3086*b30d1939SAndy Fiddaman done 3087*b30d1939SAndy Fiddaman ;; 3088*b30d1939SAndy Fiddaman */*ksh) if executable $KSH 3089*b30d1939SAndy Fiddaman then SHELL=$KSH 3090*b30d1939SAndy Fiddaman fi 3091*b30d1939SAndy Fiddaman ;; 3092*b30d1939SAndy Fiddaman esac 3093*b30d1939SAndy Fiddaman ;; 3094*b30d1939SAndy Fiddaman esac 3095*b30d1939SAndy Fiddaman 3096*b30d1939SAndy Fiddaman # $SHELL must be /bin/sh compatible 3097*b30d1939SAndy Fiddaman 3098*b30d1939SAndy Fiddaman case $SHELL in 3099*b30d1939SAndy Fiddaman /bin/sh);; 3100*b30d1939SAndy Fiddaman '') SHELL=/bin/sh 3101*b30d1939SAndy Fiddaman ;; 3102*b30d1939SAndy Fiddaman *) $SHELL -c 'trap "exit 0" 0; exit 1' 2>/dev/null 3103*b30d1939SAndy Fiddaman case $? in 3104*b30d1939SAndy Fiddaman 1) SHELL=/bin/sh 3105*b30d1939SAndy Fiddaman ;; 3106*b30d1939SAndy Fiddaman *) # catch (our own) pipe/socket configuration mismatches 3107*b30d1939SAndy Fiddaman $SHELL -c "date | $SHELL -c 'read x'" 3108*b30d1939SAndy Fiddaman case $? in 3109*b30d1939SAndy Fiddaman 0) ;; 3110*b30d1939SAndy Fiddaman *) SHELL=/bin/sh ;; 3111*b30d1939SAndy Fiddaman esac 3112*b30d1939SAndy Fiddaman ;; 3113*b30d1939SAndy Fiddaman esac 3114*b30d1939SAndy Fiddaman ;; 3115*b30d1939SAndy Fiddaman esac 3116*b30d1939SAndy Fiddaman export SHELL 3117*b30d1939SAndy Fiddaman $show SHELL=$SHELL 3118*b30d1939SAndy Fiddaman $show export SHELL 3119*b30d1939SAndy Fiddaman COSHELL=$SHELL 3120*b30d1939SAndy Fiddaman export COSHELL 3121*b30d1939SAndy Fiddaman $show COSHELL=$COSHELL 3122*b30d1939SAndy Fiddaman $show export COSHELL 3123*b30d1939SAndy Fiddaman 3124*b30d1939SAndy Fiddaman # tame the environment 3125*b30d1939SAndy Fiddaman 3126*b30d1939SAndy Fiddaman case $action in 3127*b30d1939SAndy Fiddaman use) ;; 3128*b30d1939SAndy Fiddaman *) ENV= 3129*b30d1939SAndy Fiddaman ERROR_OPTIONS= 3130*b30d1939SAndy Fiddaman export ENV ERROR_OPTIONS 3131*b30d1939SAndy Fiddaman ;; 3132*b30d1939SAndy Fiddaman esac 3133*b30d1939SAndy Fiddaman 3134*b30d1939SAndy Fiddaman # finalize the views 3135*b30d1939SAndy Fiddaman 3136*b30d1939SAndy Fiddaman case $USER_VPATH in 3137*b30d1939SAndy Fiddaman '') case $VPATH in 3138*b30d1939SAndy Fiddaman ?*) IFS=':' 3139*b30d1939SAndy Fiddaman set '' $VPATH 3140*b30d1939SAndy Fiddaman shift 3141*b30d1939SAndy Fiddaman IFS=$ifs 3142*b30d1939SAndy Fiddaman USER_VPATH= 3143*b30d1939SAndy Fiddaman for i 3144*b30d1939SAndy Fiddaman do case $i in 3145*b30d1939SAndy Fiddaman */arch/$HOSTTYPE) ;; 3146*b30d1939SAndy Fiddaman */arch/*/*) ;; 3147*b30d1939SAndy Fiddaman */arch/*) continue ;; 3148*b30d1939SAndy Fiddaman esac 3149*b30d1939SAndy Fiddaman if packageroot $i 3150*b30d1939SAndy Fiddaman then case $USER_VPATH in 3151*b30d1939SAndy Fiddaman '') USER_VPATH=$i ;; 3152*b30d1939SAndy Fiddaman ?*) USER_VPATH=$USER_VPATH:$i ;; 3153*b30d1939SAndy Fiddaman esac 3154*b30d1939SAndy Fiddaman fi 3155*b30d1939SAndy Fiddaman done 3156*b30d1939SAndy Fiddaman esac 3157*b30d1939SAndy Fiddaman ;; 3158*b30d1939SAndy Fiddaman esac 3159*b30d1939SAndy Fiddaman case $USER_VPATH in 3160*b30d1939SAndy Fiddaman ?*) IFS=':' 3161*b30d1939SAndy Fiddaman set '' $USER_VPATH 3162*b30d1939SAndy Fiddaman shift 3163*b30d1939SAndy Fiddaman IFS=$ifs 3164*b30d1939SAndy Fiddaman USER_VPATH= 3165*b30d1939SAndy Fiddaman USER_VPATH_CHAIN= 3166*b30d1939SAndy Fiddaman p=$PACKAGEROOT 3167*b30d1939SAndy Fiddaman for i 3168*b30d1939SAndy Fiddaman do case $i in 3169*b30d1939SAndy Fiddaman ''|$PACKAGEROOT|$INSTALLROOT) 3170*b30d1939SAndy Fiddaman ;; 3171*b30d1939SAndy Fiddaman ?*) USER_VPATH=$USER_VPATH:$i 3172*b30d1939SAndy Fiddaman USER_VPATH_CHAIN="$USER_VPATH_CHAIN $p $i" 3173*b30d1939SAndy Fiddaman p=$i 3174*b30d1939SAndy Fiddaman case $PROTOROOT in 3175*b30d1939SAndy Fiddaman -) executable $i/bin/mamake && PROTOROOT= ;; 3176*b30d1939SAndy Fiddaman esac 3177*b30d1939SAndy Fiddaman ;; 3178*b30d1939SAndy Fiddaman esac 3179*b30d1939SAndy Fiddaman done 3180*b30d1939SAndy Fiddaman ;; 3181*b30d1939SAndy Fiddaman esac 3182*b30d1939SAndy Fiddaman ;; 3183*b30d1939SAndy Fiddamanesac 3184*b30d1939SAndy Fiddaman 3185*b30d1939SAndy FiddamanPACKAGESRC=$PACKAGEROOT/lib/package 3186*b30d1939SAndy FiddamanPACKAGEBIN=$INSTALLROOT/lib/package 3187*b30d1939SAndy Fiddamancase $action:$run in 3188*b30d1939SAndy Fiddamanuse:-) set '' $args 3189*b30d1939SAndy Fiddaman shift 3190*b30d1939SAndy Fiddaman case $# in 3191*b30d1939SAndy Fiddaman 0) ;; 3192*b30d1939SAndy Fiddaman *) shift ;; 3193*b30d1939SAndy Fiddaman esac 3194*b30d1939SAndy Fiddaman run="$@" 3195*b30d1939SAndy Fiddaman ;; 3196*b30d1939SAndy Fiddamanesac 3197*b30d1939SAndy Fiddaman 3198*b30d1939SAndy Fiddaman# HOSTTYPE specific package profile 3199*b30d1939SAndy Fiddaman 3200*b30d1939SAndy Fiddamanif test -r $INSTALLROOT/lib/package/profile 3201*b30d1939SAndy Fiddamanthen . $INSTALLROOT/lib/package/profile 3202*b30d1939SAndy Fiddamanfi 3203*b30d1939SAndy Fiddaman 3204*b30d1939SAndy Fiddaman# more cygwin hassles 3205*b30d1939SAndy Fiddaman 3206*b30d1939SAndy Fiddamancase $HOSTTYPE in 3207*b30d1939SAndy Fiddamancygwin.*) 3208*b30d1939SAndy Fiddaman lose= 3209*b30d1939SAndy Fiddaman case $CYGWIN in 3210*b30d1939SAndy Fiddaman *nontsec*) 3211*b30d1939SAndy Fiddaman lose=ntsec 3212*b30d1939SAndy Fiddaman ;; 3213*b30d1939SAndy Fiddaman *ntsec*);; 3214*b30d1939SAndy Fiddaman *) exe=/tmp/pkg$$.exe 3215*b30d1939SAndy Fiddaman rm -f $exe 3216*b30d1939SAndy Fiddaman : > $exe 3217*b30d1939SAndy Fiddaman if test -x $exe 3218*b30d1939SAndy Fiddaman then lose=ntsec 3219*b30d1939SAndy Fiddaman fi 3220*b30d1939SAndy Fiddaman ;; 3221*b30d1939SAndy Fiddaman esac 3222*b30d1939SAndy Fiddaman case $CYGWIN in 3223*b30d1939SAndy Fiddaman *nobinmode*) 3224*b30d1939SAndy Fiddaman case $lose in 3225*b30d1939SAndy Fiddaman '') lose=binmode ;; 3226*b30d1939SAndy Fiddaman *) lose="$lose binmode" ;; 3227*b30d1939SAndy Fiddaman esac 3228*b30d1939SAndy Fiddaman ;; 3229*b30d1939SAndy Fiddaman esac 3230*b30d1939SAndy Fiddaman case $lose in 3231*b30d1939SAndy Fiddaman ?*) echo "$command: $HOSTTYPE: export '$lose' in CYGWIN or languish in windows" >&2 3232*b30d1939SAndy Fiddaman exit 1 3233*b30d1939SAndy Fiddaman ;; 3234*b30d1939SAndy Fiddaman esac 3235*b30d1939SAndy Fiddaman ;; 3236*b30d1939SAndy Fiddamanesac 3237*b30d1939SAndy Fiddaman 3238*b30d1939SAndy Fiddaman# set up the view state 3239*b30d1939SAndy Fiddaman 3240*b30d1939SAndy FiddamanVIEW_bin=$INSTALLROOT VIEW_src=$PACKAGEROOT VIEW_all="$INSTALLROOT $PACKAGEROOT" 3241*b30d1939SAndy Fiddamanif (vpath $INSTALLROOT $PACKAGEROOT $USER_VPATH_CHAIN) >/dev/null 2>&1 && 3242*b30d1939SAndy Fiddaman vpath $INSTALLROOT $PACKAGEROOT $USER_VPATH_CHAIN 3243*b30d1939SAndy Fiddamanthen $show vpath $INSTALLROOT $PACKAGEROOT $USER_VPATH_CHAIN 3244*b30d1939SAndy Fiddamanelse VPATH=$INSTALLROOT:$PACKAGEROOT$USER_VPATH 3245*b30d1939SAndy Fiddaman $show VPATH=$VPATH 3246*b30d1939SAndy Fiddaman $show export VPATH 3247*b30d1939SAndy Fiddaman export VPATH 3248*b30d1939SAndy Fiddaman IFS=':' 3249*b30d1939SAndy Fiddaman set '' $VPATH 3250*b30d1939SAndy Fiddaman shift 3251*b30d1939SAndy Fiddaman IFS=$ifs 3252*b30d1939SAndy Fiddaman for i 3253*b30d1939SAndy Fiddaman do case $i in 3254*b30d1939SAndy Fiddaman */arch/*/*) 3255*b30d1939SAndy Fiddaman VIEW_src="$VIEW_src $i" 3256*b30d1939SAndy Fiddaman ;; 3257*b30d1939SAndy Fiddaman */arch/*) 3258*b30d1939SAndy Fiddaman VIEW_bin="$VIEW_bin $i" 3259*b30d1939SAndy Fiddaman ;; 3260*b30d1939SAndy Fiddaman *) 3261*b30d1939SAndy Fiddaman VIEW_src="$VIEW_src $i" 3262*b30d1939SAndy Fiddaman ;; 3263*b30d1939SAndy Fiddaman esac 3264*b30d1939SAndy Fiddaman VIEW_all="$VIEW_all $i" 3265*b30d1939SAndy Fiddaman done 3266*b30d1939SAndy Fiddamanfi 3267*b30d1939SAndy Fiddaman 3268*b30d1939SAndy Fiddaman# return 0 if arg in src|bin|all view 3269*b30d1939SAndy Fiddaman 3270*b30d1939SAndy Fiddamanview() # [test] [-|type] [src|bin|all] file 3271*b30d1939SAndy Fiddaman{ 3272*b30d1939SAndy Fiddaman case $1 in 3273*b30d1939SAndy Fiddaman -[dfsx])_view_T_=$1; shift ;; 3274*b30d1939SAndy Fiddaman *) _view_T_=-f ;; 3275*b30d1939SAndy Fiddaman esac 3276*b30d1939SAndy Fiddaman case $1 in 3277*b30d1939SAndy Fiddaman -) _view_t_= ;; 3278*b30d1939SAndy Fiddaman *) _view_t_=$1 ;; 3279*b30d1939SAndy Fiddaman esac 3280*b30d1939SAndy Fiddaman shift 3281*b30d1939SAndy Fiddaman case $1 in 3282*b30d1939SAndy Fiddaman all) shift; _view_v_=$VIEW_all ;; 3283*b30d1939SAndy Fiddaman bin) shift; _view_v_=$VIEW_bin ;; 3284*b30d1939SAndy Fiddaman src) shift; _view_v_=$VIEW_src ;; 3285*b30d1939SAndy Fiddaman *) _view_v_=$VIEW_all ;; 3286*b30d1939SAndy Fiddaman esac 3287*b30d1939SAndy Fiddaman case $1 in 3288*b30d1939SAndy Fiddaman /*) if test $_view_T_ $1 3289*b30d1939SAndy Fiddaman then _view_=$1 3290*b30d1939SAndy Fiddaman return 0 3291*b30d1939SAndy Fiddaman fi 3292*b30d1939SAndy Fiddaman ;; 3293*b30d1939SAndy Fiddaman *) for _view_d_ in $_view_v_ 3294*b30d1939SAndy Fiddaman do if test $_view_T_ $_view_d_/$1 3295*b30d1939SAndy Fiddaman then _view_=$_view_d_/$1 3296*b30d1939SAndy Fiddaman return 0 3297*b30d1939SAndy Fiddaman fi 3298*b30d1939SAndy Fiddaman done 3299*b30d1939SAndy Fiddaman ;; 3300*b30d1939SAndy Fiddaman esac 3301*b30d1939SAndy Fiddaman _view_= 3302*b30d1939SAndy Fiddaman case $_view_t_ in 3303*b30d1939SAndy Fiddaman ?*) echo $command: $1: $_view_t_ not found >&2 ;; 3304*b30d1939SAndy Fiddaman esac 3305*b30d1939SAndy Fiddaman return 1 3306*b30d1939SAndy Fiddaman} 3307*b30d1939SAndy Fiddaman 3308*b30d1939SAndy Fiddaman# determine the package and targets 3309*b30d1939SAndy Fiddaman 3310*b30d1939SAndy Fiddamancase $action in 3311*b30d1939SAndy Fiddamanadmin) case $admin_action in 3312*b30d1939SAndy Fiddaman results)action=$admin_action 3313*b30d1939SAndy Fiddaman set '' $admin_args 3314*b30d1939SAndy Fiddaman shift;shift 3315*b30d1939SAndy Fiddaman admin_args="admin $*" 3316*b30d1939SAndy Fiddaman case $admin_on in 3317*b30d1939SAndy Fiddaman '') target=$admin_args ;; 3318*b30d1939SAndy Fiddaman *) target="on $admin_on $admin_args" ;; 3319*b30d1939SAndy Fiddaman esac 3320*b30d1939SAndy Fiddaman ;; 3321*b30d1939SAndy Fiddaman esac 3322*b30d1939SAndy Fiddaman ;; 3323*b30d1939SAndy Fiddamanrelease)set '' $args 3324*b30d1939SAndy Fiddaman target= 3325*b30d1939SAndy Fiddaman while : 3326*b30d1939SAndy Fiddaman do shift 3327*b30d1939SAndy Fiddaman case $1 in 3328*b30d1939SAndy Fiddaman -|[0123456789][0123456789]-[0123456789][0123456789]-[0123456789][0123456789]|[0123456789][0123456789][0123456789][0123456789]-[0123456789][0123456789]-[0123456789][0123456789]) 3329*b30d1939SAndy Fiddaman target="$target $1" 3330*b30d1939SAndy Fiddaman ;; 3331*b30d1939SAndy Fiddaman *) break 3332*b30d1939SAndy Fiddaman ;; 3333*b30d1939SAndy Fiddaman esac 3334*b30d1939SAndy Fiddaman done 3335*b30d1939SAndy Fiddaman package=$* 3336*b30d1939SAndy Fiddaman ;; 3337*b30d1939SAndy Fiddamansetup) # { update read } with optional (bin|fun|include|lib) symlinks 3338*b30d1939SAndy Fiddaman # flat option sets up { bin fun include lib } symlinks from 3339*b30d1939SAndy Fiddaman # $INSTALLROOT to $PACKAGEROOT 3340*b30d1939SAndy Fiddaman 3341*b30d1939SAndy Fiddaman # . is the package root 3342*b30d1939SAndy Fiddaman 3343*b30d1939SAndy Fiddaman set '' $args 3344*b30d1939SAndy Fiddaman shift 3345*b30d1939SAndy Fiddaman types= 3346*b30d1939SAndy Fiddaman url= 3347*b30d1939SAndy Fiddaman while : 3348*b30d1939SAndy Fiddaman do case $# in 3349*b30d1939SAndy Fiddaman 0) break ;; 3350*b30d1939SAndy Fiddaman esac 3351*b30d1939SAndy Fiddaman case $1 in 3352*b30d1939SAndy Fiddaman --) shift 3353*b30d1939SAndy Fiddaman break 3354*b30d1939SAndy Fiddaman ;; 3355*b30d1939SAndy Fiddaman flat) flat=1 # backwards compatibility -- documentation dropped 3356*b30d1939SAndy Fiddaman ;; 3357*b30d1939SAndy Fiddaman *://*|*.url) 3358*b30d1939SAndy Fiddaman url=$1 3359*b30d1939SAndy Fiddaman shift 3360*b30d1939SAndy Fiddaman break 3361*b30d1939SAndy Fiddaman ;; 3362*b30d1939SAndy Fiddaman *) types="$types $1" 3363*b30d1939SAndy Fiddaman ;; 3364*b30d1939SAndy Fiddaman esac 3365*b30d1939SAndy Fiddaman shift 3366*b30d1939SAndy Fiddaman done 3367*b30d1939SAndy Fiddaman if test ! -d $PACKAGEROOT/lib/package/tgz 3368*b30d1939SAndy Fiddaman then $exec mkdir -p $PACKAGEROOT/lib/package/tgz || exit 3369*b30d1939SAndy Fiddaman fi 3370*b30d1939SAndy Fiddaman case " $types " in 3371*b30d1939SAndy Fiddaman *" source "*) 3372*b30d1939SAndy Fiddaman case " $* " in 3373*b30d1939SAndy Fiddaman ' ') ;; 3374*b30d1939SAndy Fiddaman *" INIT "*) 3375*b30d1939SAndy Fiddaman ;; 3376*b30d1939SAndy Fiddaman *) view - all src/cmd/INIT || 3377*b30d1939SAndy Fiddaman set INIT "$@" 3378*b30d1939SAndy Fiddaman ;; 3379*b30d1939SAndy Fiddaman esac 3380*b30d1939SAndy Fiddaman ;; 3381*b30d1939SAndy Fiddaman esac 3382*b30d1939SAndy Fiddaman packages=`$0 $global authorize "$authorize" password "$password" update setup $types $url "$@" PACKAGEROOT=$PACKAGEROOT` 3383*b30d1939SAndy Fiddaman case $packages in 3384*b30d1939SAndy Fiddaman ?*) $0 $global read $packages PACKAGEROOT=$PACKAGEROOT 3385*b30d1939SAndy Fiddaman esac 3386*b30d1939SAndy Fiddaman exit 3387*b30d1939SAndy Fiddaman ;; 3388*b30d1939SAndy Fiddaman*) package= 3389*b30d1939SAndy Fiddaman target= 3390*b30d1939SAndy Fiddaman set '' $args 3391*b30d1939SAndy Fiddaman while : 3392*b30d1939SAndy Fiddaman do shift 3393*b30d1939SAndy Fiddaman case $# in 3394*b30d1939SAndy Fiddaman 0) break ;; 3395*b30d1939SAndy Fiddaman esac 3396*b30d1939SAndy Fiddaman case $1 in 3397*b30d1939SAndy Fiddaman ''|-) target="$target $package" 3398*b30d1939SAndy Fiddaman package= 3399*b30d1939SAndy Fiddaman ;; 3400*b30d1939SAndy Fiddaman *) if view - src "lib/package/$1.pkg" 3401*b30d1939SAndy Fiddaman then package="$package $1" 3402*b30d1939SAndy Fiddaman else target="$target $package $1" 3403*b30d1939SAndy Fiddaman package= 3404*b30d1939SAndy Fiddaman fi 3405*b30d1939SAndy Fiddaman ;; 3406*b30d1939SAndy Fiddaman esac 3407*b30d1939SAndy Fiddaman done 3408*b30d1939SAndy Fiddaman ;; 3409*b30d1939SAndy Fiddamanesac 3410*b30d1939SAndy Fiddaman 3411*b30d1939SAndy Fiddaman# flatten -- assumes symlink support 3412*b30d1939SAndy Fiddaman 3413*b30d1939SAndy Fiddamancase $flat in 3414*b30d1939SAndy Fiddaman1) case $action in 3415*b30d1939SAndy Fiddaman make|read|setup|update|use|view) 3416*b30d1939SAndy Fiddaman if test ! -d $INSTALLROOT 3417*b30d1939SAndy Fiddaman then $exec mkdir -p $INSTALLROOT || exit 3418*b30d1939SAndy Fiddaman fi 3419*b30d1939SAndy Fiddaman for i in bin include lib fun man share 3420*b30d1939SAndy Fiddaman do if test ! -d $INSTALLROOT/../../$i 3421*b30d1939SAndy Fiddaman then $exec mkdir $INSTALLROOT/../../$i 3422*b30d1939SAndy Fiddaman fi 3423*b30d1939SAndy Fiddaman if test ! -d $INSTALLROOT/$i 3424*b30d1939SAndy Fiddaman then if test ! -h $INSTALLROOT/$i 3425*b30d1939SAndy Fiddaman then $exec ln -s ../../$i $INSTALLROOT/$i 3426*b30d1939SAndy Fiddaman fi 3427*b30d1939SAndy Fiddaman elif test ! -h $INSTALLROOT/$i 3428*b30d1939SAndy Fiddaman then for x in $INSTALLROOT/$i/.[a-z]* $INSTALLROOT/$i/* 3429*b30d1939SAndy Fiddaman do if test -f $x -o -d $x 3430*b30d1939SAndy Fiddaman then if test ! -d $INSTALLROOT/$i/$x || test ! -d $INSTALLROOT/../../$i/$x 3431*b30d1939SAndy Fiddaman then $exec mv $x $INSTALLROOT/../../$i 3432*b30d1939SAndy Fiddaman fi 3433*b30d1939SAndy Fiddaman fi 3434*b30d1939SAndy Fiddaman done 3435*b30d1939SAndy Fiddaman $exec rm -rf $INSTALLROOT/$i 3436*b30d1939SAndy Fiddaman $exec ln -s ../../$i $INSTALLROOT/$i 3437*b30d1939SAndy Fiddaman fi 3438*b30d1939SAndy Fiddaman done 3439*b30d1939SAndy Fiddaman ;; 3440*b30d1939SAndy Fiddaman esac 3441*b30d1939SAndy Fiddaman ;; 3442*b30d1939SAndy Fiddamanesac 3443*b30d1939SAndy Fiddaman 3444*b30d1939SAndy Fiddaman# check that cmd args are up to date a.out's 3445*b30d1939SAndy Fiddaman 3446*b30d1939SAndy Fiddamancheckaout() # cmd ... 3447*b30d1939SAndy Fiddaman{ 3448*b30d1939SAndy Fiddaman case $PROTOROOT in 3449*b30d1939SAndy Fiddaman -) PROTOROOT= 3450*b30d1939SAndy Fiddaman case $* in 3451*b30d1939SAndy Fiddaman ratz) if test -f $INITROOT/ratz.c -a -w $PACKAGEROOT 3452*b30d1939SAndy Fiddaman then test -f $INITROOT/hello.c || { 3453*b30d1939SAndy Fiddaman cat > $INITROOT/hello.c <<'!' 3454*b30d1939SAndy Fiddaman#ifndef printf 3455*b30d1939SAndy Fiddaman#include <stdio.h> 3456*b30d1939SAndy Fiddaman#endif 3457*b30d1939SAndy Fiddamanint main() { int new = 0; printf("hello world\n"); return new;} 3458*b30d1939SAndy Fiddaman! 3459*b30d1939SAndy Fiddaman } 3460*b30d1939SAndy Fiddaman test -f $INITROOT/p.c || { 3461*b30d1939SAndy Fiddaman cat > $INITROOT/p.c <<'!' 3462*b30d1939SAndy Fiddaman/* 3463*b30d1939SAndy Fiddaman * small test for prototyping cc 3464*b30d1939SAndy Fiddaman */ 3465*b30d1939SAndy Fiddaman 3466*b30d1939SAndy Fiddamanint main(int argc, char** argv) { return argc || argv; } 3467*b30d1939SAndy Fiddaman! 3468*b30d1939SAndy Fiddaman } 3469*b30d1939SAndy Fiddaman fi 3470*b30d1939SAndy Fiddaman ;; 3471*b30d1939SAndy Fiddaman esac 3472*b30d1939SAndy Fiddaman test -f $INITROOT/hello.c -a -f $INITROOT/p.c -a -w $PACKAGEROOT || { 3473*b30d1939SAndy Fiddaman for i 3474*b30d1939SAndy Fiddaman do onpath $i || { 3475*b30d1939SAndy Fiddaman echo "$command: $i: command not found" >&2 3476*b30d1939SAndy Fiddaman return 1 3477*b30d1939SAndy Fiddaman } 3478*b30d1939SAndy Fiddaman done 3479*b30d1939SAndy Fiddaman return 0 3480*b30d1939SAndy Fiddaman } 3481*b30d1939SAndy Fiddaman case $cc in 3482*b30d1939SAndy Fiddaman '') _PACKAGE_cc=0 3483*b30d1939SAndy Fiddaman ;; 3484*b30d1939SAndy Fiddaman *) _PACKAGE_cc=1 3485*b30d1939SAndy Fiddaman test -f $INITROOT/hello.c -a -f $INITROOT/p.c || { 3486*b30d1939SAndy Fiddaman echo "$command: $INITROOT: INIT package source not found" >&2 3487*b30d1939SAndy Fiddaman return 1 3488*b30d1939SAndy Fiddaman } 3489*b30d1939SAndy Fiddaman executable $INSTALLROOT/bin/nmake || { 3490*b30d1939SAndy Fiddaman # check for prototyping cc 3491*b30d1939SAndy Fiddaman # NOTE: proto.c must be K&R compatible 3492*b30d1939SAndy Fiddaman 3493*b30d1939SAndy Fiddaman $CC -c $INITROOT/p.c >/dev/null 2>&1 3494*b30d1939SAndy Fiddaman c=$? 3495*b30d1939SAndy Fiddaman rm -f p.* 3496*b30d1939SAndy Fiddaman test 0 != "$c" && { 3497*b30d1939SAndy Fiddaman checkaout proto || return 3498*b30d1939SAndy Fiddaman PROTOROOT=$PACKAGEROOT/proto 3499*b30d1939SAndy Fiddaman $show PROTOROOT=$PACKAGEROOT/proto 3500*b30d1939SAndy Fiddaman export PROTOROOT 3501*b30d1939SAndy Fiddaman INITPROTO=$PROTOROOT/src/cmd/INIT 3502*b30d1939SAndy Fiddaman note proto convert $PACKAGEROOT/src into $PROTOROOT/src 3503*b30d1939SAndy Fiddaman if test -d $PACKAGEROOT/src/cmd/nmake 3504*b30d1939SAndy Fiddaman then dirs="src/cmd/INIT src/lib/libast src/lib/libardir src/lib/libcoshell src/lib/libpp src/cmd/probe src/cmd/cpp src/cmd/nmake" 3505*b30d1939SAndy Fiddaman else dirs="src" 3506*b30d1939SAndy Fiddaman fi 3507*b30d1939SAndy Fiddaman ( 3508*b30d1939SAndy Fiddaman if test -f $PROTOROOT/UPDATE 3509*b30d1939SAndy Fiddaman then newer="-newer $PROTOROOT/UPDATE" 3510*b30d1939SAndy Fiddaman else newer="" 3511*b30d1939SAndy Fiddaman fi 3512*b30d1939SAndy Fiddaman case $exec in 3513*b30d1939SAndy Fiddaman '') cd $PACKAGEROOT 3514*b30d1939SAndy Fiddaman find $dirs -name '*.[CcHh]' $newer -print | proto -v -L - -C proto 3515*b30d1939SAndy Fiddaman ;; 3516*b30d1939SAndy Fiddaman *) $exec cd $PACKAGEROOT 3517*b30d1939SAndy Fiddaman $exec "find $dirs -name '*.[CcHh]' $newer -print | proto -L - -C proto" 3518*b30d1939SAndy Fiddaman ;; 3519*b30d1939SAndy Fiddaman esac 3520*b30d1939SAndy Fiddaman $exec touch $PROTOROOT/UPDATE 3521*b30d1939SAndy Fiddaman ) 3522*b30d1939SAndy Fiddaman if (vpath $INSTALLROOT - $INSTALLROOT $PROTOROOT $PROTOROOT $PACKAGEROOT) >/dev/null 2>&1 && 3523*b30d1939SAndy Fiddaman vpath $INSTALLROOT - $INSTALLROOT $PROTOROOT $PROTOROOT $PACKAGEROOT 3524*b30d1939SAndy Fiddaman then $show vpath $INSTALLROOT $PROTOROOT $PROTOROOT $PACKAGEROOT $USER_VPATH_CHAIN 3525*b30d1939SAndy Fiddaman else VPATH=$INSTALLROOT:$PROTOROOT:$PACKAGEROOT$USER_VPATH 3526*b30d1939SAndy Fiddaman $show VPATH=$VPATH 3527*b30d1939SAndy Fiddaman export VPATH 3528*b30d1939SAndy Fiddaman fi 3529*b30d1939SAndy Fiddaman } 3530*b30d1939SAndy Fiddaman } 3531*b30d1939SAndy Fiddaman for i in arch arch/$HOSTTYPE arch/$HOSTTYPE/bin 3532*b30d1939SAndy Fiddaman do test -d $PACKAGEROOT/$i || $exec mkdir $PACKAGEROOT/$i || return 3533*b30d1939SAndy Fiddaman done 3534*b30d1939SAndy Fiddaman ;; 3535*b30d1939SAndy Fiddaman esac 3536*b30d1939SAndy Fiddaman ;; 3537*b30d1939SAndy Fiddaman esac 3538*b30d1939SAndy Fiddaman case $_PACKAGE_cc in 3539*b30d1939SAndy Fiddaman '') case $cc in 3540*b30d1939SAndy Fiddaman '') _PACKAGE_cc=0 ;; 3541*b30d1939SAndy Fiddaman *) _PACKAGE_cc=1 ;; 3542*b30d1939SAndy Fiddaman esac 3543*b30d1939SAndy Fiddaman ;; 3544*b30d1939SAndy Fiddaman esac 3545*b30d1939SAndy Fiddaman for i 3546*b30d1939SAndy Fiddaman do eval j=\$_PACKAGE_AOUT_$i 3547*b30d1939SAndy Fiddaman case $j in 3548*b30d1939SAndy Fiddaman '') eval _PACKAGE_AOUT_$i=1 ;; 3549*b30d1939SAndy Fiddaman *) continue ;; 3550*b30d1939SAndy Fiddaman esac 3551*b30d1939SAndy Fiddaman k=$_PACKAGE_cc 3552*b30d1939SAndy Fiddaman if test -f $INITROOT/$i.c 3553*b30d1939SAndy Fiddaman then k=${k}1 3554*b30d1939SAndy Fiddaman else k=${k}0 3555*b30d1939SAndy Fiddaman fi 3556*b30d1939SAndy Fiddaman if executable $EXECROOT/bin/$i 3557*b30d1939SAndy Fiddaman then k=${k}1 3558*b30d1939SAndy Fiddaman else k=${k}0 3559*b30d1939SAndy Fiddaman fi 3560*b30d1939SAndy Fiddaman : $k : compiler : source : binary : 3561*b30d1939SAndy Fiddaman case $k in 3562*b30d1939SAndy Fiddaman *00) view - bin/$i && continue ;; 3563*b30d1939SAndy Fiddaman esac 3564*b30d1939SAndy Fiddaman case $k in 3565*b30d1939SAndy Fiddaman 000) echo "$command: $i: not found: download the INIT package $HOSTTYPE binary to continue" >&2 3566*b30d1939SAndy Fiddaman return 1 3567*b30d1939SAndy Fiddaman ;; 3568*b30d1939SAndy Fiddaman 010) echo "$command: $i: not found: set CC=C-compiler or download the INIT package $HOSTTYPE binary to continue" >&2 3569*b30d1939SAndy Fiddaman return 1 3570*b30d1939SAndy Fiddaman ;; 3571*b30d1939SAndy Fiddaman 100) echo "$command: $i: not found: download the INIT package source or $HOSTTYPE binary to continue" >&2 3572*b30d1939SAndy Fiddaman return 1 3573*b30d1939SAndy Fiddaman ;; 3574*b30d1939SAndy Fiddaman 110) case $CROSS in 3575*b30d1939SAndy Fiddaman 1) echo "$command: $i: not found: make the local $EXECTYPE binary package before $HOSTTYPE" >&2 3576*b30d1939SAndy Fiddaman return 1 3577*b30d1939SAndy Fiddaman ;; 3578*b30d1939SAndy Fiddaman esac 3579*b30d1939SAndy Fiddaman ;; 3580*b30d1939SAndy Fiddaman ?01) : accept binary 3581*b30d1939SAndy Fiddaman continue 3582*b30d1939SAndy Fiddaman ;; 3583*b30d1939SAndy Fiddaman 011) : accept binary 3584*b30d1939SAndy Fiddaman continue 3585*b30d1939SAndy Fiddaman ;; 3586*b30d1939SAndy Fiddaman ??1) case $CROSS in 3587*b30d1939SAndy Fiddaman 1) continue ;; 3588*b30d1939SAndy Fiddaman esac 3589*b30d1939SAndy Fiddaman ;; 3590*b30d1939SAndy Fiddaman esac 3591*b30d1939SAndy Fiddaman case `ls -t $INITROOT/$i.c $INSTALLROOT/bin/$i 2>/dev/null` in 3592*b30d1939SAndy Fiddaman "$INITROOT/$i.c"*) 3593*b30d1939SAndy Fiddaman note update $INSTALLROOT/bin/$i 3594*b30d1939SAndy Fiddaman if test proto != "$i" && executable $INSTALLROOT/bin/proto 3595*b30d1939SAndy Fiddaman then case $exec in 3596*b30d1939SAndy Fiddaman '') $INSTALLROOT/bin/proto -p $INITROOT/$i.c > $i.c || return ;; 3597*b30d1939SAndy Fiddaman *) $exec "$INSTALLROOT/bin/proto -p $INITROOT/$i.c > $i.c" ;; 3598*b30d1939SAndy Fiddaman esac 3599*b30d1939SAndy Fiddaman $exec $CC $CCFLAGS -o $INSTALLROOT/bin/$i $i.c || return 3600*b30d1939SAndy Fiddaman $exec rm -f $i.c 3601*b30d1939SAndy Fiddaman else if test ! -d $INSTALLROOT/bin 3602*b30d1939SAndy Fiddaman then for j in arch arch/$HOSTTYPE arch/$HOSTTYPE/bin 3603*b30d1939SAndy Fiddaman do test -d $PACKAGEROOT/$j || $exec mkdir $PACKAGEROOT/$j || return 3604*b30d1939SAndy Fiddaman done 3605*b30d1939SAndy Fiddaman fi 3606*b30d1939SAndy Fiddaman if test '' != "$PROTOROOT" -a -f $INITPROTO/$i.c 3607*b30d1939SAndy Fiddaman then $exec $CC $CCFLAGS -o $INSTALLROOT/bin/$i $INITPROTO/$i.c || return 3608*b30d1939SAndy Fiddaman else $exec $CC $CCFLAGS -o $INSTALLROOT/bin/$i $INITROOT/$i.c || return 3609*b30d1939SAndy Fiddaman fi 3610*b30d1939SAndy Fiddaman case $i:$exec in 3611*b30d1939SAndy Fiddaman proto:) test -d $INSTALLROOT/include || mkdir $INSTALLROOT/include 3612*b30d1939SAndy Fiddaman $INSTALLROOT/bin/proto -f /dev/null > $i.c 3613*b30d1939SAndy Fiddaman cmp -s $i.c $INSTALLROOT/include/prototyped.h 2>/dev/null || cp $i.c $INSTALLROOT/include/prototyped.h 3614*b30d1939SAndy Fiddaman rm $i.c 3615*b30d1939SAndy Fiddaman ;; 3616*b30d1939SAndy Fiddaman esac 3617*b30d1939SAndy Fiddaman fi 3618*b30d1939SAndy Fiddaman test -f $i.o && $exec rm -f $i.o 3619*b30d1939SAndy Fiddaman i=$PATH 3620*b30d1939SAndy Fiddaman PATH=/bin 3621*b30d1939SAndy Fiddaman PATH=$i 3622*b30d1939SAndy Fiddaman ;; 3623*b30d1939SAndy Fiddaman esac 3624*b30d1939SAndy Fiddaman done 3625*b30d1939SAndy Fiddaman return 0 3626*b30d1939SAndy Fiddaman} 3627*b30d1939SAndy Fiddaman 3628*b30d1939SAndy Fiddaman# check package requirements against received packages 3629*b30d1939SAndy Fiddaman 3630*b30d1939SAndy Fiddamanrequirements() # source|binary [ package ] 3631*b30d1939SAndy Fiddaman{ 3632*b30d1939SAndy Fiddaman case $1 in 3633*b30d1939SAndy Fiddaman binary) r=$VIEW_BIN ;; 3634*b30d1939SAndy Fiddaman source) r=$VIEW_SRC ;; 3635*b30d1939SAndy Fiddaman *) r=$VIEW_ALL ;; 3636*b30d1939SAndy Fiddaman esac 3637*b30d1939SAndy Fiddaman shift 3638*b30d1939SAndy Fiddaman case $1 in 3639*b30d1939SAndy Fiddaman '') x= ;; 3640*b30d1939SAndy Fiddaman *) x=$* ;; 3641*b30d1939SAndy Fiddaman esac 3642*b30d1939SAndy Fiddaman set '' 3643*b30d1939SAndy Fiddaman for d in $r 3644*b30d1939SAndy Fiddaman do set "$@" $d/gen/*.ver 3645*b30d1939SAndy Fiddaman case $x in 3646*b30d1939SAndy Fiddaman '') set "$@" $d/gen/*.req 3647*b30d1939SAndy Fiddaman ;; 3648*b30d1939SAndy Fiddaman *) for p in $x 3649*b30d1939SAndy Fiddaman do set "$@" $d/gen/$p.req 3650*b30d1939SAndy Fiddaman done 3651*b30d1939SAndy Fiddaman ;; 3652*b30d1939SAndy Fiddaman esac 3653*b30d1939SAndy Fiddaman done 3654*b30d1939SAndy Fiddaman shift 3655*b30d1939SAndy Fiddaman e=0 3656*b30d1939SAndy Fiddaman x=$* 3657*b30d1939SAndy Fiddaman y= 3658*b30d1939SAndy Fiddaman n= 3659*b30d1939SAndy Fiddaman set '' 3660*b30d1939SAndy Fiddaman for i in $x 3661*b30d1939SAndy Fiddaman do p=`echo $i | sed -e 's,.*/,,' -e 's,\....$,,'` 3662*b30d1939SAndy Fiddaman if test -f $i 3663*b30d1939SAndy Fiddaman then set "$@" $i 3664*b30d1939SAndy Fiddaman y="$y $p" 3665*b30d1939SAndy Fiddaman else case $p in 3666*b30d1939SAndy Fiddaman '*') ;; 3667*b30d1939SAndy Fiddaman *) n="$n $p" ;; 3668*b30d1939SAndy Fiddaman esac 3669*b30d1939SAndy Fiddaman fi 3670*b30d1939SAndy Fiddaman done 3671*b30d1939SAndy Fiddaman for i in $n 3672*b30d1939SAndy Fiddaman do case " $y " in 3673*b30d1939SAndy Fiddaman *" $i "*) 3674*b30d1939SAndy Fiddaman ;; 3675*b30d1939SAndy Fiddaman *) echo "$command: $i: must read or write package" >&2 3676*b30d1939SAndy Fiddaman e=1 3677*b30d1939SAndy Fiddaman ;; 3678*b30d1939SAndy Fiddaman esac 3679*b30d1939SAndy Fiddaman done 3680*b30d1939SAndy Fiddaman case $e in 3681*b30d1939SAndy Fiddaman 1) exit 1 ;; 3682*b30d1939SAndy Fiddaman esac 3683*b30d1939SAndy Fiddaman shift 3684*b30d1939SAndy Fiddaman test 0 != "$#" && release=`sort -r "$@" | { 3685*b30d1939SAndy Fiddaman q= 3686*b30d1939SAndy Fiddaman e=0 3687*b30d1939SAndy Fiddaman o= 3688*b30d1939SAndy Fiddaman while read p v r s 3689*b30d1939SAndy Fiddaman do q="$q 3690*b30d1939SAndy Fiddaman$v $r" 3691*b30d1939SAndy Fiddaman case $p in 3692*b30d1939SAndy Fiddaman $o) continue ;; 3693*b30d1939SAndy Fiddaman esac 3694*b30d1939SAndy Fiddaman case $s in 3695*b30d1939SAndy Fiddaman 0) e=1 3696*b30d1939SAndy Fiddaman case $r in 3697*b30d1939SAndy Fiddaman base) echo "$command: base package $p.$v or newer required" >&2 ;; 3698*b30d1939SAndy Fiddaman *) echo "$command: delta package $p.$v.$r or newer required" >&2 ;; 3699*b30d1939SAndy Fiddaman esac 3700*b30d1939SAndy Fiddaman ;; 3701*b30d1939SAndy Fiddaman esac 3702*b30d1939SAndy Fiddaman o=$p 3703*b30d1939SAndy Fiddaman done 3704*b30d1939SAndy Fiddaman case $e in 3705*b30d1939SAndy Fiddaman 0) echo "$q" | sort | { read v r; read v r; echo $v; } ;; 3706*b30d1939SAndy Fiddaman 1) echo ERROR ;; 3707*b30d1939SAndy Fiddaman esac 3708*b30d1939SAndy Fiddaman }` 3709*b30d1939SAndy Fiddaman case $release in 3710*b30d1939SAndy Fiddaman ERROR) case $force in 3711*b30d1939SAndy Fiddaman 0) exit 1 ;; 3712*b30d1939SAndy Fiddaman esac 3713*b30d1939SAndy Fiddaman ;; 3714*b30d1939SAndy Fiddaman ?*) eval `echo $release | sed -e 's,\(.*\)-\(.*\)-\(.*\),yy=\1 mm=\2 dd=\3,'` 3715*b30d1939SAndy Fiddaman # slide back 4 months 3716*b30d1939SAndy Fiddaman case $mm in 3717*b30d1939SAndy Fiddaman 01) mm=09 dd=1 ;; 3718*b30d1939SAndy Fiddaman 02) mm=10 dd=1 ;; 3719*b30d1939SAndy Fiddaman 03) mm=11 dd=1 ;; 3720*b30d1939SAndy Fiddaman 04) mm=12 dd=1 ;; 3721*b30d1939SAndy Fiddaman 05) mm=01 dd=0 ;; 3722*b30d1939SAndy Fiddaman 06) mm=02 dd=0 ;; 3723*b30d1939SAndy Fiddaman 07) mm=03 dd=0 ;; 3724*b30d1939SAndy Fiddaman 08) mm=04 dd=0 ;; 3725*b30d1939SAndy Fiddaman 09) mm=05 dd=0 ;; 3726*b30d1939SAndy Fiddaman 10) mm=06 dd=0 ;; 3727*b30d1939SAndy Fiddaman 11) mm=07 dd=0 ;; 3728*b30d1939SAndy Fiddaman 12) mm=08 dd=0 ;; 3729*b30d1939SAndy Fiddaman esac 3730*b30d1939SAndy Fiddaman case $dd in 3731*b30d1939SAndy Fiddaman 1) yy=`expr $yy - 1` ;; 3732*b30d1939SAndy Fiddaman esac 3733*b30d1939SAndy Fiddaman release=$yy-$mm-01 3734*b30d1939SAndy Fiddaman count=1 3735*b30d1939SAndy Fiddaman lo=$release 3736*b30d1939SAndy Fiddaman release="-f $release -r $count" 3737*b30d1939SAndy Fiddaman ;; 3738*b30d1939SAndy Fiddaman esac 3739*b30d1939SAndy Fiddaman} 3740*b30d1939SAndy Fiddaman 3741*b30d1939SAndy Fiddaman# write ordered package prerequisite list to the standard output 3742*b30d1939SAndy Fiddaman 3743*b30d1939SAndy Fiddamanorder() # [ package ] 3744*b30d1939SAndy Fiddaman{ 3745*b30d1939SAndy Fiddaman _order_t_=lib/package/tgz 3746*b30d1939SAndy Fiddaman case $action in 3747*b30d1939SAndy Fiddaman binary) _order_a_=.$HOSTTYPE ;; 3748*b30d1939SAndy Fiddaman *) _order_a_= ;; 3749*b30d1939SAndy Fiddaman esac 3750*b30d1939SAndy Fiddaman _order_n_=$# 3751*b30d1939SAndy Fiddaman case $_order_n_ in 3752*b30d1939SAndy Fiddaman 0) _order_p_= 3753*b30d1939SAndy Fiddaman for _order_v_ in $VIEW_all 3754*b30d1939SAndy Fiddaman do for _order_f_ in $_order_v_/lib/package/*.pkg 3755*b30d1939SAndy Fiddaman do if test -f $_order_f_ 3756*b30d1939SAndy Fiddaman then _order_p_="$_order_p_ $_order_f_" 3757*b30d1939SAndy Fiddaman fi 3758*b30d1939SAndy Fiddaman done 3759*b30d1939SAndy Fiddaman done 3760*b30d1939SAndy Fiddaman set '' $_order_p_ 3761*b30d1939SAndy Fiddaman shift 3762*b30d1939SAndy Fiddaman esac 3763*b30d1939SAndy Fiddaman { 3764*b30d1939SAndy Fiddaman if test ratz != "$*" 3765*b30d1939SAndy Fiddaman then for _order_f_ in ratz INIT 3766*b30d1939SAndy Fiddaman do if view -s - src $_order_t_/$_order_f_$_order_a_.tim 3767*b30d1939SAndy Fiddaman then echo $_order_f_ $_order_f_ 3768*b30d1939SAndy Fiddaman fi 3769*b30d1939SAndy Fiddaman done 3770*b30d1939SAndy Fiddaman fi 3771*b30d1939SAndy Fiddaman for _order_f_ 3772*b30d1939SAndy Fiddaman do while : 3773*b30d1939SAndy Fiddaman do view - src $_order_f_ && break 3774*b30d1939SAndy Fiddaman case $_order_f_ in 3775*b30d1939SAndy Fiddaman *.pkg) ;; 3776*b30d1939SAndy Fiddaman *) _order_f_=$_order_f_.pkg; view - src $_order_f_ && break ;; 3777*b30d1939SAndy Fiddaman esac 3778*b30d1939SAndy Fiddaman case $_order_f_ in 3779*b30d1939SAndy Fiddaman */*) ;; 3780*b30d1939SAndy Fiddaman *) _order_f_=lib/package/$_order_f_; view - src $_order_f_ && break ;; 3781*b30d1939SAndy Fiddaman esac 3782*b30d1939SAndy Fiddaman echo "$command: $_order_f_: not a package" >&2 3783*b30d1939SAndy Fiddaman continue 2 3784*b30d1939SAndy Fiddaman done 3785*b30d1939SAndy Fiddaman _order_f_=$_view_ 3786*b30d1939SAndy Fiddaman _order_p_=`echo $_order_f_ | sed -e 's,.*/,,' -e 's,\.pkg$,,'` 3787*b30d1939SAndy Fiddaman case $_order_n_ in 3788*b30d1939SAndy Fiddaman 0) view -s - src $_order_t_/$_order_p_$_order_a_.tim || continue ;; 3789*b30d1939SAndy Fiddaman esac 3790*b30d1939SAndy Fiddaman echo $_order_p_ $_order_p_ 3791*b30d1939SAndy Fiddaman case $_order_p_ in 3792*b30d1939SAndy Fiddaman INIT|ratz) 3793*b30d1939SAndy Fiddaman ;; 3794*b30d1939SAndy Fiddaman *) echo INIT $_order_p_ 3795*b30d1939SAndy Fiddaman ;; 3796*b30d1939SAndy Fiddaman esac 3797*b30d1939SAndy Fiddaman { 3798*b30d1939SAndy Fiddaman req= req_sep= 3799*b30d1939SAndy Fiddaman op=:: 3800*b30d1939SAndy Fiddaman while read line 3801*b30d1939SAndy Fiddaman do IFS=' \\' 3802*b30d1939SAndy Fiddaman set '' $line 3803*b30d1939SAndy Fiddaman IFS=$ifs 3804*b30d1939SAndy Fiddaman while : 3805*b30d1939SAndy Fiddaman do shift 3806*b30d1939SAndy Fiddaman case $# in 3807*b30d1939SAndy Fiddaman 0) break ;; 3808*b30d1939SAndy Fiddaman esac 3809*b30d1939SAndy Fiddaman case $1 in 3810*b30d1939SAndy Fiddaman :*:) op=$1 3811*b30d1939SAndy Fiddaman ;; 3812*b30d1939SAndy Fiddaman INIT|'$('*|*')') 3813*b30d1939SAndy Fiddaman ;; 3814*b30d1939SAndy Fiddaman *) case $op in 3815*b30d1939SAndy Fiddaman :REQUIRES:) 3816*b30d1939SAndy Fiddaman req="$req$req_sep$1" 3817*b30d1939SAndy Fiddaman req_sep=" " 3818*b30d1939SAndy Fiddaman ;; 3819*b30d1939SAndy Fiddaman esac 3820*b30d1939SAndy Fiddaman ;; 3821*b30d1939SAndy Fiddaman esac 3822*b30d1939SAndy Fiddaman done 3823*b30d1939SAndy Fiddaman done 3824*b30d1939SAndy Fiddaman for _order_i_ in $req 3825*b30d1939SAndy Fiddaman do if view - src lib/package/$_order_i_.pkg 3826*b30d1939SAndy Fiddaman then case $_order_u_ in 3827*b30d1939SAndy Fiddaman 0) view -s - src $_order_t_/$_order_i_$_order_a_.tim || continue ;; 3828*b30d1939SAndy Fiddaman esac 3829*b30d1939SAndy Fiddaman echo $_order_i_ $_order_i_; echo INIT $_order_i_; echo $_order_i_ $_order_p_ 3830*b30d1939SAndy Fiddaman fi 3831*b30d1939SAndy Fiddaman done 3832*b30d1939SAndy Fiddaman } < $_order_f_ 3833*b30d1939SAndy Fiddaman done 3834*b30d1939SAndy Fiddaman } | tsort 3835*b30d1939SAndy Fiddaman} 3836*b30d1939SAndy Fiddaman 3837*b30d1939SAndy Fiddaman# generate the package component list in _components_ 3838*b30d1939SAndy Fiddaman 3839*b30d1939SAndy Fiddamancomponents() # [ package ] 3840*b30d1939SAndy Fiddaman{ 3841*b30d1939SAndy Fiddaman _components_= 3842*b30d1939SAndy Fiddaman for p 3843*b30d1939SAndy Fiddaman do case $p in 3844*b30d1939SAndy Fiddaman '') ;; 3845*b30d1939SAndy Fiddaman INIT) case " $_components_ " in 3846*b30d1939SAndy Fiddaman *" $p "*) ;; 3847*b30d1939SAndy Fiddaman *) _components_="$_components_ $p" ;; 3848*b30d1939SAndy Fiddaman esac 3849*b30d1939SAndy Fiddaman ;; 3850*b30d1939SAndy Fiddaman *) if view - src lib/package/$p.pkg 3851*b30d1939SAndy Fiddaman then p=$_view_ 3852*b30d1939SAndy Fiddaman op=:: 3853*b30d1939SAndy Fiddaman exec < $p 3854*b30d1939SAndy Fiddaman while read line 3855*b30d1939SAndy Fiddaman do IFS=' \\' 3856*b30d1939SAndy Fiddaman set '' $line 3857*b30d1939SAndy Fiddaman IFS=$ifs 3858*b30d1939SAndy Fiddaman while : 3859*b30d1939SAndy Fiddaman do shift 3860*b30d1939SAndy Fiddaman case $# in 3861*b30d1939SAndy Fiddaman 0) break ;; 3862*b30d1939SAndy Fiddaman esac 3863*b30d1939SAndy Fiddaman case $1 in 3864*b30d1939SAndy Fiddaman :*:) op=$1 3865*b30d1939SAndy Fiddaman ;; 3866*b30d1939SAndy Fiddaman INIT|'$('*|*')') 3867*b30d1939SAndy Fiddaman ;; 3868*b30d1939SAndy Fiddaman *) case $op in 3869*b30d1939SAndy Fiddaman :PACKAGE:) 3870*b30d1939SAndy Fiddaman case " $_components_ " in 3871*b30d1939SAndy Fiddaman *" $1 "*) ;; 3872*b30d1939SAndy Fiddaman *) _components_="$_components_ $1" ;; 3873*b30d1939SAndy Fiddaman esac 3874*b30d1939SAndy Fiddaman ;; 3875*b30d1939SAndy Fiddaman esac 3876*b30d1939SAndy Fiddaman ;; 3877*b30d1939SAndy Fiddaman esac 3878*b30d1939SAndy Fiddaman done 3879*b30d1939SAndy Fiddaman done 3880*b30d1939SAndy Fiddaman exec < /dev/null 3881*b30d1939SAndy Fiddaman elif test -d $PACKAGEROOT/src/cmd/$p -o -d $PACKAGEROOT/src/lib/$p 3882*b30d1939SAndy Fiddaman then _components_="$_components_ $p" 3883*b30d1939SAndy Fiddaman else echo "$command: $p: package or component not found" >&2 3884*b30d1939SAndy Fiddaman exit 1 3885*b30d1939SAndy Fiddaman fi 3886*b30d1939SAndy Fiddaman ;; 3887*b30d1939SAndy Fiddaman esac 3888*b30d1939SAndy Fiddaman done 3889*b30d1939SAndy Fiddaman} 3890*b30d1939SAndy Fiddaman 3891*b30d1939SAndy Fiddaman# list main environment values 3892*b30d1939SAndy Fiddaman 3893*b30d1939SAndy Fiddamanshowenv() 3894*b30d1939SAndy Fiddaman{ 3895*b30d1939SAndy Fiddaman case $1 in 3896*b30d1939SAndy Fiddaman ''|make)for __i__ in CC SHELL $env 3897*b30d1939SAndy Fiddaman do eval echo $__i__='$'$__i__ 3898*b30d1939SAndy Fiddaman done 3899*b30d1939SAndy Fiddaman ;; 3900*b30d1939SAndy Fiddaman esac 3901*b30d1939SAndy Fiddaman} 3902*b30d1939SAndy Fiddaman 3903*b30d1939SAndy Fiddaman# capture command output 3904*b30d1939SAndy Fiddaman 3905*b30d1939SAndy Fiddamancapture() # file command ... 3906*b30d1939SAndy Fiddaman{ 3907*b30d1939SAndy Fiddaman case $make:$noexec in 3908*b30d1939SAndy Fiddaman :) case $action in 3909*b30d1939SAndy Fiddaman install|make|view) 3910*b30d1939SAndy Fiddaman o=$action 3911*b30d1939SAndy Fiddaman ;; 3912*b30d1939SAndy Fiddaman *) case $package in 3913*b30d1939SAndy Fiddaman ''|*' '*) 3914*b30d1939SAndy Fiddaman o=$action 3915*b30d1939SAndy Fiddaman ;; 3916*b30d1939SAndy Fiddaman *) o=$package 3917*b30d1939SAndy Fiddaman ;; 3918*b30d1939SAndy Fiddaman esac 3919*b30d1939SAndy Fiddaman ;; 3920*b30d1939SAndy Fiddaman esac 3921*b30d1939SAndy Fiddaman case $action in 3922*b30d1939SAndy Fiddaman write) d=$PACKAGESRC/gen ;; 3923*b30d1939SAndy Fiddaman *) d=$PACKAGEBIN/gen ;; 3924*b30d1939SAndy Fiddaman esac 3925*b30d1939SAndy Fiddaman test -d $d || $exec mkdir $d 3926*b30d1939SAndy Fiddaman o=$d/$o 3927*b30d1939SAndy Fiddaman case $o in 3928*b30d1939SAndy Fiddaman $output)o=$o.out 3929*b30d1939SAndy Fiddaman s= 3930*b30d1939SAndy Fiddaman ;; 3931*b30d1939SAndy Fiddaman *) output=$o 3932*b30d1939SAndy Fiddaman if test -f $o.old 3933*b30d1939SAndy Fiddaman then mv $o.old $o.out.1 3934*b30d1939SAndy Fiddaman if test -f $o.out 3935*b30d1939SAndy Fiddaman then mv $o.out $o.out.2 3936*b30d1939SAndy Fiddaman fi 3937*b30d1939SAndy Fiddaman elif test -f $o.out 3938*b30d1939SAndy Fiddaman then for i in `ls -t $o.out.? 2>/dev/null` 3939*b30d1939SAndy Fiddaman do break 3940*b30d1939SAndy Fiddaman done 3941*b30d1939SAndy Fiddaman case $i in 3942*b30d1939SAndy Fiddaman *.1) i=2 ;; 3943*b30d1939SAndy Fiddaman *.2) i=3 ;; 3944*b30d1939SAndy Fiddaman *.3) i=4 ;; 3945*b30d1939SAndy Fiddaman *.4) i=5 ;; 3946*b30d1939SAndy Fiddaman *.5) i=6 ;; 3947*b30d1939SAndy Fiddaman *.6) i=7 ;; 3948*b30d1939SAndy Fiddaman *.7) i=8 ;; 3949*b30d1939SAndy Fiddaman *.8) i=9 ;; 3950*b30d1939SAndy Fiddaman *) i=1 ;; 3951*b30d1939SAndy Fiddaman esac 3952*b30d1939SAndy Fiddaman mv $o.out $o.out.$i 3953*b30d1939SAndy Fiddaman fi 3954*b30d1939SAndy Fiddaman o=$o.out 3955*b30d1939SAndy Fiddaman : > $o 3956*b30d1939SAndy Fiddaman note $action output captured in $o 3957*b30d1939SAndy Fiddaman s="$command: $action start at `date` in $INSTALLROOT" 3958*b30d1939SAndy Fiddaman case $quiet in 3959*b30d1939SAndy Fiddaman 0) trap "echo \"$command: $action done at \`date\`\" in $INSTALLROOT 2>&1 | \$TEE -a $o" 0 1 2 ;; 3960*b30d1939SAndy Fiddaman *) trap "echo \"$command: $action done at \`date\`\" in $INSTALLROOT >> $o" 0 1 2 ;; 3961*b30d1939SAndy Fiddaman esac 3962*b30d1939SAndy Fiddaman ;; 3963*b30d1939SAndy Fiddaman esac 3964*b30d1939SAndy Fiddaman case $quiet in 3965*b30d1939SAndy Fiddaman 0) if executable ! $TEE 3966*b30d1939SAndy Fiddaman then TEE=tee 3967*b30d1939SAndy Fiddaman fi 3968*b30d1939SAndy Fiddaman { 3969*b30d1939SAndy Fiddaman case $s in 3970*b30d1939SAndy Fiddaman ?*) echo "$s" ;; 3971*b30d1939SAndy Fiddaman esac 3972*b30d1939SAndy Fiddaman showenv $action 3973*b30d1939SAndy Fiddaman "$@" 3974*b30d1939SAndy Fiddaman } < /dev/null 2>&1 | $TEE -a $o 3975*b30d1939SAndy Fiddaman ;; 3976*b30d1939SAndy Fiddaman *) { 3977*b30d1939SAndy Fiddaman case $s in 3978*b30d1939SAndy Fiddaman ?*) echo "$s" ;; 3979*b30d1939SAndy Fiddaman esac 3980*b30d1939SAndy Fiddaman showenv $action 3981*b30d1939SAndy Fiddaman "$@" 3982*b30d1939SAndy Fiddaman } < /dev/null > $o 2>&1 3983*b30d1939SAndy Fiddaman ;; 3984*b30d1939SAndy Fiddaman esac 3985*b30d1939SAndy Fiddaman ;; 3986*b30d1939SAndy Fiddaman *) $make "$@" 3987*b30d1939SAndy Fiddaman ;; 3988*b30d1939SAndy Fiddaman esac 3989*b30d1939SAndy Fiddaman} 3990*b30d1939SAndy Fiddaman 3991*b30d1939SAndy Fiddamanpackage_install() # dest sum 3992*b30d1939SAndy Fiddaman{ 3993*b30d1939SAndy Fiddaman dest=$1 sum=$2 3994*b30d1939SAndy Fiddaman ot= 3995*b30d1939SAndy Fiddaman code=0 3996*b30d1939SAndy Fiddaman sed -e '/ /!d' -e 's,[^ ]* ,,' -e 's, \(arch/[^/]*\)/, \1 ,' -e '/ arch\//!s,^[^ ]* [^ ]* [^ ]*,& .,' -e 's,/\([^ /]*\)$, \1,' $sum | 3997*b30d1939SAndy Fiddaman while read mode user group arch dir file 3998*b30d1939SAndy Fiddaman do case $flat:$arch in 3999*b30d1939SAndy Fiddaman 1:*|?:.)t=$dest/$dir ;; 4000*b30d1939SAndy Fiddaman *) t=$dest/$arch/$dir ;; 4001*b30d1939SAndy Fiddaman esac 4002*b30d1939SAndy Fiddaman case $t in 4003*b30d1939SAndy Fiddaman $ot) ;; 4004*b30d1939SAndy Fiddaman *) if test ! -d "$t" 4005*b30d1939SAndy Fiddaman then $exec mkdir -p "$t" || exit 4006*b30d1939SAndy Fiddaman fi 4007*b30d1939SAndy Fiddaman ot=$t 4008*b30d1939SAndy Fiddaman ;; 4009*b30d1939SAndy Fiddaman esac 4010*b30d1939SAndy Fiddaman case $file in 4011*b30d1939SAndy Fiddaman ?*) case $arch in 4012*b30d1939SAndy Fiddaman .) f=$dir/$file ;; 4013*b30d1939SAndy Fiddaman *) f=$arch/$dir/$file ;; 4014*b30d1939SAndy Fiddaman esac 4015*b30d1939SAndy Fiddaman if test -f "$f" 4016*b30d1939SAndy Fiddaman then t=$t/$file 4017*b30d1939SAndy Fiddaman case $quiet in 4018*b30d1939SAndy Fiddaman 0) echo "$t" ;; 4019*b30d1939SAndy Fiddaman esac 4020*b30d1939SAndy Fiddaman $exec cp -f "$f" "$t" || code=1 4021*b30d1939SAndy Fiddaman $exec chmod $mode "$t" || code=1 4022*b30d1939SAndy Fiddaman fi 4023*b30d1939SAndy Fiddaman ;; 4024*b30d1939SAndy Fiddaman esac 4025*b30d1939SAndy Fiddaman done 4026*b30d1939SAndy Fiddaman return $code 4027*b30d1939SAndy Fiddaman} 4028*b30d1939SAndy Fiddaman 4029*b30d1939SAndy Fiddamanpackage_verify() # sum 4030*b30d1939SAndy Fiddaman{ 4031*b30d1939SAndy Fiddaman $exec $SUM -cp $1 4032*b30d1939SAndy Fiddaman} 4033*b30d1939SAndy Fiddaman 4034*b30d1939SAndy Fiddamanmake_recurse() # dir 4035*b30d1939SAndy Fiddaman{ 4036*b30d1939SAndy Fiddaman for _make_recurse_j in $makefiles 4037*b30d1939SAndy Fiddaman do if view - $1/$_make_recurse_j 4038*b30d1939SAndy Fiddaman then return 4039*b30d1939SAndy Fiddaman fi 4040*b30d1939SAndy Fiddaman done 4041*b30d1939SAndy Fiddaman if test -d $1 4042*b30d1939SAndy Fiddaman then case $exec in 4043*b30d1939SAndy Fiddaman '') echo :MAKE: > $1/Makefile || exit ;; 4044*b30d1939SAndy Fiddaman *) $exec "echo :MAKE: > $1/Makefile" ;; 4045*b30d1939SAndy Fiddaman esac 4046*b30d1939SAndy Fiddaman fi 4047*b30d1939SAndy Fiddaman} 4048*b30d1939SAndy Fiddaman 4049*b30d1939SAndy Fiddamanget() # host path [ file size ] 4050*b30d1939SAndy Fiddaman{ 4051*b30d1939SAndy Fiddaman case $HURL in 4052*b30d1939SAndy Fiddaman '') HURL=. 4053*b30d1939SAndy Fiddaman for i in wget lynx curl 4054*b30d1939SAndy Fiddaman do if onpath $i 4055*b30d1939SAndy Fiddaman then HURL=$i 4056*b30d1939SAndy Fiddaman break; 4057*b30d1939SAndy Fiddaman fi 4058*b30d1939SAndy Fiddaman done 4059*b30d1939SAndy Fiddaman AUTHORIZE="User-Agent: package AT&T Research\\r\\n" 4060*b30d1939SAndy Fiddaman case $HURL:$authorize in 4061*b30d1939SAndy Fiddaman .:?*) AUTHORIZE="${AUTHORIZE}Authorization: Basic `print -n -r -- $authorize:$password | uuencode -h -x base64`\\r\\n" ;; 4062*b30d1939SAndy Fiddaman esac 4063*b30d1939SAndy Fiddaman ;; 4064*b30d1939SAndy Fiddaman esac 4065*b30d1939SAndy Fiddaman getfd=8 4066*b30d1939SAndy Fiddaman case $3 in 4067*b30d1939SAndy Fiddaman '') case $HURL in 4068*b30d1939SAndy Fiddaman .) host=$1 4069*b30d1939SAndy Fiddaman path=$2 4070*b30d1939SAndy Fiddaman while : 4071*b30d1939SAndy Fiddaman do eval "exec $getfd<> /dev/tcp/$host/80" || exit 4072*b30d1939SAndy Fiddaman case $path in 4073*b30d1939SAndy Fiddaman /*) ;; 4074*b30d1939SAndy Fiddaman *) path=/$path ;; 4075*b30d1939SAndy Fiddaman esac 4076*b30d1939SAndy Fiddaman print "GET $path HTTP/1.0\\r\\nHost: $host\\r\\n$AUTHORIZE\\r" >&$getfd 4077*b30d1939SAndy Fiddaman cat <&8 > get.tmp 4078*b30d1939SAndy Fiddaman got=`sed -e 1q get.tmp` 4079*b30d1939SAndy Fiddaman case $got in 4080*b30d1939SAndy Fiddaman *" "200" "*) 4081*b30d1939SAndy Fiddaman got=`sed -e '1,/^.$/d' -e '/^[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYZ]/!d' get.tmp` 4082*b30d1939SAndy Fiddaman : > get.err 4083*b30d1939SAndy Fiddaman code=0 4084*b30d1939SAndy Fiddaman break 4085*b30d1939SAndy Fiddaman ;; 4086*b30d1939SAndy Fiddaman *" "30[123]" "*) 4087*b30d1939SAndy Fiddaman got=`sed -e '/^Location: /!d' -e 's,^Location: \(.*\)://\([^/]*\)\(/.*\),prot='\''\1'\'' host='\''\2'\'' path='\''\3'\'',' get.tmp` 4088*b30d1939SAndy Fiddaman case $got in 4089*b30d1939SAndy Fiddaman '') rm get.tmp 4090*b30d1939SAndy Fiddaman echo "$command: $action: $url: redirect error" >&2 4091*b30d1939SAndy Fiddaman exit 1 4092*b30d1939SAndy Fiddaman ;; 4093*b30d1939SAndy Fiddaman esac 4094*b30d1939SAndy Fiddaman eval $got 4095*b30d1939SAndy Fiddaman ;; 4096*b30d1939SAndy Fiddaman *) rm get.tmp 4097*b30d1939SAndy Fiddaman echo "$command: $action: $url: $got" >&2 4098*b30d1939SAndy Fiddaman echo '' "$got" > get.err 4099*b30d1939SAndy Fiddaman code=1 4100*b30d1939SAndy Fiddaman break 4101*b30d1939SAndy Fiddaman ;; 4102*b30d1939SAndy Fiddaman esac 4103*b30d1939SAndy Fiddaman done 4104*b30d1939SAndy Fiddaman ;; 4105*b30d1939SAndy Fiddaman curl) case $authorize in 4106*b30d1939SAndy Fiddaman '') curl -s -L -o get.tmp http://$1/$2 2> get.err; code=$? ;; 4107*b30d1939SAndy Fiddaman *) curl -s -L -o get.tmp -u "$authorize":"$password" http://$1/$2 2> get.err; code=$? ;; 4108*b30d1939SAndy Fiddaman esac 4109*b30d1939SAndy Fiddaman got=`grep '^[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYZ]' get.tmp 2>/dev/null` 4110*b30d1939SAndy Fiddaman case $code in 4111*b30d1939SAndy Fiddaman 0) if grep '^<H1>Authorization Required</H1>' get.tmp > get.err 4112*b30d1939SAndy Fiddaman then code=1 4113*b30d1939SAndy Fiddaman fi 4114*b30d1939SAndy Fiddaman ;; 4115*b30d1939SAndy Fiddaman esac 4116*b30d1939SAndy Fiddaman ;; 4117*b30d1939SAndy Fiddaman hurl) case $authorize in 4118*b30d1939SAndy Fiddaman '') hurl http://$1/$2 > get.tmp 2> get.err; code=$? ;; 4119*b30d1939SAndy Fiddaman *) hurl -a "$authorize":"$password" http://$1/$2 > get.tmp 2> get.err; code=$? ;; 4120*b30d1939SAndy Fiddaman esac 4121*b30d1939SAndy Fiddaman got=`grep '^[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYZ]' get.tmp` 4122*b30d1939SAndy Fiddaman ;; 4123*b30d1939SAndy Fiddaman lynx) case $authorize in 4124*b30d1939SAndy Fiddaman '') lynx -source http://$1/$2 > get.tmp 2> get.err; code=$? ;; 4125*b30d1939SAndy Fiddaman *) lynx -source -auth "$authorize":"$password" http://$1/$2 > get.tmp 2> get.err; code=$? ;; 4126*b30d1939SAndy Fiddaman esac 4127*b30d1939SAndy Fiddaman got=`grep '^[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYZ]' get.tmp` 4128*b30d1939SAndy Fiddaman ;; 4129*b30d1939SAndy Fiddaman wget) wget -nv -O get.tmp ${authorize:+--http-user="$authorize"} ${password:+--http-passwd="$password"} http://$1/$2 2> get.err 4130*b30d1939SAndy Fiddaman code=$? 4131*b30d1939SAndy Fiddaman got=`grep '^[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYZ]' get.tmp 2>/dev/null` 4132*b30d1939SAndy Fiddaman ;; 4133*b30d1939SAndy Fiddaman *) echo $command: $action: $HURL: url get command not found >&2 4134*b30d1939SAndy Fiddaman exit 1 4135*b30d1939SAndy Fiddaman ;; 4136*b30d1939SAndy Fiddaman esac 4137*b30d1939SAndy Fiddaman if test 0 != "$code" 4138*b30d1939SAndy Fiddaman then case `cat get.err get.tmp 2>/dev/null` in 4139*b30d1939SAndy Fiddaman *[Aa][Uu][Tt][Hh][Oo][Rr][Ii][SsZz]*|*[Dd][Ee][Nn][Ii][Ee][Dd]*) 4140*b30d1939SAndy Fiddaman echo $command: $action: authorization required -- see $url for license acceptance authorization name and password >&2 4141*b30d1939SAndy Fiddaman ;; 4142*b30d1939SAndy Fiddaman *) cat get.err 4143*b30d1939SAndy Fiddaman ;; 4144*b30d1939SAndy Fiddaman esac 4145*b30d1939SAndy Fiddaman rm -f get.tmp get.err 4146*b30d1939SAndy Fiddaman echo $command: $action: $2: download failed >&2 4147*b30d1939SAndy Fiddaman exit 1 4148*b30d1939SAndy Fiddaman fi 4149*b30d1939SAndy Fiddaman rm -f get.tmp get.err 4150*b30d1939SAndy Fiddaman ;; 4151*b30d1939SAndy Fiddaman *) case $exec in 4152*b30d1939SAndy Fiddaman '') echo "$3 ($4 bytes):" >&2 4153*b30d1939SAndy Fiddaman case $HURL in 4154*b30d1939SAndy Fiddaman .) eval "exec $getfd<> /dev/tcp/$1/80" || exit 4155*b30d1939SAndy Fiddaman path=$2/$3 4156*b30d1939SAndy Fiddaman case $path in 4157*b30d1939SAndy Fiddaman /*) ;; 4158*b30d1939SAndy Fiddaman *) path=/$path ;; 4159*b30d1939SAndy Fiddaman esac 4160*b30d1939SAndy Fiddaman print "GET $path HTTP/1.0\\r\\nHost: $host\\r\\n$AUTHORIZE\\r" >&$getfd 4161*b30d1939SAndy Fiddaman read got <&$getfd 4162*b30d1939SAndy Fiddaman case $got in 4163*b30d1939SAndy Fiddaman *" 200 "*) 4164*b30d1939SAndy Fiddaman code=0 4165*b30d1939SAndy Fiddaman : > get.err 4166*b30d1939SAndy Fiddaman ;; 4167*b30d1939SAndy Fiddaman *) echo '' "$got" > get.err 4168*b30d1939SAndy Fiddaman code=1 4169*b30d1939SAndy Fiddaman ;; 4170*b30d1939SAndy Fiddaman esac 4171*b30d1939SAndy Fiddaman while read got <&$getfd 4172*b30d1939SAndy Fiddaman do case $got in 4173*b30d1939SAndy Fiddaman ''|?) break ;; 4174*b30d1939SAndy Fiddaman esac 4175*b30d1939SAndy Fiddaman done 4176*b30d1939SAndy Fiddaman cat <&$getfd > get.tmp 4177*b30d1939SAndy Fiddaman ;; 4178*b30d1939SAndy Fiddaman curl) case $authorize in 4179*b30d1939SAndy Fiddaman '') curl -s -L -o get.tmp http://$1/$2/$3 2> get.err; code=$? ;; 4180*b30d1939SAndy Fiddaman *) curl -s -L -o get.tmp -u "$authorize":"$password" http://$1/$2/$3 2> get.err; code=$? 4181*b30d1939SAndy Fiddaman esac 4182*b30d1939SAndy Fiddaman case $code in 4183*b30d1939SAndy Fiddaman 0) if grep '^<H1>Authorization Required</H1>' get.tmp > get.err 4184*b30d1939SAndy Fiddaman then code=1 4185*b30d1939SAndy Fiddaman fi 4186*b30d1939SAndy Fiddaman ;; 4187*b30d1939SAndy Fiddaman esac 4188*b30d1939SAndy Fiddaman ;; 4189*b30d1939SAndy Fiddaman hurl) case $authorize in 4190*b30d1939SAndy Fiddaman '') ksh -x hurl http://$1/$2/$3 > get.tmp 2> get.err; code=$? ;; 4191*b30d1939SAndy Fiddaman *) ksh -x hurl -a "$authorize":"$password" http://$1/$2/$3 > get.tmp 2> get.err; code=$? ;; 4192*b30d1939SAndy Fiddaman esac 4193*b30d1939SAndy Fiddaman ;; 4194*b30d1939SAndy Fiddaman lynx) case $authorize in 4195*b30d1939SAndy Fiddaman '') lynx -source http://$1/$2/$3 > get.tmp 2> get.err; code=$? ;; 4196*b30d1939SAndy Fiddaman *) lynx -source -auth "$authorize":"$password" http://$1/$2/$3 > get.tmp 2> get.err; code=$? ;; 4197*b30d1939SAndy Fiddaman esac 4198*b30d1939SAndy Fiddaman ;; 4199*b30d1939SAndy Fiddaman wget) wget -nv -O get.tmp ${authorize:+--http-user="$authorize"} ${password:+--http-passwd="$password"} http://$1/$2/$3 2> get.err 4200*b30d1939SAndy Fiddaman code=$? 4201*b30d1939SAndy Fiddaman ;; 4202*b30d1939SAndy Fiddaman *) echo $command: $action: $HURL: url get command not found >&2 4203*b30d1939SAndy Fiddaman exit 1 4204*b30d1939SAndy Fiddaman ;; 4205*b30d1939SAndy Fiddaman esac 4206*b30d1939SAndy Fiddaman if test 0 != "$code" 4207*b30d1939SAndy Fiddaman then case `cat get.err get.tmp` in 4208*b30d1939SAndy Fiddaman *[Aa][Uu][Tt][Hh][Oo][Rr][Ii][SsZz]*|*[Dd][Ee][Nn][Ii][Ee][Dd]*) 4209*b30d1939SAndy Fiddaman echo $command: $action: authorization required -- see $url for license acceptance authorization name and password >&2 4210*b30d1939SAndy Fiddaman ;; 4211*b30d1939SAndy Fiddaman *) cat get.err 4212*b30d1939SAndy Fiddaman ;; 4213*b30d1939SAndy Fiddaman esac 4214*b30d1939SAndy Fiddaman rm get.tmp get.err 4215*b30d1939SAndy Fiddaman echo $command: $action: $3: download failed >&2 4216*b30d1939SAndy Fiddaman exit 1 4217*b30d1939SAndy Fiddaman fi 4218*b30d1939SAndy Fiddaman rm get.err 4219*b30d1939SAndy Fiddaman case $checksum:$5 in 4220*b30d1939SAndy Fiddaman :*|*:-) z=`wc -c < get.tmp` 4221*b30d1939SAndy Fiddaman case " $z " in 4222*b30d1939SAndy Fiddaman *" $4 "*) 4223*b30d1939SAndy Fiddaman ;; 4224*b30d1939SAndy Fiddaman *) rm -f get.tmp 4225*b30d1939SAndy Fiddaman echo $command: $3: download error: expected $4 bytes, got $z >&2 4226*b30d1939SAndy Fiddaman exit 1 4227*b30d1939SAndy Fiddaman ;; 4228*b30d1939SAndy Fiddaman esac 4229*b30d1939SAndy Fiddaman ;; 4230*b30d1939SAndy Fiddaman *) z=`$checksum < get.tmp | sed -e 's,^[ ][ ]*,,' -e 's,[ ].*,,'` 4231*b30d1939SAndy Fiddaman case " $z " in 4232*b30d1939SAndy Fiddaman *" $5 "*) 4233*b30d1939SAndy Fiddaman ;; 4234*b30d1939SAndy Fiddaman *) rm -f get.tmp 4235*b30d1939SAndy Fiddaman echo $command: $3: download $checksum error: expected $5, got $z >&2 4236*b30d1939SAndy Fiddaman exit 1 4237*b30d1939SAndy Fiddaman ;; 4238*b30d1939SAndy Fiddaman esac 4239*b30d1939SAndy Fiddaman ;; 4240*b30d1939SAndy Fiddaman esac 4241*b30d1939SAndy Fiddaman mv get.tmp $3 || exit 4242*b30d1939SAndy Fiddaman ;; 4243*b30d1939SAndy Fiddaman *) echo "$3 ($4 bytes)" >&2 4244*b30d1939SAndy Fiddaman ;; 4245*b30d1939SAndy Fiddaman esac 4246*b30d1939SAndy Fiddaman esac 4247*b30d1939SAndy Fiddaman} 4248*b30d1939SAndy Fiddaman 4249*b30d1939SAndy Fiddaman# generate copyright notice 4250*b30d1939SAndy Fiddaman 4251*b30d1939SAndy Fiddamancopyright() 4252*b30d1939SAndy Fiddaman{ 4253*b30d1939SAndy Fiddaman if test -f $1.lic 4254*b30d1939SAndy Fiddaman then echo $1 package general copyright notice 4255*b30d1939SAndy Fiddaman echo 4256*b30d1939SAndy Fiddaman proto -c'#' -p -s -l $1.lic -o type=verbose,author='*' /dev/null 4257*b30d1939SAndy Fiddaman return 0 4258*b30d1939SAndy Fiddaman fi 4259*b30d1939SAndy Fiddaman case $1 in 4260*b30d1939SAndy Fiddaman *-*) eval `echo '' $1 | sed 's/\([^-]*\)-\(.*\)/__j__="\1" __i__="\2"/'` 4261*b30d1939SAndy Fiddaman if copyright $__i__ || copyright $__j__ 4262*b30d1939SAndy Fiddaman then return 0 4263*b30d1939SAndy Fiddaman fi 4264*b30d1939SAndy Fiddaman ;; 4265*b30d1939SAndy Fiddaman esac 4266*b30d1939SAndy Fiddaman return 1 4267*b30d1939SAndy Fiddaman} 4268*b30d1939SAndy Fiddaman 4269*b30d1939SAndy Fiddaman# run remote make on host 4270*b30d1939SAndy Fiddaman 4271*b30d1939SAndy Fiddamanremote() # host no-exec-background 4272*b30d1939SAndy Fiddaman{ 4273*b30d1939SAndy Fiddaman host=$1 4274*b30d1939SAndy Fiddaman background=$2 4275*b30d1939SAndy Fiddaman eval name=\$${host}_name user=\$${host}_user snarf=\$${host}_snarf type=\$${host}_type rsh=\$${host}_rsh root=\$${host}_root keep=\$${host}_keep log=\$${host}_log 4276*b30d1939SAndy Fiddaman case $keep in 4277*b30d1939SAndy Fiddaman 1*) ;; 4278*b30d1939SAndy Fiddaman *) return ;; 4279*b30d1939SAndy Fiddaman esac 4280*b30d1939SAndy Fiddaman case $host in 4281*b30d1939SAndy Fiddaman $main) ;; 4282*b30d1939SAndy Fiddaman *) case $exec in 4283*b30d1939SAndy Fiddaman '') exec > $admin_log/$log 2>&1 ;; 4284*b30d1939SAndy Fiddaman *) echo "exec > $admin_log/$log 2>&1" ;; 4285*b30d1939SAndy Fiddaman esac 4286*b30d1939SAndy Fiddaman ;; 4287*b30d1939SAndy Fiddaman esac 4288*b30d1939SAndy Fiddaman if $admin_ping $name >/dev/null 2>&1 || $admin_ping $name >/dev/null 2>&1 4289*b30d1939SAndy Fiddaman then cmd=". ./.profile" 4290*b30d1939SAndy Fiddaman case $root in 4291*b30d1939SAndy Fiddaman .) root= 4292*b30d1939SAndy Fiddaman ;; 4293*b30d1939SAndy Fiddaman *) cmd="$cmd && cd $root" 4294*b30d1939SAndy Fiddaman root=$root/ 4295*b30d1939SAndy Fiddaman ;; 4296*b30d1939SAndy Fiddaman esac 4297*b30d1939SAndy Fiddaman cmd="$cmd && { test -f lib/package/admin/$admin_env && . ./lib/package/admin/$admin_env || true ;} && PATH=\${PWD:-\`pwd\`}/bin:\$PATH \${SHELL:-/bin/sh} -c 'package $admin_args PACKAGEROOT=\${PWD:-\`pwd\`} HOSTTYPE=$type VPATH='" 4298*b30d1939SAndy Fiddaman case $admin_binary in 4299*b30d1939SAndy Fiddaman '') snarf= ;; 4300*b30d1939SAndy Fiddaman esac 4301*b30d1939SAndy Fiddaman case $snarf in 4302*b30d1939SAndy Fiddaman '') $exec $rsh $user$name "$cmd" $background 4303*b30d1939SAndy Fiddaman ;; 4304*b30d1939SAndy Fiddaman *?) rcp=`echo $rsh | sed 's/\(.\).*/\1/'`cp 4305*b30d1939SAndy Fiddaman case $background in 4306*b30d1939SAndy Fiddaman ?*) $exec "{" ;; 4307*b30d1939SAndy Fiddaman esac 4308*b30d1939SAndy Fiddaman $exec $rsh $user$name "$cmd" 4309*b30d1939SAndy Fiddaman eval lst=$admin_list 4310*b30d1939SAndy Fiddaman case $admin_pkgs in 4311*b30d1939SAndy Fiddaman '') filter=cat ;; 4312*b30d1939SAndy Fiddaman *) filter="egrep lib/package/tgz/($admin_pkgs)\\." ;; 4313*b30d1939SAndy Fiddaman esac 4314*b30d1939SAndy Fiddaman if $exec $rcp $user$name:${root}lib/package/tgz/$lst $PACKAGESRC/tgz 4315*b30d1939SAndy Fiddaman then $exec $rcp `$filter $PACKAGESRC/tgz/$lst | sed "s,^,$user$name:,"` $PACKAGESRC/tgz 4316*b30d1939SAndy Fiddaman else echo "$command: $user$name:${root}lib/package/tgz/$lst: not found" >&2 4317*b30d1939SAndy Fiddaman fi 4318*b30d1939SAndy Fiddaman case $background in 4319*b30d1939SAndy Fiddaman ?*) $exec "} $background" ;; 4320*b30d1939SAndy Fiddaman esac 4321*b30d1939SAndy Fiddaman ;; 4322*b30d1939SAndy Fiddaman esac 4323*b30d1939SAndy Fiddaman else echo "$command: $name: down" >&2 4324*b30d1939SAndy Fiddaman fi 4325*b30d1939SAndy Fiddaman} 4326*b30d1939SAndy Fiddaman 4327*b30d1939SAndy Fiddaman# update package_src 4328*b30d1939SAndy Fiddaman 4329*b30d1939SAndy Fiddamanchecksrc() 4330*b30d1939SAndy Fiddaman{ 4331*b30d1939SAndy Fiddaman case $package_src in 4332*b30d1939SAndy Fiddaman '') package_src=$src 4333*b30d1939SAndy Fiddaman for _i_ in `cd $PACKAGESRC; ls *.def *.lic *.pkg 2>/dev/null | sed 's/[-.].*//'` 4334*b30d1939SAndy Fiddaman do case " $package_src " in 4335*b30d1939SAndy Fiddaman *" $_i_ "*) 4336*b30d1939SAndy Fiddaman ;; 4337*b30d1939SAndy Fiddaman *) package_src="$package_src $_i_" 4338*b30d1939SAndy Fiddaman ;; 4339*b30d1939SAndy Fiddaman esac 4340*b30d1939SAndy Fiddaman done 4341*b30d1939SAndy Fiddaman ;; 4342*b30d1939SAndy Fiddaman esac 4343*b30d1939SAndy Fiddaman} 4344*b30d1939SAndy Fiddaman 4345*b30d1939SAndy Fiddaman# check for native ascii 0:yes 1:no 4346*b30d1939SAndy Fiddaman 4347*b30d1939SAndy Fiddaman__isascii__= 4348*b30d1939SAndy Fiddaman 4349*b30d1939SAndy Fiddamanisascii() 4350*b30d1939SAndy Fiddaman{ 4351*b30d1939SAndy Fiddaman case $__isascii__ in 4352*b30d1939SAndy Fiddaman '') case `echo A | od -o | sed -e 's/[ ]*$//' -e '/[ ]/!d' -e 's/.*[ ]//'` in 4353*b30d1939SAndy Fiddaman 005101|040412) __isascii__=0 ;; 4354*b30d1939SAndy Fiddaman *) __isascii__=1 ;; 4355*b30d1939SAndy Fiddaman esac 4356*b30d1939SAndy Fiddaman esac 4357*b30d1939SAndy Fiddaman return $__isascii__ 4358*b30d1939SAndy Fiddaman} 4359*b30d1939SAndy Fiddaman 4360*b30d1939SAndy Fiddamancase $action in 4361*b30d1939SAndy Fiddaman 4362*b30d1939SAndy Fiddamanadmin) while test ! -f $admin_db 4363*b30d1939SAndy Fiddaman do case $admin_db in 4364*b30d1939SAndy Fiddaman /*) echo $command: $action: $admin_db: data file not found >&2 4365*b30d1939SAndy Fiddaman exit 1 4366*b30d1939SAndy Fiddaman ;; 4367*b30d1939SAndy Fiddaman esac 4368*b30d1939SAndy Fiddaman view file src lib/package/admin/$admin_db || exit 1 4369*b30d1939SAndy Fiddaman admin_db=$_view_ 4370*b30d1939SAndy Fiddaman done 4371*b30d1939SAndy Fiddaman admin_components= 4372*b30d1939SAndy Fiddaman case $admin_action in 4373*b30d1939SAndy Fiddaman list) cat $admin_db 4374*b30d1939SAndy Fiddaman exit 4375*b30d1939SAndy Fiddaman ;; 4376*b30d1939SAndy Fiddaman test) set $admin_args 4377*b30d1939SAndy Fiddaman while : 4378*b30d1939SAndy Fiddaman do case $# in 4379*b30d1939SAndy Fiddaman 1) break ;; 4380*b30d1939SAndy Fiddaman esac 4381*b30d1939SAndy Fiddaman shift 4382*b30d1939SAndy Fiddaman case $1 in 4383*b30d1939SAndy Fiddaman *=*) ;; 4384*b30d1939SAndy Fiddaman *) admin_components=-$1 4385*b30d1939SAndy Fiddaman break 4386*b30d1939SAndy Fiddaman ;; 4387*b30d1939SAndy Fiddaman esac 4388*b30d1939SAndy Fiddaman done 4389*b30d1939SAndy Fiddaman ;; 4390*b30d1939SAndy Fiddaman esac 4391*b30d1939SAndy Fiddaman : all work done in $PACKAGESRC/admin 4392*b30d1939SAndy Fiddaman cd $PACKAGESRC/admin || exit 4393*b30d1939SAndy Fiddaman checksrc 4394*b30d1939SAndy Fiddaman packages= 4395*b30d1939SAndy Fiddaman admin_log=${admin_action}${admin_components}.log 4396*b30d1939SAndy Fiddaman exec < $admin_db || exit 4397*b30d1939SAndy Fiddaman test -d $admin_log || $exec mkdir $admin_log || exit 4398*b30d1939SAndy Fiddaman case $admin_on in 4399*b30d1939SAndy Fiddaman '') admin_on="*" ;; 4400*b30d1939SAndy Fiddaman esac 4401*b30d1939SAndy Fiddaman hostname= 4402*b30d1939SAndy Fiddaman hosts= 4403*b30d1939SAndy Fiddaman logs= 4404*b30d1939SAndy Fiddaman local_hosts= 4405*b30d1939SAndy Fiddaman local_types= 4406*b30d1939SAndy Fiddaman pids= 4407*b30d1939SAndy Fiddaman remote_hosts= 4408*b30d1939SAndy Fiddaman sync_hosts= 4409*b30d1939SAndy Fiddaman admin_host=_admin_host_ 4410*b30d1939SAndy Fiddaman admin_out= 4411*b30d1939SAndy Fiddaman case " $admin_args " in 4412*b30d1939SAndy Fiddaman *" write binary "*|*" write "*" binary "*) 4413*b30d1939SAndy Fiddaman admin_binary=1 4414*b30d1939SAndy Fiddaman ;; 4415*b30d1939SAndy Fiddaman *) admin_binary= 4416*b30d1939SAndy Fiddaman ;; 4417*b30d1939SAndy Fiddaman esac 4418*b30d1939SAndy Fiddaman case $only in 4419*b30d1939SAndy Fiddaman 1) admin_args="only $admin_args" ;; 4420*b30d1939SAndy Fiddaman esac 4421*b30d1939SAndy Fiddaman trap 'kill $pids >/dev/null 2>&1' 1 2 3 15 4422*b30d1939SAndy Fiddaman index=0 4423*b30d1939SAndy Fiddaman while read type host root date time make test write owner attributes 4424*b30d1939SAndy Fiddaman do case $type in 4425*b30d1939SAndy Fiddaman ''|'#'*);; 4426*b30d1939SAndy Fiddaman *=*) eval "$type $host $root $date $time $make $test $write $owner $attributes" 4427*b30d1939SAndy Fiddaman ;; 4428*b30d1939SAndy Fiddaman *) case $admin_action in 4429*b30d1939SAndy Fiddaman make|test|write) 4430*b30d1939SAndy Fiddaman eval f='$'$admin_action 4431*b30d1939SAndy Fiddaman case $f in 4432*b30d1939SAndy Fiddaman *[!0123456789]*) continue ;; 4433*b30d1939SAndy Fiddaman esac 4434*b30d1939SAndy Fiddaman ;; 4435*b30d1939SAndy Fiddaman esac 4436*b30d1939SAndy Fiddaman rsh=rsh 4437*b30d1939SAndy Fiddaman case $host in 4438*b30d1939SAndy Fiddaman *@*) IFS=@ 4439*b30d1939SAndy Fiddaman set '' $host 4440*b30d1939SAndy Fiddaman IFS=$ifs 4441*b30d1939SAndy Fiddaman user=${2}@ 4442*b30d1939SAndy Fiddaman host=$3 4443*b30d1939SAndy Fiddaman ;; 4444*b30d1939SAndy Fiddaman *) user= 4445*b30d1939SAndy Fiddaman ;; 4446*b30d1939SAndy Fiddaman esac 4447*b30d1939SAndy Fiddaman : type=$type host=$host root=$root date=$date time=$time make=$make test=$test write=$write : 4448*b30d1939SAndy Fiddaman name=$host 4449*b30d1939SAndy Fiddaman host=`echo $name | sed 's,[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789],__,g'` 4450*b30d1939SAndy Fiddaman eval x='$'${host}_index 4451*b30d1939SAndy Fiddaman eval ${host}_index=1 4452*b30d1939SAndy Fiddaman case $x in 4453*b30d1939SAndy Fiddaman 1) i=0 4454*b30d1939SAndy Fiddaman while : 4455*b30d1939SAndy Fiddaman do case $i in 4456*b30d1939SAndy Fiddaman $index) h='' 4457*b30d1939SAndy Fiddaman break 4458*b30d1939SAndy Fiddaman ;; 4459*b30d1939SAndy Fiddaman esac 4460*b30d1939SAndy Fiddaman i=`expr $i + 1` 4461*b30d1939SAndy Fiddaman eval h='$'${admin_host}${i}_name 4462*b30d1939SAndy Fiddaman case $h in 4463*b30d1939SAndy Fiddaman $host) host=${admin_host}${i} 4464*b30d1939SAndy Fiddaman eval user='$'${host}_user root='$'${host}_rsh:$host:'$'${host}_root 4465*b30d1939SAndy Fiddaman break 4466*b30d1939SAndy Fiddaman ;; 4467*b30d1939SAndy Fiddaman esac 4468*b30d1939SAndy Fiddaman done 4469*b30d1939SAndy Fiddaman ;; 4470*b30d1939SAndy Fiddaman esac 4471*b30d1939SAndy Fiddaman case $root in 4472*b30d1939SAndy Fiddaman *:$name:*)root=`echo '' $root | sed 's,:.*,:,'` ;; 4473*b30d1939SAndy Fiddaman esac 4474*b30d1939SAndy Fiddaman case $root in 4475*b30d1939SAndy Fiddaman *:*:*) index=`expr $index + 1` 4476*b30d1939SAndy Fiddaman host=${admin_host}$index 4477*b30d1939SAndy Fiddaman ;; 4478*b30d1939SAndy Fiddaman *:*) case " $sync_hosts " in 4479*b30d1939SAndy Fiddaman *" $name ${admin_host}"*) 4480*b30d1939SAndy Fiddaman set '' '' $sync_hosts 4481*b30d1939SAndy Fiddaman while : 4482*b30d1939SAndy Fiddaman do shift 4483*b30d1939SAndy Fiddaman shift 4484*b30d1939SAndy Fiddaman case $1 in 4485*b30d1939SAndy Fiddaman $name) host=$2 4486*b30d1939SAndy Fiddaman break 4487*b30d1939SAndy Fiddaman ;; 4488*b30d1939SAndy Fiddaman esac 4489*b30d1939SAndy Fiddaman done 4490*b30d1939SAndy Fiddaman ;; 4491*b30d1939SAndy Fiddaman *) index=`expr $index + 1` 4492*b30d1939SAndy Fiddaman host=${admin_host}$index 4493*b30d1939SAndy Fiddaman sync_hosts="$sync_hosts $name $host" 4494*b30d1939SAndy Fiddaman ;; 4495*b30d1939SAndy Fiddaman esac 4496*b30d1939SAndy Fiddaman ;; 4497*b30d1939SAndy Fiddaman *) index=`expr $index + 1` 4498*b30d1939SAndy Fiddaman host=${admin_host}$index 4499*b30d1939SAndy Fiddaman ;; 4500*b30d1939SAndy Fiddaman esac 4501*b30d1939SAndy Fiddaman case $root in 4502*b30d1939SAndy Fiddaman -*) continue 4503*b30d1939SAndy Fiddaman ;; 4504*b30d1939SAndy Fiddaman *:*) case $admin_all in 4505*b30d1939SAndy Fiddaman 0) continue ;; 4506*b30d1939SAndy Fiddaman esac 4507*b30d1939SAndy Fiddaman case $root in 4508*b30d1939SAndy Fiddaman *:) root=${root}. ;; 4509*b30d1939SAndy Fiddaman esac 4510*b30d1939SAndy Fiddaman IFS=: 4511*b30d1939SAndy Fiddaman set '' $root 4512*b30d1939SAndy Fiddaman IFS=$ifs 4513*b30d1939SAndy Fiddaman sync=$host 4514*b30d1939SAndy Fiddaman case $hostname in 4515*b30d1939SAndy Fiddaman '') hostinfo name 4516*b30d1939SAndy Fiddaman hostname=$_hostinfo_ 4517*b30d1939SAndy Fiddaman ;; 4518*b30d1939SAndy Fiddaman esac 4519*b30d1939SAndy Fiddaman shift 4520*b30d1939SAndy Fiddaman case $# in 4521*b30d1939SAndy Fiddaman 0) ;; 4522*b30d1939SAndy Fiddaman 1) root=$1 4523*b30d1939SAndy Fiddaman ;; 4524*b30d1939SAndy Fiddaman 2) rsh=$1 root=$2 4525*b30d1939SAndy Fiddaman ;; 4526*b30d1939SAndy Fiddaman *) rsh=$1 sync=$2 root=$3 4527*b30d1939SAndy Fiddaman case $sync in 4528*b30d1939SAndy Fiddaman ${admin_host}*) 4529*b30d1939SAndy Fiddaman ;; 4530*b30d1939SAndy Fiddaman ?*) case " $sync_hosts " in 4531*b30d1939SAndy Fiddaman *" $sync ${admin_host}"*) 4532*b30d1939SAndy Fiddaman set '' '' $sync_hosts 4533*b30d1939SAndy Fiddaman while : 4534*b30d1939SAndy Fiddaman do shift 4535*b30d1939SAndy Fiddaman shift 4536*b30d1939SAndy Fiddaman case $1 in 4537*b30d1939SAndy Fiddaman $sync) sync=$2 4538*b30d1939SAndy Fiddaman break 4539*b30d1939SAndy Fiddaman ;; 4540*b30d1939SAndy Fiddaman esac 4541*b30d1939SAndy Fiddaman done 4542*b30d1939SAndy Fiddaman ;; 4543*b30d1939SAndy Fiddaman *) index=`expr $index + 1` 4544*b30d1939SAndy Fiddaman x=${admin_host}$index 4545*b30d1939SAndy Fiddaman sync_hosts="$sync_hosts $sync $x" 4546*b30d1939SAndy Fiddaman sync=$x 4547*b30d1939SAndy Fiddaman ;; 4548*b30d1939SAndy Fiddaman esac 4549*b30d1939SAndy Fiddaman ;; 4550*b30d1939SAndy Fiddaman esac 4551*b30d1939SAndy Fiddaman ;; 4552*b30d1939SAndy Fiddaman esac 4553*b30d1939SAndy Fiddaman ;; 4554*b30d1939SAndy Fiddaman *) sync= 4555*b30d1939SAndy Fiddaman ;; 4556*b30d1939SAndy Fiddaman esac 4557*b30d1939SAndy Fiddaman case $name in 4558*b30d1939SAndy Fiddaman $admin_on) 4559*b30d1939SAndy Fiddaman keep=1 4560*b30d1939SAndy Fiddaman ;; 4561*b30d1939SAndy Fiddaman *) case " $admin_on " in 4562*b30d1939SAndy Fiddaman *" $name "*) keep=1 ;; 4563*b30d1939SAndy Fiddaman *) keep=0 ;; 4564*b30d1939SAndy Fiddaman esac 4565*b30d1939SAndy Fiddaman ;; 4566*b30d1939SAndy Fiddaman esac 4567*b30d1939SAndy Fiddaman case " $admin_out " in 4568*b30d1939SAndy Fiddaman *" $name "*) 4569*b30d1939SAndy Fiddaman log=$name.$type 4570*b30d1939SAndy Fiddaman ;; 4571*b30d1939SAndy Fiddaman *) admin_out="$admin_out $name" 4572*b30d1939SAndy Fiddaman log=$name 4573*b30d1939SAndy Fiddaman ;; 4574*b30d1939SAndy Fiddaman esac 4575*b30d1939SAndy Fiddaman case $sync in 4576*b30d1939SAndy Fiddaman '') local_types="$local_types $type" ;; 4577*b30d1939SAndy Fiddaman esac 4578*b30d1939SAndy Fiddaman case $sync in 4579*b30d1939SAndy Fiddaman $host) remote_hosts="$remote_hosts $host" 4580*b30d1939SAndy Fiddaman ;; 4581*b30d1939SAndy Fiddaman ?*) eval ${sync}_share=\"\$${sync}_share $host\" 4582*b30d1939SAndy Fiddaman ;; 4583*b30d1939SAndy Fiddaman '') local_hosts="$local_hosts $host" 4584*b30d1939SAndy Fiddaman ;; 4585*b30d1939SAndy Fiddaman esac 4586*b30d1939SAndy Fiddaman eval ${host}_name='$'name ${host}_type='$'type ${host}_user='$'user ${host}_sync='$'sync ${host}_snarf='$'sync ${host}_rsh='$'rsh ${host}_root='$'root ${host}_keep='$'keep ${host}_log='$'log 4587*b30d1939SAndy Fiddaman ;; 4588*b30d1939SAndy Fiddaman esac 4589*b30d1939SAndy Fiddaman done 4590*b30d1939SAndy Fiddaman p= 4591*b30d1939SAndy Fiddaman for i in $admin_args 4592*b30d1939SAndy Fiddaman do p="$i $p" 4593*b30d1939SAndy Fiddaman done 4594*b30d1939SAndy Fiddaman admin_pkgs= 4595*b30d1939SAndy Fiddaman for i in $p 4596*b30d1939SAndy Fiddaman do if view - src "lib/package/$i.pkg" 4597*b30d1939SAndy Fiddaman then case $admin_pkgs in 4598*b30d1939SAndy Fiddaman '') admin_pkgs="$i" ;; 4599*b30d1939SAndy Fiddaman *) admin_pkgs="$admin_pkgs|$i" ;; 4600*b30d1939SAndy Fiddaman esac 4601*b30d1939SAndy Fiddaman fi 4602*b30d1939SAndy Fiddaman done 4603*b30d1939SAndy Fiddaman : "admin_binary :" $admin_binary 4604*b30d1939SAndy Fiddaman : "admin_args :" $admin_args 4605*b30d1939SAndy Fiddaman : "admin_pkgs :" $admin_pkgs 4606*b30d1939SAndy Fiddaman : "admin_on :" "$admin_on" 4607*b30d1939SAndy Fiddaman : "local_hosts :" $local_hosts 4608*b30d1939SAndy Fiddaman : "local_types :" $local_types 4609*b30d1939SAndy Fiddaman : "remote_hosts :" $remote_hosts 4610*b30d1939SAndy Fiddaman : "sync_hosts :" $sync_hosts 4611*b30d1939SAndy Fiddaman : "sync_share :" $sync_share 4612*b30d1939SAndy Fiddaman case $admin_binary in 4613*b30d1939SAndy Fiddaman 1) admin_bin_types= 4614*b30d1939SAndy Fiddaman admin_bin_main= 4615*b30d1939SAndy Fiddaman for main in $local_hosts $remote_hosts 4616*b30d1939SAndy Fiddaman do eval share=\$${main}_share keep=\$${main}_keep 4617*b30d1939SAndy Fiddaman case $keep in 4618*b30d1939SAndy Fiddaman 0*) continue ;; 4619*b30d1939SAndy Fiddaman esac 4620*b30d1939SAndy Fiddaman for host in $main $share 4621*b30d1939SAndy Fiddaman do case " $admin_bin_hosts " in 4622*b30d1939SAndy Fiddaman *" $host "*) 4623*b30d1939SAndy Fiddaman continue 4624*b30d1939SAndy Fiddaman ;; 4625*b30d1939SAndy Fiddaman esac 4626*b30d1939SAndy Fiddaman eval type=\$${host}_type 4627*b30d1939SAndy Fiddaman case " $admin_bin_types " in 4628*b30d1939SAndy Fiddaman *" $type "*) 4629*b30d1939SAndy Fiddaman continue 4630*b30d1939SAndy Fiddaman ;; 4631*b30d1939SAndy Fiddaman esac 4632*b30d1939SAndy Fiddaman case " $types " in 4633*b30d1939SAndy Fiddaman " ") ;; 4634*b30d1939SAndy Fiddaman *" $type "*) 4635*b30d1939SAndy Fiddaman ;; 4636*b30d1939SAndy Fiddaman *) continue 4637*b30d1939SAndy Fiddaman ;; 4638*b30d1939SAndy Fiddaman esac 4639*b30d1939SAndy Fiddaman admin_bin_hosts="$admin_bin_hosts $host" 4640*b30d1939SAndy Fiddaman admin_bin_types="$admin_bin_types $type" 4641*b30d1939SAndy Fiddaman case " $admin_bin_hosts " in 4642*b30d1939SAndy Fiddaman *" $main "*) 4643*b30d1939SAndy Fiddaman ;; 4644*b30d1939SAndy Fiddaman *) case " $admin_bin_main " in 4645*b30d1939SAndy Fiddaman *" $main "*) 4646*b30d1939SAndy Fiddaman ;; 4647*b30d1939SAndy Fiddaman *) admin_bin_main="$admin_bin_main $main" 4648*b30d1939SAndy Fiddaman ;; 4649*b30d1939SAndy Fiddaman esac 4650*b30d1939SAndy Fiddaman ;; 4651*b30d1939SAndy Fiddaman esac 4652*b30d1939SAndy Fiddaman done 4653*b30d1939SAndy Fiddaman done 4654*b30d1939SAndy Fiddaman local= 4655*b30d1939SAndy Fiddaman remote= 4656*b30d1939SAndy Fiddaman for host in $admin_bin_main $admin_bin_hosts 4657*b30d1939SAndy Fiddaman do case " $local_hosts " in 4658*b30d1939SAndy Fiddaman *" $host "*) 4659*b30d1939SAndy Fiddaman local="$local $host" 4660*b30d1939SAndy Fiddaman ;; 4661*b30d1939SAndy Fiddaman *) case " $remote_hosts " in 4662*b30d1939SAndy Fiddaman *" $host "*) 4663*b30d1939SAndy Fiddaman remote="$remote $host" 4664*b30d1939SAndy Fiddaman ;; 4665*b30d1939SAndy Fiddaman esac 4666*b30d1939SAndy Fiddaman ;; 4667*b30d1939SAndy Fiddaman esac 4668*b30d1939SAndy Fiddaman done 4669*b30d1939SAndy Fiddaman local_hosts=$local 4670*b30d1939SAndy Fiddaman remote_hosts=$remote 4671*b30d1939SAndy Fiddaman ;; 4672*b30d1939SAndy Fiddaman esac 4673*b30d1939SAndy Fiddaman for host in $remote_hosts $local_hosts 4674*b30d1939SAndy Fiddaman do eval share=\$${host}_share 4675*b30d1939SAndy Fiddaman case $share in 4676*b30d1939SAndy Fiddaman ?*) while : 4677*b30d1939SAndy Fiddaman do oshare=$share 4678*b30d1939SAndy Fiddaman for s in $share 4679*b30d1939SAndy Fiddaman do eval r='$'${s}_share 4680*b30d1939SAndy Fiddaman case $r in 4681*b30d1939SAndy Fiddaman ?*) case " $share " in 4682*b30d1939SAndy Fiddaman *" $r "*) ;; 4683*b30d1939SAndy Fiddaman *) share="$share $r" ;; 4684*b30d1939SAndy Fiddaman esac 4685*b30d1939SAndy Fiddaman ;; 4686*b30d1939SAndy Fiddaman esac 4687*b30d1939SAndy Fiddaman done 4688*b30d1939SAndy Fiddaman case $share in 4689*b30d1939SAndy Fiddaman $oshare) eval ${host}_share="'$share'" 4690*b30d1939SAndy Fiddaman break 4691*b30d1939SAndy Fiddaman ;; 4692*b30d1939SAndy Fiddaman esac 4693*b30d1939SAndy Fiddaman done 4694*b30d1939SAndy Fiddaman ;; 4695*b30d1939SAndy Fiddaman esac 4696*b30d1939SAndy Fiddaman done 4697*b30d1939SAndy Fiddaman for host in $remote_hosts 4698*b30d1939SAndy Fiddaman do eval type=\$${host}_type 4699*b30d1939SAndy Fiddaman case " $local_types " in 4700*b30d1939SAndy Fiddaman *" $type "*) 4701*b30d1939SAndy Fiddaman eval ${host}_snarf= 4702*b30d1939SAndy Fiddaman ;; 4703*b30d1939SAndy Fiddaman esac 4704*b30d1939SAndy Fiddaman eval name=\$${host}_name keep=\$${host}_keep share=\$${host}_share 4705*b30d1939SAndy Fiddaman for share in $share 4706*b30d1939SAndy Fiddaman do eval type=\$${share}_type keep=\$keep\$${share}_keep 4707*b30d1939SAndy Fiddaman case " $local_types " in 4708*b30d1939SAndy Fiddaman *" $type "*) 4709*b30d1939SAndy Fiddaman eval ${share}_snarf= 4710*b30d1939SAndy Fiddaman ;; 4711*b30d1939SAndy Fiddaman esac 4712*b30d1939SAndy Fiddaman done 4713*b30d1939SAndy Fiddaman case $keep in 4714*b30d1939SAndy Fiddaman 0*1*) keep=2$keep ;; 4715*b30d1939SAndy Fiddaman *1*) ;; 4716*b30d1939SAndy Fiddaman *) keep=0 ;; 4717*b30d1939SAndy Fiddaman esac 4718*b30d1939SAndy Fiddaman eval ${host}_keep=$keep 4719*b30d1939SAndy Fiddaman done 4720*b30d1939SAndy Fiddaman for host in $remote_hosts $local_hosts 4721*b30d1939SAndy Fiddaman do eval name=\$${host}_name user=\$${host}_user type=\$${host}_type sync=\$${host}_sync snarf=\$${host}_snarf share=\$${host}_share rsh=\$${host}_rsh root=\$${host}_root keep=\$${host}_keep 4722*b30d1939SAndy Fiddaman case $keep in 4723*b30d1939SAndy Fiddaman 0*) continue ;; 4724*b30d1939SAndy Fiddaman esac 4725*b30d1939SAndy Fiddaman case $sync in 4726*b30d1939SAndy Fiddaman '') case $admin_action in 4727*b30d1939SAndy Fiddaman ditto) continue ;; 4728*b30d1939SAndy Fiddaman esac 4729*b30d1939SAndy Fiddaman case $admin_binary in 4730*b30d1939SAndy Fiddaman 1) case $keep in 4731*b30d1939SAndy Fiddaman 1*|?*1*);; 4732*b30d1939SAndy Fiddaman *) continue ;; 4733*b30d1939SAndy Fiddaman esac 4734*b30d1939SAndy Fiddaman ;; 4735*b30d1939SAndy Fiddaman esac 4736*b30d1939SAndy Fiddaman ;; 4737*b30d1939SAndy Fiddaman esac 4738*b30d1939SAndy Fiddaman eval main_log='$'${host}_log 4739*b30d1939SAndy Fiddaman main= 4740*b30d1939SAndy Fiddaman share_keep= 4741*b30d1939SAndy Fiddaman for i in $host $share 4742*b30d1939SAndy Fiddaman do eval n='$'${i}_name t='$'${i}_type q='$'${i}_sync s='$'${i}_snarf l='$'${i}_log k='$'${i}_keep 4743*b30d1939SAndy Fiddaman case $main:$k in 4744*b30d1939SAndy Fiddaman :*) ;; 4745*b30d1939SAndy Fiddaman *:0) continue ;; 4746*b30d1939SAndy Fiddaman esac 4747*b30d1939SAndy Fiddaman case $admin_binary in 4748*b30d1939SAndy Fiddaman 1) case $s:$q in 4749*b30d1939SAndy Fiddaman :?*) continue ;; 4750*b30d1939SAndy Fiddaman esac 4751*b30d1939SAndy Fiddaman case " $admin_bin_hosts " in 4752*b30d1939SAndy Fiddaman *" $i "*) 4753*b30d1939SAndy Fiddaman ;; 4754*b30d1939SAndy Fiddaman *) continue 4755*b30d1939SAndy Fiddaman ;; 4756*b30d1939SAndy Fiddaman esac 4757*b30d1939SAndy Fiddaman ;; 4758*b30d1939SAndy Fiddaman esac 4759*b30d1939SAndy Fiddaman case $main in 4760*b30d1939SAndy Fiddaman '') main=$i ;; 4761*b30d1939SAndy Fiddaman *) share_keep="$share_keep $i" ;; 4762*b30d1939SAndy Fiddaman esac 4763*b30d1939SAndy Fiddaman echo package "$admin_args" "[ $n $t ]" 4764*b30d1939SAndy Fiddaman case $exec in 4765*b30d1939SAndy Fiddaman '') : > $admin_log/$l ;; 4766*b30d1939SAndy Fiddaman *) $exec ": > $admin_log/$l" ;; 4767*b30d1939SAndy Fiddaman esac 4768*b30d1939SAndy Fiddaman done 4769*b30d1939SAndy Fiddaman host=$main 4770*b30d1939SAndy Fiddaman share=$share_keep 4771*b30d1939SAndy Fiddaman case $force in 4772*b30d1939SAndy Fiddaman 0) admin_ditto_update=--update ;; 4773*b30d1939SAndy Fiddaman *) admin_ditto_update= ;; 4774*b30d1939SAndy Fiddaman esac 4775*b30d1939SAndy Fiddaman case $exec in 4776*b30d1939SAndy Fiddaman '') { 4777*b30d1939SAndy Fiddaman case $admin_binary:$sync in 4778*b30d1939SAndy Fiddaman :?*) eval syncname='$'${sync}_name 4779*b30d1939SAndy Fiddaman test -x $PACKAGEROOT/bin/package && $admin_ditto $admin_ditto_update --remote=$rsh --expr="name=='package'" $PACKAGEROOT/bin $user$syncname:$root/bin 4780*b30d1939SAndy Fiddaman test -d $PACKAGESRC && $admin_ditto $admin_ditto_update --remote=$rsh --expr="if(level>1&&path!='LICENSES/*')status=SKIP;path=='LICENSES*|*.(pkg|lic|def)'" $PACKAGESRC $user$syncname:$root/lib/package 4781*b30d1939SAndy Fiddaman for dir in $package_src 4782*b30d1939SAndy Fiddaman do case $MAKESKIP in 4783*b30d1939SAndy Fiddaman '') expr="--expr=if(name=='$admin_ditto_skip')status=SKIP" ;; 4784*b30d1939SAndy Fiddaman *) expr="--expr=if(name=='$admin_ditto_skip'||level==1&&name=='$MAKESKIP')status=SKIP" ;; 4785*b30d1939SAndy Fiddaman esac 4786*b30d1939SAndy Fiddaman test -d $PACKAGEROOT/src/$dir && $admin_ditto $admin_ditto_update --remote=$rsh "$expr" $PACKAGEROOT/src/$dir $user$syncname:$root/src/$dir 4787*b30d1939SAndy Fiddaman done 4788*b30d1939SAndy Fiddaman ;; 4789*b30d1939SAndy Fiddaman esac 4790*b30d1939SAndy Fiddaman case $admin_action in 4791*b30d1939SAndy Fiddaman ditto) ;; 4792*b30d1939SAndy Fiddaman ?*) pids= 4793*b30d1939SAndy Fiddaman set '' $host $share 4794*b30d1939SAndy Fiddaman while : 4795*b30d1939SAndy Fiddaman do shift 4796*b30d1939SAndy Fiddaman case $# in 4797*b30d1939SAndy Fiddaman 0) break 4798*b30d1939SAndy Fiddaman ;; 4799*b30d1939SAndy Fiddaman 1) remote $1 4800*b30d1939SAndy Fiddaman ;; 4801*b30d1939SAndy Fiddaman *) remote $1 & 4802*b30d1939SAndy Fiddaman pids="$pids $!" 4803*b30d1939SAndy Fiddaman ;; 4804*b30d1939SAndy Fiddaman esac 4805*b30d1939SAndy Fiddaman done 4806*b30d1939SAndy Fiddaman case $pids in 4807*b30d1939SAndy Fiddaman ?*) wait $pids ;; 4808*b30d1939SAndy Fiddaman esac 4809*b30d1939SAndy Fiddaman ;; 4810*b30d1939SAndy Fiddaman esac 4811*b30d1939SAndy Fiddaman } < /dev/null > $admin_log/$main_log 2>&1 & 4812*b30d1939SAndy Fiddaman pids="$pids $!" 4813*b30d1939SAndy Fiddaman ;; 4814*b30d1939SAndy Fiddaman *) echo "{" 4815*b30d1939SAndy Fiddaman case $admin_binary:$sync in 4816*b30d1939SAndy Fiddaman :?*) eval syncname='$'${sync}_name 4817*b30d1939SAndy Fiddaman test -d $PACKAGESRC && echo $admin_ditto $admin_ditto_update --remote=$rsh --expr="if(level>1)status=SKIP;name=='*.(pkg|lic|def)'" $PACKAGESRC $user$syncname:$root/lib/package 4818*b30d1939SAndy Fiddaman for dir in $package_src 4819*b30d1939SAndy Fiddaman do case $MAKESKIP in 4820*b30d1939SAndy Fiddaman '') expr="--expr=if(name=='$admin_ditto_skip')status=SKIP" ;; 4821*b30d1939SAndy Fiddaman *) expr="--expr=if(name=='$admin_ditto_skip'||level==1&&name=='$MAKESKIP')status=SKIP" ;; 4822*b30d1939SAndy Fiddaman esac 4823*b30d1939SAndy Fiddaman test -d $PACKAGEROOT/src/$dir && echo $admin_ditto $admin_ditto_update --remote=$rsh "$expr" $PACKAGEROOT/src/$dir $user$syncname:$root/src/$dir 4824*b30d1939SAndy Fiddaman done 4825*b30d1939SAndy Fiddaman ;; 4826*b30d1939SAndy Fiddaman esac 4827*b30d1939SAndy Fiddaman case $admin_action in 4828*b30d1939SAndy Fiddaman ditto) ;; 4829*b30d1939SAndy Fiddaman ?*) pids= 4830*b30d1939SAndy Fiddaman set '' $host $share 4831*b30d1939SAndy Fiddaman while : 4832*b30d1939SAndy Fiddaman do shift 4833*b30d1939SAndy Fiddaman case $# in 4834*b30d1939SAndy Fiddaman 0) break 4835*b30d1939SAndy Fiddaman ;; 4836*b30d1939SAndy Fiddaman 1) remote $1 4837*b30d1939SAndy Fiddaman ;; 4838*b30d1939SAndy Fiddaman *) remote $1 "&" 4839*b30d1939SAndy Fiddaman pids=1 4840*b30d1939SAndy Fiddaman ;; 4841*b30d1939SAndy Fiddaman esac 4842*b30d1939SAndy Fiddaman done 4843*b30d1939SAndy Fiddaman case $pids in 4844*b30d1939SAndy Fiddaman 1) echo wait ;; 4845*b30d1939SAndy Fiddaman esac 4846*b30d1939SAndy Fiddaman ;; 4847*b30d1939SAndy Fiddaman esac 4848*b30d1939SAndy Fiddaman echo "} < /dev/null > $admin_log/$main_log 2>&1 &" 4849*b30d1939SAndy Fiddaman ;; 4850*b30d1939SAndy Fiddaman esac 4851*b30d1939SAndy Fiddaman eval name='$'${main}_name 4852*b30d1939SAndy Fiddaman hosts="$hosts $name" 4853*b30d1939SAndy Fiddaman logs="$logs $main_log" 4854*b30d1939SAndy Fiddaman for share in $share 4855*b30d1939SAndy Fiddaman do eval keep=\$${share}_keep 4856*b30d1939SAndy Fiddaman case $keep in 4857*b30d1939SAndy Fiddaman 1) eval name='$'${share}_name log='$'${share}_log 4858*b30d1939SAndy Fiddaman hosts="$hosts $name" 4859*b30d1939SAndy Fiddaman logs="$logs $log" 4860*b30d1939SAndy Fiddaman ;; 4861*b30d1939SAndy Fiddaman esac 4862*b30d1939SAndy Fiddaman done 4863*b30d1939SAndy Fiddaman done 4864*b30d1939SAndy Fiddaman case $exec in 4865*b30d1939SAndy Fiddaman '') # track the progress 4866*b30d1939SAndy Fiddaman case $quiet in 4867*b30d1939SAndy Fiddaman 0) cd $admin_log 4868*b30d1939SAndy Fiddaman tail -t $PACKAGE_admin_tail_timeout -f $logs 4869*b30d1939SAndy Fiddaman cd .. 4870*b30d1939SAndy Fiddaman ;; 4871*b30d1939SAndy Fiddaman esac 4872*b30d1939SAndy Fiddaman # wait for the remote actions to complete 4873*b30d1939SAndy Fiddaman wait 4874*b30d1939SAndy Fiddaman trap - 1 2 3 15 4875*b30d1939SAndy Fiddaman # update the db 4876*b30d1939SAndy Fiddaman exec < $admin_db || exit 4877*b30d1939SAndy Fiddaman exec 9>&1 4878*b30d1939SAndy Fiddaman D=`date +%y%m%d` 4879*b30d1939SAndy Fiddaman while read line 4880*b30d1939SAndy Fiddaman do set -- $line 4881*b30d1939SAndy Fiddaman case $1 in 4882*b30d1939SAndy Fiddaman ''|'#'*|*=*) 4883*b30d1939SAndy Fiddaman ;; 4884*b30d1939SAndy Fiddaman *) case " $hosts " in 4885*b30d1939SAndy Fiddaman *" $2 "*) 4886*b30d1939SAndy Fiddaman : ast date command assumed : 4887*b30d1939SAndy Fiddaman E=`eval date -E \`egrep '[ ](start|done)[ ][ ]*at[ ]' $admin_log/$2 | sed -e 's/.*[ ][ ]*at[ ][ ]*//' -e 's/[ ][ ]*in[ ].*$//' -e 's/.*/"&"/'\`` 4888*b30d1939SAndy Fiddaman M=$6 T=$7 W=$8 4889*b30d1939SAndy Fiddaman case $admin_action in 4890*b30d1939SAndy Fiddaman make|view) 4891*b30d1939SAndy Fiddaman M=`egrep -c ']:.* (\*\*\*.* code|don'\''t know) | \*\*\* termination code ' $admin_log/$2` ;; 4892*b30d1939SAndy Fiddaman test) T=`grep -ci 'fail[es]' $admin_log/$2` ;; 4893*b30d1939SAndy Fiddaman *) W=`grep '^[abcdefghijklmnopqrstuvwxyz][abcdefghijklmnopqrstuvwxyz]*:.' $admin_log/$2 | egrep -cv 'start at|done at|output captured|warning:|: package not found|whence: command not found'` ;; 4894*b30d1939SAndy Fiddaman esac 4895*b30d1939SAndy Fiddaman case $1 in 4896*b30d1939SAndy Fiddaman ?|??|???|????|?????|??????|???????) 4897*b30d1939SAndy Fiddaman t1=' ' 4898*b30d1939SAndy Fiddaman ;; 4899*b30d1939SAndy Fiddaman ????????|?????????|??????????|???????????|????????????|?????????????|??????????????|???????????????) 4900*b30d1939SAndy Fiddaman t1=' ' 4901*b30d1939SAndy Fiddaman ;; 4902*b30d1939SAndy Fiddaman *) t1='' 4903*b30d1939SAndy Fiddaman ;; 4904*b30d1939SAndy Fiddaman esac 4905*b30d1939SAndy Fiddaman case $2 in 4906*b30d1939SAndy Fiddaman ?|??|???|????|?????|??????|???????) 4907*b30d1939SAndy Fiddaman t2=' ' 4908*b30d1939SAndy Fiddaman ;; 4909*b30d1939SAndy Fiddaman *) t2='' 4910*b30d1939SAndy Fiddaman ;; 4911*b30d1939SAndy Fiddaman esac 4912*b30d1939SAndy Fiddaman case $3 in 4913*b30d1939SAndy Fiddaman ?|??|???|????|?????|??????|???????) 4914*b30d1939SAndy Fiddaman t3=' ' 4915*b30d1939SAndy Fiddaman ;; 4916*b30d1939SAndy Fiddaman *) t3='' 4917*b30d1939SAndy Fiddaman ;; 4918*b30d1939SAndy Fiddaman esac 4919*b30d1939SAndy Fiddaman case $E in 4920*b30d1939SAndy Fiddaman ?????) E=" $E" ;; 4921*b30d1939SAndy Fiddaman ????) E=" $E" ;; 4922*b30d1939SAndy Fiddaman ???) E=" $E" ;; 4923*b30d1939SAndy Fiddaman ??) E=" $E" ;; 4924*b30d1939SAndy Fiddaman ?) E=" $E" ;; 4925*b30d1939SAndy Fiddaman esac 4926*b30d1939SAndy Fiddaman case $M in 4927*b30d1939SAndy Fiddaman ???) M="$M" ;; 4928*b30d1939SAndy Fiddaman ??) M=" $M" ;; 4929*b30d1939SAndy Fiddaman ?) M=" $M" ;; 4930*b30d1939SAndy Fiddaman '') M=" 0" ;; 4931*b30d1939SAndy Fiddaman esac 4932*b30d1939SAndy Fiddaman case $T in 4933*b30d1939SAndy Fiddaman ???) T="$T" ;; 4934*b30d1939SAndy Fiddaman ??) T=" $T" ;; 4935*b30d1939SAndy Fiddaman ?) T=" $T" ;; 4936*b30d1939SAndy Fiddaman '') T=" 0" ;; 4937*b30d1939SAndy Fiddaman esac 4938*b30d1939SAndy Fiddaman case $W in 4939*b30d1939SAndy Fiddaman ???) W="$W" ;; 4940*b30d1939SAndy Fiddaman ??) W=" $W" ;; 4941*b30d1939SAndy Fiddaman ?) W=" $W" ;; 4942*b30d1939SAndy Fiddaman '') W=" 0" ;; 4943*b30d1939SAndy Fiddaman esac 4944*b30d1939SAndy Fiddaman A=$1$t1 4945*b30d1939SAndy Fiddaman H=$2$t2 4946*b30d1939SAndy Fiddaman R=$3$t3 4947*b30d1939SAndy Fiddaman case $# in 4948*b30d1939SAndy Fiddaman [0-8]) O= 4949*b30d1939SAndy Fiddaman K= 4950*b30d1939SAndy Fiddaman ;; 4951*b30d1939SAndy Fiddaman *) shift 8 4952*b30d1939SAndy Fiddaman O=$1 4953*b30d1939SAndy Fiddaman K=$2 4954*b30d1939SAndy Fiddaman case $O in 4955*b30d1939SAndy Fiddaman ''|?|??|???) K=" $K" ;; 4956*b30d1939SAndy Fiddaman esac 4957*b30d1939SAndy Fiddaman case $# in 4958*b30d1939SAndy Fiddaman [0-2]) ;; 4959*b30d1939SAndy Fiddaman *) K="$K $*" ;; 4960*b30d1939SAndy Fiddaman esac 4961*b30d1939SAndy Fiddaman ;; 4962*b30d1939SAndy Fiddaman esac 4963*b30d1939SAndy Fiddaman echo "$A $H $R $D $E $M $T $W $O $K" 4964*b30d1939SAndy Fiddaman echo "$A $H $R $D $E $M $T $W $O $K" >&9 4965*b30d1939SAndy Fiddaman continue 4966*b30d1939SAndy Fiddaman ;; 4967*b30d1939SAndy Fiddaman esac 4968*b30d1939SAndy Fiddaman ;; 4969*b30d1939SAndy Fiddaman esac 4970*b30d1939SAndy Fiddaman echo "$line" 4971*b30d1939SAndy Fiddaman done > $admin_db.new 4972*b30d1939SAndy Fiddaman mv $admin_db $admin_db.old 4973*b30d1939SAndy Fiddaman mv $admin_db.new $admin_db 4974*b30d1939SAndy Fiddaman ;; 4975*b30d1939SAndy Fiddaman esac 4976*b30d1939SAndy Fiddaman ;; 4977*b30d1939SAndy Fiddaman 4978*b30d1939SAndy Fiddamanclean|clobber) 4979*b30d1939SAndy Fiddaman cd $PACKAGEROOT 4980*b30d1939SAndy Fiddaman $exec rm -rf $INSTALLROOT 4981*b30d1939SAndy Fiddaman exit 4982*b30d1939SAndy Fiddaman ;; 4983*b30d1939SAndy Fiddaman 4984*b30d1939SAndy Fiddamancontents|list) 4985*b30d1939SAndy Fiddaman # all work in $PACKAGESRC 4986*b30d1939SAndy Fiddaman 4987*b30d1939SAndy Fiddaman cd $PACKAGESRC 4988*b30d1939SAndy Fiddaman 4989*b30d1939SAndy Fiddaman # generate the package list 4990*b30d1939SAndy Fiddaman 4991*b30d1939SAndy Fiddaman set '' $target $package 4992*b30d1939SAndy Fiddaman shift 4993*b30d1939SAndy Fiddaman argc=$# 4994*b30d1939SAndy Fiddaman case $# in 4995*b30d1939SAndy Fiddaman 0) set '' *.pkg 4996*b30d1939SAndy Fiddaman case $2 in 4997*b30d1939SAndy Fiddaman '*.pkg') 4998*b30d1939SAndy Fiddaman echo $command: $action: no packages >&2 4999*b30d1939SAndy Fiddaman exit 1 5000*b30d1939SAndy Fiddaman ;; 5001*b30d1939SAndy Fiddaman esac 5002*b30d1939SAndy Fiddaman set '' `echo $* | sed 's,\.pkg,,g'` 5003*b30d1939SAndy Fiddaman shift 5004*b30d1939SAndy Fiddaman ;; 5005*b30d1939SAndy Fiddaman esac 5006*b30d1939SAndy Fiddaman sep="$nl " 5007*b30d1939SAndy Fiddaman echo packages in $PACKAGEROOT 5008*b30d1939SAndy Fiddaman case $action in 5009*b30d1939SAndy Fiddaman list) echo 5010*b30d1939SAndy Fiddaman echo "NAME${nl}VERSION${nl}RELEASE${nl}TYPE${nl}STATUS${nl}REQUIRES${nl}----${nl}-------${nl}-------${nl}----${nl}------${nl}--------" | pr -6 -a -o4 -t 5011*b30d1939SAndy Fiddaman ;; 5012*b30d1939SAndy Fiddaman esac 5013*b30d1939SAndy Fiddaman { 5014*b30d1939SAndy Fiddaman omit=: 5015*b30d1939SAndy Fiddaman for pkg 5016*b30d1939SAndy Fiddaman do if test ! -f $pkg.pkg 5017*b30d1939SAndy Fiddaman then echo $command: $action: $pkg: not a package >&2 5018*b30d1939SAndy Fiddaman else if test -f gen/$pkg.ver 5019*b30d1939SAndy Fiddaman then set '' `cat gen/$pkg.ver` 5020*b30d1939SAndy Fiddaman case $3 in 5021*b30d1939SAndy Fiddaman $2) ver=base ;; 5022*b30d1939SAndy Fiddaman *) ver=$3 ;; 5023*b30d1939SAndy Fiddaman esac 5024*b30d1939SAndy Fiddaman if test -s tgz/$pkg.tim 5025*b30d1939SAndy Fiddaman then sts=local 5026*b30d1939SAndy Fiddaman else sts= 5027*b30d1939SAndy Fiddaman fi 5028*b30d1939SAndy Fiddaman else ver= 5029*b30d1939SAndy Fiddaman sts=unwritten 5030*b30d1939SAndy Fiddaman fi 5031*b30d1939SAndy Fiddaman typ= 5032*b30d1939SAndy Fiddaman txt= 5033*b30d1939SAndy Fiddaman cmp= cmp_sep= 5034*b30d1939SAndy Fiddaman req= req_sep= 5035*b30d1939SAndy Fiddaman op=:: 5036*b30d1939SAndy Fiddaman exec < $pkg.pkg 5037*b30d1939SAndy Fiddaman while read line 5038*b30d1939SAndy Fiddaman do IFS=' \\' 5039*b30d1939SAndy Fiddaman set '' $line 5040*b30d1939SAndy Fiddaman IFS=$ifs 5041*b30d1939SAndy Fiddaman while : 5042*b30d1939SAndy Fiddaman do shift 5043*b30d1939SAndy Fiddaman case $# in 5044*b30d1939SAndy Fiddaman 0) break ;; 5045*b30d1939SAndy Fiddaman esac 5046*b30d1939SAndy Fiddaman case $1 in 5047*b30d1939SAndy Fiddaman :*:) op=$1 5048*b30d1939SAndy Fiddaman ;; 5049*b30d1939SAndy Fiddaman INIT|'$('*|*')') 5050*b30d1939SAndy Fiddaman ;; 5051*b30d1939SAndy Fiddaman *) case $op in 5052*b30d1939SAndy Fiddaman :DESCRIPTION:) 5053*b30d1939SAndy Fiddaman txt="$txt$sep$line" 5054*b30d1939SAndy Fiddaman break 5055*b30d1939SAndy Fiddaman ;; 5056*b30d1939SAndy Fiddaman :PACKAGE:) 5057*b30d1939SAndy Fiddaman cmp="$cmp$cmp_sep$1" 5058*b30d1939SAndy Fiddaman cmp_sep=$nl 5059*b30d1939SAndy Fiddaman ;; 5060*b30d1939SAndy Fiddaman :REQUIRES:) 5061*b30d1939SAndy Fiddaman req="$req$req_sep$1" 5062*b30d1939SAndy Fiddaman req_sep=" " 5063*b30d1939SAndy Fiddaman ;; 5064*b30d1939SAndy Fiddaman esac 5065*b30d1939SAndy Fiddaman ;; 5066*b30d1939SAndy Fiddaman esac 5067*b30d1939SAndy Fiddaman done 5068*b30d1939SAndy Fiddaman done 5069*b30d1939SAndy Fiddaman exec < /dev/null 5070*b30d1939SAndy Fiddaman case $txt in 5071*b30d1939SAndy Fiddaman ?*) txt="$nl$txt" ;; 5072*b30d1939SAndy Fiddaman esac 5073*b30d1939SAndy Fiddaman case :$ver: in 5074*b30d1939SAndy Fiddaman *::*) ;; 5075*b30d1939SAndy Fiddaman *) case $action in 5076*b30d1939SAndy Fiddaman list) case $sts in 5077*b30d1939SAndy Fiddaman '') case `ls -t "tgz/$pkg.$ver.base" "tgz/$pkg.tim" 2>/dev/null` in 5078*b30d1939SAndy Fiddaman "tgz/$pkg.tim"*) 5079*b30d1939SAndy Fiddaman sts=read 5080*b30d1939SAndy Fiddaman ;; 5081*b30d1939SAndy Fiddaman *) sts=unread 5082*b30d1939SAndy Fiddaman ;; 5083*b30d1939SAndy Fiddaman esac 5084*b30d1939SAndy Fiddaman ;; 5085*b30d1939SAndy Fiddaman esac 5086*b30d1939SAndy Fiddaman echo "$pkg${nl}$ver${nl}base${nl}$typ${nl}$sts${nl}$req" 5087*b30d1939SAndy Fiddaman case $typ in 5088*b30d1939SAndy Fiddaman '') omit=$omit$pkg.$ver.base: ;; 5089*b30d1939SAndy Fiddaman esac 5090*b30d1939SAndy Fiddaman ;; 5091*b30d1939SAndy Fiddaman *) case $req in 5092*b30d1939SAndy Fiddaman ?*) req=": $req" ;; 5093*b30d1939SAndy Fiddaman esac 5094*b30d1939SAndy Fiddaman echo 5095*b30d1939SAndy Fiddaman echo $pkg $ver $req "$txt" 5096*b30d1939SAndy Fiddaman case $cmp in 5097*b30d1939SAndy Fiddaman ?*) echo "${sep}Components in this package:$nl" 5098*b30d1939SAndy Fiddaman echo "$cmp" | pr -4 -o4 -t ;; 5099*b30d1939SAndy Fiddaman esac 5100*b30d1939SAndy Fiddaman ;; 5101*b30d1939SAndy Fiddaman esac 5102*b30d1939SAndy Fiddaman ;; 5103*b30d1939SAndy Fiddaman esac 5104*b30d1939SAndy Fiddaman fi 5105*b30d1939SAndy Fiddaman done 5106*b30d1939SAndy Fiddaman case $argc:$action in 5107*b30d1939SAndy Fiddaman 0:list) if test -d tgz 5108*b30d1939SAndy Fiddaman then cd tgz 5109*b30d1939SAndy Fiddaman # f:file p:package v:version r:release t:type u:update 5110*b30d1939SAndy Fiddaman for f in `find . -name '*?[_.][0123456789][0123456789][0123456789][0123456789]-[0123456789][0123456789]-[0123456789][0123456789][_.]*' -print | sed 's,^\./,,' | sort -r` 5111*b30d1939SAndy Fiddaman do eval `echo "$f" | sed -e 's,\.c$,,' -e 's,\.gz$,,' -e 's,\.exe$,,' -e 's,\.tgz$,,' -e 's,\([^_.]*\)[_.]\([0123456789][0123456789][0123456789][0123456789]-[0123456789][0123456789]-[0123456789][0123456789]\)[_.]\([0123456789][0123456789][0123456789][0123456789][^_.]*\)[_.]*\(.*\),p=\1 v=\2 r=\3 t=\4,' -e 's,\([^_.]*\)[_.]\([0123456789][0123456789][0123456789][0123456789]-[0123456789][0123456789]-[0123456789][0123456789]\)[_.]*\(.*\),p=\1 v=\2 r=base t=\3,'` 5112*b30d1939SAndy Fiddaman case $t in 5113*b30d1939SAndy Fiddaman '') case $omit in 5114*b30d1939SAndy Fiddaman *:$p.$v.$r:*) continue ;; 5115*b30d1939SAndy Fiddaman esac 5116*b30d1939SAndy Fiddaman u=$p.tim 5117*b30d1939SAndy Fiddaman ;; 5118*b30d1939SAndy Fiddaman *) u=$p.$t.tim 5119*b30d1939SAndy Fiddaman ;; 5120*b30d1939SAndy Fiddaman esac 5121*b30d1939SAndy Fiddaman if test -s "$u" 5122*b30d1939SAndy Fiddaman then s=local 5123*b30d1939SAndy Fiddaman elif test -f "$u" 5124*b30d1939SAndy Fiddaman then case `ls -t "$f" "$u" 2>/dev/null` in 5125*b30d1939SAndy Fiddaman "$u"*) s=read ;; 5126*b30d1939SAndy Fiddaman *) s=unread ;; 5127*b30d1939SAndy Fiddaman esac 5128*b30d1939SAndy Fiddaman else s=unread 5129*b30d1939SAndy Fiddaman fi 5130*b30d1939SAndy Fiddaman echo "$p$nl$v$nl$r$nl$t$nl$s$nl" 5131*b30d1939SAndy Fiddaman done 5132*b30d1939SAndy Fiddaman fi 5133*b30d1939SAndy Fiddaman ;; 5134*b30d1939SAndy Fiddaman esac 5135*b30d1939SAndy Fiddaman } | 5136*b30d1939SAndy Fiddaman case $action in 5137*b30d1939SAndy Fiddaman list) pr -6 -a -o4 -t | sort -u ;; 5138*b30d1939SAndy Fiddaman *) cat ;; 5139*b30d1939SAndy Fiddaman esac 5140*b30d1939SAndy Fiddaman case $argc in 5141*b30d1939SAndy Fiddaman 0) if test -d $PACKAGEROOT/arch 5142*b30d1939SAndy Fiddaman then echo 5143*b30d1939SAndy Fiddaman echo architectures in $PACKAGEROOT 5144*b30d1939SAndy Fiddaman echo 5145*b30d1939SAndy Fiddaman for i in `ls $PACKAGEROOT/arch` 5146*b30d1939SAndy Fiddaman do if test -f $PACKAGEROOT/arch/$i/lib/package/gen/host 5147*b30d1939SAndy Fiddaman then h=`cat $PACKAGEROOT/arch/$i/lib/package/gen/host` 5148*b30d1939SAndy Fiddaman else h= 5149*b30d1939SAndy Fiddaman fi 5150*b30d1939SAndy Fiddaman echo $i 5151*b30d1939SAndy Fiddaman echo $h 5152*b30d1939SAndy Fiddaman echo 5153*b30d1939SAndy Fiddaman echo 5154*b30d1939SAndy Fiddaman done | pr -4 -a -o4 -t 5155*b30d1939SAndy Fiddaman fi 5156*b30d1939SAndy Fiddaman ;; 5157*b30d1939SAndy Fiddaman esac 5158*b30d1939SAndy Fiddaman ;; 5159*b30d1939SAndy Fiddaman 5160*b30d1939SAndy Fiddamancopyright) 5161*b30d1939SAndy Fiddaman # all work in $PACKAGESRC 5162*b30d1939SAndy Fiddaman 5163*b30d1939SAndy Fiddaman cd $PACKAGESRC 5164*b30d1939SAndy Fiddaman 5165*b30d1939SAndy Fiddaman # generate the package list 5166*b30d1939SAndy Fiddaman 5167*b30d1939SAndy Fiddaman set '' $target $package 5168*b30d1939SAndy Fiddaman shift 5169*b30d1939SAndy Fiddaman argc=$# 5170*b30d1939SAndy Fiddaman case $# in 5171*b30d1939SAndy Fiddaman 0) set '' `echo *.lic | sed 's,\.lic,,g'` 5172*b30d1939SAndy Fiddaman shift 5173*b30d1939SAndy Fiddaman case $1 in 5174*b30d1939SAndy Fiddaman '*') echo $command: $action: no packages >&2 5175*b30d1939SAndy Fiddaman exit 1 5176*b30d1939SAndy Fiddaman ;; 5177*b30d1939SAndy Fiddaman esac 5178*b30d1939SAndy Fiddaman ;; 5179*b30d1939SAndy Fiddaman esac 5180*b30d1939SAndy Fiddaman checkaout proto || exit 5181*b30d1939SAndy Fiddaman for i 5182*b30d1939SAndy Fiddaman do copyright $i 5183*b30d1939SAndy Fiddaman done 5184*b30d1939SAndy Fiddaman ;; 5185*b30d1939SAndy Fiddaman 5186*b30d1939SAndy Fiddamanexport) case $INSTALLROOT in 5187*b30d1939SAndy Fiddaman $PACKAGEROOT) 5188*b30d1939SAndy Fiddaman INSTALLROOT=$INSTALLROOT/arch/$HOSTTYPE 5189*b30d1939SAndy Fiddaman ;; 5190*b30d1939SAndy Fiddaman esac 5191*b30d1939SAndy Fiddaman case $only in 5192*b30d1939SAndy Fiddaman 0) v='$i=' ;; 5193*b30d1939SAndy Fiddaman *) v= ;; 5194*b30d1939SAndy Fiddaman esac 5195*b30d1939SAndy Fiddaman set '' $target $package 5196*b30d1939SAndy Fiddaman case $# in 5197*b30d1939SAndy Fiddaman 1) set '' $env ;; 5198*b30d1939SAndy Fiddaman esac 5199*b30d1939SAndy Fiddaman while : 5200*b30d1939SAndy Fiddaman do case $# in 5201*b30d1939SAndy Fiddaman 1) break ;; 5202*b30d1939SAndy Fiddaman esac 5203*b30d1939SAndy Fiddaman shift 5204*b30d1939SAndy Fiddaman i=$1 5205*b30d1939SAndy Fiddaman eval echo ${v}'$'${i} 5206*b30d1939SAndy Fiddaman done 5207*b30d1939SAndy Fiddaman ;; 5208*b30d1939SAndy Fiddaman 5209*b30d1939SAndy Fiddamaninstall)cd $PACKAGEROOT 5210*b30d1939SAndy Fiddaman set '' $package 5211*b30d1939SAndy Fiddaman shift 5212*b30d1939SAndy Fiddaman case $only in 5213*b30d1939SAndy Fiddaman 0) set '' `order "$@"` 5214*b30d1939SAndy Fiddaman shift 5215*b30d1939SAndy Fiddaman ;; 5216*b30d1939SAndy Fiddaman esac 5217*b30d1939SAndy Fiddaman case $# in 5218*b30d1939SAndy Fiddaman 0) echo "$command: at least one package name expected" >&2 5219*b30d1939SAndy Fiddaman exit 1 5220*b30d1939SAndy Fiddaman ;; 5221*b30d1939SAndy Fiddaman esac 5222*b30d1939SAndy Fiddaman package=$* 5223*b30d1939SAndy Fiddaman requirements - $package 5224*b30d1939SAndy Fiddaman set '' $target 5225*b30d1939SAndy Fiddaman shift 5226*b30d1939SAndy Fiddaman case $1 in 5227*b30d1939SAndy Fiddaman flat) flat=1 # backwards compatibility -- documentation dropped 5228*b30d1939SAndy Fiddaman shift 5229*b30d1939SAndy Fiddaman ;; 5230*b30d1939SAndy Fiddaman esac 5231*b30d1939SAndy Fiddaman case $# in 5232*b30d1939SAndy Fiddaman 0) echo "$command: $action: target directory argument expected" >&2 5233*b30d1939SAndy Fiddaman exit 1 5234*b30d1939SAndy Fiddaman ;; 5235*b30d1939SAndy Fiddaman esac 5236*b30d1939SAndy Fiddaman target= 5237*b30d1939SAndy Fiddaman while : 5238*b30d1939SAndy Fiddaman do case $# in 5239*b30d1939SAndy Fiddaman 1) directory=$1 5240*b30d1939SAndy Fiddaman break 5241*b30d1939SAndy Fiddaman ;; 5242*b30d1939SAndy Fiddaman esac 5243*b30d1939SAndy Fiddaman target="$target $1" 5244*b30d1939SAndy Fiddaman shift 5245*b30d1939SAndy Fiddaman done 5246*b30d1939SAndy Fiddaman if test ! -d $directory 5247*b30d1939SAndy Fiddaman then echo "$command: $action: $directory: target directory not found" >&2 5248*b30d1939SAndy Fiddaman exit 1 5249*b30d1939SAndy Fiddaman fi 5250*b30d1939SAndy Fiddaman case $target in 5251*b30d1939SAndy Fiddaman '') cd arch 5252*b30d1939SAndy Fiddaman set '' * 5253*b30d1939SAndy Fiddaman shift 5254*b30d1939SAndy Fiddaman target=$* 5255*b30d1939SAndy Fiddaman cd .. 5256*b30d1939SAndy Fiddaman ;; 5257*b30d1939SAndy Fiddaman esac 5258*b30d1939SAndy Fiddaman code=0 5259*b30d1939SAndy Fiddaman makecheck=1 5260*b30d1939SAndy Fiddaman for a in $target 5261*b30d1939SAndy Fiddaman do case $a in 5262*b30d1939SAndy Fiddaman -) a=$HOSTTYPE ;; 5263*b30d1939SAndy Fiddaman esac 5264*b30d1939SAndy Fiddaman case $flat:$a in 5265*b30d1939SAndy Fiddaman 1:*|?:.)dest=$directory 5266*b30d1939SAndy Fiddaman ;; 5267*b30d1939SAndy Fiddaman *) dest=$directory/arch/$a 5268*b30d1939SAndy Fiddaman if test "" = "$exec" -a ! -d $dest 5269*b30d1939SAndy Fiddaman then mkdir -p $dest || { 5270*b30d1939SAndy Fiddaman echo "$command: $dest: destination directory must exist" >&2 5271*b30d1939SAndy Fiddaman exit 1 5272*b30d1939SAndy Fiddaman } 5273*b30d1939SAndy Fiddaman fi 5274*b30d1939SAndy Fiddaman ;; 5275*b30d1939SAndy Fiddaman esac 5276*b30d1939SAndy Fiddaman for i in $package 5277*b30d1939SAndy Fiddaman do if test "ratz" = "$i" 5278*b30d1939SAndy Fiddaman then : skip 5279*b30d1939SAndy Fiddaman elif test -f arch/$a/lib/package/gen/$i.sum 5280*b30d1939SAndy Fiddaman then package_install $directory arch/$a/lib/package/gen/$i.sum || code=1 5281*b30d1939SAndy Fiddaman elif test ! -d arch/$a/bin 5282*b30d1939SAndy Fiddaman then echo "$command: $a: invalid architecture" >&2 5283*b30d1939SAndy Fiddaman elif test ! -d $dest 5284*b30d1939SAndy Fiddaman then echo "$command: $dest: destination directory must exist" >&2 5285*b30d1939SAndy Fiddaman else if test "" != "$makecheck" 5286*b30d1939SAndy Fiddaman then if onpath $MAKE 5287*b30d1939SAndy Fiddaman then MAKE=$_onpath_ 5288*b30d1939SAndy Fiddaman else echo "$command: $MAKE: not found" >&2 5289*b30d1939SAndy Fiddaman exit 1 5290*b30d1939SAndy Fiddaman fi 5291*b30d1939SAndy Fiddaman makecheck= 5292*b30d1939SAndy Fiddaman fi 5293*b30d1939SAndy Fiddaman if test "" != "$exec" 5294*b30d1939SAndy Fiddaman then ( 5295*b30d1939SAndy Fiddaman trap - 0 1 2 15 5296*b30d1939SAndy Fiddaman echo "=== $i installation manifest ===" 5297*b30d1939SAndy Fiddaman cd arch/$a 5298*b30d1939SAndy Fiddaman ( 5299*b30d1939SAndy Fiddaman cd lib/package 5300*b30d1939SAndy Fiddaman INSTALLROOT=$PACKAGEROOT/arch/$a 5301*b30d1939SAndy Fiddaman VPATH=$INSTALLROOT:$PACKAGEROOT:$VPATH 5302*b30d1939SAndy Fiddaman export INSTALLROOT VPATH 5303*b30d1939SAndy Fiddaman $MAKE -s $makeflags -f $i.pkg $qualifier list.installed $assign 5304*b30d1939SAndy Fiddaman ) | sort -u 5305*b30d1939SAndy Fiddaman ) 5306*b30d1939SAndy Fiddaman else ( 5307*b30d1939SAndy Fiddaman set - 5308*b30d1939SAndy Fiddaman cd arch/$a 5309*b30d1939SAndy Fiddaman ( 5310*b30d1939SAndy Fiddaman cd lib/package 5311*b30d1939SAndy Fiddaman INSTALLROOT=$PACKAGEROOT/arch/$a 5312*b30d1939SAndy Fiddaman VPATH=$INSTALLROOT:$PACKAGEROOT:$VPATH 5313*b30d1939SAndy Fiddaman export INSTALLROOT VPATH 5314*b30d1939SAndy Fiddaman echo lib/$command 5315*b30d1939SAndy Fiddaman $MAKE -s $makeflags -f $i.pkg $qualifier list.installed $assign 5316*b30d1939SAndy Fiddaman ) | sort -u | pax -drw -ps $dest 5317*b30d1939SAndy Fiddaman ) 5318*b30d1939SAndy Fiddaman fi 5319*b30d1939SAndy Fiddaman fi 5320*b30d1939SAndy Fiddaman done 5321*b30d1939SAndy Fiddaman done 5322*b30d1939SAndy Fiddaman exit $code 5323*b30d1939SAndy Fiddaman ;; 5324*b30d1939SAndy Fiddaman 5325*b30d1939SAndy Fiddamanlicense)# all work in $PACKAGESRC/LICENSES 5326*b30d1939SAndy Fiddaman 5327*b30d1939SAndy Fiddaman cd $PACKAGESRC/LICENSES || exit 5328*b30d1939SAndy Fiddaman 5329*b30d1939SAndy Fiddaman # generate the package list 5330*b30d1939SAndy Fiddaman 5331*b30d1939SAndy Fiddaman set '' $target $package 5332*b30d1939SAndy Fiddaman shift 5333*b30d1939SAndy Fiddaman argc=$# 5334*b30d1939SAndy Fiddaman case $# in 5335*b30d1939SAndy Fiddaman 0) set '' * 5336*b30d1939SAndy Fiddaman shift 5337*b30d1939SAndy Fiddaman case $1 in 5338*b30d1939SAndy Fiddaman '*') echo $command: $action: no licenses >&2 5339*b30d1939SAndy Fiddaman exit 1 5340*b30d1939SAndy Fiddaman ;; 5341*b30d1939SAndy Fiddaman esac 5342*b30d1939SAndy Fiddaman ;; 5343*b30d1939SAndy Fiddaman *) checkaout proto || exit 5344*b30d1939SAndy Fiddaman a= 5345*b30d1939SAndy Fiddaman for i 5346*b30d1939SAndy Fiddaman do while : 5347*b30d1939SAndy Fiddaman do if test -f ../$i.lic 5348*b30d1939SAndy Fiddaman then j=`proto -df -l ../$i.lic -o query=type /dev/null 2>/dev/null` 5349*b30d1939SAndy Fiddaman case $j in 5350*b30d1939SAndy Fiddaman ?*) if test -f $j 5351*b30d1939SAndy Fiddaman then case " $a " in 5352*b30d1939SAndy Fiddaman *" $j "*) ;; 5353*b30d1939SAndy Fiddaman *) a="$a $j" ;; 5354*b30d1939SAndy Fiddaman esac 5355*b30d1939SAndy Fiddaman fi 5356*b30d1939SAndy Fiddaman break 5357*b30d1939SAndy Fiddaman ;; 5358*b30d1939SAndy Fiddaman esac 5359*b30d1939SAndy Fiddaman fi 5360*b30d1939SAndy Fiddaman case $i in 5361*b30d1939SAndy Fiddaman *-*) i=`echo $i | sed 's/-[^-]*$//'` 5362*b30d1939SAndy Fiddaman ;; 5363*b30d1939SAndy Fiddaman *) echo "$command: $i: package license not found" >&2 5364*b30d1939SAndy Fiddaman break 5365*b30d1939SAndy Fiddaman ;; 5366*b30d1939SAndy Fiddaman esac 5367*b30d1939SAndy Fiddaman done 5368*b30d1939SAndy Fiddaman done 5369*b30d1939SAndy Fiddaman set '' $a 5370*b30d1939SAndy Fiddaman shift 5371*b30d1939SAndy Fiddaman ;; 5372*b30d1939SAndy Fiddaman esac 5373*b30d1939SAndy Fiddaman for i 5374*b30d1939SAndy Fiddaman do case $exec in 5375*b30d1939SAndy Fiddaman '') echo 5376*b30d1939SAndy Fiddaman echo " --- $i source license ---" 5377*b30d1939SAndy Fiddaman echo 5378*b30d1939SAndy Fiddaman cat $i 5379*b30d1939SAndy Fiddaman ;; 5380*b30d1939SAndy Fiddaman *) echo $PACKAGESRC/LICENSES/$i 5381*b30d1939SAndy Fiddaman ;; 5382*b30d1939SAndy Fiddaman esac 5383*b30d1939SAndy Fiddaman done 5384*b30d1939SAndy Fiddaman ;; 5385*b30d1939SAndy Fiddaman 5386*b30d1939SAndy Fiddamanmake|view) 5387*b30d1939SAndy Fiddaman cd $PACKAGEROOT 5388*b30d1939SAndy Fiddaman case $package in 5389*b30d1939SAndy Fiddaman '') lic="lib/package/*.lic" 5390*b30d1939SAndy Fiddaman ;; 5391*b30d1939SAndy Fiddaman *) for i in $package 5392*b30d1939SAndy Fiddaman do lic="$lic lib/package/$i.lic" 5393*b30d1939SAndy Fiddaman case $i in 5394*b30d1939SAndy Fiddaman *-*) lic="$lic lib/package/"`echo $i | sed 's,-.*,,'`".lic" ;; 5395*b30d1939SAndy Fiddaman esac 5396*b30d1939SAndy Fiddaman done 5397*b30d1939SAndy Fiddaman ;; 5398*b30d1939SAndy Fiddaman esac 5399*b30d1939SAndy Fiddaman checksrc 5400*b30d1939SAndy Fiddaman requirements source $package 5401*b30d1939SAndy Fiddaman components $package 5402*b30d1939SAndy Fiddaman package=$_components_ 5403*b30d1939SAndy Fiddaman 5404*b30d1939SAndy Fiddaman # check for some required commands 5405*b30d1939SAndy Fiddaman 5406*b30d1939SAndy Fiddaman must="$AR" 5407*b30d1939SAndy Fiddaman warn="$NM yacc bison" 5408*b30d1939SAndy Fiddaman test="$must $warn" 5409*b30d1939SAndy Fiddaman have= 5410*b30d1939SAndy Fiddaman IFS=: 5411*b30d1939SAndy Fiddaman set /$IFS$PATH 5412*b30d1939SAndy Fiddaman IFS=$ifs 5413*b30d1939SAndy Fiddaman shift 5414*b30d1939SAndy Fiddaman for t in $test 5415*b30d1939SAndy Fiddaman do if executable $t 5416*b30d1939SAndy Fiddaman then have="$have $t" 5417*b30d1939SAndy Fiddaman fi 5418*b30d1939SAndy Fiddaman done 5419*b30d1939SAndy Fiddaman for d 5420*b30d1939SAndy Fiddaman do for t in $test 5421*b30d1939SAndy Fiddaman do case " $have " in 5422*b30d1939SAndy Fiddaman *" $t "*) 5423*b30d1939SAndy Fiddaman ;; 5424*b30d1939SAndy Fiddaman *) if executable $d/$t 5425*b30d1939SAndy Fiddaman then have="$have $t" 5426*b30d1939SAndy Fiddaman fi 5427*b30d1939SAndy Fiddaman ;; 5428*b30d1939SAndy Fiddaman esac 5429*b30d1939SAndy Fiddaman done 5430*b30d1939SAndy Fiddaman done 5431*b30d1939SAndy Fiddaman case " $have " in 5432*b30d1939SAndy Fiddaman *" bison "*) ;; 5433*b30d1939SAndy Fiddaman *" yacc "*) have="$have bison" ;; 5434*b30d1939SAndy Fiddaman esac 5435*b30d1939SAndy Fiddaman case " $have " in 5436*b30d1939SAndy Fiddaman *" yacc "*) ;; 5437*b30d1939SAndy Fiddaman *" bison "*) have="$have yacc" ;; 5438*b30d1939SAndy Fiddaman esac 5439*b30d1939SAndy Fiddaman for t in $test 5440*b30d1939SAndy Fiddaman do case " $have " in 5441*b30d1939SAndy Fiddaman *" $t "*) 5442*b30d1939SAndy Fiddaman ;; 5443*b30d1939SAndy Fiddaman *) case " $must " in 5444*b30d1939SAndy Fiddaman *" $t "*) 5445*b30d1939SAndy Fiddaman echo "$command: $t: not found -- must be on PATH to $action" >&2 5446*b30d1939SAndy Fiddaman exit 1 5447*b30d1939SAndy Fiddaman ;; 5448*b30d1939SAndy Fiddaman *) echo "$command: warning: $t: not found -- some $action actions may fail" >&2 5449*b30d1939SAndy Fiddaman ;; 5450*b30d1939SAndy Fiddaman esac 5451*b30d1939SAndy Fiddaman ;; 5452*b30d1939SAndy Fiddaman esac 5453*b30d1939SAndy Fiddaman done 5454*b30d1939SAndy Fiddaman 5455*b30d1939SAndy Fiddaman # verify the top view 5456*b30d1939SAndy Fiddaman 5457*b30d1939SAndy Fiddaman if test ! -d $PACKAGEROOT/src 5458*b30d1939SAndy Fiddaman then note no source packages to make 5459*b30d1939SAndy Fiddaman exit 0 5460*b30d1939SAndy Fiddaman elif test ! -d $INSTALLROOT/src 5461*b30d1939SAndy Fiddaman then note initialize the $INSTALLROOT view 5462*b30d1939SAndy Fiddaman fi 5463*b30d1939SAndy Fiddaman for i in arch arch/$HOSTTYPE 5464*b30d1939SAndy Fiddaman do test -d $PACKAGEROOT/$i || $exec mkdir $PACKAGEROOT/$i || exit 5465*b30d1939SAndy Fiddaman done 5466*b30d1939SAndy Fiddaman for i in bin bin/$OK bin/$OK/lib fun include lib lib/package lib/package/gen src man man/man1 man/man3 man/man8 5467*b30d1939SAndy Fiddaman do test -d $INSTALLROOT/$i || $exec mkdir $INSTALLROOT/$i || exit 5468*b30d1939SAndy Fiddaman done 5469*b30d1939SAndy Fiddaman make_recurse src 5470*b30d1939SAndy Fiddaman o= k= 5471*b30d1939SAndy Fiddaman for i in $makefiles 5472*b30d1939SAndy Fiddaman do case $o in 5473*b30d1939SAndy Fiddaman ?*) o="$o -o" k="$k|" ;; 5474*b30d1939SAndy Fiddaman esac 5475*b30d1939SAndy Fiddaman o="$o -name $i" 5476*b30d1939SAndy Fiddaman k="$k$i" 5477*b30d1939SAndy Fiddaman done 5478*b30d1939SAndy Fiddaman o="( $o ) -print" 5479*b30d1939SAndy Fiddaman for d in $package_src 5480*b30d1939SAndy Fiddaman do i=src/$d 5481*b30d1939SAndy Fiddaman if test -d $i 5482*b30d1939SAndy Fiddaman then test -d $INSTALLROOT/$i || $exec mkdir $INSTALLROOT/$i || exit 5483*b30d1939SAndy Fiddaman make_recurse $i 5484*b30d1939SAndy Fiddaman for j in `cd $i; find . $o 2>/dev/null | sed -e 's,^\./,,' -e '/\//!d' -e 's,/[^/]*$,,' | sort -u` 5485*b30d1939SAndy Fiddaman do case $j in 5486*b30d1939SAndy Fiddaman $k|$MAKESKIP) continue ;; 5487*b30d1939SAndy Fiddaman esac 5488*b30d1939SAndy Fiddaman test -d $INSTALLROOT/$i/$j || 5489*b30d1939SAndy Fiddaman $exec mkdir -p $INSTALLROOT/$i/$j || exit 5490*b30d1939SAndy Fiddaman done 5491*b30d1939SAndy Fiddaman fi 5492*b30d1939SAndy Fiddaman done 5493*b30d1939SAndy Fiddaman def= 5494*b30d1939SAndy Fiddaman for i in $lic 5495*b30d1939SAndy Fiddaman do test -f $i || continue 5496*b30d1939SAndy Fiddaman cmp -s $i $INSTALLROOT/$i 2>/dev/null || 5497*b30d1939SAndy Fiddaman $exec cp $PACKAGEROOT/$i $INSTALLROOT/$i 5498*b30d1939SAndy Fiddaman for j in `grep '^. .*\.def$' $i` 5499*b30d1939SAndy Fiddaman do case $j in 5500*b30d1939SAndy Fiddaman .) ;; 5501*b30d1939SAndy Fiddaman *) case " $def " in 5502*b30d1939SAndy Fiddaman *" $i "*) ;; 5503*b30d1939SAndy Fiddaman *) def="$def $i" ;; 5504*b30d1939SAndy Fiddaman esac 5505*b30d1939SAndy Fiddaman ;; 5506*b30d1939SAndy Fiddaman esac 5507*b30d1939SAndy Fiddaman done 5508*b30d1939SAndy Fiddaman done 5509*b30d1939SAndy Fiddaman for i in $def 5510*b30d1939SAndy Fiddaman do i=lib/package/$i 5511*b30d1939SAndy Fiddaman test -f $i || continue 5512*b30d1939SAndy Fiddaman cmp -s $i $INSTALLROOT/$i 2>/dev/null || 5513*b30d1939SAndy Fiddaman $exec cp $PACKAGEROOT/$i $INSTALLROOT/$i 5514*b30d1939SAndy Fiddaman done 5515*b30d1939SAndy Fiddaman 5516*b30d1939SAndy Fiddaman # check $CC and { ar cc ld ldd } intercepts 5517*b30d1939SAndy Fiddaman 5518*b30d1939SAndy Fiddaman h="${HOSTTYPE} ${HOSTTYPE}.*" 5519*b30d1939SAndy Fiddaman case $HOSTTYPE in 5520*b30d1939SAndy Fiddaman *.*) t=`echo $HOSTTYPE | sed 's/[.][^.]*//'` 5521*b30d1939SAndy Fiddaman h="$h $t" 5522*b30d1939SAndy Fiddaman ;; 5523*b30d1939SAndy Fiddaman *) t=$HOSTTYPE 5524*b30d1939SAndy Fiddaman ;; 5525*b30d1939SAndy Fiddaman esac 5526*b30d1939SAndy Fiddaman case $t in 5527*b30d1939SAndy Fiddaman *[0123456789]) 5528*b30d1939SAndy Fiddaman t=`echo $t | sed 's/[0123456789]*$//'` 5529*b30d1939SAndy Fiddaman h="$h $t" 5530*b30d1939SAndy Fiddaman ;; 5531*b30d1939SAndy Fiddaman esac 5532*b30d1939SAndy Fiddaman case $CC in 5533*b30d1939SAndy Fiddaman cc) c=cc 5534*b30d1939SAndy Fiddaman b=$INSTALLROOT/bin/$c 5535*b30d1939SAndy Fiddaman t=$INSTALLROOT/lib/package/gen/$c.tim 5536*b30d1939SAndy Fiddaman intercept=0 5537*b30d1939SAndy Fiddaman for k in $h 5538*b30d1939SAndy Fiddaman do for s in $INITROOT/$c.$k 5539*b30d1939SAndy Fiddaman do test -x "$s" || continue 5540*b30d1939SAndy Fiddaman if cmp -s "$s" "$b" >/dev/null 2>&1 5541*b30d1939SAndy Fiddaman then intercept=1 5542*b30d1939SAndy Fiddaman break 2 5543*b30d1939SAndy Fiddaman fi 5544*b30d1939SAndy Fiddaman case `ls -t "$t" "$b" "$s" 2>/dev/null` in 5545*b30d1939SAndy Fiddaman $t*) ;; 5546*b30d1939SAndy Fiddaman $b*) cc=$b 5547*b30d1939SAndy Fiddaman ;; 5548*b30d1939SAndy Fiddaman $s*) cd $INSTALLROOT/lib/package/gen 5549*b30d1939SAndy Fiddaman tmp=pkg$$ 5550*b30d1939SAndy Fiddaman eval '$'exec echo "'int main(){return 0;}' > $tmp.c" 5551*b30d1939SAndy Fiddaman if $exec $s -o $tmp.exe $tmp.c >/dev/null 2>&1 && 5552*b30d1939SAndy Fiddaman test -x $tmp.exe 5553*b30d1939SAndy Fiddaman then case $HOSTTYPE in 5554*b30d1939SAndy Fiddaman *.mips*)$s -version >/dev/null 2>&1 || s= ;; 5555*b30d1939SAndy Fiddaman esac 5556*b30d1939SAndy Fiddaman case $s in 5557*b30d1939SAndy Fiddaman ?*) $exec sed "s/^HOSTTYPE=.*/HOSTTYPE=$HOSTTYPE/" < "$s" > "$b" || exit 5558*b30d1939SAndy Fiddaman $exec chmod +x "$b" || exit 5559*b30d1939SAndy Fiddaman cc=$b 5560*b30d1939SAndy Fiddaman intercept=1 5561*b30d1939SAndy Fiddaman note update $b 5562*b30d1939SAndy Fiddaman ;; 5563*b30d1939SAndy Fiddaman esac 5564*b30d1939SAndy Fiddaman fi 5565*b30d1939SAndy Fiddaman $exec rm -f $tmp.* 5566*b30d1939SAndy Fiddaman $exec touch "$t" 5567*b30d1939SAndy Fiddaman cd $PACKAGEROOT 5568*b30d1939SAndy Fiddaman ;; 5569*b30d1939SAndy Fiddaman esac 5570*b30d1939SAndy Fiddaman break 2 5571*b30d1939SAndy Fiddaman done 5572*b30d1939SAndy Fiddaman done 5573*b30d1939SAndy Fiddaman case $intercept in 5574*b30d1939SAndy Fiddaman 1) c=ld 5575*b30d1939SAndy Fiddaman b=$INSTALLROOT/bin/$c 5576*b30d1939SAndy Fiddaman for k in $h 5577*b30d1939SAndy Fiddaman do for s in $INITROOT/$c.$k 5578*b30d1939SAndy Fiddaman do test -x "$s" || continue 5579*b30d1939SAndy Fiddaman case `ls -t "$b" "$s" 2>/dev/null` in 5580*b30d1939SAndy Fiddaman $b*) ;; 5581*b30d1939SAndy Fiddaman $s*) $exec cp "$s" "$b" 5582*b30d1939SAndy Fiddaman note update $b 5583*b30d1939SAndy Fiddaman ;; 5584*b30d1939SAndy Fiddaman esac 5585*b30d1939SAndy Fiddaman done 5586*b30d1939SAndy Fiddaman done 5587*b30d1939SAndy Fiddaman ;; 5588*b30d1939SAndy Fiddaman esac 5589*b30d1939SAndy Fiddaman ;; 5590*b30d1939SAndy Fiddaman esac 5591*b30d1939SAndy Fiddaman c=ldd 5592*b30d1939SAndy Fiddaman b=$INSTALLROOT/bin/$c 5593*b30d1939SAndy Fiddaman for t in $h 5594*b30d1939SAndy Fiddaman do s=$INITROOT/$c.$t 5595*b30d1939SAndy Fiddaman test -x "$s" || continue 5596*b30d1939SAndy Fiddaman onpath $c || 5597*b30d1939SAndy Fiddaman case `ls -t "$b" "$s" 2>/dev/null` in 5598*b30d1939SAndy Fiddaman $b*) ;; 5599*b30d1939SAndy Fiddaman $s*) $exec cp "$s" "$b" 5600*b30d1939SAndy Fiddaman note update $b 5601*b30d1939SAndy Fiddaman ;; 5602*b30d1939SAndy Fiddaman esac 5603*b30d1939SAndy Fiddaman done 5604*b30d1939SAndy Fiddaman# following code stubbed out just in case ar.ibm.risc is needed 5605*b30d1939SAndy Fiddaman# c=ar 5606*b30d1939SAndy Fiddaman# b=$INSTALLROOT/bin/$c 5607*b30d1939SAndy Fiddaman# for t in $h 5608*b30d1939SAndy Fiddaman# do s=$INITROOT/$c.$t 5609*b30d1939SAndy Fiddaman# test -x "$s" || continue 5610*b30d1939SAndy Fiddaman# onpath $c || 5611*b30d1939SAndy Fiddaman# case `ls -t "$b" "$s" 2>/dev/null` in 5612*b30d1939SAndy Fiddaman# $b*) ;; 5613*b30d1939SAndy Fiddaman# $s*) x=`$s -tv /foo/bar.a 2>&1 | egrep -i 'option|usage'` 5614*b30d1939SAndy Fiddaman# case $x in 5615*b30d1939SAndy Fiddaman# '') $exec cp "$s" "$b" 5616*b30d1939SAndy Fiddaman# note update $b 5617*b30d1939SAndy Fiddaman# ;; 5618*b30d1939SAndy Fiddaman# esac 5619*b30d1939SAndy Fiddaman# ;; 5620*b30d1939SAndy Fiddaman# esac 5621*b30d1939SAndy Fiddaman# done 5622*b30d1939SAndy Fiddaman case $cc in 5623*b30d1939SAndy Fiddaman /*) ;; 5624*b30d1939SAndy Fiddaman *) echo "$command: $CC: not found -- set CC=C-compiler" >&2 5625*b30d1939SAndy Fiddaman exit 1 5626*b30d1939SAndy Fiddaman ;; 5627*b30d1939SAndy Fiddaman esac 5628*b30d1939SAndy Fiddaman case $exec in 5629*b30d1939SAndy Fiddaman '') cd $INSTALLROOT/lib/package/gen 5630*b30d1939SAndy Fiddaman tmp=pkg$$ 5631*b30d1939SAndy Fiddaman echo 'int main(){return 0;}' > $tmp.c 5632*b30d1939SAndy Fiddaman if $CC -o $tmp.exe $tmp.c > /dev/null 2> $tmp.err && 5633*b30d1939SAndy Fiddaman test -x $tmp.exe 5634*b30d1939SAndy Fiddaman then : ok 5635*b30d1939SAndy Fiddaman else echo "$command: $CC: failed to compile this program:" >&2 5636*b30d1939SAndy Fiddaman cat $tmp.c >&2 5637*b30d1939SAndy Fiddaman if test -s $tmp.err 5638*b30d1939SAndy Fiddaman then cat $tmp.err >&2 5639*b30d1939SAndy Fiddaman else echo "$command: $CC: not a C compiler" >&2 5640*b30d1939SAndy Fiddaman fi 5641*b30d1939SAndy Fiddaman rm -f $tmp.* 5642*b30d1939SAndy Fiddaman exit 1 5643*b30d1939SAndy Fiddaman fi 5644*b30d1939SAndy Fiddaman rm -f $tmp.* 5645*b30d1939SAndy Fiddaman cd $PACKAGEROOT 5646*b30d1939SAndy Fiddaman ;; 5647*b30d1939SAndy Fiddaman esac 5648*b30d1939SAndy Fiddaman 5649*b30d1939SAndy Fiddaman # remember the default $CC 5650*b30d1939SAndy Fiddaman 5651*b30d1939SAndy Fiddaman case $CC in 5652*b30d1939SAndy Fiddaman cc) ;; 5653*b30d1939SAndy Fiddaman *) if test -x $INSTALLROOT/bin/cc 5654*b30d1939SAndy Fiddaman then case `sed 1q $INSTALLROOT/bin/cc` in 5655*b30d1939SAndy Fiddaman ": $CC :") 5656*b30d1939SAndy Fiddaman CC=cc 5657*b30d1939SAndy Fiddaman export CC 5658*b30d1939SAndy Fiddaman ;; 5659*b30d1939SAndy Fiddaman *) assign="$assign CC=\"\$CC\"" 5660*b30d1939SAndy Fiddaman ;; 5661*b30d1939SAndy Fiddaman esac 5662*b30d1939SAndy Fiddaman else case $CROSS in 5663*b30d1939SAndy Fiddaman 1) assign="$assign CC=\"\$CC\"" 5664*b30d1939SAndy Fiddaman ;; 5665*b30d1939SAndy Fiddaman *) case $exec in 5666*b30d1939SAndy Fiddaman '') { 5667*b30d1939SAndy Fiddaman echo ": $CC :" 5668*b30d1939SAndy Fiddaman echo "$CC \"\$@\"" 5669*b30d1939SAndy Fiddaman } > $INSTALLROOT/bin/cc 5670*b30d1939SAndy Fiddaman chmod +x $INSTALLROOT/bin/cc 5671*b30d1939SAndy Fiddaman ;; 5672*b30d1939SAndy Fiddaman *) note generate a $INSTALLROOT/bin/cc wrapper for $CC 5673*b30d1939SAndy Fiddaman ;; 5674*b30d1939SAndy Fiddaman esac 5675*b30d1939SAndy Fiddaman CC=cc 5676*b30d1939SAndy Fiddaman export CC 5677*b30d1939SAndy Fiddaman ;; 5678*b30d1939SAndy Fiddaman esac 5679*b30d1939SAndy Fiddaman fi 5680*b30d1939SAndy Fiddaman ;; 5681*b30d1939SAndy Fiddaman esac 5682*b30d1939SAndy Fiddaman 5683*b30d1939SAndy Fiddaman # no $INITROOT means INIT already installed elsewhere 5684*b30d1939SAndy Fiddaman 5685*b30d1939SAndy Fiddaman if test -d $INITROOT 5686*b30d1939SAndy Fiddaman then 5687*b30d1939SAndy Fiddaman # update probe scripts 5688*b30d1939SAndy Fiddaman 5689*b30d1939SAndy Fiddaman for i in lib/probe lib/probe/C lib/probe/C/make 5690*b30d1939SAndy Fiddaman do test -d $INSTALLROOT/$i || $exec mkdir $INSTALLROOT/$i || exit 5691*b30d1939SAndy Fiddaman done 5692*b30d1939SAndy Fiddaman i=$INSTALLROOT/lib/probe/C/make/probe 5693*b30d1939SAndy Fiddaman j=$INITROOT/C+probe 5694*b30d1939SAndy Fiddaman k=$INITROOT/make.probe 5695*b30d1939SAndy Fiddaman case `ls -t $i $j $k 2>/dev/null` in 5696*b30d1939SAndy Fiddaman $i*) ;; 5697*b30d1939SAndy Fiddaman *) if test -f $j -a -f $k 5698*b30d1939SAndy Fiddaman then note update $i 5699*b30d1939SAndy Fiddaman shellmagic 5700*b30d1939SAndy Fiddaman case $exec in 5701*b30d1939SAndy Fiddaman '') { 5702*b30d1939SAndy Fiddaman case $SHELLMAGIC in 5703*b30d1939SAndy Fiddaman ?*) echo "$SHELLMAGIC" ;; 5704*b30d1939SAndy Fiddaman esac 5705*b30d1939SAndy Fiddaman cat $j $k 5706*b30d1939SAndy Fiddaman } > $i || exit 5707*b30d1939SAndy Fiddaman ;; 5708*b30d1939SAndy Fiddaman *) echo "{ 5709*b30d1939SAndy Fiddamanecho $SHELLMAGIC 5710*b30d1939SAndy Fiddamancat $j $k 5711*b30d1939SAndy Fiddaman} > $i" 5712*b30d1939SAndy Fiddaman ;; 5713*b30d1939SAndy Fiddaman esac 5714*b30d1939SAndy Fiddaman $exec chmod +x $i || exit 5715*b30d1939SAndy Fiddaman fi 5716*b30d1939SAndy Fiddaman ;; 5717*b30d1939SAndy Fiddaman esac 5718*b30d1939SAndy Fiddaman fi 5719*b30d1939SAndy Fiddaman 5720*b30d1939SAndy Fiddaman # initialize a few mamake related commands 5721*b30d1939SAndy Fiddaman 5722*b30d1939SAndy Fiddaman checkaout mamake proto ratz release || exit 5723*b30d1939SAndy Fiddaman 5724*b30d1939SAndy Fiddaman # execrate if necessary 5725*b30d1939SAndy Fiddaman 5726*b30d1939SAndy Fiddaman if (execrate) >/dev/null 2>&1 5727*b30d1939SAndy Fiddaman then execrate=execrate 5728*b30d1939SAndy Fiddaman $make cd $INSTALLROOT/bin 5729*b30d1939SAndy Fiddaman for i in chmod chgrp cmp cp ln mv rm 5730*b30d1939SAndy Fiddaman do if test ! -x $OK/$i -a -x /bin/$i.exe 5731*b30d1939SAndy Fiddaman then shellmagic 5732*b30d1939SAndy Fiddaman case $exec in 5733*b30d1939SAndy Fiddaman '') echo "$SHELLMAGIC"'execrate /bin/'$i' "$@"' > $OK/$i 5734*b30d1939SAndy Fiddaman chmod +x $OK/$i 5735*b30d1939SAndy Fiddaman ;; 5736*b30d1939SAndy Fiddaman *) $exec echo \'"$SHELLMAGIC"'execrate /bin/'$i' "$@"'\'' >' $OK/$i 5737*b30d1939SAndy Fiddaman $exec chmod +x $OK/$i 5738*b30d1939SAndy Fiddaman ;; 5739*b30d1939SAndy Fiddaman esac 5740*b30d1939SAndy Fiddaman fi 5741*b30d1939SAndy Fiddaman done 5742*b30d1939SAndy Fiddaman PATH=$INSTALLROOT/bin/$OK:$PATH 5743*b30d1939SAndy Fiddaman export PATH 5744*b30d1939SAndy Fiddaman else execrate= 5745*b30d1939SAndy Fiddaman fi 5746*b30d1939SAndy Fiddaman case $action in 5747*b30d1939SAndy Fiddaman view) exit 0 ;; 5748*b30d1939SAndy Fiddaman esac 5749*b30d1939SAndy Fiddaman 5750*b30d1939SAndy Fiddaman # all work under $INSTALLROOT/src 5751*b30d1939SAndy Fiddaman 5752*b30d1939SAndy Fiddaman $make cd $INSTALLROOT/src 5753*b30d1939SAndy Fiddaman 5754*b30d1939SAndy Fiddaman # record the build host name 5755*b30d1939SAndy Fiddaman 5756*b30d1939SAndy Fiddaman case $noexec in 5757*b30d1939SAndy Fiddaman '') hostinfo name 5758*b30d1939SAndy Fiddaman echo "$_hostinfo_" | sed 's,\..*,,' > $PACKAGEBIN/gen/host 5759*b30d1939SAndy Fiddaman ;; 5760*b30d1939SAndy Fiddaman esac 5761*b30d1939SAndy Fiddaman 5762*b30d1939SAndy Fiddaman # make in parallel if possible 5763*b30d1939SAndy Fiddaman 5764*b30d1939SAndy Fiddaman case $NPROC in 5765*b30d1939SAndy Fiddaman '') hostinfo cpu 5766*b30d1939SAndy Fiddaman case $_hostinfo_ in 5767*b30d1939SAndy Fiddaman 0|1) ;; 5768*b30d1939SAndy Fiddaman *) NPROC=$_hostinfo_ 5769*b30d1939SAndy Fiddaman $show NPROC=$NPROC 5770*b30d1939SAndy Fiddaman $show export NPROC 5771*b30d1939SAndy Fiddaman export NPROC 5772*b30d1939SAndy Fiddaman ;; 5773*b30d1939SAndy Fiddaman esac 5774*b30d1939SAndy Fiddaman ;; 5775*b30d1939SAndy Fiddaman esac 5776*b30d1939SAndy Fiddaman 5777*b30d1939SAndy Fiddaman # separate flags from target list 5778*b30d1939SAndy Fiddaman 5779*b30d1939SAndy Fiddaman case $target in 5780*b30d1939SAndy Fiddaman *-*) a= 5781*b30d1939SAndy Fiddaman for t in $target 5782*b30d1939SAndy Fiddaman do case $t in 5783*b30d1939SAndy Fiddaman -[eiknFKNV]*|--*-symbols) 5784*b30d1939SAndy Fiddaman makeflags="$makeflags $t" 5785*b30d1939SAndy Fiddaman ;; 5786*b30d1939SAndy Fiddaman -*) nmakeflags="$nmakeflags $t" 5787*b30d1939SAndy Fiddaman ;; 5788*b30d1939SAndy Fiddaman *) a="$a $t" 5789*b30d1939SAndy Fiddaman ;; 5790*b30d1939SAndy Fiddaman esac 5791*b30d1939SAndy Fiddaman done 5792*b30d1939SAndy Fiddaman target=$a 5793*b30d1939SAndy Fiddaman ;; 5794*b30d1939SAndy Fiddaman esac 5795*b30d1939SAndy Fiddaman 5796*b30d1939SAndy Fiddaman # generate nmake first if possible 5797*b30d1939SAndy Fiddaman 5798*b30d1939SAndy Fiddaman if executable ! $NMAKE && test -d $PACKAGEROOT/src/cmd/nmake 5799*b30d1939SAndy Fiddaman then if nonmake $MAKE 5800*b30d1939SAndy Fiddaman then note make $NMAKE with mamake 5801*b30d1939SAndy Fiddaman c=$CC 5802*b30d1939SAndy Fiddaman a=$assign 5803*b30d1939SAndy Fiddaman case $HOSTTYPE in 5804*b30d1939SAndy Fiddaman win32*|cygwin*) 5805*b30d1939SAndy Fiddaman CC="$CC -D_BLD_STATIC" 5806*b30d1939SAndy Fiddaman accept="libast" 5807*b30d1939SAndy Fiddaman case $assign in 5808*b30d1939SAndy Fiddaman *' CC='*) ;; 5809*b30d1939SAndy Fiddaman *) assign="$assign CC=\"\$CC\"" ;; 5810*b30d1939SAndy Fiddaman esac 5811*b30d1939SAndy Fiddaman ;; 5812*b30d1939SAndy Fiddaman *) accept=nmake 5813*b30d1939SAndy Fiddaman ;; 5814*b30d1939SAndy Fiddaman esac 5815*b30d1939SAndy Fiddaman eval capture mamake \$makeflags \$nmakeflags \$noexec install nmake $assign 5816*b30d1939SAndy Fiddaman assign=$a 5817*b30d1939SAndy Fiddaman CC=$c 5818*b30d1939SAndy Fiddaman case $make$noexec in 5819*b30d1939SAndy Fiddaman '') if executable ! $NMAKE 5820*b30d1939SAndy Fiddaman then echo "$command: $action: errors making $NMAKE" >&2 5821*b30d1939SAndy Fiddaman exit 1 5822*b30d1939SAndy Fiddaman fi 5823*b30d1939SAndy Fiddaman ;; 5824*b30d1939SAndy Fiddaman *) make=echo 5825*b30d1939SAndy Fiddaman ;; 5826*b30d1939SAndy Fiddaman esac 5827*b30d1939SAndy Fiddaman if test '' != "$PROTOROOT" 5828*b30d1939SAndy Fiddaman then if (vpath $INSTALLROOT - $PROTOROOT - $INSTALLROOT $PACKAGEROOT) >/dev/null 2>&1 && 5829*b30d1939SAndy Fiddaman vpath $INSTALLROOT - $PROTOROOT - $INSTALLROOT $PACKAGEROOT 5830*b30d1939SAndy Fiddaman then $show vpath $INSTALLROOT $PACKAGEROOT $USER_VPATH_CHAIN 5831*b30d1939SAndy Fiddaman else VPATH=$INSTALLROOT:$PACKAGEROOT$USER_VPATH 5832*b30d1939SAndy Fiddaman $show VPATH=$VPATH 5833*b30d1939SAndy Fiddaman export VPATH 5834*b30d1939SAndy Fiddaman fi 5835*b30d1939SAndy Fiddaman fi 5836*b30d1939SAndy Fiddaman note believe generated files for $accept 5837*b30d1939SAndy Fiddaman eval capture \$NMAKE \$makeflags \$nmakeflags \$noexec recurse believe \$nmakesep $accept $assign 5838*b30d1939SAndy Fiddaman $exec touch $INSTALLROOT/bin/.paths 5839*b30d1939SAndy Fiddaman note make the remaining targets with $NMAKE 5840*b30d1939SAndy Fiddaman else eval capture $MAKE \$makeflags \$nmakeflags \$noexec install nmake $assign 5841*b30d1939SAndy Fiddaman case $make$noexec in 5842*b30d1939SAndy Fiddaman '') if executable ! $NMAKE 5843*b30d1939SAndy Fiddaman then echo "$command: $action: errors making $NMAKE" >&2 5844*b30d1939SAndy Fiddaman exit 1 5845*b30d1939SAndy Fiddaman fi 5846*b30d1939SAndy Fiddaman ;; 5847*b30d1939SAndy Fiddaman *) make=echo 5848*b30d1939SAndy Fiddaman ;; 5849*b30d1939SAndy Fiddaman esac 5850*b30d1939SAndy Fiddaman fi 5851*b30d1939SAndy Fiddaman fi 5852*b30d1939SAndy Fiddaman 5853*b30d1939SAndy Fiddaman # generate ksh next if possible 5854*b30d1939SAndy Fiddaman 5855*b30d1939SAndy Fiddaman if nonmake $MAKE 5856*b30d1939SAndy Fiddaman then : no need to generate ksh next -- it could be the only package 5857*b30d1939SAndy Fiddaman elif test "$KEEP_SHELL" != 1 -a -d $PACKAGEROOT/src/cmd/ksh93 && executable ! $KSH 5858*b30d1939SAndy Fiddaman then eval capture nmake $nmakeflags \$makeflags \$noexec install ksh93 $assign 5859*b30d1939SAndy Fiddaman case $make$noexec in 5860*b30d1939SAndy Fiddaman '') if executable ! $KSH 5861*b30d1939SAndy Fiddaman then echo "$command: $action: errors making $KSH" >&2 5862*b30d1939SAndy Fiddaman exit 1 5863*b30d1939SAndy Fiddaman fi 5864*b30d1939SAndy Fiddaman ;; 5865*b30d1939SAndy Fiddaman *) make=echo 5866*b30d1939SAndy Fiddaman ;; 5867*b30d1939SAndy Fiddaman esac 5868*b30d1939SAndy Fiddaman fi 5869*b30d1939SAndy Fiddaman 5870*b30d1939SAndy Fiddaman # mamprobe data should have been generated by this point 5871*b30d1939SAndy Fiddaman 5872*b30d1939SAndy Fiddaman case $exec in 5873*b30d1939SAndy Fiddaman '') if test ! -f $INSTALLROOT/bin/.paths -o -w $INSTALLROOT/bin/.paths 5874*b30d1939SAndy Fiddaman then N=' 5875*b30d1939SAndy Fiddaman' 5876*b30d1939SAndy Fiddaman b= f= h= n= p= u= B= L= 5877*b30d1939SAndy Fiddaman if test -f $INSTALLROOT/bin/.paths 5878*b30d1939SAndy Fiddaman then exec < $INSTALLROOT/bin/.paths 5879*b30d1939SAndy Fiddaman while read x 5880*b30d1939SAndy Fiddaman do case $x in 5881*b30d1939SAndy Fiddaman '#'?*) case $h in 5882*b30d1939SAndy Fiddaman '') h=$x ;; 5883*b30d1939SAndy Fiddaman esac 5884*b30d1939SAndy Fiddaman ;; 5885*b30d1939SAndy Fiddaman *BUILTIN_LIB=*) b=$x 5886*b30d1939SAndy Fiddaman ;; 5887*b30d1939SAndy Fiddaman *FPATH=*) f=$x 5888*b30d1939SAndy Fiddaman ;; 5889*b30d1939SAndy Fiddaman *PLUGIN_LIB=*) p=$x 5890*b30d1939SAndy Fiddaman ;; 5891*b30d1939SAndy Fiddaman *) case $u in 5892*b30d1939SAndy Fiddaman ?*) u=$u$N ;; 5893*b30d1939SAndy Fiddaman esac 5894*b30d1939SAndy Fiddaman u=$u$x 5895*b30d1939SAndy Fiddaman ;; 5896*b30d1939SAndy Fiddaman esac 5897*b30d1939SAndy Fiddaman done 5898*b30d1939SAndy Fiddaman fi 5899*b30d1939SAndy Fiddaman ifs=$IFS 5900*b30d1939SAndy Fiddaman m= 5901*b30d1939SAndy Fiddaman case $p in 5902*b30d1939SAndy Fiddaman ?*) b= 5903*b30d1939SAndy Fiddaman ;; 5904*b30d1939SAndy Fiddaman esac 5905*b30d1939SAndy Fiddaman case $b in 5906*b30d1939SAndy Fiddaman ?*) IFS='=' 5907*b30d1939SAndy Fiddaman set $b 5908*b30d1939SAndy Fiddaman IFS=$ifs 5909*b30d1939SAndy Fiddaman shift 5910*b30d1939SAndy Fiddaman p="PLUGIN_LIB=$*" 5911*b30d1939SAndy Fiddaman case $b in 5912*b30d1939SAndy Fiddaman [Nn][Oo]*) p=no$p ;; 5913*b30d1939SAndy Fiddaman esac 5914*b30d1939SAndy Fiddaman m=1 5915*b30d1939SAndy Fiddaman ;; 5916*b30d1939SAndy Fiddaman esac 5917*b30d1939SAndy Fiddaman case $f in 5918*b30d1939SAndy Fiddaman '') f="FPATH=../fun" 5919*b30d1939SAndy Fiddaman m=1 5920*b30d1939SAndy Fiddaman ;; 5921*b30d1939SAndy Fiddaman esac 5922*b30d1939SAndy Fiddaman case $h in 5923*b30d1939SAndy Fiddaman '') h='# use { no NO } prefix to permanently disable #' ;; 5924*b30d1939SAndy Fiddaman esac 5925*b30d1939SAndy Fiddaman case $p in 5926*b30d1939SAndy Fiddaman '') p="PLUGIN_LIB=cmd" 5927*b30d1939SAndy Fiddaman if grep '^setv mam_cc_DIALECT .* EXPORT=[AD]LL' $INSTALLROOT/lib/probe/C/mam/* >/dev/null 2>&1 5928*b30d1939SAndy Fiddaman then p=no$p 5929*b30d1939SAndy Fiddaman fi 5930*b30d1939SAndy Fiddaman m=1 5931*b30d1939SAndy Fiddaman ;; 5932*b30d1939SAndy Fiddaman esac 5933*b30d1939SAndy Fiddaman case $m in 5934*b30d1939SAndy Fiddaman 1) case $u in 5935*b30d1939SAndy Fiddaman ?*) u=$N$u ;; 5936*b30d1939SAndy Fiddaman esac 5937*b30d1939SAndy Fiddaman echo "$h$N$p$N$f$N$u" > $INSTALLROOT/bin/.paths 5938*b30d1939SAndy Fiddaman ;; 5939*b30d1939SAndy Fiddaman esac 5940*b30d1939SAndy Fiddaman fi 5941*b30d1939SAndy Fiddaman ;; 5942*b30d1939SAndy Fiddaman esac 5943*b30d1939SAndy Fiddaman 5944*b30d1939SAndy Fiddaman # run from separate copies since nmake and ksh may be rebuilt 5945*b30d1939SAndy Fiddaman 5946*b30d1939SAndy Fiddaman case $EXECROOT in 5947*b30d1939SAndy Fiddaman $INSTALLROOT) 5948*b30d1939SAndy Fiddaman $make cd $INSTALLROOT/bin 5949*b30d1939SAndy Fiddaman if executable /bin/cp 5950*b30d1939SAndy Fiddaman then cp=/bin/cp 5951*b30d1939SAndy Fiddaman else cp=cp 5952*b30d1939SAndy Fiddaman fi 5953*b30d1939SAndy Fiddaman if executable /bin/mv 5954*b30d1939SAndy Fiddaman then mv=/bin/mv 5955*b30d1939SAndy Fiddaman else mv=mv 5956*b30d1939SAndy Fiddaman fi 5957*b30d1939SAndy Fiddaman if executable /bin/rm 5958*b30d1939SAndy Fiddaman then rm=/bin/rm 5959*b30d1939SAndy Fiddaman else rm=rm 5960*b30d1939SAndy Fiddaman fi 5961*b30d1939SAndy Fiddaman for i in \ 5962*b30d1939SAndy Fiddaman ksh nmake tee cp ln mv rm \ 5963*b30d1939SAndy Fiddaman *ast*.dll *cmd*.dll *dll*.dll *shell*.dll 5964*b30d1939SAndy Fiddaman do executable $i && { 5965*b30d1939SAndy Fiddaman cmp -s $i $OK/$i 2>/dev/null || { 5966*b30d1939SAndy Fiddaman test -f $OK/$i && 5967*b30d1939SAndy Fiddaman $exec $execrate $rm $OK/$i </dev/null 5968*b30d1939SAndy Fiddaman test -f $OK/$i && 5969*b30d1939SAndy Fiddaman $exec $execrate $mv $OK/$i $OK/$i.old </dev/null 5970*b30d1939SAndy Fiddaman test -f $OK/$i && 5971*b30d1939SAndy Fiddaman case $exec:$i in 5972*b30d1939SAndy Fiddaman :nmake|:ksh) 5973*b30d1939SAndy Fiddaman echo "$command: $OK/$i: cannot update [may be in use by a running process] remove manually and try again" >&2 5974*b30d1939SAndy Fiddaman exit 1 5975*b30d1939SAndy Fiddaman ;; 5976*b30d1939SAndy Fiddaman esac 5977*b30d1939SAndy Fiddaman $exec $execrate $cp $i $OK/$i 5978*b30d1939SAndy Fiddaman } 5979*b30d1939SAndy Fiddaman } 5980*b30d1939SAndy Fiddaman done 5981*b30d1939SAndy Fiddaman if test -f ../lib/make/makerules.mo 5982*b30d1939SAndy Fiddaman then cmp -s ../lib/make/makerules.mo $OK/lib/makerules.mo || 5983*b30d1939SAndy Fiddaman $exec $execrate $cp -p ../lib/make/makerules.mo $OK/lib/makerules.mo || 5984*b30d1939SAndy Fiddaman $exec $execrate $cp ../lib/make/makerules.mo $OK/lib/makerules.mo 5985*b30d1939SAndy Fiddaman fi 5986*b30d1939SAndy Fiddaman if executable $OK/nmake 5987*b30d1939SAndy Fiddaman then MAKE="$INSTALLROOT/bin/$OK/nmake LOCALRULESPATH=$INSTALLROOT/bin/$OK/lib" 5988*b30d1939SAndy Fiddaman fi 5989*b30d1939SAndy Fiddaman if executable $OK/tee 5990*b30d1939SAndy Fiddaman then TEE=$INSTALLROOT/bin/$OK/tee 5991*b30d1939SAndy Fiddaman fi 5992*b30d1939SAndy Fiddaman if test "$KEEP_SHELL" != 1 && executable $OK/ksh 5993*b30d1939SAndy Fiddaman then SHELL=$INSTALLROOT/bin/$OK/ksh 5994*b30d1939SAndy Fiddaman export SHELL 5995*b30d1939SAndy Fiddaman COSHELL=$SHELL 5996*b30d1939SAndy Fiddaman export COSHELL 5997*b30d1939SAndy Fiddaman fi 5998*b30d1939SAndy Fiddaman case :$PATH: in 5999*b30d1939SAndy Fiddaman *:$INSTALLROOT/bin/$OK:*) 6000*b30d1939SAndy Fiddaman ;; 6001*b30d1939SAndy Fiddaman *) PATH=$INSTALLROOT/bin/$OK:$PATH 6002*b30d1939SAndy Fiddaman export PATH 6003*b30d1939SAndy Fiddaman ;; 6004*b30d1939SAndy Fiddaman esac 6005*b30d1939SAndy Fiddaman $make cd $INSTALLROOT/src 6006*b30d1939SAndy Fiddaman ;; 6007*b30d1939SAndy Fiddaman esac 6008*b30d1939SAndy Fiddaman 6009*b30d1939SAndy Fiddaman # fall back to mamake if nmake not found or too old 6010*b30d1939SAndy Fiddaman 6011*b30d1939SAndy Fiddaman if nonmake $MAKE 6012*b30d1939SAndy Fiddaman then note make with mamake 6013*b30d1939SAndy Fiddaman case $target in 6014*b30d1939SAndy Fiddaman '') target="install" ;; 6015*b30d1939SAndy Fiddaman esac 6016*b30d1939SAndy Fiddaman eval capture mamake \$makeflags \$noexec \$target $assign 6017*b30d1939SAndy Fiddaman else case $target in 6018*b30d1939SAndy Fiddaman '') target="install cc-" ;; 6019*b30d1939SAndy Fiddaman esac 6020*b30d1939SAndy Fiddaman eval capture \$MAKE \$makeflags \$nmakeflags \$noexec recurse \$target \$nmakesep \$package $assign 6021*b30d1939SAndy Fiddaman fi 6022*b30d1939SAndy Fiddaman ;; 6023*b30d1939SAndy Fiddaman 6024*b30d1939SAndy Fiddamanread) case ${PWD:-`pwd`} in 6025*b30d1939SAndy Fiddaman $PACKAGEROOT) 6026*b30d1939SAndy Fiddaman ;; 6027*b30d1939SAndy Fiddaman *) echo "$command: must be in package root directory" >&2 6028*b30d1939SAndy Fiddaman exit 1 6029*b30d1939SAndy Fiddaman ;; 6030*b30d1939SAndy Fiddaman esac 6031*b30d1939SAndy Fiddaman PAX= 6032*b30d1939SAndy Fiddaman if onpath pax 6033*b30d1939SAndy Fiddaman then case `$_onpath_ -rw --?meter 2>&1` in 6034*b30d1939SAndy Fiddaman *--meter*) PAX=pax ;; 6035*b30d1939SAndy Fiddaman esac 6036*b30d1939SAndy Fiddaman fi 6037*b30d1939SAndy Fiddaman code=0 6038*b30d1939SAndy Fiddaman i= 6039*b30d1939SAndy Fiddaman x= 6040*b30d1939SAndy Fiddaman remove= 6041*b30d1939SAndy Fiddaman touch= 6042*b30d1939SAndy Fiddaman set '' $target 6043*b30d1939SAndy Fiddaman case $2 in 6044*b30d1939SAndy Fiddaman lcl|tgz)tgz=$2 6045*b30d1939SAndy Fiddaman shift 2 6046*b30d1939SAndy Fiddaman target=$* 6047*b30d1939SAndy Fiddaman ;; 6048*b30d1939SAndy Fiddaman *) tgz=tgz 6049*b30d1939SAndy Fiddaman ;; 6050*b30d1939SAndy Fiddaman esac 6051*b30d1939SAndy Fiddaman set '' $package $target 6052*b30d1939SAndy Fiddaman case $# in 6053*b30d1939SAndy Fiddaman 1) verbose=: 6054*b30d1939SAndy Fiddaman set '' `ls lib/package/$tgz/*?[_.][0123456789][0123456789][0123456789][0123456789]-[0123456789][0123456789]-[0123456789][0123456789][_.]* 2>/dev/null` 6055*b30d1939SAndy Fiddaman ;; 6056*b30d1939SAndy Fiddaman *) verbose= 6057*b30d1939SAndy Fiddaman ;; 6058*b30d1939SAndy Fiddaman esac 6059*b30d1939SAndy Fiddaman shift 6060*b30d1939SAndy Fiddaman files= 6061*b30d1939SAndy Fiddaman for f 6062*b30d1939SAndy Fiddaman do if test -f "$f" 6063*b30d1939SAndy Fiddaman then : ok 6064*b30d1939SAndy Fiddaman elif test -f "lib/package/$tgz/$f" 6065*b30d1939SAndy Fiddaman then f=lib/package/$tgz/$f 6066*b30d1939SAndy Fiddaman else set '' `ls -r ${f}[_.][0123456789][0123456789][0123456789][0123456789]-[0123456789][0123456789]-[0123456789][0123456789][_.]* 2>/dev/null` 6067*b30d1939SAndy Fiddaman if test '' != "$2" -a -f "$2" 6068*b30d1939SAndy Fiddaman then f=$2 6069*b30d1939SAndy Fiddaman else set '' `ls -r lib/package/$tgz/${f}[_.][0123456789][0123456789][0123456789][0123456789]-[0123456789][0123456789]-[0123456789][0123456789][_.]* 2>/dev/null` 6070*b30d1939SAndy Fiddaman if test '' != "$2" -a -f "$2" 6071*b30d1939SAndy Fiddaman then f=$2 6072*b30d1939SAndy Fiddaman else echo "$command: $f: package archive not found" >&2 6073*b30d1939SAndy Fiddaman continue 6074*b30d1939SAndy Fiddaman fi 6075*b30d1939SAndy Fiddaman fi 6076*b30d1939SAndy Fiddaman fi 6077*b30d1939SAndy Fiddaman files="$files $f" 6078*b30d1939SAndy Fiddaman done 6079*b30d1939SAndy Fiddaman case $files in 6080*b30d1939SAndy Fiddaman '') echo "$command: lib/package/$tgz: no package archives" >&2 6081*b30d1939SAndy Fiddaman exit 1 6082*b30d1939SAndy Fiddaman ;; 6083*b30d1939SAndy Fiddaman esac 6084*b30d1939SAndy Fiddaman set '' `ls -r $files 2>/dev/null` 6085*b30d1939SAndy Fiddaman shift 6086*b30d1939SAndy Fiddaman f1= f2= f3= f4= 6087*b30d1939SAndy Fiddaman for f 6088*b30d1939SAndy Fiddaman do case $f in 6089*b30d1939SAndy Fiddaman ratz.*|*/ratz.*) 6090*b30d1939SAndy Fiddaman f1="$f1 $f" 6091*b30d1939SAndy Fiddaman ;; 6092*b30d1939SAndy Fiddaman INIT.*|*/INIT.*) 6093*b30d1939SAndy Fiddaman f2="$f2 $f" 6094*b30d1939SAndy Fiddaman ;; 6095*b30d1939SAndy Fiddaman INIT*|*/INIT*) 6096*b30d1939SAndy Fiddaman f3="$f3 $f" 6097*b30d1939SAndy Fiddaman ;; 6098*b30d1939SAndy Fiddaman *) f4="$f4 $f" 6099*b30d1939SAndy Fiddaman ;; 6100*b30d1939SAndy Fiddaman esac 6101*b30d1939SAndy Fiddaman done 6102*b30d1939SAndy Fiddaman gen= 6103*b30d1939SAndy Fiddaman set '' $f1 $f2 $f3 $f4 6104*b30d1939SAndy Fiddaman while : 6105*b30d1939SAndy Fiddaman do shift 6106*b30d1939SAndy Fiddaman case $# in 6107*b30d1939SAndy Fiddaman 0) break ;; 6108*b30d1939SAndy Fiddaman esac 6109*b30d1939SAndy Fiddaman f=$1 6110*b30d1939SAndy Fiddaman case $f in 6111*b30d1939SAndy Fiddaman *.gz) : standalone packages unbundled manually 6112*b30d1939SAndy Fiddaman continue 6113*b30d1939SAndy Fiddaman ;; 6114*b30d1939SAndy Fiddaman *.md5) : tarball checksum 6115*b30d1939SAndy Fiddaman continue 6116*b30d1939SAndy Fiddaman ;; 6117*b30d1939SAndy Fiddaman *?[_.][0123456789][0123456789][0123456789][0123456789]-[0123456789][0123456789]-[0123456789][0123456789][_.]*) 6118*b30d1939SAndy Fiddaman ;; 6119*b30d1939SAndy Fiddaman *) echo "$command: $f: not a package archive" >&2 6120*b30d1939SAndy Fiddaman code=1 6121*b30d1939SAndy Fiddaman continue 6122*b30d1939SAndy Fiddaman ;; 6123*b30d1939SAndy Fiddaman esac 6124*b30d1939SAndy Fiddaman case $f in 6125*b30d1939SAndy Fiddaman */*) eval `echo "$f" | sed -e 's,\(.*/\)\(.*\),d=\1 a=\2,'` ;; 6126*b30d1939SAndy Fiddaman *) d= a=$f ;; 6127*b30d1939SAndy Fiddaman esac 6128*b30d1939SAndy Fiddaman # f:file d:dir a:base p:package v:version r:release t:type 6129*b30d1939SAndy Fiddaman eval `echo "$a" | sed -e 's,\.c$,,' -e 's,\.gz$,,' -e 's,\.exe$,,' -e 's,\.tgz$,,' -e 's,\([^_.]*\)[_.]\([0123456789][0123456789][0123456789][0123456789]-[0123456789][0123456789]-[0123456789][0123456789]\)[_.]\([0123456789][0123456789][0123456789][0123456789][^_.]*\)[_.]*\(.*\),p=\1 v=\2 r=\3 t=\4,' -e 's,\([^_.]*\)[_.]\([0123456789][0123456789][0123456789][0123456789]-[0123456789][0123456789]-[0123456789][0123456789]\)[_.]*\(.*\),p=\1 v=\2 r=base t=\3,'` 6130*b30d1939SAndy Fiddaman case $r in 6131*b30d1939SAndy Fiddaman base) y=$p.base ;; 6132*b30d1939SAndy Fiddaman *) y=$p.delta ;; 6133*b30d1939SAndy Fiddaman esac 6134*b30d1939SAndy Fiddaman case " $x " in 6135*b30d1939SAndy Fiddaman *" $y "*) 6136*b30d1939SAndy Fiddaman continue 6137*b30d1939SAndy Fiddaman ;; 6138*b30d1939SAndy Fiddaman esac 6139*b30d1939SAndy Fiddaman case $t in 6140*b30d1939SAndy Fiddaman '') w=$PACKAGESRC 6141*b30d1939SAndy Fiddaman q= 6142*b30d1939SAndy Fiddaman Q= 6143*b30d1939SAndy Fiddaman m= 6144*b30d1939SAndy Fiddaman ;; 6145*b30d1939SAndy Fiddaman *) w=$PACKAGEROOT/arch/$t/lib/package 6146*b30d1939SAndy Fiddaman q=".$t" 6147*b30d1939SAndy Fiddaman Q="_$t" 6148*b30d1939SAndy Fiddaman m="[_.]$t" 6149*b30d1939SAndy Fiddaman ;; 6150*b30d1939SAndy Fiddaman esac 6151*b30d1939SAndy Fiddaman u=$d$p$q.tim 6152*b30d1939SAndy Fiddaman if test -s "$u" 6153*b30d1939SAndy Fiddaman then continue 6154*b30d1939SAndy Fiddaman else case $force in 6155*b30d1939SAndy Fiddaman 0) case `ls -t "$f" "$u" 2>/dev/null` in 6156*b30d1939SAndy Fiddaman "$u"*) case $verbose in 6157*b30d1939SAndy Fiddaman 1) note $p already read ;; 6158*b30d1939SAndy Fiddaman esac 6159*b30d1939SAndy Fiddaman continue 6160*b30d1939SAndy Fiddaman ;; 6161*b30d1939SAndy Fiddaman esac 6162*b30d1939SAndy Fiddaman ;; 6163*b30d1939SAndy Fiddaman esac 6164*b30d1939SAndy Fiddaman fi 6165*b30d1939SAndy Fiddaman case $p in 6166*b30d1939SAndy Fiddaman INIT) if test -f $PACKAGEROOT/bin/package 6167*b30d1939SAndy Fiddaman then $exec mv $PACKAGEROOT/bin/package $PACKAGEROOT/bin/package.old 6168*b30d1939SAndy Fiddaman fi 6169*b30d1939SAndy Fiddaman ;; 6170*b30d1939SAndy Fiddaman esac 6171*b30d1939SAndy Fiddaman z= 6172*b30d1939SAndy Fiddaman case $r in 6173*b30d1939SAndy Fiddaman base) # base archive 6174*b30d1939SAndy Fiddaman if test ratz = "$p" 6175*b30d1939SAndy Fiddaman then # ratz packages are not archives 6176*b30d1939SAndy Fiddaman case $t in 6177*b30d1939SAndy Fiddaman '') for i in src src/cmd src/cmd/INIT 6178*b30d1939SAndy Fiddaman do test -d $PACKAGEROOT/$i || $exec mkdir $PACKAGEROOT/$i || exit 6179*b30d1939SAndy Fiddaman done 6180*b30d1939SAndy Fiddaman $exec cp $f $PACKAGEROOT/src/cmd/INIT/$p.c 6181*b30d1939SAndy Fiddaman ;; 6182*b30d1939SAndy Fiddaman *) for i in arch arch/$t arch/$t/bin 6183*b30d1939SAndy Fiddaman do test -d $PACKAGEROOT/$i || $exec mkdir $PACKAGEROOT/$i || exit 6184*b30d1939SAndy Fiddaman done 6185*b30d1939SAndy Fiddaman $exec cp $f $PACKAGEROOT/arch/$t/bin/$p && 6186*b30d1939SAndy Fiddaman $exec chmod +x $PACKAGEROOT/arch/$t/bin/$p 6187*b30d1939SAndy Fiddaman ;; 6188*b30d1939SAndy Fiddaman esac 6189*b30d1939SAndy Fiddaman elif test "" != "$PAX" 6190*b30d1939SAndy Fiddaman then $exec pax -L --from=ascii --local -m -ps -rvf "$f" || { 6191*b30d1939SAndy Fiddaman code=1 6192*b30d1939SAndy Fiddaman continue 6193*b30d1939SAndy Fiddaman } 6194*b30d1939SAndy Fiddaman else if onpath gunzip && onpath $TAR && isascii 6195*b30d1939SAndy Fiddaman then case $TARPROBE in 6196*b30d1939SAndy Fiddaman ?*) for i in $TARPROBE 6197*b30d1939SAndy Fiddaman do if $TAR ${i}f - /dev/null > /dev/null 2>&1 6198*b30d1939SAndy Fiddaman then TARFLAGS=$TARFLAGS$i 6199*b30d1939SAndy Fiddaman fi 6200*b30d1939SAndy Fiddaman done 6201*b30d1939SAndy Fiddaman TARPROBE= 6202*b30d1939SAndy Fiddaman ;; 6203*b30d1939SAndy Fiddaman esac 6204*b30d1939SAndy Fiddaman if gunzip -l < "$f" > /dev/null 2>&1 6205*b30d1939SAndy Fiddaman then case $exec in 6206*b30d1939SAndy Fiddaman '') $exec gunzip < "$f" | $TAR ${TARFLAGS}f - ;; 6207*b30d1939SAndy Fiddaman *) $exec "gunzip < $f | $TAR ${TARFLAGS}f -" ;; 6208*b30d1939SAndy Fiddaman esac || { 6209*b30d1939SAndy Fiddaman code=1 6210*b30d1939SAndy Fiddaman continue 6211*b30d1939SAndy Fiddaman } 6212*b30d1939SAndy Fiddaman else $exec $TAR ${TARFLAGS}f "$f" || { 6213*b30d1939SAndy Fiddaman code=1 6214*b30d1939SAndy Fiddaman continue 6215*b30d1939SAndy Fiddaman } 6216*b30d1939SAndy Fiddaman fi 6217*b30d1939SAndy Fiddaman else checkaout ratz && onpath ratz || { 6218*b30d1939SAndy Fiddaman code=1 6219*b30d1939SAndy Fiddaman continue 6220*b30d1939SAndy Fiddaman } 6221*b30d1939SAndy Fiddaman RATZ=$_onpath_ 6222*b30d1939SAndy Fiddaman case $exec in 6223*b30d1939SAndy Fiddaman '') echo $f: 6224*b30d1939SAndy Fiddaman $exec $RATZ -lm < "$f" 6225*b30d1939SAndy Fiddaman ;; 6226*b30d1939SAndy Fiddaman *) $exec "$RATZ -lm < $f" 6227*b30d1939SAndy Fiddaman ;; 6228*b30d1939SAndy Fiddaman esac || { 6229*b30d1939SAndy Fiddaman code=1 6230*b30d1939SAndy Fiddaman continue 6231*b30d1939SAndy Fiddaman } 6232*b30d1939SAndy Fiddaman fi 6233*b30d1939SAndy Fiddaman if test -f $PACKAGEBIN/gen/$p.sum 6234*b30d1939SAndy Fiddaman then while read md5 mode usr grp file 6235*b30d1939SAndy Fiddaman do case $file in 6236*b30d1939SAndy Fiddaman -*) file=./$file ;; 6237*b30d1939SAndy Fiddaman esac 6238*b30d1939SAndy Fiddaman case $mode in 6239*b30d1939SAndy Fiddaman [01234567][01234567][01234567][01234567]) 6240*b30d1939SAndy Fiddaman case $grp in 6241*b30d1939SAndy Fiddaman -) ;; 6242*b30d1939SAndy Fiddaman *) $exec chgrp $grp "$file" ;; 6243*b30d1939SAndy Fiddaman esac 6244*b30d1939SAndy Fiddaman case $usr in 6245*b30d1939SAndy Fiddaman -) ;; 6246*b30d1939SAndy Fiddaman *) $exec chown $usr "$file" ;; 6247*b30d1939SAndy Fiddaman esac 6248*b30d1939SAndy Fiddaman $exec chmod $mode "$file" 6249*b30d1939SAndy Fiddaman ;; 6250*b30d1939SAndy Fiddaman esac 6251*b30d1939SAndy Fiddaman done < $PACKAGEBIN/gen/$p.sum 6252*b30d1939SAndy Fiddaman fi 6253*b30d1939SAndy Fiddaman fi 6254*b30d1939SAndy Fiddaman ;; 6255*b30d1939SAndy Fiddaman *) # delta archive 6256*b30d1939SAndy Fiddaman test "" != "$PAX" || { 6257*b30d1939SAndy Fiddaman echo "$command: $f: pax required to read delta archive" >&2 6258*b30d1939SAndy Fiddaman code=1 6259*b30d1939SAndy Fiddaman continue 6260*b30d1939SAndy Fiddaman } 6261*b30d1939SAndy Fiddaman case `echo "$v: 6262*b30d1939SAndy Fiddaman$r:" | sort` in 6263*b30d1939SAndy Fiddaman $r:*) y=$p.base 6264*b30d1939SAndy Fiddaman b=${d}${p}_${r}${Q}.tgz 6265*b30d1939SAndy Fiddaman test -f "$b" || b=${d}${p}.${r}${q}.tgz 6266*b30d1939SAndy Fiddaman test -f "$b" || { 6267*b30d1939SAndy Fiddaman case " $gen " in 6268*b30d1939SAndy Fiddaman *" $b "*) 6269*b30d1939SAndy Fiddaman ;; 6270*b30d1939SAndy Fiddaman *) case $# in 6271*b30d1939SAndy Fiddaman 1) echo "$command: $f: base archive $b required to read delta" >&2 6272*b30d1939SAndy Fiddaman code=1 6273*b30d1939SAndy Fiddaman ;; 6274*b30d1939SAndy Fiddaman *) shift 6275*b30d1939SAndy Fiddaman y=$1 6276*b30d1939SAndy Fiddaman shift 6277*b30d1939SAndy Fiddaman set '' $y $f "$@" 6278*b30d1939SAndy Fiddaman esac 6279*b30d1939SAndy Fiddaman continue 6280*b30d1939SAndy Fiddaman ;; 6281*b30d1939SAndy Fiddaman esac 6282*b30d1939SAndy Fiddaman } 6283*b30d1939SAndy Fiddaman # -m with delta bug fixed 2005-02-08 6284*b30d1939SAndy Fiddaman $exec pax -L --from=ascii --local -ps -rvf "$f" -z "$b" || { 6285*b30d1939SAndy Fiddaman code=1 6286*b30d1939SAndy Fiddaman continue 6287*b30d1939SAndy Fiddaman } 6288*b30d1939SAndy Fiddaman note $f: generate new base $d$p.$v$q.tgz 6289*b30d1939SAndy Fiddaman $exec pax -rf "$f" -z "$b" -wf $d$p.$v$q.tgz -x tgz || { 6290*b30d1939SAndy Fiddaman code=1 6291*b30d1939SAndy Fiddaman continue 6292*b30d1939SAndy Fiddaman } 6293*b30d1939SAndy Fiddaman case $exec in 6294*b30d1939SAndy Fiddaman '') echo $p $v $v 1 > $w/gen/$p.ver 6295*b30d1939SAndy Fiddaman ;; 6296*b30d1939SAndy Fiddaman *) z=$d${p}[_.]$v$q.tgz 6297*b30d1939SAndy Fiddaman $exec "echo $p $v $v 1 > $w/gen/$p.ver" 6298*b30d1939SAndy Fiddaman gen="$gen $d$p.$v$q.tgz" 6299*b30d1939SAndy Fiddaman ;; 6300*b30d1939SAndy Fiddaman esac 6301*b30d1939SAndy Fiddaman case " $remove " in 6302*b30d1939SAndy Fiddaman *" $f "*) ;; 6303*b30d1939SAndy Fiddaman *) remove="$remove $f" ;; 6304*b30d1939SAndy Fiddaman esac 6305*b30d1939SAndy Fiddaman ;; 6306*b30d1939SAndy Fiddaman *) b=${d}${p}_${v}${Q}.tgz 6307*b30d1939SAndy Fiddaman test -f "$b" || b=${d}${p}.${v}${q}.tgz 6308*b30d1939SAndy Fiddaman test -f "$b" || { 6309*b30d1939SAndy Fiddaman case " $gen " in 6310*b30d1939SAndy Fiddaman *" $b "*) 6311*b30d1939SAndy Fiddaman ;; 6312*b30d1939SAndy Fiddaman *) case $# in 6313*b30d1939SAndy Fiddaman 1) echo "$command: $f: base archive $b required to read delta" >&2 6314*b30d1939SAndy Fiddaman code=1 6315*b30d1939SAndy Fiddaman ;; 6316*b30d1939SAndy Fiddaman *) shift 6317*b30d1939SAndy Fiddaman y=$1 6318*b30d1939SAndy Fiddaman shift 6319*b30d1939SAndy Fiddaman set '' $y $f "$@" 6320*b30d1939SAndy Fiddaman esac 6321*b30d1939SAndy Fiddaman continue 6322*b30d1939SAndy Fiddaman ;; 6323*b30d1939SAndy Fiddaman esac 6324*b30d1939SAndy Fiddaman } 6325*b30d1939SAndy Fiddaman # -m with delta bug fixed 2005-02-08 6326*b30d1939SAndy Fiddaman $exec pax -L --from=ascii --local -ps -rvf "$f" -z "$b" || { 6327*b30d1939SAndy Fiddaman code=1 6328*b30d1939SAndy Fiddaman continue 6329*b30d1939SAndy Fiddaman } 6330*b30d1939SAndy Fiddaman ;; 6331*b30d1939SAndy Fiddaman esac 6332*b30d1939SAndy Fiddaman ;; 6333*b30d1939SAndy Fiddaman *) echo "$command: $f: unknown archive type" >&2 6334*b30d1939SAndy Fiddaman code=1 6335*b30d1939SAndy Fiddaman continue 6336*b30d1939SAndy Fiddaman ;; 6337*b30d1939SAndy Fiddaman esac 6338*b30d1939SAndy Fiddaman 6339*b30d1939SAndy Fiddaman # check for ini files 6340*b30d1939SAndy Fiddaman 6341*b30d1939SAndy Fiddaman if executable $w/$p.ini 6342*b30d1939SAndy Fiddaman then $exec $w/$p.ini read || { 6343*b30d1939SAndy Fiddaman code=1 6344*b30d1939SAndy Fiddaman continue 6345*b30d1939SAndy Fiddaman } 6346*b30d1939SAndy Fiddaman fi 6347*b30d1939SAndy Fiddaman 6348*b30d1939SAndy Fiddaman # add to the obsolete list 6349*b30d1939SAndy Fiddaman 6350*b30d1939SAndy Fiddaman k= 6351*b30d1939SAndy Fiddaman for i in `ls $d$p[_.][0123456789][0123456789][0123456789][0123456789]-[0123456789][0123456789]-[0123456789][0123456789][_.]????$m* $z 2>/dev/null` 6352*b30d1939SAndy Fiddaman do case $i in 6353*b30d1939SAndy Fiddaman *.md5) continue 6354*b30d1939SAndy Fiddaman ;; 6355*b30d1939SAndy Fiddaman $d${p}[_.][0123456789][0123456789][0123456789][0123456789]-[0123456789][0123456789]-[0123456789][0123456789][_.][0123456789][0123456789][0123456789][0123456789]-[0123456789][0123456789]-[0123456789][0123456789]$m*) 6356*b30d1939SAndy Fiddaman ;; 6357*b30d1939SAndy Fiddaman $d${p}[_.][0123456789][0123456789][0123456789][0123456789]-[0123456789][0123456789]-[0123456789][0123456789]$m*) 6358*b30d1939SAndy Fiddaman continue 6359*b30d1939SAndy Fiddaman ;; 6360*b30d1939SAndy Fiddaman esac 6361*b30d1939SAndy Fiddaman case $k in 6362*b30d1939SAndy Fiddaman ?*) case " $remove " in 6363*b30d1939SAndy Fiddaman *" $k "*) ;; 6364*b30d1939SAndy Fiddaman *) remove="$remove $k" ;; 6365*b30d1939SAndy Fiddaman esac 6366*b30d1939SAndy Fiddaman ;; 6367*b30d1939SAndy Fiddaman esac 6368*b30d1939SAndy Fiddaman k=$i 6369*b30d1939SAndy Fiddaman done 6370*b30d1939SAndy Fiddaman x="$x $y" 6371*b30d1939SAndy Fiddaman case " $touch " in 6372*b30d1939SAndy Fiddaman *" $u "*) ;; 6373*b30d1939SAndy Fiddaman *) touch="$touch $u" ;; 6374*b30d1939SAndy Fiddaman esac 6375*b30d1939SAndy Fiddaman done 6376*b30d1939SAndy Fiddaman if test ! -f $PACKAGEROOT/bin/package -a -f $PACKAGEROOT/bin/package.old 6377*b30d1939SAndy Fiddaman then $exec cp $PACKAGEROOT/bin/package.old $PACKAGEROOT/bin/package 6378*b30d1939SAndy Fiddaman fi 6379*b30d1939SAndy Fiddaman 6380*b30d1939SAndy Fiddaman # drop obsolete archives 6381*b30d1939SAndy Fiddaman 6382*b30d1939SAndy Fiddaman case $remove in 6383*b30d1939SAndy Fiddaman ?*) $exec rm -f $remove ;; 6384*b30d1939SAndy Fiddaman esac 6385*b30d1939SAndy Fiddaman 6386*b30d1939SAndy Fiddaman # mark the updated archives 6387*b30d1939SAndy Fiddaman 6388*b30d1939SAndy Fiddaman case $touch in 6389*b30d1939SAndy Fiddaman ?*) sleep 1; $exec touch $touch ;; 6390*b30d1939SAndy Fiddaman esac 6391*b30d1939SAndy Fiddaman 6392*b30d1939SAndy Fiddaman # check the requirements 6393*b30d1939SAndy Fiddaman 6394*b30d1939SAndy Fiddaman case $code$exec in 6395*b30d1939SAndy Fiddaman 0) requirements - $x ;; 6396*b30d1939SAndy Fiddaman esac 6397*b30d1939SAndy Fiddaman exit $code 6398*b30d1939SAndy Fiddaman ;; 6399*b30d1939SAndy Fiddaman 6400*b30d1939SAndy Fiddamanregress)if test ! -d $PACKAGEBIN/gen 6401*b30d1939SAndy Fiddaman then echo "$command: 'package make' and 'package test' required for regression" >&2 6402*b30d1939SAndy Fiddaman exit 1 6403*b30d1939SAndy Fiddaman fi 6404*b30d1939SAndy Fiddaman dir=$PACKAGEBIN/gen 6405*b30d1939SAndy Fiddaman cd $dir 6406*b30d1939SAndy Fiddaman for s in out old 6407*b30d1939SAndy Fiddaman do case `ls -t regress.$s test.$s 2>/dev/null` in 6408*b30d1939SAndy Fiddaman regress*) 6409*b30d1939SAndy Fiddaman ;; 6410*b30d1939SAndy Fiddaman test*) if test -f regress.$s 6411*b30d1939SAndy Fiddaman then $exec mv regress.$s regress.old 6412*b30d1939SAndy Fiddaman fi 6413*b30d1939SAndy Fiddaman case $exec in 6414*b30d1939SAndy Fiddaman '') egrep -i '\*\*\*|FAIL|^TEST.* [123456789][0123456789]* error|core.*dump' test.$s | 6415*b30d1939SAndy Fiddaman sed -e '/\*\*\* [0123456789]/d' \ 6416*b30d1939SAndy Fiddaman -e '/^TEST.\//s,/[^ ]*/,,' \ 6417*b30d1939SAndy Fiddaman -e 's,[ ][ ]*$,,' \ 6418*b30d1939SAndy Fiddaman -e 's/[0123456789][0123456789]*:* \([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789 ]*([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789 ]*[Cc][Oo][Rr][Ee][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789 ]*)\)/\1/' \ 6419*b30d1939SAndy Fiddaman -e 's/\.sh failed at .* with /.sh failed /' \ 6420*b30d1939SAndy Fiddaman > regress.$s 6421*b30d1939SAndy Fiddaman ;; 6422*b30d1939SAndy Fiddaman *) $exec filter test failures from $dir/test.$s to $dir/regress.$s 6423*b30d1939SAndy Fiddaman ;; 6424*b30d1939SAndy Fiddaman esac 6425*b30d1939SAndy Fiddaman ;; 6426*b30d1939SAndy Fiddaman esac 6427*b30d1939SAndy Fiddaman done 6428*b30d1939SAndy Fiddaman if test -f regress.out -a -f regress.old 6429*b30d1939SAndy Fiddaman then $exec diff -b regress.out regress.old 6430*b30d1939SAndy Fiddaman else echo "$command: at least 2 test runs required for regression" >&2 6431*b30d1939SAndy Fiddaman exit 1 6432*b30d1939SAndy Fiddaman fi 6433*b30d1939SAndy Fiddaman ;; 6434*b30d1939SAndy Fiddaman 6435*b30d1939SAndy Fiddamanrelease)count= lo= hi= 6436*b30d1939SAndy Fiddaman checksrc 6437*b30d1939SAndy Fiddaman checkaout release || exit 6438*b30d1939SAndy Fiddaman requirements source $package 6439*b30d1939SAndy Fiddaman components $package 6440*b30d1939SAndy Fiddaman package=$_components_ 6441*b30d1939SAndy Fiddaman set '' $target 6442*b30d1939SAndy Fiddaman shift 6443*b30d1939SAndy Fiddaman case $# in 6444*b30d1939SAndy Fiddaman 0) ;; 6445*b30d1939SAndy Fiddaman *) case $1 in 6446*b30d1939SAndy Fiddaman -|[0123456789][0123456789]-[0123456789][0123456789]-[0123456789][0123456789]|[0123456789][0123456789][0123456789][0123456789]-[0123456789][0123456789]-[0123456789][0123456789]) 6447*b30d1939SAndy Fiddaman case $1 in 6448*b30d1939SAndy Fiddaman -) lo= release= ;; 6449*b30d1939SAndy Fiddaman *) lo=$1 release="-f $1" ;; 6450*b30d1939SAndy Fiddaman esac 6451*b30d1939SAndy Fiddaman shift 6452*b30d1939SAndy Fiddaman case $1 in 6453*b30d1939SAndy Fiddaman -|[0123456789][0123456789]-[0123456789][0123456789]-[0123456789][0123456789]|[0123456789][0123456789][0123456789][0123456789]-[0123456789][0123456789]-[0123456789][0123456789]) 6454*b30d1939SAndy Fiddaman case $1 in 6455*b30d1939SAndy Fiddaman -) hi= ;; 6456*b30d1939SAndy Fiddaman *) hi=$1 release="$release -t $1" ;; 6457*b30d1939SAndy Fiddaman esac 6458*b30d1939SAndy Fiddaman shift 6459*b30d1939SAndy Fiddaman ;; 6460*b30d1939SAndy Fiddaman esac 6461*b30d1939SAndy Fiddaman ;; 6462*b30d1939SAndy Fiddaman [0123456789]|[0123456789][0123456789]|[0123456789][0123456789][0123456789]|[0123456789][0123456789][0123456789][0123456789]|[0123456789][0123456789][0123456789][0123456789][0123456789]*) 6463*b30d1939SAndy Fiddaman count=$1 6464*b30d1939SAndy Fiddaman release="-r $count" 6465*b30d1939SAndy Fiddaman shift 6466*b30d1939SAndy Fiddaman ;; 6467*b30d1939SAndy Fiddaman esac 6468*b30d1939SAndy Fiddaman ;; 6469*b30d1939SAndy Fiddaman esac 6470*b30d1939SAndy Fiddaman case $# in 6471*b30d1939SAndy Fiddaman 0) case $package in 6472*b30d1939SAndy Fiddaman '') package=* ;; 6473*b30d1939SAndy Fiddaman esac 6474*b30d1939SAndy Fiddaman ;; 6475*b30d1939SAndy Fiddaman *) case $package in 6476*b30d1939SAndy Fiddaman '') package=$* 6477*b30d1939SAndy Fiddaman ;; 6478*b30d1939SAndy Fiddaman *) echo $command: $*: lo-date hi-date arguments expected >&2 6479*b30d1939SAndy Fiddaman exit 1 6480*b30d1939SAndy Fiddaman ;; 6481*b30d1939SAndy Fiddaman esac 6482*b30d1939SAndy Fiddaman ;; 6483*b30d1939SAndy Fiddaman esac 6484*b30d1939SAndy Fiddaman echo 6485*b30d1939SAndy Fiddaman case $count:$lo:$hi in 6486*b30d1939SAndy Fiddaman ::) echo "All recorded changes follow." ;; 6487*b30d1939SAndy Fiddaman 1::) echo "Changes since the last release follow." ;; 6488*b30d1939SAndy Fiddaman ?*::) echo "Changes since the last $count releases follow." ;; 6489*b30d1939SAndy Fiddaman 1:?*:) echo "Changes since $lo or the last release follow." ;; 6490*b30d1939SAndy Fiddaman *:?*:*) echo "Changes since $lo follow." ;; 6491*b30d1939SAndy Fiddaman *::?*) echo "Changes before $hi follow." ;; 6492*b30d1939SAndy Fiddaman *) echo "Changes between $lo and $hi follow." ;; 6493*b30d1939SAndy Fiddaman esac 6494*b30d1939SAndy Fiddaman x= 6495*b30d1939SAndy Fiddaman for r in $INSTALLROOT $PACKAGEROOT 6496*b30d1939SAndy Fiddaman do for s in $package_src 6497*b30d1939SAndy Fiddaman do d=$r/src/$s 6498*b30d1939SAndy Fiddaman if test -d $d 6499*b30d1939SAndy Fiddaman then cd $d 6500*b30d1939SAndy Fiddaman for i in $package 6501*b30d1939SAndy Fiddaman do if test -h $i 2>/dev/null 6502*b30d1939SAndy Fiddaman then continue 6503*b30d1939SAndy Fiddaman fi 6504*b30d1939SAndy Fiddaman case " $x " in 6505*b30d1939SAndy Fiddaman *" $i "*) continue ;; 6506*b30d1939SAndy Fiddaman esac 6507*b30d1939SAndy Fiddaman for f in RELEASE CHANGES ChangeLog 6508*b30d1939SAndy Fiddaman do if test -f $i/$f 6509*b30d1939SAndy Fiddaman then $exec release $release $i/$f 6510*b30d1939SAndy Fiddaman x="$x $i" 6511*b30d1939SAndy Fiddaman for f in $i/*/$f 6512*b30d1939SAndy Fiddaman do if test -f $f 6513*b30d1939SAndy Fiddaman then $exec release $release $f 6514*b30d1939SAndy Fiddaman fi 6515*b30d1939SAndy Fiddaman done 6516*b30d1939SAndy Fiddaman break 6517*b30d1939SAndy Fiddaman fi 6518*b30d1939SAndy Fiddaman done 6519*b30d1939SAndy Fiddaman done 6520*b30d1939SAndy Fiddaman fi 6521*b30d1939SAndy Fiddaman done 6522*b30d1939SAndy Fiddaman done 6523*b30d1939SAndy Fiddaman ;; 6524*b30d1939SAndy Fiddaman 6525*b30d1939SAndy Fiddamanremove) echo "$command: $action: not implemented yet" >&2 6526*b30d1939SAndy Fiddaman exit 1 6527*b30d1939SAndy Fiddaman ;; 6528*b30d1939SAndy Fiddaman 6529*b30d1939SAndy Fiddamanresults)set '' $target 6530*b30d1939SAndy Fiddaman shift 6531*b30d1939SAndy Fiddaman def=make 6532*b30d1939SAndy Fiddaman dir=$PACKAGEBIN/gen 6533*b30d1939SAndy Fiddaman case $verbose in 6534*b30d1939SAndy Fiddaman 0) filter=yes ;; 6535*b30d1939SAndy Fiddaman *) filter=cat ;; 6536*b30d1939SAndy Fiddaman esac 6537*b30d1939SAndy Fiddaman path=0 6538*b30d1939SAndy Fiddaman suf=out 6539*b30d1939SAndy Fiddaman on= 6540*b30d1939SAndy Fiddaman while : 6541*b30d1939SAndy Fiddaman do case $# in 6542*b30d1939SAndy Fiddaman 0) break ;; 6543*b30d1939SAndy Fiddaman esac 6544*b30d1939SAndy Fiddaman case $1 in 6545*b30d1939SAndy Fiddaman --) shift 6546*b30d1939SAndy Fiddaman break 6547*b30d1939SAndy Fiddaman ;; 6548*b30d1939SAndy Fiddaman admin) dir=$PACKAGESRC/admin 6549*b30d1939SAndy Fiddaman ;; 6550*b30d1939SAndy Fiddaman error*|fail*) 6551*b30d1939SAndy Fiddaman filter=errors 6552*b30d1939SAndy Fiddaman ;; 6553*b30d1939SAndy Fiddaman make|test|view|write) 6554*b30d1939SAndy Fiddaman def=$1 6555*b30d1939SAndy Fiddaman case $filter:$1:$SHELL in 6556*b30d1939SAndy Fiddaman errors:*:*) ;; 6557*b30d1939SAndy Fiddaman *:test:*/ksh*) filter=rt ;; 6558*b30d1939SAndy Fiddaman esac 6559*b30d1939SAndy Fiddaman ;; 6560*b30d1939SAndy Fiddaman old) suf=old 6561*b30d1939SAndy Fiddaman ;; 6562*b30d1939SAndy Fiddaman on) case $# in 6563*b30d1939SAndy Fiddaman 1) echo $command: $action: $1: host pattern argument expected >&2 6564*b30d1939SAndy Fiddaman exit 1 6565*b30d1939SAndy Fiddaman ;; 6566*b30d1939SAndy Fiddaman esac 6567*b30d1939SAndy Fiddaman shift 6568*b30d1939SAndy Fiddaman case $on in 6569*b30d1939SAndy Fiddaman ?*) on="$on|" ;; 6570*b30d1939SAndy Fiddaman esac 6571*b30d1939SAndy Fiddaman on="$on$1" 6572*b30d1939SAndy Fiddaman ;; 6573*b30d1939SAndy Fiddaman path) path=1 6574*b30d1939SAndy Fiddaman ;; 6575*b30d1939SAndy Fiddaman test) def=test 6576*b30d1939SAndy Fiddaman filter=rt 6577*b30d1939SAndy Fiddaman ;; 6578*b30d1939SAndy Fiddaman *) break 6579*b30d1939SAndy Fiddaman ;; 6580*b30d1939SAndy Fiddaman esac 6581*b30d1939SAndy Fiddaman shift 6582*b30d1939SAndy Fiddaman done 6583*b30d1939SAndy Fiddaman case $dir in 6584*b30d1939SAndy Fiddaman */admin)case $on in 6585*b30d1939SAndy Fiddaman '') on="*" ;; 6586*b30d1939SAndy Fiddaman *) on="@($on)" ;; 6587*b30d1939SAndy Fiddaman esac 6588*b30d1939SAndy Fiddaman def=$def.log/$on 6589*b30d1939SAndy Fiddaman ;; 6590*b30d1939SAndy Fiddaman esac 6591*b30d1939SAndy Fiddaman case $# in 6592*b30d1939SAndy Fiddaman 0) set "$def" ;; 6593*b30d1939SAndy Fiddaman esac 6594*b30d1939SAndy Fiddaman m= 6595*b30d1939SAndy Fiddaman t= 6596*b30d1939SAndy Fiddaman for i 6597*b30d1939SAndy Fiddaman do k=0 6598*b30d1939SAndy Fiddaman eval set '""' $i - $i.$suf - $dir/$i - $dir/$i.$suf - 6599*b30d1939SAndy Fiddaman shift 6600*b30d1939SAndy Fiddaman for j 6601*b30d1939SAndy Fiddaman do case $j in 6602*b30d1939SAndy Fiddaman -) case $k in 6603*b30d1939SAndy Fiddaman 1) continue 2 ;; 6604*b30d1939SAndy Fiddaman esac 6605*b30d1939SAndy Fiddaman ;; 6606*b30d1939SAndy Fiddaman *) if test -f $j 6607*b30d1939SAndy Fiddaman then k=1 6608*b30d1939SAndy Fiddaman case /$j in 6609*b30d1939SAndy Fiddaman */test.*) t="$t $j" ;; 6610*b30d1939SAndy Fiddaman *) m="$m $j" ;; 6611*b30d1939SAndy Fiddaman esac 6612*b30d1939SAndy Fiddaman fi 6613*b30d1939SAndy Fiddaman ;; 6614*b30d1939SAndy Fiddaman esac 6615*b30d1939SAndy Fiddaman done 6616*b30d1939SAndy Fiddaman echo "$command: $i action output not found" >&2 6617*b30d1939SAndy Fiddaman exit 1 6618*b30d1939SAndy Fiddaman done 6619*b30d1939SAndy Fiddaman sep= 6620*b30d1939SAndy Fiddaman case $t in 6621*b30d1939SAndy Fiddaman ?*) case $path in 6622*b30d1939SAndy Fiddaman 0) for j in $t 6623*b30d1939SAndy Fiddaman do echo "$sep==> $j <==" 6624*b30d1939SAndy Fiddaman sep=$nl 6625*b30d1939SAndy Fiddaman case $filter in 6626*b30d1939SAndy Fiddaman cat) $exec cat $j 6627*b30d1939SAndy Fiddaman ;; 6628*b30d1939SAndy Fiddaman errors) $exec egrep -i '\*\*\*|FAIL[ES]|^TEST.* [123456789][0123456789]* error|core.*dump' $j | sed -e '/^TEST.\//s,/[^ ]*/,,' 6629*b30d1939SAndy Fiddaman ;; 6630*b30d1939SAndy Fiddaman rt) $exec $KSH rt - $j 6631*b30d1939SAndy Fiddaman ;; 6632*b30d1939SAndy Fiddaman *) $exec egrep -i '^TEST|FAIL' $j 6633*b30d1939SAndy Fiddaman ;; 6634*b30d1939SAndy Fiddaman esac 6635*b30d1939SAndy Fiddaman done 6636*b30d1939SAndy Fiddaman ;; 6637*b30d1939SAndy Fiddaman 1) echo $t 6638*b30d1939SAndy Fiddaman ;; 6639*b30d1939SAndy Fiddaman esac 6640*b30d1939SAndy Fiddaman ;; 6641*b30d1939SAndy Fiddaman esac 6642*b30d1939SAndy Fiddaman case $m in 6643*b30d1939SAndy Fiddaman ?*) case $path in 6644*b30d1939SAndy Fiddaman 0) case $filter in 6645*b30d1939SAndy Fiddaman cat) cat $m 6646*b30d1939SAndy Fiddaman ;; 6647*b30d1939SAndy Fiddaman *) if test -f $HOME/.pkgresults 6648*b30d1939SAndy Fiddaman then i="`cat $HOME/.pkgresults`" 6649*b30d1939SAndy Fiddaman case $i in 6650*b30d1939SAndy Fiddaman '|'*) ;; 6651*b30d1939SAndy Fiddaman *) i="|$i" ;; 6652*b30d1939SAndy Fiddaman esac 6653*b30d1939SAndy Fiddaman else i= 6654*b30d1939SAndy Fiddaman fi 6655*b30d1939SAndy Fiddaman for j in $m 6656*b30d1939SAndy Fiddaman do echo "$sep==> $j <==" 6657*b30d1939SAndy Fiddaman sep=$nl 6658*b30d1939SAndy Fiddaman case $filter in 6659*b30d1939SAndy Fiddaman errors) $exeg egrep '^pax:|\*\*\*' $j 6660*b30d1939SAndy Fiddaman ;; 6661*b30d1939SAndy Fiddaman *) $exec egrep -iv '^($||[\+\[]|cc[^-:]|kill |make.*(file system time|has been replaced)|so|[0123456789]+ error|uncrate |[0123456789]+ block|ar: creat|iffe: test: |conf: (check|generate|test)|[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789]*=|gsf@research|ar:.*warning|cpio:|ld:.*(duplicate symbol|to obtain more information)|[0123456789]*$|(checking|creating|touch) [/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789])| obsolete predefined symbol | is (almost always misused|dangerous|deprecated|not implemented)| trigraph| assigned to | cast .* different size| integer overflow .*<<| optimization may be attained | passed as |::__builtin|pragma.*prototyped|^creating.*\.a$|warning.*not optimized|exceeds size thresh|ld:.*preempts|is unchanged|with value >=|(-l|lib)\*|/(ast|sys)/(dir|limits|param|stropts)\.h.*redefined|usage|base registers|`\.\.\.` obsolete'"$i" $j | 6662*b30d1939SAndy Fiddaman $exec grep : 6663*b30d1939SAndy Fiddaman ;; 6664*b30d1939SAndy Fiddaman esac 6665*b30d1939SAndy Fiddaman done 6666*b30d1939SAndy Fiddaman ;; 6667*b30d1939SAndy Fiddaman esac 6668*b30d1939SAndy Fiddaman ;; 6669*b30d1939SAndy Fiddaman 1) echo $m 6670*b30d1939SAndy Fiddaman ;; 6671*b30d1939SAndy Fiddaman esac 6672*b30d1939SAndy Fiddaman esac 6673*b30d1939SAndy Fiddaman ;; 6674*b30d1939SAndy Fiddaman 6675*b30d1939SAndy Fiddamantest) requirements source $package 6676*b30d1939SAndy Fiddaman components $package 6677*b30d1939SAndy Fiddaman package=$_components_ 6678*b30d1939SAndy Fiddaman case $only in 6679*b30d1939SAndy Fiddaman 0) only= ;; 6680*b30d1939SAndy Fiddaman 1) only=--recurse=only ;; 6681*b30d1939SAndy Fiddaman esac 6682*b30d1939SAndy Fiddaman 6683*b30d1939SAndy Fiddaman # must have nmake 6684*b30d1939SAndy Fiddaman 6685*b30d1939SAndy Fiddaman if nonmake $MAKE 6686*b30d1939SAndy Fiddaman then echo $command: $action: must have $MAKE to test >&2 6687*b30d1939SAndy Fiddaman exit 1 6688*b30d1939SAndy Fiddaman fi 6689*b30d1939SAndy Fiddaman 6690*b30d1939SAndy Fiddaman # all work under $INSTALLROOT/src 6691*b30d1939SAndy Fiddaman 6692*b30d1939SAndy Fiddaman $make cd $INSTALLROOT/src 6693*b30d1939SAndy Fiddaman 6694*b30d1939SAndy Fiddaman # disable core dumps (could be disasterous over nfs) 6695*b30d1939SAndy Fiddaman 6696*b30d1939SAndy Fiddaman (ulimit -c 0) > /dev/null 2>&1 && ulimit -c 0 6697*b30d1939SAndy Fiddaman 6698*b30d1939SAndy Fiddaman # do the tests 6699*b30d1939SAndy Fiddaman 6700*b30d1939SAndy Fiddaman eval capture \$MAKE \$makeflags \$noexec \$only recurse test \$target \$nmakesep \$package $assign 6701*b30d1939SAndy Fiddaman ;; 6702*b30d1939SAndy Fiddaman 6703*b30d1939SAndy Fiddamanupdate) # download the latest release.version for selected packages 6704*b30d1939SAndy Fiddaman 6705*b30d1939SAndy Fiddaman # all work in $PACKAGEROOT/lib/package/tgz 6706*b30d1939SAndy Fiddaman 6707*b30d1939SAndy Fiddaman if test ! -d $PACKAGEROOT/lib/package/tgz 6708*b30d1939SAndy Fiddaman then $exec mkdir -p $PACKAGEROOT/lib/package/tgz || exit 6709*b30d1939SAndy Fiddaman $exec cd $PACKAGEROOT/lib/package/tgz 6710*b30d1939SAndy Fiddaman else cd $PACKAGEROOT/lib/package/tgz 6711*b30d1939SAndy Fiddaman fi 6712*b30d1939SAndy Fiddaman 6713*b30d1939SAndy Fiddaman # get the architectures, update query url, and packages 6714*b30d1939SAndy Fiddaman 6715*b30d1939SAndy Fiddaman set '' $args 6716*b30d1939SAndy Fiddaman op=update 6717*b30d1939SAndy Fiddaman tgz=tgz 6718*b30d1939SAndy Fiddaman source= 6719*b30d1939SAndy Fiddaman binary= 6720*b30d1939SAndy Fiddaman setup= 6721*b30d1939SAndy Fiddaman types= 6722*b30d1939SAndy Fiddaman url= 6723*b30d1939SAndy Fiddaman urlfile=$default_url 6724*b30d1939SAndy Fiddaman while : 6725*b30d1939SAndy Fiddaman do shift 6726*b30d1939SAndy Fiddaman case $# in 6727*b30d1939SAndy Fiddaman 0) break ;; 6728*b30d1939SAndy Fiddaman esac 6729*b30d1939SAndy Fiddaman case $1 in 6730*b30d1939SAndy Fiddaman --) shift 6731*b30d1939SAndy Fiddaman break 6732*b30d1939SAndy Fiddaman ;; 6733*b30d1939SAndy Fiddaman beta) op=beta 6734*b30d1939SAndy Fiddaman tgz=beta 6735*b30d1939SAndy Fiddaman ;; 6736*b30d1939SAndy Fiddaman binary) binary=1 6737*b30d1939SAndy Fiddaman ;; 6738*b30d1939SAndy Fiddaman setup) setup=1 6739*b30d1939SAndy Fiddaman ;; 6740*b30d1939SAndy Fiddaman source) source=1 6741*b30d1939SAndy Fiddaman ;; 6742*b30d1939SAndy Fiddaman *://*) url=$1 6743*b30d1939SAndy Fiddaman shift 6744*b30d1939SAndy Fiddaman break 6745*b30d1939SAndy Fiddaman ;; 6746*b30d1939SAndy Fiddaman *.url) urlfile=$1 6747*b30d1939SAndy Fiddaman if test ! -s $urlfile 6748*b30d1939SAndy Fiddaman then echo $command: $urlfile: not found >&2; exit 1 6749*b30d1939SAndy Fiddaman fi 6750*b30d1939SAndy Fiddaman break 6751*b30d1939SAndy Fiddaman ;; 6752*b30d1939SAndy Fiddaman $all_types) 6753*b30d1939SAndy Fiddaman binary=1 6754*b30d1939SAndy Fiddaman types="$types $1" 6755*b30d1939SAndy Fiddaman ;; 6756*b30d1939SAndy Fiddaman *) break 6757*b30d1939SAndy Fiddaman ;; 6758*b30d1939SAndy Fiddaman esac 6759*b30d1939SAndy Fiddaman done 6760*b30d1939SAndy Fiddaman case $source:$binary in 6761*b30d1939SAndy Fiddaman :) source=1 binary=1 6762*b30d1939SAndy Fiddaman ;; 6763*b30d1939SAndy Fiddaman :1) case $types in 6764*b30d1939SAndy Fiddaman '') types=$HOSTTYPE ;; 6765*b30d1939SAndy Fiddaman esac 6766*b30d1939SAndy Fiddaman ;; 6767*b30d1939SAndy Fiddaman esac 6768*b30d1939SAndy Fiddaman case $url in 6769*b30d1939SAndy Fiddaman '') case $urlfile in 6770*b30d1939SAndy Fiddaman $default_url) 6771*b30d1939SAndy Fiddaman if test ! -s $urlfile 6772*b30d1939SAndy Fiddaman then echo $command: url argument expected >&2; exit 1 6773*b30d1939SAndy Fiddaman fi 6774*b30d1939SAndy Fiddaman ;; 6775*b30d1939SAndy Fiddaman *) default_url= 6776*b30d1939SAndy Fiddaman ;; 6777*b30d1939SAndy Fiddaman esac 6778*b30d1939SAndy Fiddaman url= 6779*b30d1939SAndy Fiddaman if grep '^url=' $urlfile >/dev/null 6780*b30d1939SAndy Fiddaman then a=$authorize 6781*b30d1939SAndy Fiddaman p=$password 6782*b30d1939SAndy Fiddaman case $urlfile in 6783*b30d1939SAndy Fiddaman */*) ;; 6784*b30d1939SAndy Fiddaman *) urlfile=./$urlfile ;; 6785*b30d1939SAndy Fiddaman esac 6786*b30d1939SAndy Fiddaman . $urlfile 6787*b30d1939SAndy Fiddaman case $a:$p in 6788*b30d1939SAndy Fiddaman $authorize:$password) 6789*b30d1939SAndy Fiddaman default_url= 6790*b30d1939SAndy Fiddaman ;; 6791*b30d1939SAndy Fiddaman *) case $a in 6792*b30d1939SAndy Fiddaman ?*) authorize=$a ;; 6793*b30d1939SAndy Fiddaman esac 6794*b30d1939SAndy Fiddaman case $p in 6795*b30d1939SAndy Fiddaman ?*) password=$p ;; 6796*b30d1939SAndy Fiddaman esac 6797*b30d1939SAndy Fiddaman ;; 6798*b30d1939SAndy Fiddaman esac 6799*b30d1939SAndy Fiddaman else url=`cat $urlfile` 6800*b30d1939SAndy Fiddaman fi 6801*b30d1939SAndy Fiddaman ;; 6802*b30d1939SAndy Fiddaman esac 6803*b30d1939SAndy Fiddaman case $exec in 6804*b30d1939SAndy Fiddaman ?*) default_url= ;; 6805*b30d1939SAndy Fiddaman esac 6806*b30d1939SAndy Fiddaman 6807*b30d1939SAndy Fiddaman # get the update list 6808*b30d1939SAndy Fiddaman 6809*b30d1939SAndy Fiddaman eval `echo $url | sed 's,\(.*\)://\([^/]*\)/\(.*\),prot=\"\1\" host=\"\2\" dir=\"\3\",'` 6810*b30d1939SAndy Fiddaman get $host $dir/$op.html 6811*b30d1939SAndy Fiddaman 6812*b30d1939SAndy Fiddaman # get/check the package names 6813*b30d1939SAndy Fiddaman 6814*b30d1939SAndy Fiddaman case " $* " in 6815*b30d1939SAndy Fiddaman *" - "*)case $source in 6816*b30d1939SAndy Fiddaman 1) source_packages=$* ;; 6817*b30d1939SAndy Fiddaman *) source_packages= ;; 6818*b30d1939SAndy Fiddaman esac 6819*b30d1939SAndy Fiddaman case $binary in 6820*b30d1939SAndy Fiddaman 1) binary_packages=$* ;; 6821*b30d1939SAndy Fiddaman *) binary_packages= ;; 6822*b30d1939SAndy Fiddaman esac 6823*b30d1939SAndy Fiddaman package_hit=$* 6824*b30d1939SAndy Fiddaman ;; 6825*b30d1939SAndy Fiddaman " ") nl=" 6826*b30d1939SAndy Fiddaman" 6827*b30d1939SAndy Fiddaman case $source in 6828*b30d1939SAndy Fiddaman 1) p= 6829*b30d1939SAndy Fiddaman for f in `ls *.????-??-??.* 2>/dev/null` 6830*b30d1939SAndy Fiddaman do case $f in 6831*b30d1939SAndy Fiddaman *.????-??-??.????-??-??.*.*) 6832*b30d1939SAndy Fiddaman ;; 6833*b30d1939SAndy Fiddaman *.????-??-??.????-??-??.*) 6834*b30d1939SAndy Fiddaman p=$p$nl$f 6835*b30d1939SAndy Fiddaman ;; 6836*b30d1939SAndy Fiddaman *.????-??-??.*.*) 6837*b30d1939SAndy Fiddaman ;; 6838*b30d1939SAndy Fiddaman *.????-??-??.*) 6839*b30d1939SAndy Fiddaman p=$p$nl$f 6840*b30d1939SAndy Fiddaman ;; 6841*b30d1939SAndy Fiddaman esac 6842*b30d1939SAndy Fiddaman done 6843*b30d1939SAndy Fiddaman set '' `echo "$p" | sed 's,\..*,,' | sort -u` 6844*b30d1939SAndy Fiddaman shift 6845*b30d1939SAndy Fiddaman source_packages=$* 6846*b30d1939SAndy Fiddaman ;; 6847*b30d1939SAndy Fiddaman *) source_packages= 6848*b30d1939SAndy Fiddaman ;; 6849*b30d1939SAndy Fiddaman esac 6850*b30d1939SAndy Fiddaman case $binary in 6851*b30d1939SAndy Fiddaman 1) p= 6852*b30d1939SAndy Fiddaman for f in `ls *.????-??-??.* 2>/dev/null` 6853*b30d1939SAndy Fiddaman do case $f in 6854*b30d1939SAndy Fiddaman *.????-??-??.????-??-??.*.*) 6855*b30d1939SAndy Fiddaman p=$p$nl$f 6856*b30d1939SAndy Fiddaman ;; 6857*b30d1939SAndy Fiddaman *.????-??-??.????-??-??.*) 6858*b30d1939SAndy Fiddaman ;; 6859*b30d1939SAndy Fiddaman *.????-??-??.*.*) 6860*b30d1939SAndy Fiddaman p=$p$nl$f 6861*b30d1939SAndy Fiddaman ;; 6862*b30d1939SAndy Fiddaman *.????-??-??.*) 6863*b30d1939SAndy Fiddaman ;; 6864*b30d1939SAndy Fiddaman esac 6865*b30d1939SAndy Fiddaman done 6866*b30d1939SAndy Fiddaman set '' `echo "$p" | sed 's,\..*,,' | sort -u` 6867*b30d1939SAndy Fiddaman shift 6868*b30d1939SAndy Fiddaman binary_packages=$* 6869*b30d1939SAndy Fiddaman ;; 6870*b30d1939SAndy Fiddaman *) binary_packages= 6871*b30d1939SAndy Fiddaman ;; 6872*b30d1939SAndy Fiddaman esac 6873*b30d1939SAndy Fiddaman package_hit="$source_packages $binary_packages" 6874*b30d1939SAndy Fiddaman ;; 6875*b30d1939SAndy Fiddaman *) case $source in 6876*b30d1939SAndy Fiddaman 1) source_packages=$* ;; 6877*b30d1939SAndy Fiddaman *) source_packages= ;; 6878*b30d1939SAndy Fiddaman esac 6879*b30d1939SAndy Fiddaman case $binary in 6880*b30d1939SAndy Fiddaman 1) binary_packages=$* ;; 6881*b30d1939SAndy Fiddaman *) binary_packages= ;; 6882*b30d1939SAndy Fiddaman esac 6883*b30d1939SAndy Fiddaman package_hit= 6884*b30d1939SAndy Fiddaman ;; 6885*b30d1939SAndy Fiddaman esac 6886*b30d1939SAndy Fiddaman 6887*b30d1939SAndy Fiddaman # get the latest updates 6888*b30d1939SAndy Fiddaman 6889*b30d1939SAndy Fiddaman types_test= 6890*b30d1939SAndy Fiddaman types_local= 6891*b30d1939SAndy Fiddaman dir=$dir/$tgz 6892*b30d1939SAndy Fiddaman case $default_url in 6893*b30d1939SAndy Fiddaman ?*) echo "url='$url' authorize='$authorize' password='$password'" > $default_url 6894*b30d1939SAndy Fiddaman case $authorize in 6895*b30d1939SAndy Fiddaman ?*) chmod go-rwx $default_url ;; 6896*b30d1939SAndy Fiddaman esac 6897*b30d1939SAndy Fiddaman ;; 6898*b30d1939SAndy Fiddaman esac 6899*b30d1939SAndy Fiddaman echo "$got" > got.tmp 6900*b30d1939SAndy Fiddaman case $only in 6901*b30d1939SAndy Fiddaman 0) exec < got.tmp 6902*b30d1939SAndy Fiddaman covered= 6903*b30d1939SAndy Fiddaman while read name suffix type base base_size delta delta_size sync sync_size requires covers base_sum delta_sum sync_sum comment 6904*b30d1939SAndy Fiddaman do case $requires in 6905*b30d1939SAndy Fiddaman ''|-*) continue ;; 6906*b30d1939SAndy Fiddaman esac 6907*b30d1939SAndy Fiddaman IFS=: 6908*b30d1939SAndy Fiddaman set '' $requires 6909*b30d1939SAndy Fiddaman IFS=$ifs 6910*b30d1939SAndy Fiddaman case $type in 6911*b30d1939SAndy Fiddaman -) case " $source_packages " in 6912*b30d1939SAndy Fiddaman *" $name "*|*" - "*) 6913*b30d1939SAndy Fiddaman for name 6914*b30d1939SAndy Fiddaman do case " $source_packages " in 6915*b30d1939SAndy Fiddaman *" $name "*) 6916*b30d1939SAndy Fiddaman ;; 6917*b30d1939SAndy Fiddaman *) source_packages="$source_packages $name" 6918*b30d1939SAndy Fiddaman covered=$covered:$covers 6919*b30d1939SAndy Fiddaman ;; 6920*b30d1939SAndy Fiddaman esac 6921*b30d1939SAndy Fiddaman done 6922*b30d1939SAndy Fiddaman ;; 6923*b30d1939SAndy Fiddaman esac 6924*b30d1939SAndy Fiddaman ;; 6925*b30d1939SAndy Fiddaman *) case " $binary_packages " in 6926*b30d1939SAndy Fiddaman *" $name "*|*" - "*) 6927*b30d1939SAndy Fiddaman for name 6928*b30d1939SAndy Fiddaman do case " $binary_packages " in 6929*b30d1939SAndy Fiddaman *" $name "*) 6930*b30d1939SAndy Fiddaman ;; 6931*b30d1939SAndy Fiddaman *) binary_packages="$binary_packages $name" 6932*b30d1939SAndy Fiddaman covered=$covered:$covers 6933*b30d1939SAndy Fiddaman ;; 6934*b30d1939SAndy Fiddaman esac 6935*b30d1939SAndy Fiddaman done 6936*b30d1939SAndy Fiddaman ;; 6937*b30d1939SAndy Fiddaman esac 6938*b30d1939SAndy Fiddaman ;; 6939*b30d1939SAndy Fiddaman esac 6940*b30d1939SAndy Fiddaman done 6941*b30d1939SAndy Fiddaman case $covered in 6942*b30d1939SAndy Fiddaman ?*) x=$source_packages 6943*b30d1939SAndy Fiddaman source_packages= 6944*b30d1939SAndy Fiddaman for name in $x 6945*b30d1939SAndy Fiddaman do case :$covered: in 6946*b30d1939SAndy Fiddaman *:$name:*) ;; 6947*b30d1939SAndy Fiddaman *) source_packages="$source_packages $name" ;; 6948*b30d1939SAndy Fiddaman esac 6949*b30d1939SAndy Fiddaman done 6950*b30d1939SAndy Fiddaman x=$binary_packages 6951*b30d1939SAndy Fiddaman binary_packages= 6952*b30d1939SAndy Fiddaman for name in $x 6953*b30d1939SAndy Fiddaman do case :$covered: in 6954*b30d1939SAndy Fiddaman *:$name:*) ;; 6955*b30d1939SAndy Fiddaman *) binary_packages="$binary_packages $name" ;; 6956*b30d1939SAndy Fiddaman esac 6957*b30d1939SAndy Fiddaman done 6958*b30d1939SAndy Fiddaman ;; 6959*b30d1939SAndy Fiddaman esac 6960*b30d1939SAndy Fiddaman ;; 6961*b30d1939SAndy Fiddaman esac 6962*b30d1939SAndy Fiddaman checksum= 6963*b30d1939SAndy Fiddaman for i in $checksum_commands 6964*b30d1939SAndy Fiddaman do case `( $i ) < /dev/null 2> /dev/null` in 6965*b30d1939SAndy Fiddaman ${checksum_empty}|${checksum_empty}[\ \ ]*) 6966*b30d1939SAndy Fiddaman checksum=$i 6967*b30d1939SAndy Fiddaman break 6968*b30d1939SAndy Fiddaman ;; 6969*b30d1939SAndy Fiddaman esac 6970*b30d1939SAndy Fiddaman done 6971*b30d1939SAndy Fiddaman case $checksum in 6972*b30d1939SAndy Fiddaman '') echo $command: warning: '{' $checksum_commands '}' command not found -- only download sizes will be checked >&2 ;; 6973*b30d1939SAndy Fiddaman esac 6974*b30d1939SAndy Fiddaman exec < got.tmp 6975*b30d1939SAndy Fiddaman while read name suffix type base base_size delta delta_size sync sync_size requires covers base_sum delta_sum sync_sum comment 6976*b30d1939SAndy Fiddaman do case $verbose in 6977*b30d1939SAndy Fiddaman 1) case $type in 6978*b30d1939SAndy Fiddaman -) i= ;; 6979*b30d1939SAndy Fiddaman *) i=.$type ;; 6980*b30d1939SAndy Fiddaman esac 6981*b30d1939SAndy Fiddaman j="$name.$base$i.$suffix" 6982*b30d1939SAndy Fiddaman case $delta in 6983*b30d1939SAndy Fiddaman -) j="$j -" ;; 6984*b30d1939SAndy Fiddaman *) j="$j $name.$base.$delta$i.$suffix" ;; 6985*b30d1939SAndy Fiddaman esac 6986*b30d1939SAndy Fiddaman case $sync in 6987*b30d1939SAndy Fiddaman -) j="$j -" ;; 6988*b30d1939SAndy Fiddaman *) j="$j $name.$base.$sync$i.$suffix" ;; 6989*b30d1939SAndy Fiddaman esac 6990*b30d1939SAndy Fiddaman echo $command: $j $base_size:$base_sum $delta_size:$delta_sum $sync_size:$sync_sum $requires >&2 6991*b30d1939SAndy Fiddaman esac 6992*b30d1939SAndy Fiddaman case " $package_hit " in 6993*b30d1939SAndy Fiddaman *" $name "*|*" - "*) 6994*b30d1939SAndy Fiddaman ;; 6995*b30d1939SAndy Fiddaman *) package_hit="$package_hit $name" 6996*b30d1939SAndy Fiddaman ;; 6997*b30d1939SAndy Fiddaman esac 6998*b30d1939SAndy Fiddaman case $type in 6999*b30d1939SAndy Fiddaman -) case " $source_packages " in 7000*b30d1939SAndy Fiddaman *" $name "*|*" - "*) 7001*b30d1939SAndy Fiddaman if test -s $name.tim 7002*b30d1939SAndy Fiddaman then continue 7003*b30d1939SAndy Fiddaman fi 7004*b30d1939SAndy Fiddaman lcl=$name.$base.$suffix 7005*b30d1939SAndy Fiddaman if test -f $lcl 7006*b30d1939SAndy Fiddaman then case $checksum:$base_sum in 7007*b30d1939SAndy Fiddaman :*|*:-) size=`wc -c < $lcl | sed 's, ,,g'` sum=$base_sum ;; 7008*b30d1939SAndy Fiddaman *) size=$base_size sum=`$checksum < $lcl | sed -e 's,^[ ][ ]*,,' -e 's,[ ].*,,'` ;; 7009*b30d1939SAndy Fiddaman esac 7010*b30d1939SAndy Fiddaman else size=X sum=X 7011*b30d1939SAndy Fiddaman fi 7012*b30d1939SAndy Fiddaman if test "0" != "$force" -a "X-" = "X$delta" -o "$base_size" != "$size" -o "$base_sum" != "$sum" 7013*b30d1939SAndy Fiddaman then rmt= 7014*b30d1939SAndy Fiddaman case $sync:$sync_size in 7015*b30d1939SAndy Fiddaman -*|*[-:]) 7016*b30d1939SAndy Fiddaman ;; 7017*b30d1939SAndy Fiddaman *) lcl=$name.$base.$sync.$suffix 7018*b30d1939SAndy Fiddaman if test -f $lcl 7019*b30d1939SAndy Fiddaman then rmt=1 7020*b30d1939SAndy Fiddaman get $host $dir $lcl $sync_size $sync_sum 7021*b30d1939SAndy Fiddaman fi 7022*b30d1939SAndy Fiddaman ;; 7023*b30d1939SAndy Fiddaman esac 7024*b30d1939SAndy Fiddaman case $base:$base_size in 7025*b30d1939SAndy Fiddaman -*|*[-:]) 7026*b30d1939SAndy Fiddaman ;; 7027*b30d1939SAndy Fiddaman *) case $rmt in 7028*b30d1939SAndy Fiddaman '') lcl=$name.$base.$suffix 7029*b30d1939SAndy Fiddaman get $host $dir $lcl $base_size $base_sum 7030*b30d1939SAndy Fiddaman ;; 7031*b30d1939SAndy Fiddaman esac 7032*b30d1939SAndy Fiddaman ;; 7033*b30d1939SAndy Fiddaman esac 7034*b30d1939SAndy Fiddaman fi 7035*b30d1939SAndy Fiddaman case $delta:$delta_size in 7036*b30d1939SAndy Fiddaman -*|*[-:]) 7037*b30d1939SAndy Fiddaman ;; 7038*b30d1939SAndy Fiddaman *) lcl=$name.$delta.$base.$suffix 7039*b30d1939SAndy Fiddaman if test -f $lcl 7040*b30d1939SAndy Fiddaman then case $checksum:$delta_sum in 7041*b30d1939SAndy Fiddaman :*|*:-) size=`wc -c < $lcl | sed 's, ,,g'` sum=$delta_sum ;; 7042*b30d1939SAndy Fiddaman *) size=$base_size sum=`$checksum < $lcl | sed -e 's,^[ ][ ]*,,' -e 's,[ ].*,,'` ;; 7043*b30d1939SAndy Fiddaman esac 7044*b30d1939SAndy Fiddaman else size=X sum=X 7045*b30d1939SAndy Fiddaman fi 7046*b30d1939SAndy Fiddaman if test "0" != "$force" -o "$delta_size" != "$size" -o "$delta_sum" != "$sum" 7047*b30d1939SAndy Fiddaman then get $host $dir $lcl $delta_size $delta_sum 7048*b30d1939SAndy Fiddaman fi 7049*b30d1939SAndy Fiddaman ;; 7050*b30d1939SAndy Fiddaman esac 7051*b30d1939SAndy Fiddaman ;; 7052*b30d1939SAndy Fiddaman esac 7053*b30d1939SAndy Fiddaman ;; 7054*b30d1939SAndy Fiddaman *) case " $binary_packages " in 7055*b30d1939SAndy Fiddaman *" $name "*|*" - "*) 7056*b30d1939SAndy Fiddaman if test -s $name.$type.tim 7057*b30d1939SAndy Fiddaman then continue 7058*b30d1939SAndy Fiddaman fi 7059*b30d1939SAndy Fiddaman case " $types " in 7060*b30d1939SAndy Fiddaman *" - "*);; 7061*b30d1939SAndy Fiddaman " ") case " $types_test " in 7062*b30d1939SAndy Fiddaman *" $type "*) 7063*b30d1939SAndy Fiddaman ;; 7064*b30d1939SAndy Fiddaman *) types_test="$types_test $type" 7065*b30d1939SAndy Fiddaman for i in *.????-??-??.$type.* *.????-??-??.????-??-??.$type.* 7066*b30d1939SAndy Fiddaman do if test -f $i 7067*b30d1939SAndy Fiddaman then types_local="$types_local $type" 7068*b30d1939SAndy Fiddaman fi 7069*b30d1939SAndy Fiddaman break 7070*b30d1939SAndy Fiddaman done 7071*b30d1939SAndy Fiddaman ;; 7072*b30d1939SAndy Fiddaman esac 7073*b30d1939SAndy Fiddaman case " $types_local " in 7074*b30d1939SAndy Fiddaman *" $type "*) 7075*b30d1939SAndy Fiddaman ;; 7076*b30d1939SAndy Fiddaman *) continue 7077*b30d1939SAndy Fiddaman ;; 7078*b30d1939SAndy Fiddaman esac 7079*b30d1939SAndy Fiddaman ;; 7080*b30d1939SAndy Fiddaman *) case " $types " in 7081*b30d1939SAndy Fiddaman *" $type "*) 7082*b30d1939SAndy Fiddaman ;; 7083*b30d1939SAndy Fiddaman *) continue 7084*b30d1939SAndy Fiddaman ;; 7085*b30d1939SAndy Fiddaman esac 7086*b30d1939SAndy Fiddaman ;; 7087*b30d1939SAndy Fiddaman esac 7088*b30d1939SAndy Fiddaman lcl=$name.$base.$type.$suffix 7089*b30d1939SAndy Fiddaman if test -f $lcl 7090*b30d1939SAndy Fiddaman then case $checksum:$base_sum in 7091*b30d1939SAndy Fiddaman :*|*:-) size=`wc -c < $lcl | sed 's, ,,g'` sum=$base_sum ;; 7092*b30d1939SAndy Fiddaman *) size=$base_size sum=`$checksum < $lcl | sed -e 's,^[ ][ ]*,,' -e 's,[ ].*,,'` ;; 7093*b30d1939SAndy Fiddaman esac 7094*b30d1939SAndy Fiddaman else size=X sum=X 7095*b30d1939SAndy Fiddaman fi 7096*b30d1939SAndy Fiddaman if test "0" != "$force" -a "X-" = "X$delta" -o "$base_size" != "$size" -o "$base_sum" != "$sum" 7097*b30d1939SAndy Fiddaman then rmt= 7098*b30d1939SAndy Fiddaman case $sync:$sync_size in 7099*b30d1939SAndy Fiddaman -*|*[-:]) 7100*b30d1939SAndy Fiddaman ;; 7101*b30d1939SAndy Fiddaman *) lcl=$name.$base.$sync.$type.$suffix 7102*b30d1939SAndy Fiddaman if test -f $lcl 7103*b30d1939SAndy Fiddaman then rmt=1 7104*b30d1939SAndy Fiddaman get $host $dir $lcl $sync_size $sync_sum 7105*b30d1939SAndy Fiddaman fi 7106*b30d1939SAndy Fiddaman ;; 7107*b30d1939SAndy Fiddaman esac 7108*b30d1939SAndy Fiddaman case $base:$base_size in 7109*b30d1939SAndy Fiddaman -*|*[-:]) 7110*b30d1939SAndy Fiddaman ;; 7111*b30d1939SAndy Fiddaman *) case $rmt in 7112*b30d1939SAndy Fiddaman '') lcl=$name.$base.$type.$suffix 7113*b30d1939SAndy Fiddaman get $host $dir $lcl $base_size $base_sum 7114*b30d1939SAndy Fiddaman ;; 7115*b30d1939SAndy Fiddaman esac 7116*b30d1939SAndy Fiddaman ;; 7117*b30d1939SAndy Fiddaman esac 7118*b30d1939SAndy Fiddaman fi 7119*b30d1939SAndy Fiddaman case $delta:$delta_size in 7120*b30d1939SAndy Fiddaman -*|*[-:]) 7121*b30d1939SAndy Fiddaman ;; 7122*b30d1939SAndy Fiddaman *) lcl=$name.$delta.$base.$type.$suffix 7123*b30d1939SAndy Fiddaman if test -f $lcl 7124*b30d1939SAndy Fiddaman then sum=`$checksum < $lcl | sed -e 's,^[ ][ ]*,,' -e 's,[ ].*,,'` 7125*b30d1939SAndy Fiddaman else sum=X 7126*b30d1939SAndy Fiddaman fi 7127*b30d1939SAndy Fiddaman if test -f $lcl 7128*b30d1939SAndy Fiddaman then case $checksum:$delta_sum in 7129*b30d1939SAndy Fiddaman :*|*:-) size=`wc -c < $lcl | sed 's, ,,g'` sum=$delta_sum ;; 7130*b30d1939SAndy Fiddaman *) size=$base_size sum=`$checksum < $lcl | sed -e 's,^[ ][ ]*,,' -e 's,[ ].*,,'` ;; 7131*b30d1939SAndy Fiddaman esac 7132*b30d1939SAndy Fiddaman else size=X sum=X 7133*b30d1939SAndy Fiddaman fi 7134*b30d1939SAndy Fiddaman if test "0" != "$force" -o "$delta_size" != "$size" -o "$delta_sum" != "$sum" 7135*b30d1939SAndy Fiddaman then get $host $dir $lcl $delta_size $delta_sum 7136*b30d1939SAndy Fiddaman fi 7137*b30d1939SAndy Fiddaman ;; 7138*b30d1939SAndy Fiddaman esac 7139*b30d1939SAndy Fiddaman ;; 7140*b30d1939SAndy Fiddaman esac 7141*b30d1939SAndy Fiddaman ;; 7142*b30d1939SAndy Fiddaman esac 7143*b30d1939SAndy Fiddaman done 7144*b30d1939SAndy Fiddaman closure= 7145*b30d1939SAndy Fiddaman for name in $source_packages $binary_packages 7146*b30d1939SAndy Fiddaman do case $name in 7147*b30d1939SAndy Fiddaman -) ;; 7148*b30d1939SAndy Fiddaman *) case " $package_hit " in 7149*b30d1939SAndy Fiddaman *" $name "*) 7150*b30d1939SAndy Fiddaman case $setup in 7151*b30d1939SAndy Fiddaman 1) case " $closure " in 7152*b30d1939SAndy Fiddaman *" $name "*) 7153*b30d1939SAndy Fiddaman ;; 7154*b30d1939SAndy Fiddaman *) closure="$closure $name" 7155*b30d1939SAndy Fiddaman ;; 7156*b30d1939SAndy Fiddaman esac 7157*b30d1939SAndy Fiddaman ;; 7158*b30d1939SAndy Fiddaman esac 7159*b30d1939SAndy Fiddaman ;; 7160*b30d1939SAndy Fiddaman *) echo $command: $name: unknown package >&2 7161*b30d1939SAndy Fiddaman ;; 7162*b30d1939SAndy Fiddaman esac 7163*b30d1939SAndy Fiddaman ;; 7164*b30d1939SAndy Fiddaman esac 7165*b30d1939SAndy Fiddaman done 7166*b30d1939SAndy Fiddaman exec <&- 7167*b30d1939SAndy Fiddaman rm -f got.tmp 7168*b30d1939SAndy Fiddaman case $closure in 7169*b30d1939SAndy Fiddaman ?*) echo $closure ;; 7170*b30d1939SAndy Fiddaman esac 7171*b30d1939SAndy Fiddaman ;; 7172*b30d1939SAndy Fiddaman 7173*b30d1939SAndy Fiddamanuse) # finalize the environment 7174*b30d1939SAndy Fiddaman 7175*b30d1939SAndy Fiddaman x=:.. 7176*b30d1939SAndy Fiddaman for d in `( cd $PACKAGEROOT; ls src/*/Makefile src/*/Nmakefile 2>/dev/null | sed 's,/[^/]*$,,' | sort -u )` 7177*b30d1939SAndy Fiddaman do x=$x:$INSTALLROOT/$d 7178*b30d1939SAndy Fiddaman done 7179*b30d1939SAndy Fiddaman x=$x:$INSTALLROOT 7180*b30d1939SAndy Fiddaman case $CDPATH: in 7181*b30d1939SAndy Fiddaman $x:*) ;; 7182*b30d1939SAndy Fiddaman *) CDPATH=$x:$CDPATH 7183*b30d1939SAndy Fiddaman $show CDPATH=$CDPATH 7184*b30d1939SAndy Fiddaman $show export CDPATH 7185*b30d1939SAndy Fiddaman export CDPATH 7186*b30d1939SAndy Fiddaman ;; 7187*b30d1939SAndy Fiddaman esac 7188*b30d1939SAndy Fiddaman P=$PACKAGEROOT 7189*b30d1939SAndy Fiddaman $show P=$P 7190*b30d1939SAndy Fiddaman $show export P 7191*b30d1939SAndy Fiddaman export P 7192*b30d1939SAndy Fiddaman A=$INSTALLROOT 7193*b30d1939SAndy Fiddaman $show A=$A 7194*b30d1939SAndy Fiddaman $show export A 7195*b30d1939SAndy Fiddaman export A 7196*b30d1939SAndy Fiddaman case $NPROC in 7197*b30d1939SAndy Fiddaman '') hostinfo cpu 7198*b30d1939SAndy Fiddaman case $_hostinfo_ in 7199*b30d1939SAndy Fiddaman 0|1) ;; 7200*b30d1939SAndy Fiddaman *) NPROC=$_hostinfo_ 7201*b30d1939SAndy Fiddaman $show NPROC=$NPROC 7202*b30d1939SAndy Fiddaman $show export NPROC 7203*b30d1939SAndy Fiddaman export NPROC 7204*b30d1939SAndy Fiddaman ;; 7205*b30d1939SAndy Fiddaman esac 7206*b30d1939SAndy Fiddaman ;; 7207*b30d1939SAndy Fiddaman esac 7208*b30d1939SAndy Fiddaman eval PACKAGE_USE=$package_use 7209*b30d1939SAndy Fiddaman export PACKAGE_USE 7210*b30d1939SAndy Fiddaman 7211*b30d1939SAndy Fiddaman # run the command 7212*b30d1939SAndy Fiddaman 7213*b30d1939SAndy Fiddaman case $run in 7214*b30d1939SAndy Fiddaman '') case $show in 7215*b30d1939SAndy Fiddaman ':') $exec exec $SHELL ;; 7216*b30d1939SAndy Fiddaman esac 7217*b30d1939SAndy Fiddaman ;; 7218*b30d1939SAndy Fiddaman *) $exec exec $SHELL -c "$run" 7219*b30d1939SAndy Fiddaman ;; 7220*b30d1939SAndy Fiddaman esac 7221*b30d1939SAndy Fiddaman ;; 7222*b30d1939SAndy Fiddaman 7223*b30d1939SAndy Fiddamanverify) cd $PACKAGEROOT 7224*b30d1939SAndy Fiddaman requirements binary $package 7225*b30d1939SAndy Fiddaman if executable ! $SUM 7226*b30d1939SAndy Fiddaman then echo "$command: $action: $SUM command required" >&2 7227*b30d1939SAndy Fiddaman exit 1 7228*b30d1939SAndy Fiddaman fi 7229*b30d1939SAndy Fiddaman case $target in 7230*b30d1939SAndy Fiddaman '') cd arch 7231*b30d1939SAndy Fiddaman set '' * 7232*b30d1939SAndy Fiddaman shift 7233*b30d1939SAndy Fiddaman target=$* 7234*b30d1939SAndy Fiddaman cd .. 7235*b30d1939SAndy Fiddaman ;; 7236*b30d1939SAndy Fiddaman esac 7237*b30d1939SAndy Fiddaman code=0 7238*b30d1939SAndy Fiddaman for a in $target 7239*b30d1939SAndy Fiddaman do case $package in 7240*b30d1939SAndy Fiddaman '') set '' arch/$a/lib/package/gen/*.sum 7241*b30d1939SAndy Fiddaman shift 7242*b30d1939SAndy Fiddaman if test -f $1 7243*b30d1939SAndy Fiddaman then for i 7244*b30d1939SAndy Fiddaman do package_verify $i || code=1 7245*b30d1939SAndy Fiddaman done 7246*b30d1939SAndy Fiddaman else echo "$command: warning: $a: no binary packages" >&2 7247*b30d1939SAndy Fiddaman fi 7248*b30d1939SAndy Fiddaman ;; 7249*b30d1939SAndy Fiddaman *) for i in $package 7250*b30d1939SAndy Fiddaman do if test -f arch/$a/lib/package/gen/$i.sum 7251*b30d1939SAndy Fiddaman then package_verify arch/$a/lib/package/gen/$i.sum || code=1 7252*b30d1939SAndy Fiddaman else echo "$command: warning: $a: no binary package for $i" >&2 7253*b30d1939SAndy Fiddaman fi 7254*b30d1939SAndy Fiddaman done 7255*b30d1939SAndy Fiddaman ;; 7256*b30d1939SAndy Fiddaman esac 7257*b30d1939SAndy Fiddaman done 7258*b30d1939SAndy Fiddaman exit $code 7259*b30d1939SAndy Fiddaman ;; 7260*b30d1939SAndy Fiddaman 7261*b30d1939SAndy Fiddamanwrite) set '' $target 7262*b30d1939SAndy Fiddaman shift 7263*b30d1939SAndy Fiddaman action= 7264*b30d1939SAndy Fiddaman list= 7265*b30d1939SAndy Fiddaman qualifier= 7266*b30d1939SAndy Fiddaman while : 7267*b30d1939SAndy Fiddaman do case $1 in 7268*b30d1939SAndy Fiddaman base|closure|delta|exp|lcl|pkg|rpm|tgz) 7269*b30d1939SAndy Fiddaman qualifier="$qualifier $1" 7270*b30d1939SAndy Fiddaman ;; 7271*b30d1939SAndy Fiddaman binary) action=$1 7272*b30d1939SAndy Fiddaman type=$HOSTTYPE 7273*b30d1939SAndy Fiddaman eval list=$PACKAGESRC/tgz/$admin_list 7274*b30d1939SAndy Fiddaman ;; 7275*b30d1939SAndy Fiddaman cyg) qualifier="$qualifier $1" 7276*b30d1939SAndy Fiddaman assign="$assign closure=1" 7277*b30d1939SAndy Fiddaman only=1 7278*b30d1939SAndy Fiddaman ;; 7279*b30d1939SAndy Fiddaman runtime|source) 7280*b30d1939SAndy Fiddaman action=$1 7281*b30d1939SAndy Fiddaman ;; 7282*b30d1939SAndy Fiddaman tst) qualifier="$qualifier tgz" 7283*b30d1939SAndy Fiddaman assign="$assign copyright=0 'PACKAGEDIR=\$(PACKAGESRC)/tst'" 7284*b30d1939SAndy Fiddaman ;; 7285*b30d1939SAndy Fiddaman nocopyright) 7286*b30d1939SAndy Fiddaman assign="$assign copyright=0" 7287*b30d1939SAndy Fiddaman ;; 7288*b30d1939SAndy Fiddaman *) break 7289*b30d1939SAndy Fiddaman ;; 7290*b30d1939SAndy Fiddaman esac 7291*b30d1939SAndy Fiddaman shift 7292*b30d1939SAndy Fiddaman done 7293*b30d1939SAndy Fiddaman case $action in 7294*b30d1939SAndy Fiddaman '') echo "$command: binary or source operand expected" >&2 7295*b30d1939SAndy Fiddaman exit 1 7296*b30d1939SAndy Fiddaman ;; 7297*b30d1939SAndy Fiddaman esac 7298*b30d1939SAndy Fiddaman set '' "$@" $package 7299*b30d1939SAndy Fiddaman shift 7300*b30d1939SAndy Fiddaman case $only in 7301*b30d1939SAndy Fiddaman 0) set '' `order "$@"` 7302*b30d1939SAndy Fiddaman shift 7303*b30d1939SAndy Fiddaman ;; 7304*b30d1939SAndy Fiddaman esac 7305*b30d1939SAndy Fiddaman case $# in 7306*b30d1939SAndy Fiddaman 0) echo "$command: at least one package name expected" >&2 7307*b30d1939SAndy Fiddaman exit 1 7308*b30d1939SAndy Fiddaman ;; 7309*b30d1939SAndy Fiddaman esac 7310*b30d1939SAndy Fiddaman if nonmake $MAKE 7311*b30d1939SAndy Fiddaman then echo "$command: must have $MAKE to generate archives" >&2 7312*b30d1939SAndy Fiddaman exit 1 7313*b30d1939SAndy Fiddaman fi 7314*b30d1939SAndy Fiddaman 7315*b30d1939SAndy Fiddaman # all work under $PACKAGEBIN 7316*b30d1939SAndy Fiddaman 7317*b30d1939SAndy Fiddaman $make cd $PACKAGEBIN 7318*b30d1939SAndy Fiddaman case $list in 7319*b30d1939SAndy Fiddaman ?*) $exec rm -f $list ;; 7320*b30d1939SAndy Fiddaman esac 7321*b30d1939SAndy Fiddaman 7322*b30d1939SAndy Fiddaman # go for it 7323*b30d1939SAndy Fiddaman 7324*b30d1939SAndy Fiddaman for package 7325*b30d1939SAndy Fiddaman do if view - all $package.pkg || view - all lib/package/$package.pkg 7326*b30d1939SAndy Fiddaman then eval capture \$MAKE \$makeflags -X ignore \$noexec -f \$package.pkg \$qualifier \$action $assign 7327*b30d1939SAndy Fiddaman else echo "$command: $package: not a package" >&2 7328*b30d1939SAndy Fiddaman fi 7329*b30d1939SAndy Fiddaman done 7330*b30d1939SAndy Fiddaman ;; 7331*b30d1939SAndy Fiddaman 7332*b30d1939SAndy FiddamanTEST) set '' $target $package 7333*b30d1939SAndy Fiddaman shift 7334*b30d1939SAndy Fiddaman case $1 in 7335*b30d1939SAndy Fiddaman binary|source) 7336*b30d1939SAndy Fiddaman action=$1 7337*b30d1939SAndy Fiddaman shift 7338*b30d1939SAndy Fiddaman ;; 7339*b30d1939SAndy Fiddaman esac 7340*b30d1939SAndy Fiddaman order "$@" 7341*b30d1939SAndy Fiddaman ;; 7342*b30d1939SAndy Fiddaman 7343*b30d1939SAndy Fiddaman*) echo "$command: $action: internal error" >&2 7344*b30d1939SAndy Fiddaman exit 1 7345*b30d1939SAndy Fiddaman ;; 7346*b30d1939SAndy Fiddaman 7347*b30d1939SAndy Fiddamanesac 7348