2012-07-22 17:07:41 -07:00
|
|
|
#!/bin/bash
|
|
|
|
dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
|
|
repo=/home/celeron55/softat/minetest
|
|
|
|
|
|
|
|
workdir=$dir/work
|
|
|
|
rulesdir=$dir/rules.d
|
|
|
|
|
|
|
|
worldsdir=$workdir/worlds
|
|
|
|
clonedir=$workdir/repo
|
|
|
|
builddir=$workdir/builds
|
|
|
|
|
|
|
|
mkdir -p "$workdir"
|
|
|
|
mkdir -p "$worldsdir"
|
|
|
|
mkdir -p "$builddir"
|
|
|
|
|
|
|
|
echo "== Cloning repository from $repo to $clonedir"
|
|
|
|
rm -rf "$clonedir"
|
|
|
|
git clone "$repo" "$clonedir"
|
|
|
|
|
|
|
|
# Returns true if a built minetest already exists in $1
|
|
|
|
check_built_minetest ()
|
|
|
|
{
|
|
|
|
mtdir=$1
|
|
|
|
if [ -a "$mtdir/bin/minetestserver" ]; then
|
|
|
|
return 0
|
|
|
|
fi
|
|
|
|
return 1
|
|
|
|
}
|
|
|
|
|
2012-07-22 18:58:58 -07:00
|
|
|
# Collect important results for viewing at the end
|
|
|
|
result_summary=""
|
|
|
|
result_note ()
|
|
|
|
{
|
|
|
|
echo $1
|
|
|
|
if [ "$result_summary" == "" ]; then
|
|
|
|
result_summary="$1"
|
|
|
|
else
|
|
|
|
result_summary="$result_summary\\n$1"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2012-07-22 17:07:41 -07:00
|
|
|
build_minetest ()
|
|
|
|
{
|
|
|
|
tag=$1
|
|
|
|
ruledir=$2
|
|
|
|
pkg=$3
|
|
|
|
mtdir=$4
|
|
|
|
|
|
|
|
rm -rf "$mtdir"
|
|
|
|
mkdir -p "$mtdir"
|
|
|
|
pushd "$mtdir" &>/dev/null
|
|
|
|
# Extract package
|
|
|
|
tar -xf "$pkg"
|
|
|
|
|
|
|
|
# Patch stuff
|
|
|
|
for patchfile in $ruledir/*.patch; do
|
|
|
|
if ! [ -a "$patchfile" ]; then
|
|
|
|
continue
|
|
|
|
fi
|
|
|
|
echo "== Patching $tag with $patchfile"
|
|
|
|
patch -p1 < $patchfile
|
|
|
|
if [ "$?" != "0" ]; then
|
2012-07-22 18:58:58 -07:00
|
|
|
result_note "EE Patch `basename "$patchfile"` failed for $tag"
|
2012-07-22 17:07:41 -07:00
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
# Build it
|
|
|
|
cmake . -DRUN_IN_PLACE=1 -DBUILD_CLIENT=0
|
|
|
|
make -j2
|
|
|
|
if [ "$?" == "1" ]; then
|
2012-07-22 18:58:58 -07:00
|
|
|
echo "EE Error building $tag"
|
2012-07-22 17:07:41 -07:00
|
|
|
return 1
|
|
|
|
else
|
|
|
|
echo "-- Built $tag"
|
|
|
|
rm -rf CMakeFiles src/CMakeFiles src/lua/CMakeFiles src/lua/build/CMakeFiles src/jthread/CMakeFiles
|
|
|
|
fi
|
|
|
|
popd &>/dev/null
|
|
|
|
return 0
|
|
|
|
}
|
|
|
|
|
|
|
|
# Build all the versions, if not already built
|
|
|
|
for ruledir in $rulesdir/*; do
|
|
|
|
tag=`cat "$ruledir/tag"`
|
|
|
|
echo "== Checking build: $tag"
|
|
|
|
mtdir=$builddir/minetest-$tag
|
|
|
|
# Make package if doesn't already exist
|
|
|
|
pkg="$builddir/$tag.tar"
|
|
|
|
if [ -a "$pkg" ]; then
|
|
|
|
echo "== Package exists for $tag"
|
|
|
|
else
|
|
|
|
echo "== Creating package for $tag"
|
|
|
|
pushd $clonedir &>/dev/null
|
|
|
|
git archive --format tar $tag > "$pkg"
|
|
|
|
popd &>/dev/null
|
|
|
|
fi
|
|
|
|
# Build if hasn't already been built
|
|
|
|
check_built_minetest "$mtdir"
|
|
|
|
if [ "$?" == "0" ]; then
|
|
|
|
echo "== Already built: $tag"
|
|
|
|
else
|
|
|
|
echo "== Building $tag"
|
|
|
|
build_minetest "$tag" "$ruledir" "$pkg" "$mtdir"
|
|
|
|
if ! [ "$?" == "0" ]; then
|
2012-07-22 18:58:58 -07:00
|
|
|
result_note "EE Failed to build $tag"
|
2012-07-22 17:07:41 -07:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
# Make a world with each version
|
|
|
|
for ruledir in $rulesdir/*; do
|
|
|
|
tag=`cat "$ruledir/tag"`
|
2012-07-22 17:45:43 -07:00
|
|
|
echo "== Testing version: $tag"
|
2012-07-22 17:07:41 -07:00
|
|
|
mtdir=$builddir/minetest-$tag
|
|
|
|
worlddir=$worldsdir/world-$tag
|
2012-07-22 17:45:43 -07:00
|
|
|
resultfile=/tmp/minetest-worldtest-tmpresult.txt
|
2012-07-22 17:07:41 -07:00
|
|
|
|
|
|
|
# Check compatibility with itself
|
|
|
|
rm -rf "$worlddir"
|
2012-07-22 17:45:43 -07:00
|
|
|
$dir/minetest-worldtest-check-and-set.sh "$mtdir" "$worlddir" "$resultfile"
|
|
|
|
#if [ "$?" != "0" ]; then
|
|
|
|
if [ "`grep -c GOOD: "$resultfile"`" == "0" ]; then
|
|
|
|
result_note "== $tag returns all bad for non-existent world"
|
2012-07-22 18:58:58 -07:00
|
|
|
elif [ "`grep -c BAD: "$resultfile"`" == "0" ]; then
|
|
|
|
result_note "EE $tag returns all good for non-existent world"
|
2012-07-22 17:45:43 -07:00
|
|
|
else
|
2012-07-22 18:58:58 -07:00
|
|
|
result_note "EE $tag returns some good for non-existent world"
|
|
|
|
result_note "`grep GOOD: "$resultfile"`"
|
2012-07-22 17:07:41 -07:00
|
|
|
fi
|
2012-07-22 17:45:43 -07:00
|
|
|
$dir/minetest-worldtest-check-and-set.sh "$mtdir" "$worlddir" "$resultfile"
|
|
|
|
#if [ "$?" == "0" ]; then
|
|
|
|
if [ "`grep -c BAD: "$resultfile"`" == "0" ]; then
|
|
|
|
result_note "== $tag returns all good for self-generated world"
|
2012-07-22 18:58:58 -07:00
|
|
|
elif [ "`grep -c GOOD: "$resultfile"`" == "0" ]; then
|
|
|
|
result_note "EE $tag returns all bad for self-generated world"
|
2012-07-22 17:45:43 -07:00
|
|
|
else
|
2012-07-22 18:58:58 -07:00
|
|
|
result_note "EE $tag returns some bad for self-generated world"
|
|
|
|
result_note "`grep BAD: "$resultfile"`"
|
2012-07-22 17:07:41 -07:00
|
|
|
fi
|
|
|
|
|
2012-07-22 17:45:43 -07:00
|
|
|
# Check worlds generated by previous versions
|
|
|
|
for rule2dir in $rulesdir/*; do
|
|
|
|
tag2=`cat "$rule2dir/tag"`
|
|
|
|
mt2dir=$builddir/minetest-$tag2
|
2012-07-22 18:58:58 -07:00
|
|
|
world2dir=$worldsdir/world-$tag2-to-$tag
|
2012-07-22 17:45:43 -07:00
|
|
|
# If tag2 is our current one, stop checking for this and newer
|
|
|
|
if [ "$tag2" == "$tag" ]; then
|
|
|
|
break
|
|
|
|
fi
|
2012-07-22 18:58:58 -07:00
|
|
|
echo "== Using world created by $tag2, loading it with $tag"
|
|
|
|
rm -rf "$world2dir"
|
|
|
|
cp -r "$worldsdir/world-$tag2" "$world2dir"
|
|
|
|
#$dir/minetest-worldtest-check-and-set.sh "$mt2dir" "$world2dir" "$resultfile"
|
|
|
|
$dir/minetest-worldtest-check-and-set.sh "$mtdir" "$world2dir" "$resultfile"
|
2012-07-22 17:45:43 -07:00
|
|
|
if [ "`grep -c BAD: "$resultfile"`" == "0" ]; then
|
|
|
|
result_note "== $tag returns all good for world generated by $tag2"
|
2012-07-22 18:58:58 -07:00
|
|
|
elif [ "`grep -c GOOD: "$resultfile"`" == "0" ]; then
|
|
|
|
result_note "EE $tag returns all bad for world generated by $tag2"
|
2012-07-22 17:45:43 -07:00
|
|
|
else
|
2012-07-22 18:58:58 -07:00
|
|
|
result_note "EE $tag returns some bad for world generated by $tag2"
|
|
|
|
result_note "`grep BAD: "$resultfile"`"
|
2012-07-22 17:45:43 -07:00
|
|
|
fi
|
|
|
|
done
|
2012-07-22 17:07:41 -07:00
|
|
|
done
|
|
|
|
|
2012-07-22 17:45:43 -07:00
|
|
|
echo ""
|
|
|
|
echo "Result summary:"
|
|
|
|
echo -e $result_summary
|
2012-07-22 17:07:41 -07:00
|
|
|
|
2012-07-22 17:45:43 -07:00
|
|
|
# EOF
|