
* Added code for handling 1.8 and 1.10 * Don't use libana for Wesnoth versions that include it (1.9.x) * We now use Git, not SVN. The downstream repository is managed externally, so we need to update a git-new-workdir checkout every time we want to build. * Other nondescript changes (Apologies for the horrible commit message, but it looks like there was more than my own changes awaiting to be committed.)
119 lines
3.7 KiB
Bash
Executable file
119 lines
3.7 KiB
Bash
Executable file
#!/bin/sh
|
|
die() { echo >&2 "$@"; exit 1; }
|
|
[ $# -gt 0 ] && [ $# -lt 4 ] || die "Syntax: $(basename $0) [-c] <server version> [<revision>]"
|
|
set -o errexit
|
|
|
|
case "$1" 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
|
|
|
|
VERSION=$(readlink "$HOME/$BASE/$1" || true)
|
|
VERSION="${VERSION:=$1}"
|
|
SERVERBASE="$HOME/$BASE/$VERSION"
|
|
echo "building $TYPE-$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|1.8|1.10)
|
|
CXXFLAGS="$CXXFLAGS -ggdb3 -DNUM_SHARDS=7 -DBANDWIDTH_MONITOR"
|
|
cd "$SOURCE"/$VERSION ;;
|
|
1.9)
|
|
[ "$TYPE" = "campaignd" ] || die "1.9 is currently a special case for the 1.10 campaignd only"
|
|
CXXFLAGS="$CXXFLAGS -ggdb3 -DNUM_SHARDS=7 -DBANDWIDTH_MONITOR"
|
|
cd "$SOURCE"/1.10 ;;
|
|
trunk|master)
|
|
CXXFLAGS="$CXXFLAGS -ggdb3 -DNUM_SHARDS=7 -O0 -DBANDWIDTH_MONITOR"
|
|
cd "$SOURCE"/master ;;
|
|
*) CXXFLAGS="$CXXFLAGS -ggdb3 -DNUM_SHARDS=7 -DBANDWIDTH_MONITOR"
|
|
cd "$SOURCE"/master ;;
|
|
esac
|
|
|
|
if [ $TYPE = campaignd ]; then
|
|
case "$VERSION" in
|
|
1.4)
|
|
SCONS=no ;;
|
|
1.8|trunk)
|
|
CXXFLAGS="$CXXFLAGS -ggdb3 -pg"
|
|
LDFLAGS="$LDFLAGS -pg" ;;
|
|
esac
|
|
fi
|
|
set -o nounset
|
|
|
|
printf 'Updating git working tree... '
|
|
COMMIT="${2:+-r $2}"
|
|
git checkout -f $COMMIT > /dev/null
|
|
COMMIT=$(git describe --long)
|
|
echo "to $COMMIT"
|
|
[ "$COMMIT" != "" ] || die "No revision information found. Odd, exiting..."
|
|
|
|
# reminder for local changes
|
|
#git status
|
|
BUILD="builds/$TYPE-$VERSION-git-${COMMIT}"
|
|
BUILD_DIR="$HOME/$BUILD"
|
|
|
|
set -x
|
|
mkdir -p "$BUILD_DIR"
|
|
|
|
BUILD_FLAGS=
|
|
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 use_network_ana=false 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"
|
|
|
|
test -L build &&
|
|
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/bin/$TYPE-$VERSION" "$TYPE-$VERSION"
|
|
set +x
|