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