Author: soliton
Date: Tue May 26 15:39:22 2009
New Revision: 35891
URL: http://svn.gna.org/viewcvs/wesnoth?rev=35891&view=rev
Log:
rewrite for better robustness and portability
Modified:
trunk/utils/mp-server/update_server
Modified: trunk/utils/mp-server/update_server
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/utils/mp-server/update_server?rev=35891&r1=35890&r2=35891&view=diff
==============================================================================
--- trunk/utils/mp-server/update_server (original)
+++ trunk/utils/mp-server/update_server Tue May 26 15:39:22 2009
@@ -1,130 +1,103 @@
#!/bin/sh
+die() { echo >&2 "$@"; exit 1; }
+[ $# -gt 0 ] && [ $# -lt 4 ] || die "Syntax: $(basename $0) [-c] <server
version> [<revision>]"
+set -o errexit
+set -o nounset
-if [ $# -gt 3 -o $# -lt 1 ]; then
- echo "Syntax: $0 [-c] <server version> [<revision>]" >&2
- exit 1
-fi
+VERSION="$1"
+case "$VERSION" in
+-c) shift
+ BASE=campaignd
+ TYPE=campaignd ;;
+*) BASE=servers # should be moved to wesnothd at some point. (several
other scripts depend on the position though!)
+ TYPE=wesnothd ;;
+esac
+echo "building $TYPE..."
-if [ "$1" = "-c" ]; then
- echo "building campaignd..."
- TYPE=campaignd
- shift
-else
- echo "building wesnothd..."
- TYPE=wesnothd
-fi
+SERVERBASE="$HOME/$BASE/$VERSION"
+SOCKET="$SERVERBASE/build/var/run/socket"
+SOURCE="$HOME/source"
-SERVER=$1
-SERVERBASE=$HOME/$TYPE/$SERVER
-if [ $TYPE = wesnothd ]; then
- SERVERBASE=$HOME/servers/$SERVER
-fi
-
-SOURCE=$HOME/source
-SOCKET=$SERVERBASE/build/var/run/socket
-
-if ! [ -d $SERVERBASE ]; then
- echo "$SERVER server not found." >&2
- exit 1
-fi
-
-if ! [ -d $SOURCE ]; then
- echo "$SOURCE not found." >&2
- exit 1
-fi
+[ -d "$SERVERBASE" ] || die "Server base dir '$SERVERBASE' not found!"
+[ -d "$SOURCE" ] || die "Source dir '$SOURCE' not found!"
SCONS=yes
-case $SERVER in
- 1.2 ) cd $SOURCE/1.2 || exit 1
- CXXFLAGS="$CXXFLAGS -ggdb3"
- SCONS=no
- ;;
- 1.4 ) cd $SOURCE/1.4 || exit 1
- CXXFLAGS="$CXXFLAGS -ggdb3 -DNUM_SHARDS=7 -DBANDWIDTH_MONITOR"
- SCONS=no
- ;;
- 1.6 ) cd $SOURCE/1.6 || exit 1
- CXXFLAGS="$CXXFLAGS -ggdb3 -DNUM_SHARDS=7 -DBANDWIDTH_MONITOR"
- ;;
- trunk ) cd $SOURCE/trunk || exit 1
- CXXFLAGS="$CXXFLAGS -ggdb3 -DNUM_SHARDS=7 -O0
-DBANDWIDTH_MONITOR"
- ;;
- * ) cd $SOURCE/trunk || exit 1
- CXXFLAGS="$CXXFLAGS -ggdb3 -DNUM_SHARDS=7 -DBANDWIDTH_MONITOR"
- ;;
+case "$VERSION" in
+1.2) CXXFLAGS="$CXXFLAGS -ggdb3"
+ SCONS=no
+ cd "$SOURCE"/1.2 ;;
+1.4) CXXFLAGS="$CXXFLAGS -ggdb3 -DNUM_SHARDS=7 -DBANDWIDTH_MONITOR"
+ SCONS=no
+ cd "$SOURCE"/1.4 ;;
+1.6) CXXFLAGS="$CXXFLAGS -ggdb3 -DNUM_SHARDS=7 -DBANDWIDTH_MONITOR"
+ cd "$SOURCE"/1.6 ;;
+trunk) CXXFLAGS="$CXXFLAGS -ggdb3 -DNUM_SHARDS=7 -O0 -DBANDWIDTH_MONITOR"
+ cd "$SOURCE"/trunk ;;
+*) CXXFLAGS="$CXXFLAGS -ggdb3 -DNUM_SHARDS=7 -DBANDWIDTH_MONITOR"
+ cd "$SOURCE"/trunk ;;
esac
+
if [ $TYPE = campaignd ]; then
CXXFLAGS="$CXXFLAGS -ggdb3 -pg"
LDFLAGS="$LDFLAGS -pg"
- [ "$SERVER" = "1.4" ] && SCONS=no
+ [ "$VERSION" = "1.4" ] && SCONS=no
fi
-REVISION=""
-if [ "$2" != "" ]; then
- REVISION="-r $2"
-fi
-echo -n 'svn update... '
+printf 'svn update... '
+REVISION="${2:+-r $2}"
svn up $REVISION > /dev/null
-rev=$(svnversion -cn src/ | cut -d: -f2)
-echo "to $rev"
-if [ "$rev" = "" ]; then
- echo "No revision information found." >&2
- exit 1
-fi
+REVISION=$(svnversion -cn src/ | cut -d: -f2)
+echo "to $REVISION"
+[ "$REVISION" != "" ] || die "No revision information found. Odd, exiting..."
+
# reminder for local changes
#svn status
-DIR=$TYPE-svn-${rev}_$SERVER
-BUILD=$HOME/$TYPE/builds/$DIR
-if [ $TYPE = wesnothd ]; then
- BUILD=$HOME/servers/builds/$DIR
-fi
+BUILD="builds/$TYPE-svn-${REVISION}_$VERSION"
+BUILD_DIR="$HOME/$BUILD"
set -x
-mkdir -p $BUILD
+mkdir -p "$BUILD_DIR"
-if [ "$SCONS" = "yes" ]; then
+export CXXFLAG LDFLAGS
+if [ $SCONS = yes ]; then
if [ $TYPE = wesnothd ]; then
- BUILD_FLAGS="fifodir=$BUILD/var/run raw_sockets=1
forum_user_handler=1"
+ BUILD_FLAGS="fifodir=\"$BUILD_DIR\"/var/run raw_sockets=1
forum_user_handler=1"
case $(hostname) in
- gonzo.dicp.de)
- BUILD_FLAGS="fifodir=$BUILD/var/run
raw_sockets=1 boostdir=$HOME/tools/include boostlibdir=$HOME/tools/lib
boost_suffix=-mt"
- ;;
- basilic)
- BUILD_FLAGS="fifodir=$BUILD/var/run
raw_sockets=1"
- ;;
+ gonzo.dicp.de) BUILD_FLAGS="fifodir=\"$BUILD_DIR\"/var/run
raw_sockets=1 boostdir=\"$HOME\"/tools/include boostlibdir=\"$HOME\"/tools/lib
boost_suffix=-mt" ;;
+ basilic) BUILD_FLAGS="fifodir=\"$BUILD_DIR\"/var/run
raw_sockets=1" ;;
esac
fi
- mkdir -p $BUILD/var/run
+ mkdir -p "$BUILD_DIR"/var/run
# need to remove .scons-option-cache when parameters get removed!
- CXXFLAGS="$CXXFLAGS" LDFLAGS="$LDFLAGS" scons install-$TYPE
prefix=$BUILD program_suffix=-$SERVER $BUILD_FLAGS profile=0 fribidi=0 python=0
localedir= prefsdir= > $BUILD/scons.log || exit 1
+ scons install-$TYPE prefix="$BUILD_DIR" program_suffix=-"$VERSION"
$BUILD_FLAGS profile=0 fribidi=0 python=0 localedir= prefsdir= >
"$BUILD_DIR"/scons.log
else
if [ $TYPE = wesnothd ]; then
- BUILD_FLAGS="--enable-server --enable-raw-sockets
--with-fifodir=$BUILD/var/run"
+ BUILD_FLAGS="--enable-server --enable-raw-sockets
--with-fifodir=\"$BUILD_DIR\"/var/run --with-boost="$HOME"/tools"
else
BUILD_FLAGS="--enable-campaign-server"
fi
#echo 'autogen.sh and configure...'
- ./autogen.sh > $BUILD/autogen.log
- CXXFLAGS="$CXXFLAGS" LDFLAGS="$LDFLAGS" ./configure --prefix=$BUILD
--program-suffix=-$SERVER $BUILD_FLAGS --disable-game --disable-nls
--enable-lite --with-boost=$HOME/tools > $BUILD/configure.log || exit 1
+ ./autogen.sh > "$BUILD_DIR"/autogen.log
+ ./configure --prefix="$BUILD_DIR" --program-suffix=-"$VERSION"
$BUILD_FLAGS --disable-game --disable-nls --enable-lite >
"$BUILD_DIR"/configure.log
make clean > /dev/null
#echo 'make...'
- make > $BUILD/make.log || exit 1
+ make > "$BUILD_DIR"/make.log
#echo 'make install...'
- make install > $BUILD/install.log || exit 1
+ make install > "$BUILD_DIR"/install.log
fi
# remove the man pages
-rm -rf $BUILD/share/
+rm -rf "$BUILD_DIR"/share/
-cd $SERVERBASE
-if [ -p $SOCKET -o $TYPE = campaignd ]; then
+cd "$SERVERBASE"
+if [ -p "$SOCKET" ] || [ $TYPE = campaignd ]; then
rm -f oldbuild
mv build oldbuild
else #the server under build has never been started, keep the oldbuild link to
the (currently) running server
rm -f build
fi
-ln -s ../builds/$DIR/ build
+ln -s ../../"$BUILD" build
-cd $HOME/bin || exit 1
-ln -sf $BUILD/bin/$TYPE-$SERVER $TYPE-$SERVER
+cd "$HOME"/bin || exit 1
+ln -sf "../$BUILD/$TYPE-$VERSION" "$TYPE-$VERSION"
set +x
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits