]> git.xonotic.org Git - xonotic/xonotic.git/blobdiff - all
simplify the bash workaround
[xonotic/xonotic.git] / all
diff --git a/all b/all
index 1e4f651b2adc7fc7e1c18021516e7ab0aa125bf2..338967a7e998281f6e47c88f6823ba278dbb8b69 100755 (executable)
--- a/all
+++ b/all
@@ -110,17 +110,17 @@ enter()
 }
 
 repos_urls="
-.                             |                                                   | master      |
-data/xonotic-data.pk3dir      |                                                   | master      |
-data/xonotic-music.pk3dir     |                                                   | master      |
-data/xonotic-nexcompat.pk3dir |                                                   | master      | no
-darkplaces                    |                                                   | div0-stable | svn
-netradiant                    |                                                   | master      |
-div0-gittools                 |                                                   | master      | no
-d0_blind_id                   | http://github.com/divVerent/d0_blind_id.git       | master      |
-data/xonotic-maps.pk3dir      |                                                   | master      |
-mediasource                   |                                                   | master      | no
-fteqcc                        | http://github.com/Blub/qclib.git                  | master      |
+.                             |                                                   | master         |
+data/xonotic-data.pk3dir      |                                                   | master         |
+data/xonotic-music.pk3dir     |                                                   | master         |
+data/xonotic-nexcompat.pk3dir |                                                   | master         | no
+darkplaces                    |                                                   | div0-stable    | svn
+netradiant                    |                                                   | master         |
+div0-gittools                 |                                                   | master         | no
+d0_blind_id                   |                                                   | master         |
+data/xonotic-maps.pk3dir      |                                                   | master         |
+mediasource                   |                                                   | master         | no
+fteqcc                        |                                                   | xonotic-stable | noautocrlf
 "
 # todo: in darkplaces, change repobranch to div0-stable
 
@@ -308,7 +308,14 @@ fix_git_config()
                verbose git config --unset remote.origin.pushurl || true
        fi
        verbose git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
-       verbose git config core.autocrlf input
+       case ",`repoflags "$d"`," in
+               *,noautocrlf,*)
+                       verbose git config --unset core.autocrlf || true
+                       ;;
+               *)
+                       verbose git config core.autocrlf input
+                       ;;
+       esac
        if [ -z "`git config push.default || true`" ]; then
                verbose git config push.default current # or is tracking better?
        fi
@@ -332,6 +339,39 @@ mkzip0()
        zip -0y "$@"
 }
 
+mirrorspeed()
+{
+       # first result is to be ignored, but we use it to check status
+       git ls-remote "$1" refs/heads/master >/dev/null 2>&1 || return 1
+       { time -p git ls-remote "$1" refs/heads/master; } 2>&1 >/dev/null | head -n 1 | cut -d ' ' -f 2 | tr -d . | sed 's,^0*,,'
+               # unit: clock ticks (depends on what "time" returns
+}
+
+bestmirror()
+{
+       pre=$1; shift
+       suf=$1; shift
+
+       bestin=
+       bestt=
+       for in in "$@"; do
+               m=$pre$in$suf
+               if t=`mirrorspeed "$m"`; then
+                       msg "$m -> $t ticks"
+                       if [ -n "$t" ]; then
+                               if [ -z "$bestt" ] || [ "$t" -lt "$bestt" ]; then
+                                       bestin=$in
+                                       bestt=$t
+                               fi
+                       fi
+               else
+                       msg "$m -> FAIL"
+               fi
+       done
+       msg "Best mirror seems to be $pre$bestin$suf"
+       echo "$bestin"
+}
+
 case "$cmd" in
        fix_upstream_rebase)
                for d in $repos; do
@@ -431,12 +471,14 @@ case "$cmd" in
                                case "$2" in
                                        nl) ;;
                                        de) ;;
+                                       best) ;;
                                        default) ;;
                                        *)
                                                msg "Invalid location!"
                                                msg "Possible locations for the -l option:"
                                                msg "  nl (Netherlands, run by merlijn)"
                                                msg "  de (Germany, run by divVerent)"
+                                               msg "  best (find automatically)"
                                                msg "  default (currently nl)"
                                                exit 1
                                                ;;
