X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fxonotic.git;a=blobdiff_plain;f=misc%2Ftools%2Fxonotic-map-compiler-autobuild;h=1c8b8d681043125e7f8a22603e1d41d1586c84dc;hp=90a012325b829c864083833b20f87292821e07db;hb=3e2563c648264824c2f50ab9b7958a78352699c0;hpb=600285e93c924f3bfc482dee2c4990768c05cd79 diff --git a/misc/tools/xonotic-map-compiler-autobuild b/misc/tools/xonotic-map-compiler-autobuild index 90a01232..1c8b8d68 100755 --- a/misc/tools/xonotic-map-compiler-autobuild +++ b/misc/tools/xonotic-map-compiler-autobuild @@ -5,8 +5,12 @@ set -e bspdir="$PWD/data" url=http://beta.xonotic.org/autobuild-bsp/ url_ssh=xonotic-beta:autobuild-bsp/ -cachedir="$HOME/xonotic-map-compiler.cache/" -override="-bsp_timeout 900 -vis_timeout 3600 -light_timeout 14400 -minimap_timeout 900 -scale_timeout 900" +build_cachedir="$HOME/xonotic-map-compiler.cache/" +screenshot_cachedir="$HOME/xonotic-map-screenshot.cache/" +build_override="-bsp_timeout 900 -vis_timeout 3600 -light_timeout 14400 -minimap_timeout 900 -scale_timeout 900" +screenshot_override="9 300" + +getthemap_fail=false allmaps() { @@ -39,6 +43,32 @@ pre2spam() echo "[$branch $hash] starting map compile of $map" } +ss2spam() +{ + map=$1 + url=$2 + branch=$3 + hash=$4 + status=$5 + + branch=${branch##refs/heads/} + branch=${branch##refs/remotes/} + branch=${branch##origin/} + hash=`echo "$hash" | cut -c 1-7` + + s_error= + + if [ "$status" -ne 0 ]; then + s_error="exited with status $status" + fi + + if [ -n "$s_error" ]; then + echo "[$branch $hash] 4screenshots of $map could not be made: $s_error" + else + echo "[$branch $hash] screenshots of $map are available on $url" + fi +} + log2spam() { map=$1 @@ -127,7 +157,7 @@ buildthemap() t0=`date +%s` ( cd maps - ../../../misc/tools/xonotic-map-compiler "$M" `grep ^- "$M.map.options" | cut -d '#' -f 1` $override > "$M.log" + ../../../misc/tools/xonotic-map-compiler "$M" `grep ^- "$M.map.options" | cut -d '#' -f 1` $build_override > "$M.log" ) t1=`date +%s` dt=$(($t1 - $t0)) @@ -147,6 +177,39 @@ buildthemap() fi } +screenshotthemap() +{ + REFNAME=$1 + HASH=$2 + url=$3 + M=$4 + blobhash=$5 + if HEAD "$url$M-$blobhash/"; then + continue + fi + rm -rf ~/.xonotic + ( + cd ../.. + misc/tools/xonotic-map-screenshot "$M" $screenshot_override +scr_screenshot_name "$M" + ) + if ! mv ~/.xonotic/data/screenshots "$M-$blobhash"; then + if [ -n "$IRCSPAM" ]; then + ss2spam "$M" "$url$M-$blobhash/" "$REFNAME" "$HASH" > "maps/$M.ircss" + fi + return 1 + fi + if [ -n "$IRCSPAM" ]; then + ss2spam "$M" "$url$M-$blobhash/" "$REFNAME" "$HASH" > "maps/$M.ircss" + fi + mv ~/.xonotic/data/screenshots "$M-$blobhash" + ln -snf "../$M-$blobhash" "$M" # from ALL branches, so beware! + rsync -vaSHP "$M-$blobhash" "$url_ssh" + rsync -vaSHP "$M" "$url_ssh""latest/" + if [ -n "$IRCSPAM" ]; then + $IRCSPAM < "maps/$M.ircss" + fi +} + getthemap() { url=$1 @@ -167,6 +230,7 @@ getthemap() if ! unzip -l "$bspdir/$M-$blobhash.pk3"; then rm -f "$bspdir/$M-$blobhash.pk3" echo "WARNING: could not download $url$M-$blobhash.pk3, invalid zip file" + getthemap_fail=true return 0 fi } @@ -175,14 +239,31 @@ case "$1" in build) cd data/xonotic-maps.pk3dir git for-each-ref 'refs/remotes' | while read -r HASH TYPE REFNAME; do - if [ -f "$cachedir/$HASH" ]; then + if [ -f "$build_cachedir/$HASH" ]; then continue fi git reset --hard git clean -xfd git checkout -f "$HASH" allmaps buildthemap "$REFNAME" "$HASH" "$url" - touch "$cachedir/$HASH" + touch "$build_cachedir/$HASH" + done + git checkout -f master + ;; + screenshot) + cd data/xonotic-maps.pk3dir + git for-each-ref 'refs/remotes' | while read -r HASH TYPE REFNAME; do + if [ -f "$screenshot_cachedir/$HASH" ]; then + continue + fi + git reset --hard + git clean -xfd + git checkout -f "$HASH" + allmaps getthemap "$url" "$bspdir.old" "$bspdir" + if ! $getthemap_fail; then + allmaps screenshotthemap "$REFNAME" "$HASH" "$url" + touch "$screenshot_cachedir/$HASH" + fi done git checkout -f master ;;