#!/bin/sh shout() { echo "$0: $@" >&2; } barf() { shout "fatal: $@"; exit 111; } safe() { "$@" || barf "cannot $@"; } safe umask 022 [ -d package ] || barf "no package directory" [ -d src ] || barf "no src directory" here=`env - PATH=$PATH pwd` [ -d compile ] || safe mkdir -p compile [ -d commmand ] || safe mkdir -p command [ -r compile/home ] || echo $here > compile/home [ -h compile/src ] || safe ln -s $here/src compile/src for i in `ls src` do [ ! -d src/$i ] && [ -h compile/$i ] || safe ln -sf src/$i compile/$i done for i in `sed -e '/^it-/!d' -e 's/^it-//' < compile/it=d` do all="$all $i" done other="`grep -v '^it-' compile/it=d`" usage() { shout "usage: package/compile [ [-]$all ]"; exit 100; } targets="" if [ $# -eq 0 ] then targets="$all" else if [ "$1" = "-" ] then shift suppress=":" for i in ${1+"$@"} do case "$all " in *\ $i\ *) ;; *) usage ;; esac suppress="$suppress$i:" done for i in $all do case "$suppress" in *:$i:*) ;; *) targets="$targets $i" ;; esac done else for i in ${1+"$@"} do case "$all " in *\ $i\ *) ;; *) usage ;; esac targets="$targets $i" done fi fi [ "X$all" != "X" ] && [ "X$targets" = "X" ] && usage commands="" for i in $targets do commands="$commands `cat package/commands-$i`" done safe cd compile safe make $other `echo "$targets" | sed -e 's/ / it-/g'` safe cd $here for i in $commands do i=${i%:} safe rm -f command/$i'{new}' safe cp -p compile/$i command/$i'{new}' safe mv -f command/$i'{new}' command/$i done exit 0