@@ -464,6 +506,17 @@ case "$cmd" in
                                                ;;
                                esac
                                ;;
+                       best)
+                               base=`echo "$base" | sed "s,://\(.*\.\)\?git.xonotic.org/,:// .git.xonotic.org/,"`
+                               case "$base" in
+                                       *\ *)
+                                               location=`bestmirror $base"xonotic.git" de nl`
+                                               ;;
+                                       *)
+                                               location=
+                                               ;;
+                               esac
+                               ;;
                esac
                if [ -n "$location" ]; then
                        base=`echo "$base" | sed "s,://\(.*\.\)\?git.xonotic.org/,://$location.git.xonotic.org/,"`
@@ -704,6 +757,7 @@ case "$cmd" in
                cleanqc=false
                compiled0=false
                debug=debug
+               snowleopardhack=false
                if [ -z "$CC" ]; then
                        export CC="gcc -DSUPPORTIPV6"
                fi
@@ -739,6 +793,7 @@ case "$cmd" in
                                        ;;
                                *)
                                        # AGL cannot be compiled on systems with a kernel > 10.x (Snow Leopard)
+                                       snowleopardhack=true
                                        TARGETS="sv-$debug sdl-$debug"
                                        ;;
                        esac
@@ -760,7 +815,13 @@ case "$cmd" in
                                        sdl)
                                                TARGETS="$TARGETS sdl-debug"
                                                ;;
-                                       glx|agl|wgl)
+                                       agl)
+                                               TARGETS="$TARGETS cl-debug"
+                                               if $snowleopardhack; then
+                                                       export CC="$CC -arch i386"
+                                               fi
+                                               ;;
+                                       glx|wgl)
                                                TARGETS="$TARGETS cl-debug"
                                                ;;
                                        dedicated)
@@ -1031,6 +1092,12 @@ case "$cmd" in
                        reportecho "$o"
                }
                for d in $repos; do
+                       case "$d" in
+                               fteqcc)
+                                       # sorry, fteqcc repo is managed manually
+                                       continue
+                                       ;;
+                       esac
                        enter "$d0/$d" verbose
                        base="`repobranch "$d"`"
                        reportecho "In $d:"
@@ -1114,6 +1181,11 @@ case "$cmd" in
                                                                reportecho4 "--> test failed, postponed"
                                                        fi
                                                else
+                                                       # apply crlf, or other cleanup filters (non-behavioural changes)
+                                                       git reset --hard
+                                                       find . -type f -exec touch {} \;
+                                                       git commit -a --amend -C HEAD || true # don't fail if nothing to commit
+
                                                        echo "MERGING"
                                                        case ",`repoflags "$d"`," in
                                                                *,svn,*)
@@ -1195,8 +1267,21 @@ case "$cmd" in
                                rmuntracked=true
                        elif [ x"$X" = x"-D" ]; then
                                killbranches=true
+                       elif echo "$X" | grep '^-FFFF*UUUU*$' >/dev/null; then
+                               msg ''
+                               msg '        _____'
+                               msg '    ,--'\''-\\P/`\\  FFFFFFF'
+                               msg ' __/_    B/,-.\\  FFFFFFF'
+                               msg ' /  _\\  (//  O\\\\  FFFFFF'
+                               msg '| (O  `) _\\._ _)\\  FFFUU'
+                               msg '| |___/.^d0~~"\\  \\ UUUU'
+                               msg '|     |`~'\''     \\ |  UUUU'
+                               msg '|     |    __,C>|| UUUU'
+                               msg '\\    /_ ,-/,-'\''   |  UUUU'
+                               msg ' \\\\_ \\_>~'\''      /  UUUU-'
+                               msg ''
                        else
-                               break
+                               msg "Unknown arg: $X"
                        fi
                        found=true
                        shift
@@ -1519,7 +1604,7 @@ case "$cmd" in
                # music: reduce bitrate
                verbose export do_jpeg=true
                verbose export jpeg_qual_rgb=80
-               verbose export jpeg_qual_a=99
+               verbose export jpeg_qual_a=97
                verbose export do_dds=false
                verbose export do_ogg=true
                verbose export ogg_qual=1