X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fxonotic.git;a=blobdiff_plain;f=misc%2Ftools%2Fxonotic-map-compiler-autobuild;h=1c8b8d681043125e7f8a22603e1d41d1586c84dc;hp=b25cf2f443abc5ca71694bf89e21b0744e09c664;hb=3e2563c648264824c2f50ab9b7958a78352699c0;hpb=c52c5f294214600c55a1e76be74dfc6015903073 diff --git a/misc/tools/xonotic-map-compiler-autobuild b/misc/tools/xonotic-map-compiler-autobuild index b25cf2f4..1c8b8d68 100755 --- a/misc/tools/xonotic-map-compiler-autobuild +++ b/misc/tools/xonotic-map-compiler-autobuild @@ -4,9 +4,13 @@ set -e bspdir="$PWD/data" url=http://beta.xonotic.org/autobuild-bsp/ -url_ssh=beta.xonotic.org:autobuild-bsp/ -cachedir="$HOME/xonotic-map-compiler.cache/" -override="-bsp_timeout 900 -vis_timeout 3600 -light_timeout 14400 -minimap_timeout 900 -scale_timeout 900" +url_ssh=xonotic-beta:autobuild-bsp/ +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 @@ -117,7 +147,7 @@ buildthemap() HASH=$2 url=$3 M=$4 - blobhash=$6 + blobhash=$5 if HEAD "$url$M-$blobhash.pk3"; then continue fi @@ -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)) @@ -137,13 +167,49 @@ buildthemap() fi zip -9r "$M-$blobhash.pk3" "maps/$M.bsp" "maps/$M.log" "maps/$M.irc" "maps/$M/" "maps/$M.lin" "gfx/${M}_mini.tga" ln -snf "../$M-$blobhash.pk3" "$M.pk3" # from ALL branches, so beware! - rsync -vaSHP "$M-$blobhash.pk3" "$url_ssh" - rsync -vaSHP "$M.pk3" "$url_ssh""latest/" + cp "$M-$blobhash.pk3" "$M-full-$blobhash.pk3" + zip -9r "$M-full-$blobhash.pk3" `git diff --name-only --diff-filter=ACMRTUXB master...HEAD` || true + ln -snf "../$M-full-$blobhash.pk3" "$M-full.pk3" # from ALL branches, so beware! + rsync -vaSHP "$M-$blobhash.pk3" "$M-full-$blobhash.pk3" "$url_ssh" + rsync -vaSHP "$M.pk3" "$M-full.pk3" "$url_ssh""latest/" if [ -n "$IRCSPAM" ]; then $IRCSPAM < "maps/$M.irc" 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 @@ -164,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 } @@ -172,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 ;;