#!/bin/sh if [ $# -gt 1 -o "$1" = "--help" ]; then echo "This is not a standard GNU configure script. It is an" 1>&2 echo "interactive shell script which can takes as only argument" 1>&2 echo "an answer to the first question asked by the interactive run." 1>&2 echo "If you wish information about what it does, you will" 1>&2 echo "have to read the script source." 1>&2 exit 1 fi echo "This script configures the Makefile in the plan distribution. It saves a" echo "backup of the original file in Makefile.orig, and the previous Makefile" echo "in Makefile.back. It does not modify or install any other files." line=line which $line >/dev/null 2>&1 || line=read # Linux has no line command readline() { if test $interactive = no; then in= else case $line in line) in=`line`;; read) read in;; esac fi } #----------------------------------------------------------------------------- # defaults #----------------------------------------------------------------------------- interactive=yes if test x"$1" != x; then in=$1 interactive=no echo "" echo "Running in non-interactive mode" echo "" else echo "" echo "Choose defaults for all following questions:" echo "1 -- same as the previous configuration (default)" echo "2 -- factory defaults (requires write access to /usr/local)" echo "3 -- Silicon Graphics freeware (requires root privileges)" echo "4 -- Debian Linux standard (requires root privileges)" echo "5 -- SuSE Linux standard (requires root privileges)" readline fi case ${in:-1} in 1) sed '/end of configuration section/q' Makefile > .conftemp . ./.conftemp rm .conftemp PLANHOME= test x$PLANRULE = x || PLANHOME=`echo $PLANRULE | sed 's/.*=//;s/"//g'` ;; 2) DIR=/usr/local/bin # traditional factory defaults SBIN= LIB=/usr/local/lib MAN=/usr/local/man/man CATMAN=/usr/catman/local/cat PLANHOME= PLANLOCK= PLANDLOCK= INCDIR= LEX=lex YACC=yacc NOB_UID= NOB_GID= CPP_PATH='/lib/cpp -P -I$(HELP)' DOFORK=TRUE JAPAN= DEBUG=-O2 DEFTARGET=help HOLIDAY= ;; 3) DIR=/usr/freeware/bin # SGI freeware CD SBIN= LIB=/usr/freeware/lib MAN=/usr/share/man/local/man/man CATMAN=/usr/share/catman/local/cat PLANHOME= PLANLOCK= PLANDLOCK= INCDIR= LEX=lex YACC=yacc NOB_UID=60001 NOB_GID=60001 CPP_PATH='/lib/cpp -P -I$(HELP)' DOFORK=TRUE JAPAN= DEBUG="-O2 -n32" DEFTARGET=sgi6 HOLIDAY= ;; 4) DIR=/usr/bin # Debian Linux SBIN=/usr/sbin LIB=/usr/lib/plan HELP=/usr/share/plan NETPLANDIR=/var/lib/plan MAN=/usr/share/man/man CATMAN=NONE PLANHOME=.plan.dir PLANLOCK= PLANDLOCK= INCDIR= LEX=lex YACC=yacc NOB_UID=65534 NOB_GID=65534 CPP_PATH='/usr/bin/cpp -P -I$(HELP)' DOFORK=FALSE JAPAN= DEBUG="-O2" DEFTARGET=linux HOLIDAY=NONE ;; 5) DIR=/usr/X11R6/bin # SuSE Linux SBIN=/usr/X11R6/bin LIB=/usr/lib/plan HELP=/usr/lib/plan NETPLANDIR=/usr/lib/plan MAN=/usr/X11R6/man/man CATMAN=NONE PLANHOME= PLANLOCK= PLANDLOCK= INCDIR= LEX=lex YACC=yacc NOB_UID=65534 NOB_GID=65534 CPP_PATH='/usr/bin/cpp -P -I$(HELP)' DOFORK=FALSE JAPAN= DEBUG="-O2" DEFTARGET=linux HOLIDAY=/usr/lib/plan/holiday ;; mi) DIR=/usr/local/mi/bin # mental images SBIN= LIB=/usr/local/mi/lib MAN= CATMAN= PLANHOME= PLANLOCK= PLANDLOCK= INCDIR= LEX=lex YACC=yacc NOB_UID= NOB_GID= CPP_PATH='/lib/cpp -P -I$(HELP)' DOFORK=TRUE JAPAN= DEBUG=-O2 DEFTARGET=sgi6 HOLIDAY= ;; *) echo "illegal choice, exiting." exit;; esac #----------------------------------------------------------------------------- # configuration questions #----------------------------------------------------------------------------- echo "" echo "installation directory for plan executable? [$DIR]" readline; DIR=${in:-$DIR} SBIN=${SBIN:-$DIR} echo "" echo "installation directory for system executables (netplan)? [$SBIN]" readline; SBIN=${in:-$SBIN} LIB=${LIB:-$DIR} echo "" echo "installation directory for support executables and files? [$LIB]" readline; LIB=${in:-$LIB} HELP=${HELP:-$LIB} echo "" echo "installation directory for online help file? [$HELP]" readline; HELP=${in:-$HELP} NETPLANDIR=${NETPLANDIR:-$LIB} echo "" echo "installation directory for netplan's netplan.dir directory? [$NETPLANDIR]" readline; NETPLANDIR=${in:-$NETPLANDIR} MAN=${MAN:-$LIB} echo "" echo "The man pages go into sections 1 and 4, either in nroff or catman format." echo "Please choose the directory root. For example, to install /foo/man1/plan" echo "and /foo/man4/pland, enter /foo/man (without the trailing 1 or 4). Enter" echo "NONE if you don't want nroff manpages." echo "installation directory prefix for nroff man pages? [$MAN]" readline; MAN=${in:-$MAN} CATMAN=${CATMAN:-$MAN} echo "" echo "installation directory for cat man pages (or NONE)? [$CATMAN]" readline; CATMAN=${in:-$CATMAN} test x$PLANHOME = x && PLANHOME=/ echo "" echo "You can either put lock files into /tmp and the default appointment files" echo "in your home directory, or create a subdirectory in your home directory" echo "that stores all lock and appointment files. Enter a single slash (/) for" echo "the former and the name of a directory (recommended: .plan.dir) in the" echo "latter case (note: if you change from a previous installation, you will" echo "have to move the old files manually): [$PLANHOME]" readline; PLANHOME=${in:-$PLANHOME} if test x$PLANHOME = x/; then PLANHOME= PLANLOCK=${PLANLOCK:-/tmp/.plan%d} PLANDLOCK=${PLANDLOCK:-/tmp/.pland%d} else PLANLOCK=${PLANLOCK:-\~/$PLANHOME/lock.plan} PLANDLOCK=${PLANDLOCK:-\~/$PLANHOME/lock.pland} fi echo "" echo "main (plan) lockfile (use %d for user ID)? [$PLANLOCK]" readline; PLANLOCK=${in:-$PLANLOCK} echo "" echo "daemon (pland) lockfile (use %d for user ID)? [$PLANDLOCK]" readline; PLANDLOCK=${in:-$PLANDLOCK} if test x$LEX = x; then LEX=`which lex` case $LEX in /);; *) LEX="`which flex` -l";; esac case $LEX in /);; *) LEX=;; esac fi echo "" echo "Where is your lex program? [$LEX]" readline; LEX=${in:-$LEX} if test x$YACC = x; then YACC=`which yacc` case $YACC in /);; *) LEX="`which bison` -y";; esac case $YACC in /);; *) LEX=;; esac fi echo "" echo "Where is your yacc program? [$YACC]" readline; YACC=${in:-$YACC} test "x$CPP_PATH" = x && CPP_PATH='/lib/cpp -P -I$(HELP)' echo "" echo "If you have a C preprocessor, you can enter a command line here that will" echo "be used by plan to preprocess holiday configuration files. Enter a single" echo "slash (/) to disable preprocessing: [$CPP_PATH]" readline; CPP_PATH=${in:-$CPP_PATH} test "x$CPP_PATH" = x/ && CPP_PATH= def=y test ${DOFORK:-TRUE} = FALSE && def=n echo "" echo "Should plan background itself on startup, as if \`\`plan &'' had been" echo "used? Answer y or n: [$def]" readline; in=${in:-$def} DOFORK=TRUE test $in = n && DOFORK=FALSE IFS=":" set `grep nobody /etc/passwd | sed 's/[^0-9:]/x/g'` test x$NOB_UID = x && NOB_UID=${3:-60001} test x$NOB_GID = x && NOB_GID=${4:-60001} echo "" echo "Enter an unprivileged (nobody) numerical user ID for netplan: [$NOB_UID]" readline; NOB_UID=${in:-$NOB_UID} echo "" echo "Enter an unprivileged (nobody) numerical group ID for netplan: [$NOB_GID]" readline; NOB_GID=${in:-$NOB_GID} tmp=n test x"$JAPAN" = x || tmp=y echo "" echo "Do you want to compile a Japan-specific binary? Answer y or n: [$JAPAN]" readline; tmp=${in:-$tmp} if test x$tmp = xy; then JAPAN='"$(JAPANDEFS)"' HOLIDAY=japan fi test x$HOLIDAY = x && HOLIDAY=german echo "" echo "The following custom holiday definitions are available:" ls -1 ../holiday | sed 's/holiday_/ /' echo "Choose one: [$HOLIDAY]" readline; HOLIDAY=${in:-$HOLIDAY} test x$DEFTARGET = xhelp && DEFTARGET=linux echo "" echo "The following target systems are available:" grep "^.@echo . make " Makefile | sed 's/.@echo....make/ /;s/"$//' echo "Choose a code from the left column: [$DEFTARGET]" readline; DEFTARGET=${in:-$DEFTARGET} #----------------------------------------------------------------------------- # rewrite Makefile #----------------------------------------------------------------------------- planrule= test x$PLANHOME = x || planrule="-DPLANHOME=\\\\\"\"$PLANHOME\"\\\\\"" test -f Makefile.orig ||\ (mv Makefile Makefile.orig && cp Makefile.orig Makefile) cp Makefile Makefile.back sed "s+^DIR=.*+DIR=$DIR+;\ s+^LIB=.*+LIB=$LIB+;\ s+^SBIN=.*+SBIN=$SBIN+;\ s+^HELP=.*+HELP=$HELP+;\ s+^NETPLANDIR=.*+NETPLANDIR=$NETPLANDIR+;\ s+^MAN=.*+MAN=$MAN+;\ s+^CATMAN=.*+CATMAN=$CATMAN+;\ s+^PLANRULE=.*+PLANRULE=$planrule+;\ s+^PLANLOCK=.*+PLANLOCK=\"$PLANLOCK\"+;\ s+^PLANDLOCK=.*+PLANDLOCK=\"$PLANDLOCK\"+;\ s+^INCDIR=.*+INCDIR=$INCDIR+;\ s+^LEX=.*+LEX=$LEX+;\ s+^YACC=.*+YACC=$YACC+;\ s+^NOB_UID=.*+NOB_UID=$NOB_UID+;\ s+^NOB_GID=.*+NOB_GID=$NOB_GID+;\ s+^CPP_PATH=.*+CPP_PATH='$CPP_PATH'+;\ s+^DOFORK=.*+DOFORK=$DOFORK+;\ s+^JAPAN=.*+JAPAN=$JAPAN+;\ s+^HOLIDAY=.*+HOLIDAY=$HOLIDAY+;\ s+^DEBUG=.*+DEBUG=$DEBUG+;\ s+^DEFTARGET=.*+DEFTARGET=$DEFTARGET+" Makefile > .conftemp mv .conftemp Makefile echo "" echo " --- Done ---" echo "" echo "Now run \`\`make clean'', \`\`make'' and \`\`make install'' to compile" echo "and install plan."