146 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			146 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
 |