if [ -z "$r_me" ] || [ -z "$r_other" ]; then
return
fi
+
+ # one of the two sides of the merge should be remote upstream, or all is fine
+ r_r=`git symbolic-ref HEAD`
+ r_r=${r_r#refs/heads/}
+ r_rem=`git config "branch.$r_rem.remote" || $ECHO origin`
+ r_bra=`git config "branch.$r_bra.merge" || $ECHO "$r_r"`
+ r_bra=${r_bra#refs/heads/}
+ if [ x"$r_me" != x"`git rev-parse "$r_rem/$r_bra"`" ]; then
+ if [ x"$r_other" != x"`git rev-parse "$r_rem/$r_bra"`" ]; then
+ return
+ fi
+ fi
+
r_base=`git merge-base "$r_me" "$r_other"`
# no merge-base? upstream did filter-branch
bestin=
bestt=
- for in in "$@"; do
+ for mir in "$@"; do
+ case "$mir" in
+ *:*)
+ in=${mir%%:*}
+ op=${mir#*:}
+ ;;
+ *)
+ in=$mir
+ op=
+ ;;
+ esac
m=$pre$in$suf
if t=`mirrorspeed "$m"`; then
- msg "$m -> $t ticks"
if [ -n "$t" ]; then
- if [ -z "$bestt" ] || [ "$t" -lt "$bestt" ]; then
+ tt=$(($t$op)) # fudge factor
+ msg "$m -> $t$op = $tt ticks"
+ if [ -z "$bestt" ] || [ "$tt" -lt "$bestt" ]; then
bestin=$in
- bestt=$t
+ bestt=$tt
fi
+ else
+ msg "$m -> error"
fi
else
msg "$m -> FAIL"
allow_pull=false
elif [ x"$1" = x"-p" ]; then
fix_config=true
- if [ x"$base" != x"ssh://xonotic@git.xonotic.org/" ]; then
- pushbase=ssh://xonotic@git.xonotic.org/
- fi
+ pushbase=ssh://xonotic@git.xonotic.org/
+ elif [ x"$1" = x"-ps" ]; then
+ fix_config=true
+ pushbase=ssh://xonotic@git.xonotic.org/
+ elif [ x"$1" = x"-ph" ]; then
+ fix_config=true
+ pushbase=http://git.xonotic.org/login/xonotic/
elif [ x"$1" = x"-s" ]; then
fix_config=true
base=ssh://xonotic@git.xonotic.org/
- pushbase=
elif [ x"$1" = x"-g" ]; then
fix_config=true
base=git://git.xonotic.org/xonotic/
case "$2" in
nl) ;;
de) ;;
+ us) ;;
best) ;;
default) ;;
*)
msg "Possible locations for the -l option:"
msg " nl (Netherlands, run by merlijn)"
msg " de (Germany, run by divVerent)"
+ msg " us (United States of America, run by detrate)"
msg " best (find automatically)"
msg " default (currently nl)"
exit 1
fi
shift
done
+ case "$location" in
+ current)
+ if [ x"`git config xonotic.all.mirrorselection 2>/dev/null || true`" != x"done" ]; then
+ git config xonotic.all.mirrorselection done
+ location=best
+ fi
+ ;;
+ esac
case "$location" in
best)
+ # if we fetched via ssh://, switch to git:// for fetching and keep using ssh:// for pushing
+ case "$base" in
+ ssh://*|*/login/*)
+ pushbase=$base
+ base=git://git.xonotic.org/xonotic/
+ ;;
+ esac
newbase=`$ECHO "$base" | sed "s,://\(.*\.\)\?git.xonotic.org/,:// .git.xonotic.org/,"`
case "$newbase" in
*\ *)
- if location=`bestmirror $newbase"xonotic.git" de nl`; then
+ if location=`bestmirror $newbase"xonotic.git" de us nl:'*6/5'`; then # 20% malus to the NL server to not overload it too much
:
else
location=current
;;
-r)
debug=release
- export CC="$CC -g -mtune=native -march=native"
+ export CC="$CC -g"
+ case "`$CC -dumpversion`" in
+ [5-9]*|[1-9][0-9]*|4.[3-9]*|4.[1-9][0-9]*)
+ # gcc 4.3 or higher
+ # -march=native is broken < 4.3
+ export CC="$CC -mtune=native -march=native"
+ ;;
+ esac
if [ -n "$WE_HATE_OUR_USERS" ]; then
export CC="$CC -fno-common"
fi
mkdir -p .libs
if [ -n "$WE_HATE_OUR_USERS" ]; then
verbose cp "$d0/misc/buildfiles/win32/libd0_blind_id"-* .libs/
+ verbose cp "$d0/misc/buildfiles/win32/libd0_rijndael"-* .libs/
verbose cp "$d0/misc/buildfiles/win32/libgmp"-* .libs/
else
case "`uname`" in
Linux)
case `uname -m` in
x86_64)
- verbose cp "$d0/misc/builddeps/dp.linux64/lib/libd0_blind_id".* .libs/
- verbose cp "$d0/misc/builddeps/dp.linux64/lib/libgmp".* .libs/
- MAKEFLAGS="$MAKEFLAGS DP_CRYPTO_STATIC_LIBDIR=../misc/builddeps/dp.linux64/lib/"
+ #verbose cp "$d0/misc/builddeps/dp.linux64/lib/libd0_blind_id".* .libs/
+ #verbose cp "$d0/misc/builddeps/dp.linux64/lib/libd0_rijndael".* .libs/
+ #verbose cp "$d0/misc/builddeps/dp.linux64/lib/libgmp".* .libs/
+ MAKEFLAGS="$MAKEFLAGS DP_CRYPTO_STATIC_LIBDIR=../misc/builddeps/dp.linux64/lib/ DP_CRYPTO_RIJNDAEL_STATIC_LIBDIR=../misc/builddeps/dp.linux64/lib/"
;;
*86)
- verbose cp "$d0/misc/builddeps/dp.linux32/lib/libd0_blind_id".* .libs/
- verbose cp "$d0/misc/builddeps/dp.linux32/lib/libgmp".* .libs/
- MAKEFLAGS="$MAKEFLAGS DP_CRYPTO_STATIC_LIBDIR=../misc/builddeps/dp.linux32/lib/"
+ #verbose cp "$d0/misc/builddeps/dp.linux32/lib/libd0_blind_id".* .libs/
+ #verbose cp "$d0/misc/builddeps/dp.linux32/lib/libd0_rijndael".* .libs/
+ #verbose cp "$d0/misc/builddeps/dp.linux32/lib/libgmp".* .libs/
+ MAKEFLAGS="$MAKEFLAGS DP_CRYPTO_STATIC_LIBDIR=../misc/builddeps/dp.linux32/lib/ DP_CRYPTO_RIJNDAEL_STATIC_LIBDIR=../misc/builddeps/dp.linux32/lib/"
;;
*)
compiled0=true
;;
Darwin)
verbose cp "$d0/misc/buildfiles/osx/Xonotic.app/Contents/MacOS/libd0_blind_id".* .libs/
+ verbose cp "$d0/misc/buildfiles/osx/Xonotic.app/Contents/MacOS/libd0_rijndael".* .libs/
;;
*)
compiled0=true
binary=$1
- if [ -n "$USE_GDB" ]; then
+ if [ x"$USE_GDB" = x"yes" ]; then
set -- gdb --args "$@"
- elif which gdb >/dev/null 2>&1; then
+ elif [ x"$USE_GDB" != x"no" ] && which gdb >/dev/null 2>&1; then
set -- gdb --batch -x savecore.gdb --args "$@"
elif which catchsegv >/dev/null 2>&1; then
set -- catchsegv "$@"
$ECHO "The core dump can be examined later by"
$ECHO " gdb $binary xonotic.core"
fi
+ exit 1
fi
;;
each|foreach)
;;
admin-merge)
branch=$1
+ only_delete=false
+ case "$branch" in
+ -d)
+ branch=
+ only_delete=true
+ ;;
+ esac
t=`mktemp`
report=""
reportecho()
git push origin :"${ref#refs/remotes/origin/}"
reportecho4 "--> branch deleted"
fi
+ elif $only_delete; then
+ reportecho4 "--> skipped in delete-only run"
elif [ -z "$branch" ] && [ -n "$note" ]; then
reportdo4 $ECHO "$note"
reportecho4 "--> not merging, already had this one rejected before"
msg "Unknown arg: $X"
fi
found=true
- shift
done
if ! $found; then
rmuntracked=true
if $rmuntracked; then
case "$d" in
.)
- verbose git clean -df
+ verbose git clean -df || true
;;
*)
- verbose git clean -xdf
+ verbose git clean -xdf || true
;;
esac
fi
verbose git branch -D "${B#refs/heads/}"
fi
done
- git rev-parse refs/heads/master >/dev/null 2>&1 || verbose git branch -t master origin/master || true
- git rev-parse "refs/heads/`repobranch "$d"`" >/dev/null 2>&1 || verbose git branch -t "`repobranch "$d"`" origin/"`repobranch "$d"`" || true
+ git rev-parse refs/heads/master >/dev/null 2>&1 || verbose git branch --track master origin/master || true
+ git rev-parse "refs/heads/`repobranch "$d"`" >/dev/null 2>&1 || verbose git branch --track "`repobranch "$d"`" origin/"`repobranch "$d"`" || true
fi
checkself "$cmd" "$@"
done
release-prepare)
#"$SELF" each git clean -fxd
case "$RELEASETYPE" in
- beta)
- msg "Building a BETA"
- ;;
- release)
- msg "Building a RELEASE"
- ;;
- *)
+ '')
$ECHO >&2 -n "$ESC[2J$ESC[H"
msg ""
msg ""
# (YYYYMMDD)
exit 1
;;
+ release)
+ msg "Building a FINISHED RELEASE"
+ ;;
+ *)
+ msg "Building a $RELEASETYPE"
+ ;;
esac
verbose rm -rf Xonotic Xonotic*.zip
verbose mkdir -p Xonotic
fi
verbose git archive --format=tar HEAD -- 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
+ 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 cd Xonotic/source
verbose tar xvf -
}
+ {
+ verbose cd d0_blind_id
+ verbose git archive --format=tar HEAD
+ } | {
+ verbose cd Xonotic/source/d0_blind_id
+ verbose tar xvf -
+ verbose sh autogen.sh
+ }
rm -f Xonotic/key_15.d0pk
+ {
+ verbose cd mapping
+ verbose wget http://www.icculus.org/netradiant/files/netradiant-1.5.0-20110223.tar.bz2
+ verbose wget http://www.icculus.org/netradiant/files/netradiant-1.5.0-20110223-win32-7z.exe
+ for X in *-7z.exe; do
+ 7za x "$X"
+ rm -f "$X"
+ done
+ # TODO possibly include other tools?
+ }
;;
release-compile-run)
host=$1
for f in $targetfiles; do
#verbose "$d0/misc/tools/rebrand-darkplaces-engine.sh" "${XONOTIC_BRAND:-$d0/misc/tools/xonotic.brand}" "${f##*:}" || true
case "${f##*:}" in
- xonotic*.exe)
+ Xonotic/xonotic*.exe)
verbose "$d0/misc/tools/change-icon-of-exe.sh" "$d0/misc/logos/icons_ico/xonotic.ico" "${f##*:}"
(
d=`mktemp -d -t rebrand.XXXXXX`
win 'fteqcc.exe:Xonotic/fteqcc/fteqcc.exe' \
'' ''
verbose "$SELF" release-compile win32 \
- 'STRIP=: DP_MAKE_TARGET=mingw CC="i586-mingw32msvc-gcc -g -Wl,--dynamicbase -Wl,--nxcompat -I.deps/include -L.deps/lib -DUSE_WSPIAPI_H -DSUPPORTIPV6" WINDRES="i586-mingw32msvc-windres" SDL_CONFIG=".deps/bin/sdl-config" LIB_JPEG= CFLAGS_LIBJPEG= WIN32RELEASE=1 D3D=0' \
+ 'STRIP=: DP_MAKE_TARGET=mingw CC="i586-mingw32msvc-g++ -g -Wl,--dynamicbase -Wl,--nxcompat -I.deps/include -L.deps/lib -DUSE_WSPIAPI_H -DSUPPORTIPV6" WINDRES="i586-mingw32msvc-windres" SDL_CONFIG=".deps/bin/sdl-config" LIB_JPEG= CFLAGS_LIBJPEG= WIN32RELEASE=1 D3D=1' \
'' '' \
release 'darkplaces.exe:Xonotic/xonotic.exe darkplaces-sdl.exe:Xonotic/xonotic-sdl.exe darkplaces-dedicated.exe:Xonotic/xonotic-dedicated.exe'
;;
win 'fteqcc.exe:Xonotic/fteqcc/fteqcc-x64.exe' \
'sv-release sdl-release' 'darkplaces-sdl.exe:Xonotic/xonotic-x64-sdl.exe darkplaces-dedicated.exe:Xonotic/xonotic-x64-dedicated.exe'
verbose "$SELF" release-compile win64 \
- 'STRIP=: DP_MAKE_TARGET=mingw CC="x86_64-w64-mingw32-gcc -g -Wl,--dynamicbase -Wl,--nxcompat -I.deps/include -L.deps/lib -DSUPPORTIPV6" WINDRES="x86_64-w64-mingw32-windres" SDL_CONFIG=".deps/bin/sdl-config" LIB_JPEG= CFLAGS_LIBJPEG= WIN64RELEASE=1 D3D=0' \
+ 'STRIP=: DP_MAKE_TARGET=mingw CC="x86_64-w64-mingw32-g++ -g -Wl,--dynamicbase -Wl,--nxcompat -I.deps/include -L.deps/lib -DSUPPORTIPV6" WINDRES="x86_64-w64-mingw32-windres" SDL_CONFIG=".deps/bin/sdl-config" LIB_JPEG= CFLAGS_LIBJPEG= WIN64RELEASE=1 D3D=1' \
'' '' \
cl-release 'darkplaces.exe:Xonotic/xonotic-x64.exe'
;;
verbose "$SELF" update-maps
;;
release-qc)
- case "$RELEASETYPE" in
- beta)
- verbose make -C Xonotic/source FTEQCC="../../../fteqcc/fteqcc.linux32" XON_BUILDSYSTEM=1 clean all
- # back out of: source/qcsrc/server
- ;;
- release)
- verbose make -C Xonotic/source FTEQCC="../../../fteqcc/fteqcc.linux32" XON_BUILDSYSTEM=1 FTEQCCFLAGS_WATERMARK= clean all
- ;;
- esac
- verbose rm -f Xonotic/source/*/fteqcc.log
+ verbose make -C Xonotic/source FTEQCC="../../../fteqcc/fteqcc.linux32" XON_BUILDSYSTEM=1 clean all
+ verbose rm -f Xonotic/source/qcsrc/*/fteqcc.log
;;
release-buildpk3-transform-raw)
dir=$1
verbose cd "$dir"
# texture: convert to jpeg and dds
verbose export do_jpeg=true
+ verbose export jpeg_qual_rgb=97
+ verbose export jpeg_qual_a=99
+ verbose export do_dds=false
+ verbose export do_ogg=false
+ verbose export del_src=true
+ find . -type f -print0 | verbose xargs -0 "$d0"/misc/tools/cached-converter.sh
+ ;;
+ release-buildpk3-transform-normaldds)
+ dir=$1
+ verbose cd "$dir"
+ # texture: convert to jpeg and dds
+ # music: reduce bitrate
+ verbose export do_jpeg=false
+ verbose export do_jpeg_if_not_dds=true
verbose export jpeg_qual_rgb=95
verbose export jpeg_qual_a=99
verbose export do_dds=true
verbose export dds_flags=
- verbose export do_ogg=false
+ verbose export do_ogg=true
verbose export del_src=true
find . -type f -print0 | verbose xargs -0 "$d0"/misc/tools/cached-converter.sh
;;
verbose rm -rf qcsrc
gv=`grep "^gameversion " "defaultXonotic.cfg" | awk '{ print $2 }'`
major=$(($gv / 10000))
- minor=$(($gv / 100 - $major * 100))
- patch=$(($gv - $major * 10000 - $minor * 100))
+ minor=$((($gv / 100) - ($major * 100)))
+ patch=$(($gv - ($major * 10000) - ($minor * 100)))
versionstr="$major.$minor.$patch"
case "$RELEASETYPE" in
- beta)
- versionstr="$versionstr""beta"
+ release)
+ ;;
+ *)
+ versionstr="$versionstr$RELEASETYPE"
;;
esac
verbose sed -i "
s/^gameversion_min [0-9]*/gameversion_min $(( ($gv / 100) * 100 - 100 ))/;
s/^gameversion_max [0-9]*/gameversion_max $(( ($gv / 100) * 100 + 199 ))/;
" defaultXonotic.cfg
+ case "$RELEASETYPE" in
+ release)
+ echo "" >> defaultXonotic.cfg
+ echo "// nicer menu" >> defaultXonotic.cfg
+ echo "set menu_watermark \"\"" >> defaultXonotic.cfg
+ ;;
+ esac
(
verbose cd gfx/menu/luminos
verbose cp "$d0"/mediasource/gfx/menu/luminos_versionbuilder/background_l2.svg .
done
;;
release-pack)
- verbose "$SELF" release-buildpk3s data/font-nimbussansl.pk3dir raw ''
- verbose "$SELF" release-buildpk3s data/xonotic-data.pk3dir normal '' low '-low' lowdds '-lowdds'
- verbose "$SELF" release-buildpk3s data/xonotic-maps.pk3dir normal '' low '-low' lowdds '-lowdds'
- verbose "$SELF" release-buildpk3s data/xonotic-music.pk3dir raw '' low '-low'
- verbose "$SELF" release-buildpk3s data/xonotic-nexcompat.pk3dir low ''
+ verbose "$SELF" release-buildpk3s data/font-nimbussansl.pk3dir raw ''
+ verbose "$SELF" release-buildpk3s data/font-xolonium.pk3dir raw ''
+ verbose "$SELF" release-buildpk3s data/xonotic-data.pk3dir normal '-high' low '-low' normaldds ''
+ verbose "$SELF" release-buildpk3s data/xonotic-maps.pk3dir normal '-high' low '-low' normaldds ''
+ verbose "$SELF" release-buildpk3s data/xonotic-music.pk3dir raw '' low '-low'
+ verbose "$SELF" release-buildpk3s data/xonotic-nexcompat.pk3dir normal '-high' normaldds ''
;;
release-pack-needsx11)
case "$DISPLAY" in
# exe and dll files do not need +x, so this makes them eligible for 7zip compression too
chmod a-x Xonotic/*.exe Xonotic/*.dll || true
# let's pass crypto import laws of some nasty countries
- crypto_libs=`find Xonotic -name \*d0_rijndael\*`
+ crypto_libs=`find Xonotic -name \*d0_rijndael\*.so -o -name \*d0_rijndael\*.dylib -o -name \*d0_rijndael\*.dll -o -name \*d0_rijndael\*.c`
if [ -n "$crypto_libs" ]; then
verbose mkzip Xonotic-$stamp-crypto.zip \
$crypto_libs
Xonotic/fteqcc \
Xonotic/server \
Xonotic/key_0.d0pk \
- Xonotic/data/font-nimbussansl-$stamp.pk3
+ Xonotic/data/font-nimbussansl-$stamp.pk3 \
+ Xonotic/data/font-xolonium-$stamp.pk3
verbose cp Xonotic-$stamp-common.zip Xonotic-$stamp.zip
verbose mkzip0 Xonotic-$stamp.zip \
Xonotic/data/xonotic-$stamp-data.pk3 \
Xonotic/data/xonotic-$stamp-data-low.pk3 \
Xonotic/data/xonotic-$stamp-maps-low.pk3 \
Xonotic/data/xonotic-$stamp-music-low.pk3
-# verbose cp Xonotic-$stamp-common.zip Xonotic-$stamp-high.zip
-# verbose mkzip0 Xonotic-$stamp-high.zip \
-# Xonotic/data/xonotic-$stamp-data-raw.pk3 \
-# Xonotic/data/xonotic-$stamp-maps-raw.pk3 \
-# Xonotic/data/xonotic-$stamp-music.pk3 \
-# Xonotic/data/xonotic-$stamp-nexcompat.pk3
- verbose mv Xonotic-$stamp-common.zip Xonotic-$stamp-lowdds.zip
- verbose mkzip0 Xonotic-$stamp-lowdds.zip \
- Xonotic/data/xonotic-$stamp-data-lowdds.pk3 \
- Xonotic/data/xonotic-$stamp-maps-lowdds.pk3 \
- Xonotic/data/xonotic-$stamp-music-low.pk3
+ verbose mv Xonotic-$stamp-common.zip Xonotic-$stamp-high.zip
+ verbose mkzip0 Xonotic-$stamp-high.zip \
+ Xonotic/data/xonotic-$stamp-data-high.pk3 \
+ Xonotic/data/xonotic-$stamp-maps-high.pk3 \
+ Xonotic/data/xonotic-$stamp-music.pk3 \
+ Xonotic/data/xonotic-$stamp-nexcompat-high.pk3
+ verbose mkzip0 Xonotic-$stamp-mappingsuppport.zip \
+ Xonotic/mapping \
+ Xonotic/data/xonotic-$stamp-maps-low.pk3 # TODO add a Radiant build
;;
release)
verbose "$SELF" release-prepare