]> git.xonotic.org Git - xonotic/xonotic.git/blobdiff - all
admin-merge: use --no-ff
[xonotic/xonotic.git] / all
diff --git a/all b/all
index 8f5ffa5c573b08e0b2207d03ad28ae0df17e62b9..648983b233f01a75c62dab0b03fb83883d02f855 100755 (executable)
--- a/all
+++ b/all
@@ -25,7 +25,6 @@ case "$0" in
                case "`uname`" in
                        MINGW*|Win*)
                                # Windows hates users. So this script has to copy itself elsewhere first...
-                               tname=
                                cp "$SELF" ../all.xonotic.sh
                                export WE_HATE_OUR_USERS=1
                                exec ../all.xonotic.sh "$@"
@@ -138,14 +137,14 @@ esac
 
 repourl()
 {
-       t=`echo "$repos_urls" | grep "^$1 " | cut -d '|' -f 2 | tr -d ' '`
-       if [ -n "$t" ]; then
-               case "$t" in
+       repo_t=`echo "$repos_urls" | grep "^$1 " | cut -d '|' -f 2 | tr -d ' '`
+       if [ -n "$repo_t" ]; then
+               case "$repo_t" in
                        *://*)
-                               echo "$t"
+                               echo "$repo_t"
                                ;;
                        *)
-                               echo "$base$t"
+                               echo "$base$repo_t"
                                ;;
                esac
        else
