#!/bin/sh die() { echo >&2 "$@"; exit 1; } [ $# -gt 0 ] && [ $# -lt 4 ] || die "Syntax: $(basename $0) [-c] []" set -o errexit 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..." SERVERBASE="$HOME/$BASE/$VERSION" SOCKET="$SERVERBASE/build/var/run/socket" SOURCE="$HOME/source" [ -d "$SERVERBASE" ] || die "Server base dir '$SERVERBASE' not found!" [ -d "$SOURCE" ] || die "Source dir '$SOURCE' not found!" SCONS=yes CXXFLAGS="$CXXFLAGS" LDFLAGS="$LDFLAGS" 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" [ "$VERSION" = "1.4" ] && SCONS=no fi set -o nounset printf 'svn update... ' REVISION="${2:+-r $2}" svn up $REVISION > /dev/null REVISION=$(svnversion -cn src/ | cut -d: -f2) echo "to $REVISION" [ "$REVISION" != "" ] || die "No revision information found. Odd, exiting..." # reminder for local changes #svn status BUILD="builds/$TYPE-svn-${REVISION}_$VERSION" BUILD_DIR="$HOME/$BUILD" set -x mkdir -p "$BUILD_DIR" if [ $SCONS = yes ]; then if [ $TYPE = wesnothd ]; then BUILD_FLAGS="fifodir=$BUILD_DIR/var/run raw_sockets=1 forum_user_handler=1" case $(hostname) in 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_DIR"/var/run # need to remove .scons-option-cache when parameters get removed! CXXFLAGS="$CXXFLAGS" LDFLAGS="$LDFLAGS" 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_DIR/var/run --with-boost=$HOME/tools" else BUILD_FLAGS="--enable-campaign-server" fi #echo 'autogen.sh and configure...' ./autogen.sh > "$BUILD_DIR"/autogen.log CXXFLAGS="$CXXFLAGS" LDFLAGS="$LDFLAGS" ./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_DIR"/make.log #echo 'make install...' make install > "$BUILD_DIR"/install.log fi # remove the man pages rm -rf "$BUILD_DIR"/share/ 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 ../../"$BUILD" build cd "$HOME"/bin || exit 1 ln -sf "../$BUILD/$TYPE-$VERSION" "$TYPE-$VERSION" set +x