X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=all;h=8e4bf7b8a3911c06d86329d8b446961410d73b1f;hb=e57dfb60651affe81c2efc556b884da29338cf35;hp=96cd3b5b05ac8c45a92f95491036ea1772004cc6;hpb=569e49c5d616ee6dce9c044bf892ef58985c4531;p=xonotic%2Fxonotic.git diff --git a/all b/all index 96cd3b5b..8e4bf7b8 100755 --- a/all +++ b/all @@ -2,6 +2,9 @@ # vim: filetype=zsh set -e +if [ -n "$ZSH_VERSION" ]; then + setopt SH_WORD_SPLIT +fi # I use this in EVERY shell script ;) LF=" @@ -36,7 +39,7 @@ esac msg() { - echo >&2 "$ESC[1m$*$ESC[m" + echo >&2 "$ESC""[1m$*$ESC""[m" } self=`git hash-object "$SELF"` @@ -110,17 +113,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 | git://github.com/divVerent/d0_blind_id.git | master | -data/xonotic-maps.pk3dir | | master | -mediasource | | master | no -fteqcc | git://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,10 +311,19 @@ 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 - if [ -z "`git config push.default`" ]; then + 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 + verbose git config filter.mapclean.clean "tr -d '\r' | grep '^[^/]'" + verbose git config filter.mapclean.smudge "cat" } mkzip() @@ -330,6 +342,47 @@ 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 + + if ! { time -p true; } >/dev/null 2>&1; then + return 1 + fi + + 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 + if [ -n "$bestin" ]; then + msg "Best mirror seems to be $pre$bestin$suf" + echo "$bestin" + else + return 1 + fi +} + case "$cmd" in fix_upstream_rebase) for d in $repos; do @@ -362,9 +415,12 @@ case "$cmd" in msg "To get access, your key has to be approved first. For that, visit" msg "http://dev.xonotic.org/, then log in, create a \"New Issue\" on" msg "the \"Support\" tracker in the \"Repository\" category where you" - msg "apply for access and paste the following output into the ticket:" + msg "apply for access and paste the following output into the issue:" msg "" msg "`cat ~/.ssh/id_rsa.pub`" + msg "" + msg "Note that you will only have write access to branches that start" + msg "with your user name." elif [ -f ~/.ssh/id_dsa.pub ]; then msg "" msg "A key already exists and no new one will be generated. If you" @@ -374,28 +430,36 @@ case "$cmd" in msg "To get access, your key has to be approved first. For that, visit" msg "http://dev.xonotic.org/, then log in, create a \"New Issue\" on" msg "the \"Support\" tracker in the \"Repository\" category where you" - msg "apply for access and paste the following output into the ticket:" + msg "apply for access and paste the following output into the issue:" msg "" msg "`cat ~/.ssh/id_dsa.pub`" + msg "" + msg "Note that you will only have write access to branches that start" + msg "with your user name." else msg "" msg "No key has been generated yet. One will be generated now." msg "If other people are using your computer, it is recommended" - msg "to specify a passphrase." + msg "to specify a passphrase. Otherwise you can simply hit ENTER" + msg "when asked for a passphrase." msg "" - ssh-keygen -t rsa -b 4096 + ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa msg "" msg "To get access, your key has to be approved first. For that, visit" msg "http://dev.xonotic.org/, then log in, create a \"New Issue\" on" msg "the \"Support\" tracker in the \"Repository\" category where you" - msg "apply for access and paste the following output into the ticket:" + msg "apply for access and paste the following output into the issue:" msg "" msg "`cat ~/.ssh/id_rsa.pub`" + msg "" + msg "Note that you will only have write access to branches that start" + msg "with your user name." fi ;; update|pull) allow_pull=true fix_config=false + location=current while :; do if [ x"$1" = x"-N" ]; then allow_pull=false @@ -414,11 +478,70 @@ case "$cmd" in elif [ x"$1" = x"-h" ]; then fix_config=true base=http://git.xonotic.org/xonotic/ + elif [ x"$1" = x"-l" ]; then + 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 + ;; + esac + fix_config=true + location=$2 + shift else break fi shift done + case "$location" in + best) + newbase=`echo "$base" | sed "s,://\(.*\.\)\?git.xonotic.org/,:// .git.xonotic.org/,"` + case "$newbase" in + *\ *) + if location=`bestmirror $newbase"xonotic.git" de nl`; then + : + else + location=current + fi + ;; + *) + location=current + ;; + esac + ;; + esac + case "$location" in + default) + location= + ;; + current) + case "$base" in + *://*.git.xonotic.org/*) + location=${base%%.git.xonotic.org/*} + location=${location##*://} + ;; + *) + location= + ;; + esac + ;; + esac + if [ -n "$location" ]; then + base=`echo "$base" | sed "s,://\(.*\.\)\?git.xonotic.org/,://$location.git.xonotic.org/,"` + pushbase=`echo "$pushbase" | sed "s,://\(.*\.\)\?git.xonotic.org/,://$location.git.xonotic.org/,"` + else + base=`echo "$base" | sed "s,://\(.*\.\)\?git.xonotic.org/,://git.xonotic.org/,"` + pushbase=`echo "$pushbase" | sed "s,://\(.*\.\)\?git.xonotic.org/,://git.xonotic.org/,"` + fi if $fix_config; then url=`repourl .` pushurl=`repopushurl .` @@ -651,6 +774,7 @@ case "$cmd" in cleanqc=false compiled0=false debug=debug + snowleopardhack=false if [ -z "$CC" ]; then export CC="gcc -DSUPPORTIPV6" fi @@ -658,6 +782,7 @@ case "$cmd" in case "$1" in -0) compiled0=true + shift ;; -c) cleand0=true @@ -685,6 +810,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 @@ -706,7 +832,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) @@ -793,9 +925,10 @@ case "$cmd" in enter "$d0/data/xonotic-data.pk3dir" verbose if $cleanqc; then - verbose make FTEQCC="$d0/fteqcc/fteqcc.bin" "$@" $MAKEFLAGS clean + verbose make FTEQCC="../../../../fteqcc/fteqcc.bin" "$@" $MAKEFLAGS clean fi - verbose make FTEQCC="$d0/fteqcc/fteqcc.bin" "$@" $MAKEFLAGS + verbose make FTEQCC="../../../../fteqcc/fteqcc.bin" "$@" $MAKEFLAGS + # 4 levels up: data, xonotic-data, qcsrc, server enter "$d0/darkplaces" verbose if [ x"$BAD_TARGETS" = x" " ]; then @@ -976,6 +1109,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:" @@ -1059,6 +1198,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,*) @@ -1112,36 +1256,49 @@ case "$cmd" in # ./all clean [-m] [-f | -fu | -fU] [-r] [-D] # ./all clean --reclone found=false - while :; do - if [ x"$1" = x"--reclone" ]; then + for X in "$@"; do + if [ x"$X" = x"--reclone" ]; then force=true fetchupstream=true gotoupstream=true gotomaster=true rmuntracked=true killbranches=true - elif [ x"$1" = x"-f" ]; then + elif [ x"$X" = x"-f" ]; then force=true - elif [ x"$1" = x"-u" ]; then + elif [ x"$X" = x"-u" ]; then gotoupstream=true - elif [ x"$1" = x"-U" ]; then + elif [ x"$X" = x"-U" ]; then gotoupstream=true fetchupstream=true - elif [ x"$1" = x"-fu" ]; then + elif [ x"$X" = x"-fu" ]; then force=true gotoupstream=true - elif [ x"$1" = x"-fU" ]; then + elif [ x"$X" = x"-fU" ]; then force=true gotoupstream=true fetchupstream=true - elif [ x"$1" = x"-m" ]; then + elif [ x"$X" = x"-m" ]; then gotomaster=true - elif [ x"$1" = x"-r" ]; then + elif [ x"$X" = x"-r" ]; then rmuntracked=true - elif [ x"$1" = x"-D" ]; then + 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 @@ -1207,6 +1364,7 @@ case "$cmd" in 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 fi + checkself "$cmd" "$@" done ;; @@ -1341,9 +1499,9 @@ case "$cmd" in # now rebrand the binaries... 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 + case "${f##*:}" in xonotic*.exe) - verbose "$d0/misc/tools/change-icon-of-exe.sh" "$d0/misc/logos/icons_ico/xonotic.ico" "$f" + verbose "$d0/misc/tools/change-icon-of-exe.sh" "$d0/misc/logos/icons_ico/xonotic.ico" "${f##*:}" ( d=`mktemp -d -t rebrand.XXXXXX` cd "$d" @@ -1352,7 +1510,7 @@ case "$cmd" in cat darkplaces.zip cd "$d0" rm -rf "$d" - ) >> "$f" + ) >> "${f##*:}" ;; esac done @@ -1431,10 +1589,11 @@ case "$cmd" in release-qc) case "$RELEASETYPE" in beta) - verbose make -C Xonotic/source FTEQCC="$d0/Xonotic/fteqcc/fteqcc.linux32" XON_BUILDSYSTEM=1 clean all + 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="$d0/Xonotic/fteqcc/fteqcc.linux32" XON_BUILDSYSTEM=1 FTEQCCFLAGS_WATERMARK= clean all + verbose make -C Xonotic/source FTEQCC="../../../fteqcc/fteqcc.linux32" XON_BUILDSYSTEM=1 FTEQCCFLAGS_WATERMARK= clean all ;; esac verbose rm -f Xonotic/source/*/fteqcc.log @@ -1462,7 +1621,7 @@ case "$cmd" in # music: reduce bitrate verbose export do_jpeg=true verbose export jpeg_qual_rgb=80 - verbose export jpeg_qual_a=95 + verbose export jpeg_qual_a=97 verbose export do_dds=false verbose export do_ogg=true verbose export ogg_qual=1 @@ -1477,7 +1636,7 @@ case "$cmd" in verbose export do_jpeg=false verbose export do_jpeg_if_not_dds=true verbose export jpeg_qual_rgb=80 - verbose export jpeg_qual_a=95 + verbose export jpeg_qual_a=99 verbose export do_dds=true verbose export dds_flags= verbose export do_ogg=true @@ -1568,8 +1727,8 @@ case "$cmd" in ;; release-pack) verbose "$SELF" release-buildpk3s data/font-nimbussansl.pk3dir raw '' - verbose "$SELF" release-buildpk3s data/xonotic-data.pk3dir normal '' raw '-raw' low '-low' lowdds '-lowdds' - verbose "$SELF" release-buildpk3s data/xonotic-maps.pk3dir normal '' raw '-raw' low '-low' lowdds '-lowdds' + 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 '' ;; @@ -1623,17 +1782,17 @@ case "$cmd" in 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-lowdds.zip +# 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-raw.pk3 \ - Xonotic/data/xonotic-$stamp-maps-raw.pk3 \ - Xonotic/data/xonotic-$stamp-music.pk3 \ - Xonotic/data/xonotic-$stamp-nexcompat.pk3 ;; release) verbose "$SELF" release-prepare @@ -1654,9 +1813,10 @@ case "$cmd" in echo " $SELF checkout|switch /" echo " $SELF clean [-m] [-f | -fu | -fU] [-r] [-D]" echo " $SELF clean --reclone" - echo " $SELF compile [-c]" + echo " $SELF compile [-c] [-r] [-0]" echo " $SELF each|foreach [-k] command..." echo " $SELF fix_upstream_rebase" + echo " $SELF keygen" echo " $SELF merge" echo " $SELF push|commit [-s]" echo " $SELF release" @@ -1664,6 +1824,6 @@ case "$cmd" in echo " $SELF run [sdl|glx|wgl|agl|dedicated] options..." echo " $SELF save-patches" echo " $SELF update-maps" - echo " $SELF update|pull [-N]" + echo " $SELF update|pull [-N] [-s | -h [-p] | -g [-p]] [-l de|nl|default]" ;; esac