diff options
Diffstat (limited to 'Config')
-rwxr-xr-x | Config | 325 |
1 files changed, 325 insertions, 0 deletions
@@ -0,0 +1,325 @@ +#!/bin/sh +# +# Configuration script for Services. +# +# Anope (c) 2003-2007 Anope team +# Contact us at dev@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 <<EOT >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 |