]> git.xonotic.org Git - xonotic/xonotic.git/blobdiff - all
fix lack of error when switching to an unknown branch
[xonotic/xonotic.git] / all
diff --git a/all b/all
index 8c4cde78638d24ebb00098ee4309c2e4233a7902..629f5f89d6f225b1254c775ad08b4600497d603b 100755 (executable)
--- a/all
+++ b/all
@@ -284,12 +284,38 @@ case "$cmd" in
                release_tempstarttime=$release_starttime
                release_timereport()
                {
-                       release_now=`date +%s` # RELEASE NOW!!!
+                       release_endtime=`date +%s` # RELEASE NOW!!!
                        if [ -n "$*" ]; then
-                               release_deltatime=$(($release_tempstarttime - $release_now))
+                               release_deltatime=$(($release_endtime - $release_tempstarttime))
                                msg "**** $release_args: $*: $release_deltatime seconds"
                        fi
-                       release_tempstarttime=$release_now
+                       release_tempstarttime=$release_endtime
+               }
+               release_git_extract_dir()
+               {
+                       release_src=$1; shift
+                       release_dst=$1; shift
+                       # try to create a hardlink
+                       if ln -f "$release_src/.git/HEAD" "$release_dst/.hardlink-test"; then
+                               rm -f "$release_dst/.hardlink-test"
+                               {
+                                       verbose cd "$release_src"
+                                       git ls-files HEAD -- "$@"
+                               } | {
+                                       while IFS= read -r F; do
+                                               case "$F" in */*) mkdir -p "$release_dst/${F%/*}" ;; esac
+                                               verbose ln -f "$release_src/$F" "$release_dst/$F"
+                                       done
+                               }
+                       else
+                               {
+                                       verbose cd "$release_src"
+                                       verbose git archive --format=tar HEAD -- "$@"
+                               } | {
+                                       verbose cd "$release_dst"
+                                       verbose tar xvf -
+                               }
+                       fi
                }
                ;;
 esac
@@ -745,10 +771,8 @@ case "$cmd" in
                        else
                                b=`repobranch "$d"`
                                if git rev-parse "refs/heads/$b" >/dev/null 2>&1; then
-                                       exists=true
                                        verbose git checkout $checkoutflags "$b"
                                elif git rev-parse "refs/remotes/$remote/$b" >/dev/null 2>&1; then
-                                       exists=true
                                        verbose git checkout $checkoutflags --track -b "$b" "$remote/$b"
                                else
                                        $ECHO "WTF? Not even branch $b doesn't exist in $d"
@@ -1580,46 +1604,26 @@ case "$cmd" in
                else
                        verbose date +%Y%m%d > Xonotic/stamp.txt
                fi
-               verbose git archive --format=tar HEAD -- Docs misc server xonotic-linux-glx.sh xonotic-linux-sdl.sh misc/buildfiles key_0.d0pk | {
+               release_git_extract_dir "." "Xonotic" Docs misc server xonotic-linux-glx.sh xonotic-linux-sdl.sh misc/buildfiles key_0.d0pk
+               (
                        verbose cd Xonotic
                        verbose mkdir data fteqcc source source/darkplaces source/fteqcc source/d0_blind_id mapping
-                       verbose tar xvf -
                        verbose rm -rf misc/builddeps
-                       verbose mv misc/buildfiles/win32/* . || true
+                       verbose mv misc/buildfiles/win32 bin32 || true
+                       verbose mv bin32/SDL.dll . || true
                        verbose mv misc/buildfiles/win64 bin64 || true
                        verbose mv misc/buildfiles/osx/* . || true
                        verbose rm -rf misc/buildfiles
                        verbose rm -rf misc/pki
-               }
-               {
-                       verbose cd darkplaces
-                       verbose git archive --format=tar HEAD
-               } | {
-                       verbose cd Xonotic/source/darkplaces
-                       verbose tar xvf -
-               }
-               {
-                       verbose cd fteqcc
-                       verbose git archive --format=tar HEAD
-               } | {
-                       verbose cd Xonotic/source/fteqcc
-                       verbose tar xvf -
-               }
-               {
-                       verbose cd data/xonotic-data.pk3dir
-                       verbose git archive --format=tar HEAD -- qcsrc Makefile
-               } | {
-                       verbose cd Xonotic/source
-                       verbose tar xvf -
-               }
-               {
-                       verbose cd d0_blind_id
-                       verbose git archive --format=tar HEAD
-               } | {
+               )
+               release_git_extract_dir "darkplaces" "Xonotic/source/darkplaces" .
+               release_git_extract_dir "fteqcc" "Xonotic/source/fteqcc" .
+               release_git_extract_dir "data/xonotic-data.pk3dir" "Xonotic/source" qcsrc Makefile
+               release_git_extract_dir "d0_blind_id" "Xonotic/source/d0_blind_id" .
+               (
                        verbose cd Xonotic/source/d0_blind_id
-                       verbose tar xvf -
                        verbose sh autogen.sh
-               }
+               )
                rm -f Xonotic/key_15.d0pk
                {
                        verbose cd Xonotic/mapping
@@ -1822,13 +1826,7 @@ case "$cmd" in
                verbose rm -rf Xonotic/temp
                release_timereport "deleted temp directory"
                verbose mkdir -p Xonotic/temp
-               {
-                       verbose cd "$src"
-                       verbose git archive --format=tar HEAD
-               } | {
-                       verbose cd Xonotic/temp
-                       verbose tar xvf -
-               }
+               release_git_extract_dir "$src" "Xonotic/temp" .
                release_timereport "extracted data"
                verbose cd Xonotic/temp
                if [ x"$src" = x"data/xonotic-data.pk3dir" ]; then
@@ -1848,11 +1846,22 @@ case "$cmd" in
                                        versionstr="$versionstr$RELEASETYPE"
                                        ;;
                        esac
-                       verbose sed -i "
-                               s/^set g_xonoticversion [^ ]* /set g_xonoticversion $versionstr /;
-                               s/^gameversion_min [0-9]*/gameversion_min $(( ($gv / 100) * 100 - 100 ))/;
-                               s/^gameversion_max [0-9]*/gameversion_max $(( ($gv / 100) * 100 + 199 ))/;
-                       " defaultXonotic.cfg
+                       if [ $gv -lt 900 ]; then
+                               # pre-1.0: compatible with any other pre-1.0
+                               verbose sed "
+                                       s/^set g_xonoticversion [^ ]* /set g_xonoticversion $versionstr /;
+                                       s/^gameversion_min [0-9]*/gameversion_min     0/;
+                                       s/^gameversion_max [0-9]*/gameversion_max  9999/;
+                               " < defaultXonotic.cfg > defaultXonotic.cfg.new
+                       else
+                               # >= 1.0
+                               verbose sed "
+                                       s/^set g_xonoticversion [^ ]* /set g_xonoticversion $versionstr /;
+                                       s/^gameversion_min [0-9]*/gameversion_min $(( ($gv / 100) * 100 - 100 ))/;
+                                       s/^gameversion_max [0-9]*/gameversion_max $(( ($gv / 100) * 100 + 199 ))/;
+                               " < defaultXonotic.cfg > defaultXonotic.cfg.new
+                       fi
+                       mv defaultXonotic.cfg.new defaultXonotic.cfg
                        case "$RELEASETYPE" in
                                release)
                                        echo "" >> defaultXonotic.cfg
@@ -1862,6 +1871,7 @@ case "$cmd" in
                        esac
                        (
                                verbose cd gfx/menu/luminos
+                               verbose rm -f background_l2.tga background_ingame_l2.tga
                                verbose cp "$d0"/mediasource/gfx/menu/luminos_versionbuilder/background_l2.svg .
                                verbose "$d0"/mediasource/gfx/menu/luminos_versionbuilder/versionbuilder "$versionstr"
                                verbose rm background_l2.svg
@@ -1935,7 +1945,7 @@ case "$cmd" in
                fi
                # build the archives
                verbose mkzip Xonotic-$stamp-engine.zip \
-                       Xonotic/*.dll \
+                       Xonotic/bin32/*.dll \
                        Xonotic/bin64/*.dll \
                        Xonotic/*.app \
                        Xonotic/xonotic-* \