147 lines
2.6 KiB
Bash
Executable file
147 lines
2.6 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
case $# in
|
|
0) PAR='make install && make clean' ; CMD=Action ;;
|
|
1) PAR="$1" ; CMD=Action ;;
|
|
2) PAR="$1" ; CMD="$2" ;;
|
|
*) echo Syntax: "$0" [command [file]] ; exit 1 ;;
|
|
esac
|
|
if test -r "$CMD"
|
|
then :
|
|
else
|
|
case "$CMD" in
|
|
Action) echo No Action file present ;;
|
|
*) echo No Action file "($CMD)" present ;;
|
|
esac
|
|
fi
|
|
case $0 in
|
|
/*) THISFILE=$0
|
|
;;
|
|
*) if [ -f $0 ]
|
|
then
|
|
THISFILE=`pwd`/$0
|
|
else
|
|
THISFILE=$0
|
|
fi
|
|
;;
|
|
esac
|
|
SYS=
|
|
RETC=0
|
|
{ while read LINE
|
|
do
|
|
eval set $LINE
|
|
case x"$1" in
|
|
x!*) ;;
|
|
xname) SYS="$2"
|
|
ACTION='$PAR'
|
|
DIR=.
|
|
FM=no
|
|
FAIL='Failed for $SYS, see $DIR/Out'
|
|
SUCC='$SYS -- done'
|
|
ATYPE=
|
|
FATAL=no
|
|
DOIT=yes
|
|
;;
|
|
xfatal) FATAL=yes ;;
|
|
xaction|xindir) case x$ATYPE in
|
|
x) ACTION=$2 ; ATYPE=$1
|
|
case $ATYPE$FM in
|
|
indirno) FAIL='Failed for $SYS' ;;
|
|
esac
|
|
;;
|
|
*) echo Already specified an $ATYPE for this name
|
|
RETC=65 ;;
|
|
esac ;;
|
|
xfailure) FM=yes
|
|
FAIL="$2" ;;
|
|
xsuccess) SUCC="$2" ;;
|
|
xdir) DIR="$2" ;;
|
|
xsystem) PAT="$2"
|
|
oIFS=$IFS
|
|
IFS="|"
|
|
eval set $2
|
|
case x`ack_sys` in
|
|
x$1|x$2|x$3|x$4|x$5|x$6|x$7) ;;
|
|
*) echo "Sorry, $SYS can only be made on $PAT systems"
|
|
DOIT=no
|
|
;;
|
|
esac
|
|
IFS=$oIFS
|
|
;;
|
|
xend) case $DOIT in
|
|
no) continue ;;
|
|
esac
|
|
case x$SYS in
|
|
x) echo Missing name line; RETC=65 ;;
|
|
*) if test -d $DIR
|
|
then (
|
|
cd $DIR
|
|
X=
|
|
case $ATYPE in
|
|
indir)
|
|
if $THISFILE "$PAR" $ACTION
|
|
then eval echo $SUCC
|
|
else RETC=2 ; eval echo $FAIL
|
|
fi ;;
|
|
*)
|
|
case "$ACTION" in
|
|
'$PAR')
|
|
ACTION="$PAR"
|
|
;;
|
|
*) ;;
|
|
esac
|
|
if [ -f No$CMD ]
|
|
then
|
|
x=`cat No$CMD`
|
|
if [ "$ACTION" = "$x" ]
|
|
then
|
|
ACTION='echo "No actions performed, No$CMD file present"'
|
|
SUCC='$SYS -- skipped'
|
|
fi
|
|
fi
|
|
if eval "{ $ACTION ; } >Out 2>&1 </dev/null"
|
|
then eval echo $SUCC
|
|
if [ "$SUCC" = '$SYS -- skipped' ]
|
|
then :
|
|
else echo "$ACTION" > No$CMD 2>/dev/null
|
|
fi
|
|
else RETC=1 ; X=: ; eval echo $FAIL
|
|
fi
|
|
;;
|
|
esac
|
|
(echo ------- `pwd`
|
|
cat Out
|
|
$X rm -f Out
|
|
) 2>/dev/null 1>&- 1>&3
|
|
exit $RETC
|
|
)
|
|
case $? in
|
|
0) ;;
|
|
*) case $RETC in
|
|
0) RETC=$? ;;
|
|
esac ;;
|
|
esac
|
|
else
|
|
echo Directory $DIR for $SYS is inaccessible
|
|
RETC=66
|
|
fi ;;
|
|
esac
|
|
case $FATAL$RETC in
|
|
yes0) ;;
|
|
yes*) echo Fatal error, installation stopped.
|
|
exit $RETC ;;
|
|
esac
|
|
SYS=
|
|
;;
|
|
*) echo Unknown keyword "$1"
|
|
RETC=67 ;;
|
|
esac
|
|
done
|
|
exit $RETC
|
|
} <$CMD
|
|
RETX=$?
|
|
case $RETX in
|
|
0) exit $RETC ;;
|
|
*) exit $RETX ;;
|
|
esac
|