@@ -159,9 +158,9 @@ repourl()
 
 repobranch()
 {
-       t=`echo "$repos_urls" | grep "^$1 " | cut -d '|' -f 3 | tr -d ' '`
-       if [ -n "$t" ]; then
-               echo "$t"
+       repo_t=`echo "$repos_urls" | grep "^$1 " | cut -d '|' -f 3 | tr -d ' '`
+       if [ -n "$repo_t" ]; then
+               echo "$repo_t"
        else
                echo "master"
        fi
@@ -170,7 +169,6 @@ repobranch()
 repoflags()
 {
        echo "$repos_urls" | grep "^$1 " | cut -d '|' -f 4 | tr -d ' '
-       echo "$t"
 }
 
 repos=`for d in $repos; do
@@ -400,7 +398,7 @@ case "$cmd" in
                        fi
                        rem=`git config "branch.$r.remote" || echo origin`
                        bra=`git config "branch.$r.merge" || echo "$r"`
-                       upstream="$rem/$bra"
+                       upstream="$rem/${bra#refs/heads/}"
                        if ! git rev-parse "$upstream" >/dev/null 2>&1; then
                                upstream="origin/`repobranch "$d"`"
                        fi
@@ -426,35 +424,56 @@ case "$cmd" in
                        if [ -z "$CC" ]; then
                                export CC=gcc
                        fi
-               elif [ x"`uname`" = x"Darwin" ] && ( [ -d /Library/Frameworks/SDL.framework ] || [ -d $(HOME)/Library/Frameworks/SDL.framework ] ); then
-                       # AGL is broken in Snow Leopard, so let's default to SDL if it is available.
-                       TARGETS="sv-debug sdl-debug"
+               elif [ x"`uname`" = x"Darwin" ]; then
+                       case "`uname -r`" in
+                               ?.*)
+                                       TARGETS="sv-debug cl-debug sdl-debug"
+                                       ;;
+                               *)
+                                       # AGL cannot be compiled on systems with a kernel > 10.x (Snow Leopard)
+                                       TARGETS="sv-debug sdl-debug"
+                                       ;;
+                       esac
+                       export CC="gcc -I$PWD/misc/buildfiles/osx/Xonotic-SDL.app/Contents/Frameworks/SDL.framework/Headers -F$PWD/misc/buildfiles/osx/Xonotic-SDL.app/Contents/Frameworks"
                else
                        TARGETS="sv-debug cl-debug sdl-debug"
                fi
                case "$1" in
                        -c)
-                               clean=true
+                               cleandp=true
+                               cleanqcc=true
+                               cleanqc=true
                                shift
                                ;;
-                       *)
-                               clean=false
-                               ;;
-               esac
-               case "$1" in
-                       sdl)
-                               TARGETS="sdl-debug"
+                       -n)
+                               cleandp=false
+                               cleanqcc=false
+                               cleanqc=false
                                shift
                                ;;
-                       glx|agl|wgl)
-                               TARGETS="cl-debug"
-                               shift
-                               ;;
-                       dedicated)
-                               TARGETS="sv-debug"
-                               shift
+                       *)
+                               cleandp=false
+                               cleanqcc=false
+                               cleanqc=true # version info
                                ;;
                esac
+               if [ -n "$1" ]; then
+                       TARGETS=
+                       for X in $1; do
+                               case "$X" in
+                                       sdl)
+                                               TARGETS="sdl-debug $TARGETS"
+                                               ;;
+                                       glx|agl|wgl)
+                                               TARGETS="cl-debug $TARGETS"
+                                               ;;
+                                       dedicated)
+                                               TARGETS="sv-debug $TARGETS"
+                                               ;;
+                               esac
+                       done
+                       shift
+               fi
                if [ -z "$MAKEFLAGS" ]; then
                        if [ -f /proc/cpuinfo ]; then
                                ncpus=$((`grep -c '^processor   :' /proc/cpuinfo`+0))
@@ -471,28 +490,28 @@ case "$cmd" in
                                MAKEFLAGS="$MAKEFLAGS DP_MAKE_TARGET=mingw"
                        fi
                fi
+
                enter "$d0/fteqcc" verbose
-               if $clean; then
+               if $cleanqcc; then
                        verbose make $MAKEFLAGS clean
                fi
                verbose make $MAKEFLAGS
+
                enter "$d0/data/xonotic-data.pk3dir" verbose
-               if $clean; then
-                       verbose make $MAKEFLAGS clean
+               if $cleanqc; then
+                       verbose make FTEQCC="$d0/fteqcc/fteqcc.bin" "$@" $MAKEFLAGS clean
                fi
-               verbose make FTEQCC="$d0/fteqcc/fteqcc.bin" "$@" $MAKEFLAGS clean
                verbose make FTEQCC="$d0/fteqcc/fteqcc.bin" "$@" $MAKEFLAGS
+
                enter "$d0/darkplaces" verbose
-               if $clean; then
+               if $cleandp; then
                        verbose make $MAKEFLAGS clean
                fi
                for T in $TARGETS; do
                        verbose make $MAKEFLAGS "$@" "$T"
                done
+
                verbose "$SELF" update-maps
-               ;;
-       makebuild)
-               
                ;;
        run)
                if [ -n "$WE_HATE_OUR_USERS" ]; then
@@ -500,6 +519,7 @@ case "$cmd" in
                        export PATH="$d0/misc/buildfiles/w32:$PATH"
                elif [ x"`uname`" = x"Darwin" ]; then
                        export DYLD_LIBRARY_PATH="$d0/misc/buildfiles/osx/Xonotic-SDL.app/Contents/MacOS"
+                       export DYLD_FRAMEWORK_PATH="$d0/misc/buildfiles/osx/Xonotic-SDL.app/Contents/Frameworks"
                        client=-sdl
                else
                        client=-sdl
@@ -522,7 +542,7 @@ case "$cmd" in
                                exit 1
                        fi
                fi
-               set -- "darkplaces/darkplaces$client" -nexuiz -customgamename Xonotic -customgamedirname1 data -customgamedirname2 "" -customgamescreenshotname xonotic -customgameuserdirname xonotic "$@"
+               set -- "darkplaces/darkplaces$client" -nexuiz -customgamename Xonotic -customgamedirname1 data -customgamedirname2 "" -customgamescreenshotname xonotic -customgameuserdirname xonotic -mygames "$@"
 
                # if pulseaudio is running: USE IT
                if [ -z "$SDL_AUDIODRIVER" ] && ! [ -n "$WE_HATE_OUR_USERS" ] && ! [ x"`uname`" = x"Darwin" ]; then
@@ -648,7 +668,7 @@ case "$cmd" in
                                                continue
                                                ;;
                                        */*)
-                                               ;;
+                                               ;;
                                        *)
                                                continue
                                                ;;
@@ -658,9 +678,23 @@ case "$cmd" in
                                                continue
                                        fi
                                fi
+                               case "$base" in
+                                       master)
+                                               realbase=$base
+                                               ;;
+                                       *)
+                                               l0=`git rev-list "$base".."$ref" | wc -l`
+                                               l1=`git rev-list master.."$ref" | wc -l`
+                                               if [ $l0 -gt $l1 ]; then
+                                                       realbase=master
+                                               else
+                                                       realbase=$base
+                                               fi
+                                               ;;
+                               esac
                                reportecho "  Branch $ref:"
                                note=`GIT_NOTES_REF=refs/notes/admin-merge git notes show "$ref" 2>/dev/null || true`
-                               logdata=`git log --color "$base".."$ref"`
+                               logdata=`git log --color "$realbase".."$ref"`
                                if [ -z "$logdata" ]; then
                                        reportecho4 "--> not merging, no changes vs master"
                                        if yesno "Branch \"$ref\" probably should get deleted. Do it?" ''; then
@@ -668,7 +702,7 @@ case "$cmd" in
                                                reportecho4 "--> branch deleted"
                                        fi
                                else
-                                       diffdata=`git diff --color --find-copies-harder --ignore-space-change "$base"..."$ref"`
+                                       diffdata=`git diff --color --find-copies-harder --ignore-space-change "$realbase"..."$ref"`
                                        if [ -z "$diffdata" ]; then
                                                reportecho4 "--> not merging, no changes vs master, branch contains redundant history"
                                                if yesno "Branch \"$ref\" probably should get deleted. Do it?" '{ echo "$logdata"; } | less -r'; then
@@ -679,14 +713,14 @@ case "$cmd" in
                                                reportdo4 echo "$note"
                                                reportecho4 "--> not merging, already had this one rejected before"
                                        elif yesno "Branch \"$ref\" may want to get merged. Do it?" '{ echo "$logdata"; echo "$diffdata"; } | less -r'; then
-                                               git checkout "$base"
+                                               git checkout "$realbase"
                                                org=`git rev-parse HEAD`
-                                               if ! git merge "$ref" 2>&1 | tee "$t" && ! { git ls-files -u | grep ' 1   ' >/dev/null; }; then
+                                               if ! git merge --no-ff "$ref" 2>&1 | tee "$t" && ! { git ls-files -u | grep ' 1   ' >/dev/null; }; then
                                                        git reset --hard "$org"
                                                        GIT_NOTES_REF=refs/notes/admin-merge git notes edit -m "Merge failed:$LF`cat "$t"`" "$ref"
                                                        reportdo4 cat "$t"
                                                        reportecho4 "--> merge failed"
-                                               elif ! "$SELF" compile 2>&1 | tee "$t"; then
+                                               elif ! "$SELF" compile -n 2>&1 | tee "$t"; then
                                                        git reset --hard "$org"
                                                        GIT_NOTES_REF=refs/notes/admin-merge git notes edit -m "Compile failed:$LF`cat "$t"`" "$ref"
                                                        reportdo4 cat "$t"
@@ -705,6 +739,7 @@ case "$cmd" in
                                                                reportecho4 "--> test failed, postponed"
                                                        fi
                                                else
+                                                       echo "MERGING"
                                                        case ",`repoflags "$d"`," in
                                                                *,svn,*)
                                                                        # we do quite a mess here... luckily we know $org
@@ -789,34 +824,43 @@ case "$cmd" in
        release-engine-win32)
                rsync --exclude=.git -vaSHPAX Xonotic/misc/buildfiles/w32/* Xonotic/
                "$SELF" release-compile win32 \
-                       '"DP_MAKE_TARGET=mingw CC="$HOME/mingw32/bin/i386-mingw32-gcc -g -DSUPPORTDIRECTX -DUSE_WSPIAPI_H -I$HOME/dxheaders" WINDRES="$HOME/mingw32/bin/i386-mingw32-windres" SDL_CONFIG="$HOME/sdl-win32/SDL-1.2.13/bin/sdl-config"' \
+                       '"DP_MAKE_TARGET=mingw CC="i586-mingw32msvc-gcc -Wl,--dynamicbase -Wl,--nxcompat -g -DSUPPORTDIRECTX -DUSE_WSPIAPI_H -I$HOME/dp.win32/include -L$HOME/db.win32/lib" WINDRES="i586-mingw32msvc-windres" SDL_CONFIG="$HOME/dp.win32/bin/sdl-config"' \
                        win 'fteqcc.exe:Xonotic/fteqcc/fteqcc.exe' \
                        debug 'darkplaces.exe:xonotic.exe darkplaces-sdl.exe:xonotic-sdl.exe darkplaces-dedicated.exe:xonotic-dedicated.exe'
                ;;
+       release-engine-win64)
+               rsync --exclude=.git -vaSHPAX Xonotic/misc/buildfiles/w32/* Xonotic/
+               "$SELF" release-compile win32 \
+                       '"DP_MAKE_TARGET=mingw CC="amd64-mingw32msvc-gcc -Wl,--dynamicbase -Wl,--nxcompat -g -DSUPPORTDIRECTX -DUSE_WSPIAPI_H -I$HOME/dp.win64/include -L$HOME/db.win64/lib" WINDRES="amd64-mingw32msvc-windres" SDL_CONFIG="$HOME/dp.win64/bin/sdl-config"' \
+                       win 'fteqcc.exe:Xonotic/fteqcc/fteqcc.exe' \
+                       debug 'darkplaces.exe:xonotic-64.exe darkplaces-sdl.exe:xonotic-sdl-64.exe darkplaces-dedicated.exe:xonotic-dedicated-64.exe'
+               ;;
        release-engine-osx)
                rsync --exclude=.git -vaSHPAX Xonotic/misc/buildfiles/osx/* Xonotic/
                "$SELF" release-compile osx \
-                       'CC="gcc -g -arch i386 -arch ppc -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5"' \
+                       'CC="gcc -g -arch i386 -arch ppc -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5 -I$HOME/dp.osx/include -L$HOME/dp.osx/lib"' \
                        all 'fteqcc.bin:Xonotic/fteqcc/fteqcc.osx' \
                        sdl-debug 'darkplaces-sdl:Xonotic/Xonotic-SDL.app/Contents/MacOS/xonotic-osx-sdl-bin'
                ;;
        release-engine-linux32)
                "$SELF" release-compile linux32 \
-                       'CC="gcc -g -Wl,--hash-style=sysv" DP_MODPLUG_STATIC_LIBDIR=$HOME/darkplaces-deps/lib DP_LINK_TO_LIBJPEG=1 LDFLAGS_LIBJPEG="$HOME/darkplaces-deps/lib/libjpeg.a" CFLAGS_LIBJPEG="-I$HOME/darkplaces-deps/include"' \
+                       'CC="gcc -m32 -g -Wl,--hash-style=sysv -I$HOME/dp.linux32/include -L$HOME/dp.linux32/lib" DP_MODPLUG_STATIC_LIBDIR=$HOME/dp.linux32/lib DP_LINK_TO_LIBJPEG=1' \
                        all 'fteqcc.bin:Xonotic/fteqcc/fteqcc.linux32' \
                        debug 'darkplaces-glx:Xonotic/xonotic-linux-linux32-glx darkplaces-sdl:Xonotic/xonotic-linux-linux32-sdl darkplaces-dedicated:Xonotic/xonotic-linux-linux32-dedicated'
                ;;
        release-engine-linux64)
                "$SELF" release-compile linux64 \
-                       'CC="gcc -g -Wl,--hash-style=sysv" DP_MODPLUG_STATIC_LIBDIR=$HOME/darkplaces-deps/lib DP_LINK_TO_LIBJPEG=1 LDFLAGS_LIBJPEG="$HOME/darkplaces-deps/lib/libjpeg.a" CFLAGS_LIBJPEG="-I$HOME/darkplaces-deps/include"' \
+                       'CC="gcc -m64 -g -Wl,--hash-style=sysv -I$HOME/dp.linux64/include -L$HOME/dp.linux64/lib" DP_MODPLUG_STATIC_LIBDIR=$HOME/dp.linux64/lib DP_LINK_TO_LIBJPEG=1' \
                        all 'fteqcc.bin:Xonotic/fteqcc/fteqcc.linux64' \
                        debug 'darkplaces-glx:Xonotic/xonotic-linux-linux64-glx darkplaces-sdl:Xonotic/xonotic-linux-linux64-sdl darkplaces-dedicated:Xonotic/xonotic-linux-linux64-dedicated'
                ;;
        release-engine)
-               "$SELF" release-engine-win32
-               "$SELF" release-engine-osx
-               "$SELF" release-engine-linux32
-               "$SELF" release-engine-linux64
+               "$SELF" release-engine-win32 &
+               "$SELF" release-engine-win64 &
+               "$SELF" release-engine-osx &
+               "$SELF" release-engine-linux32 &
+               "$SELF" release-engine-linux64 &
+               wait
                ;;
        release-maps)
                "$SELF" update-maps
@@ -914,7 +958,7 @@ case "$cmd" in
                echo "  $SELF branch [<remote>] <branchname>"
                echo "  $SELF branch <remote> <branchname> <srcbranchname>"
                echo "  $SELF checkout [<remote>] <branchname>"
-               echo "  $SELF compile [-c] [<client>] <options>"
+               echo "  $SELF compile [-c|-n] [<client>] <options>"
                echo "  $SELF run [<client>] <options>"
                echo "  $SELF each <command>"
                ;;