#!/bin/sh # # Configuration script for Services. # # Anope (c) 2003-2011 Anope team # Contact us at team@anope.org # # This program is free but copyrighted software; see the file COPYING for # details. # # Based on the original code of Epona by PegSoft. # Based on the original code of Services by Andy Church. # ########################################################################### echo2 () { $ECHO2 "$*$ECHO2SUF" # these are defined later } exists () { # because some shells don't have test -e if [ -f $1 -o -d $1 -o -p $1 -o -c $1 -o -b $1 ] ; then return 0 else return 1 fi } Load_Cache () { if [ -f config.cache -a -r config.cache -a ! "$IGNORE_CACHE" ] ; then echo "Using defaults from config.cache. To ignore, ./Config -nocache" echo "" . ./config.cache CAN_QUICK="yes" else CAN_QUICK="no" fi } Run_Configure () { WITH_BIN="" WITH_DATA="" WITH_ENC="" WITH_RUN="" WITH_PERM="" WITH_MYSQL="" if [ "$BINDEST" != "" ] ; then WITH_BIN=" --with-bindir=$BINDEST" WITH_DATA=" --with-datadir=$DATDEST" fi if [ "$DATDEST" != "" ] ; then WITH_DATA=" --with-datadir=$DATDEST" fi if [ "$RUNGROUP" != "" ] ; then WITH_RUN=" --with-rungroup=$RUNGROUP" fi if [ "$UMASK" != "" ] ; then WITH_PERM=" --with-permissions=$UMASK" fi if [ "$MYSQL" != "yes" ] ; then WITH_MYSQL=" --without-mysql" fi echo "./configure $WITH_BIN $WITH_DATA $WITH_ENC $WITH_RUN $WITH_PERM $WITH_MYSQL" ./configure $WITH_BIN $WITH_DATA $WITH_ENC $WITH_RUN $WITH_PERM $WITH_MYSQL } ECHO2SUF='' if [ "`echo -n a ; echo -n b`" = "ab" ] ; then ECHO2='echo -n' elif [ "`echo 'a\c' ; echo 'b\c'`" = "ab" ] ; then ECHO2='echo' ; ECHO2SUF='\c' elif [ "`printf 'a' 2>&1 ; printf 'b' 2>&1`" = "ab" ] ; then ECHO2='printf "%s"' else # oh well... ECHO2='echo' fi export ECHO2 ECHO2SUF ########################################################################### # Init values ########################################################################### BINDEST=$HOME/services DATDEST=$HOME/services RUNGROUP= UMASK= IRCTYPE="no default" CAN_QUICK="no" ########################################################################### # Check out the options ########################################################################### while [ $# -ge 1 ] ; do if [ $1 = "--help" ] ; then echo "Config utility for Anope" echo "------------------------" echo "Syntax: ./Config [options]" echo "-nocache Ignore settings saved in config.cache" echo "-nointro Skip intro (disclaimer, etc)" echo "-quick Skip questions, go straight to configure" exit 0 elif [ $1 = "-nocache" ] ; then IGNORE_CACHE="1" elif [ $1 = "-nointro" ] ; then NO_INTRO="1" elif [ $1 = "-quick" -o $1 = "-q" ] ; then Load_Cache if [ $CAN_QUICK = "yes" ] ; then Run_Configure else echo "" echo "Can't find cache file (config.cache), aborting..." fi exit 0 fi shift 1 done ########################################################################### if [ ! "$NO_INTRO" ] ; then clear . ./version.log cat .BANNER | sed "s/CURVER/$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH$VERSION_EXTRA/" | more echo "" else echo "" fi echo "Beginning Services configuration." echo "" ########################################################################### # Load the cache ########################################################################### if [ ! "$IGNORE_CACHE" ] ; then Load_Cache fi # Ask the user anything we need to know ahead of time. export ok INPUT #### ok=0 echo "Note: press Return for the default, or enter a new value." echo "In what directory do you want the binaries to be installed?" while [ $ok -eq 0 ] ; do echo2 "[$BINDEST] " if read INPUT ; then : ; else echo "" ; exit 1 ; fi if [ ! "$INPUT" ] ; then INPUT=$BINDEST fi if [ ! -d "$INPUT" ] ; then if exists "$INPUT" ; then echo "$INPUT exists, but is not a directory!" else echo "$INPUT does not exist. Create it?" echo2 "[y] " read YN if [ "$YN" != "n" ] ; then if mkdir -p $INPUT ; then ok=1 fi fi fi elif exists "$INPUT/include/services.h" ; then echo "You cannot use the Services source directory as a target directory." else ok=1 fi done BINDEST=$INPUT DATDEST=$INPUT echo "" #### ok=0 echo "Where do you want the data files to be installed?" while [ $ok -eq 0 ] ; do echo2 "[$DATDEST] " if read INPUT ; then : ; else echo "" ; exit 1 ; fi if [ ! "$INPUT" ] ; then INPUT=$DATDEST fi if [ ! -d "$INPUT" ] ; then if exists "$INPUT" ; then echo "$INPUT exists, but is not a directory!" else echo "$INPUT does not exist. Create it?" echo2 "[y] " read YN if [ "$YN" != "n" ] ; then if mkdir -p $INPUT ; then ok=1 fi fi fi elif exists "$INPUT/include/services.h" ; then echo "You cannot use the Services source directory as a target directory." else ok=1 fi done DATDEST=$INPUT echo "" #### OLD_RUNGROUP="$RUNGROUP" if [ "$RUNGROUP" ] ; then echo "Which group should all Services data files be owned by? (If Services" echo "should not force files to be owned by a particular group, type "\"none\" echo "(without the quotes) and press Return.)" else echo "Which group should all Services data files be owned by? (If Services" echo "should not force files to be owned by a particular group, just press" echo "Return.)" fi echo2 "[$RUNGROUP] " if read INPUT ; then : ; else echo "" ; exit 1 ; fi if [ "$INPUT" ] ; then if [ "$INPUT" = "none" ] ; then RUNGROUP="" else RUNGROUP="$INPUT" fi fi echo "" #### if [ ! "$UMASK" -o "$RUNGROUP" != "$OLD_RUNGROUP" ] ; then if [ "$RUNGROUP" ] ; then UMASK=007 else UMASK=077 fi fi ok=0 echo "What should the default umask for data files be (in octal)?" echo "(077 = only accessible by owner; 007 = accessible by owner and group)" while [ $ok -eq 0 ] ; do echo2 "[$UMASK] " if read INPUT ; then : ; else echo "" ; exit 1 ; fi if [ ! "$INPUT" ] ; then INPUT=$UMASK fi if [ `echo "$INPUT" | grep -c '[^0-7]'` -gt 0 ] ; then echo "$UMASK is not a valid octal number!" else if [ "`echo $INPUT | cut -c1`" != "0" ] ; then INPUT=0$INPUT fi ok=1 fi done UMASK=$INPUT echo "" #### ok=0 DEF=yes echo "Allow anope to automatically check for mysql libaries?" echo "unless you get errors with make, there is no need to" echo "change this setting." while [ $ok -eq 0 ] ; do echo2 "[$DEF] " if read INPUT ; then : ; else echo "" ; exit 1 ; fi if [ ! "$INPUT" ] ; then INPUT=$DEF fi case $INPUT in n*|N*) MYSQL= ok=1 ;; y*|Y*) MYSQL="yes" ok=1 ;; *) echo "Please enter 'yes' or 'no'." ;; esac done echo "" #### ################################################################################ # Store values ################################################################################ echo2 "Saving configuration results in config.cache... " cat <config.cache BINDEST="$BINDEST" DATDEST="$DATDEST" RUNGROUP="$RUNGROUP" UMASK=$UMASK IRCTYPE="$IRCTYPE" IRCTYPE_DEF="$IRCTYPE_DEF" MYSQL="$MYSQL" EOT echo "done." ################################################################################ # Build the configure string ################################################################################ Run_Configure