5 if [ -n "$ZSH_VERSION" ]; then
8 if [ -z "$ECHO" ]; then
9 if echo "\\\\" | grep .. >/dev/null; then
16 # I use this in EVERY shell script ;)
22 while ! [ -f ./all ]; do
23 if [ x"`pwd`" = x"/" ]; then
24 $ECHO "Cannot find myself."
25 $ECHO "Please run this script with the working directory inside a Xonotic checkout."
33 # If we are on WINDOWS:
38 # Windows hates users. So this script has to copy itself elsewhere first...
39 cp "$SELF" ../all.xonotic.sh
40 export WE_HATE_OUR_USERS=1
41 exec ../all.xonotic.sh "$@"
49 $ECHO >&2 "$ESC""[1m$*$ESC""[m"
52 self=`git hash-object "$SELF"`
55 self_new=`git hash-object "$SELF"`
56 if [ x"$self" != x"$self_new" ]; then
57 msg "./all has changed."
58 if [ -z "$XONOTIC_FORBID_RERUN_ALL" ]; then
59 msg "Rerunning the requested operation to make sure."
60 export XONOTIC_FORBID_RERUN_ALL=1
63 msg "Please try $SELF update, and then retry your requested operation."
80 $ECHO "the root directory"
90 if git ls-files -u | grep ' 1 '; then
92 $ECHO "MERGE CONFLICT."
93 $ECHO "change into the \"$1\" project directory, and then:"
94 $ECHO "- edit the files mentioned above with your favorite editor,"
95 $ECHO " and fix the conflicts (marked with <<<<<<< blocks)"
96 $ECHO "- for binary files, you can select the files using"
97 $ECHO " git checkout --ours or git checkout --theirs"
98 $ECHO "- when done with a file, 'git add' the file"
99 $ECHO "- when done, 'git commit'"
108 while [ x"$yesno" != x"y" -a x"$yesno" != x"n" ]; do
119 check_mergeconflict "$1"
124 data/xonotic-data.pk3dir | | master |
125 data/xonotic-music.pk3dir | | master |
126 data/xonotic-nexcompat.pk3dir | | master | no
127 darkplaces | | div0-stable | svn
128 netradiant | | master |
129 div0-gittools | | master | no
130 d0_blind_id | | master |
131 data/xonotic-maps.pk3dir | | master |
132 mediasource | | master | no
133 fteqcc | | xonotic-stable | noautocrlf
135 # todo: in darkplaces, change repobranch to div0-stable
137 repos=`$ECHO "$repos_urls" | grep . | cut -d '|' -f 1 | tr -d ' '`
139 base=`git config remote.origin.url`
142 base=${base%xonotic.git}
145 $ECHO "The main repo is not xonotic.git, what have you done?"
149 pushbase=`git config remote.origin.pushurl || true`
152 pushbase=${pushbase%xonotic.git}
157 $ECHO "The main repo is not xonotic.git, what have you done?"
164 repo_t=`$ECHO "$repos_urls" | grep "^$1 " | cut -d '|' -f 2 | tr -d ' '`
165 if [ -n "$repo_t" ]; then
175 if [ x"$1" = x"." ]; then
176 $ECHO "$base""xonotic.git"
178 $ECHO "$base${1##*/}.git"
185 [ -n "$pushbase" ] || return 0
186 repo_t=`$ECHO "$repos_urls" | grep "^$1 " | cut -d '|' -f 2 | tr -d ' '`
187 if [ -n "$repo_t" ]; then
192 $ECHO "$pushbase$repo_t"
196 if [ x"$1" = x"." ]; then
197 $ECHO "$pushbase""xonotic.git"
199 $ECHO "$pushbase${1##*/}.git"
206 repo_t=`$ECHO "$repos_urls" | grep "^$1 " | cut -d '|' -f 3 | tr -d ' '`
207 if [ -n "$repo_t" ]; then
216 $ECHO "$repos_urls" | grep "^$1 " | cut -d '|' -f 4 | tr -d ' '
224 # if we have the dir, always keep it
226 msg "Repository $d enabled because it already exists"
230 # if .yes file exists, always keep it
231 if [ -f "$d.yes" ]; then
232 msg "Repository $d enabled by a .yes file"
236 # if we have .no file, skip
237 if [ -f "$d.no" ]; then
238 msg "Repository $d disabled by a .no file, delete $p.no to enable"
241 # if we have matching pk3, skip
242 if [ x"$p" != x"$d" ] && [ -f "$p" ]; then
243 msg "Repository $d disabled by matching .pk3 file, delete $p or create $d.yes to enable"
246 # if "no" flag is set, skip
249 msg "Repository $d disabled by default, create $d.yes to enable"
254 msg "Repository $d enabled by default"
261 if [ "$#" = 0 ]; then
267 fix_upstream_rebase()
269 if [ -z "$r_me" ] || [ -z "$r_other" ]; then
273 # one of the two sides of the merge should be remote upstream, or all is fine
274 r_r=`git symbolic-ref HEAD`
275 r_r=${r_r#refs/heads/}
276 r_rem=`git config "branch.$r_rem.remote" || $ECHO origin`
277 r_bra=`git config "branch.$r_bra.merge" || $ECHO "$r_r"`
278 r_bra=${r_bra#refs/heads/}
279 if [ x"$r_me" != x"`git rev-parse "$r_rem/$r_bra"`" ]; then
280 if [ x"$r_other" != x"`git rev-parse "$r_rem/$r_bra"`" ]; then
285 r_base=`git merge-base "$r_me" "$r_other"`
287 # no merge-base? upstream did filter-branch
288 if [ -n "$r_base" ]; then
289 # otherwise, check if the two histories are "similar"
290 r_l_me=`git log --pretty="format:%s" "$r_other".."$r_me" | grep -v "^Merge" | sort -u`
291 r_l_other=`git log --pretty="format:%s" "$r_me".."$r_other" | grep -v "^Merge" | sort -u`
293 # heuristics: upstream rebase/filter-branch if more than 50% of the commits of one of the sides are in the other too
294 r_lc_me=`$ECHO "$r_l_me" | wc -l`
295 r_lc_other=`$ECHO "$r_l_other" | wc -l`
296 r_lc_together=`{ $ECHO "$r_l_me"; $ECHO "$r_l_other"; } | sort -u | wc -l`
297 r_lc_same=$(($r_lc_me + $r_lc_other - $r_lc_together))
299 if [ $(( $r_lc_same * 2 )) -gt $(( $r_lc_me )) ] || [ $(( $r_lc_same * 2 )) -gt $(( $r_lc_other )) ]; then
300 if yesno "Probable upstream rebase detected, automatically fix?" 'git log --oneline --graph --date-order --left-right "$r_other"..."$r_me"'; then
301 git reset --hard "$r_me"
311 fix_upstream_rebase_mergeok()
313 r_me=`git rev-parse --revs-only HEAD^1 2>/dev/null || true`
314 r_other=`git rev-parse --revs-only HEAD^2 2>/dev/null || true`
318 fix_upstream_rebase_mergefail()
320 r_me=`git rev-parse --revs-only HEAD 2>/dev/null || true`
321 r_other=`git rev-parse --revs-only MERGE_HEAD 2>/dev/null || true`
327 verbose git config remote.origin.url "$1"
329 verbose git config remote.origin.pushurl "$2"
331 verbose git config --unset remote.origin.pushurl || true
333 verbose git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
334 case ",`repoflags "$d"`," in
336 verbose git config --unset core.autocrlf || true
339 verbose git config core.autocrlf input
342 if [ -z "`git config push.default || true`" ]; then
343 verbose git config push.default current # or is tracking better?
345 verbose git config filter.mapclean.clean "tr -d '\r' | grep '^[^/]'"
346 verbose git config filter.mapclean.smudge "cat"
354 find "$@" -xtype f \( -executable -or -type l \) -print > "$ziplist"
355 7za a -tzip -mx=9 -x@"$ziplist" "$archive" "$@" || true
356 zip -9y -@<"$ziplist" "$archive" || true
367 # first result is to be ignored, but we use it to check status
368 git ls-remote "$1" refs/heads/master >/dev/null 2>&1 || return 1
369 { 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*,,'
370 # unit: clock ticks (depends on what "time" returns
378 if ! { time -p true; } >/dev/null 2>&1; then
396 if t=`mirrorspeed "$m"`; then
398 tt=$(($t$op)) # fudge factor
399 msg "$m -> $t$op = $tt ticks"
400 if [ -z "$bestt" ] || [ "$tt" -lt "$bestt" ]; then
411 if [ -n "$bestin" ]; then
412 msg "Best mirror seems to be $pre$bestin$suf"
422 enter "$d0/$d" verbose
423 verbose fix_upstream_rebase_mergefail && verbose fix_upstream_rebase_mergeok
429 pushurl=`repopushurl "$d"`
430 branch=`repobranch "$d"`
431 if [ -d "$d0/$d" ]; then
433 fix_git_config "$url" "$pushurl"
439 # enable the ssh URL for pushing
442 if [ -f ~/.ssh/id_rsa.pub ]; then
444 msg "A key already exists and no new one will be generated. If you"
445 msg "already have done the procedure for getting your key approved, you"
446 msg "can skip the following paragraph and already use the repository."
448 msg "To get access, your key has to be approved first. For that, visit"
449 msg "http://dev.xonotic.org/, then log in, create a \"New Issue\" on"
450 msg "the \"Support\" tracker in the \"Repository\" category where you"
451 msg "apply for access and paste the following output into the issue:"
453 msg "`cat ~/.ssh/id_rsa.pub`"
455 msg "Note that you will only have write access to branches that start"
456 msg "with your user name."
457 elif [ -f ~/.ssh/id_dsa.pub ]; then
459 msg "A key already exists and no new one will be generated. If you"
460 msg "already have done the procedure for getting your key approved, you"
461 msg "can skip the following paragraph and already use the repository."
463 msg "To get access, your key has to be approved first. For that, visit"
464 msg "http://dev.xonotic.org/, then log in, create a \"New Issue\" on"
465 msg "the \"Support\" tracker in the \"Repository\" category where you"
466 msg "apply for access and paste the following output into the issue:"
468 msg "`cat ~/.ssh/id_dsa.pub`"
470 msg "Note that you will only have write access to branches that start"
471 msg "with your user name."
474 msg "No key has been generated yet. One will be generated now."
475 msg "If other people are using your computer, it is recommended"
476 msg "to specify a passphrase. Otherwise you can simply hit ENTER"
477 msg "when asked for a passphrase."
479 ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa
481 msg "To get access, your key has to be approved first. For that, visit"
482 msg "http://dev.xonotic.org/, then log in, create a \"New Issue\" on"
483 msg "the \"Support\" tracker in the \"Repository\" category where you"
484 msg "apply for access and paste the following output into the issue:"
486 msg "`cat ~/.ssh/id_rsa.pub`"
488 msg "Note that you will only have write access to branches that start"
489 msg "with your user name."
497 if [ x"$1" = x"-N" ]; then
499 elif [ x"$1" = x"-p" ]; then
501 if [ x"$base" != x"ssh://xonotic@git.xonotic.org/" ]; then
502 pushbase=ssh://xonotic@git.xonotic.org/
504 elif [ x"$1" = x"-s" ]; then
506 base=ssh://xonotic@git.xonotic.org/
508 elif [ x"$1" = x"-g" ]; then
510 base=git://git.xonotic.org/xonotic/
511 elif [ x"$1" = x"-h" ]; then
513 base=http://git.xonotic.org/xonotic/
514 elif [ x"$1" = x"-l" ]; then
522 msg "Invalid location!"
523 msg "Possible locations for the -l option:"
524 msg " nl (Netherlands, run by merlijn)"
525 msg " de (Germany, run by divVerent)"
526 msg " us (United States of America, run by detrate)"
527 msg " best (find automatically)"
528 msg " default (currently nl)"
542 if [ x"`git config xonotic.all.mirrorselection 2>/dev/null || true`" != x"done" ]; then
543 git config xonotic.all.mirrorselection done
550 # if we fetched via ssh://, switch to git:// for fetching and keep using ssh:// for pushing
554 base=git://git.xonotic.org/xonotic/
557 newbase=`$ECHO "$base" | sed "s,://\(.*\.\)\?git.xonotic.org/,:// .git.xonotic.org/,"`
560 if location=`bestmirror $newbase"xonotic.git" de us nl:'*6/5'`; then # 20% malus to the NL server to not overload it too much
578 *://*.git.xonotic.org/*)
579 location=${base%%.git.xonotic.org/*}
580 location=${location##*://}
588 if [ -n "$location" ]; then
589 base=`$ECHO "$base" | sed "s,://\(.*\.\)\?git.xonotic.org/,://$location.git.xonotic.org/,"`
590 pushbase=`$ECHO "$pushbase" | sed "s,://\(.*\.\)\?git.xonotic.org/,://$location.git.xonotic.org/,"`
592 base=`$ECHO "$base" | sed "s,://\(.*\.\)\?git.xonotic.org/,://git.xonotic.org/,"`
593 pushbase=`$ECHO "$pushbase" | sed "s,://\(.*\.\)\?git.xonotic.org/,://git.xonotic.org/,"`
597 pushurl=`repopushurl .`
598 fix_git_config "$url" "$pushurl"
600 if $allow_pull || $fix_config; then
605 pushurl=`repopushurl "$d"`
606 branch=`repobranch "$d"`
607 if [ -d "$d0/$d" ]; then
609 enter "$d0/$d" verbose
610 r=`git symbolic-ref HEAD`
612 if git config branch.$r.remote >/dev/null 2>&1; then
613 if ! verbose git pull; then
614 fix_upstream_rebase_mergefail || true
615 check_mergeconflict "$d"
616 $ECHO "Pulling failed. Press ENTER to continue, or Ctrl-C to abort."
619 fix_upstream_rebase_mergeok || true
624 checkself "$cmd" "$@"
626 verbose git remote prune origin
630 verbose git clone "$url" "$d0/$d"
631 enter "$d0/$d" verbose
632 fix_git_config "$url" "$pushurl"
633 if [ "$branch" != "master" ]; then
634 verbose git checkout --track -b "$branch" origin/"$branch"
641 misc/tools/xonotic-map-compiler-autobuild download
645 if [ x"$1" = x"-f" ]; then
651 if [ -z "$branch" ]; then
654 branch=${remote#origin/}
665 enter "$d0/$d" verbose
667 if [ -n "$b" ] && git rev-parse "refs/heads/$b" >/dev/null 2>&1; then
669 verbose git checkout $checkoutflags "$b"
670 elif [ -n "$b" ] && git rev-parse "refs/remotes/$remote/$b" >/dev/null 2>&1; then
672 verbose git checkout $checkoutflags --track -b "$b" "$remote/$b"
675 if git rev-parse "refs/heads/$b" >/dev/null 2>&1; then
677 verbose git checkout $checkoutflags "$b"
678 elif git rev-parse "refs/remotes/$remote/$b" >/dev/null 2>&1; then
680 verbose git checkout $checkoutflags --track -b "$b" "$remote/$b"
682 $ECHO "WTF? Not even branch $b doesn't exist in $d"
687 checkself "$cmd" "$@"
691 $ECHO "The requested branch was not found in any repository."
699 if [ -z "$branch" ]; then
703 if [ -z "$branch" ]; then
706 r=`git symbolic-ref HEAD`
713 dv=`visible_repo_name "$d"`
714 enter "$d0/$d" verbose
715 if git rev-parse "refs/heads/$branch" >/dev/null 2>&1; then
716 $ECHO "Already having this branch in $dv."
718 if yesno "Branch in $dv?"; then
719 if [ -n "$srcbranch" ]; then
722 b=origin/"`repobranch "$d"`"
723 verbose git fetch origin || true
725 # TODO do this without pushing
726 verbose git checkout -b "$branch" "$b"
727 verbose git config "branch.$branch.remote" "$remote"
728 verbose git config "branch.$branch.merge" "refs/heads/$branch"
738 cd "$d0/$d" # am in a pipe, shouldn't use enter
739 git branch -r -v -v | cut -c 3- | sed "s/^(no branch)/(no_branch)/" | sed "s,^,$d ,"
744 while read -r d BRANCH REV TEXT; do
745 if [ x"$BRANCH" = x"`repobranch "$d"`" ]; then
748 if [ x"$REV" = x"->" ]; then
751 BRANCH=${BRANCH#remotes/}
752 ID=`$ECHO "$BRANCH" | tr -c "A-Za-z0-9." "_"`
753 branches_list="$branches_list $BRANCH" # TEH SORT MAKEZ IT UNIEQ
754 eval "r=\$branches_repos_$ID"
756 eval "branches_repos_$ID=\$r"
758 $ECHO -n "$branches_list" | xargs -n 1 $ECHO | sort -u | while IFS= read -r BRANCH; do
759 ID=`$ECHO "$BRANCH" | tr -c "A-Za-z0-9." "_"`
760 eval "r=\$branches_repos_$ID"
761 printf "%-60s %s\n" "$BRANCH" "$r"
768 dv=`visible_repo_name "$d"`
769 enter "$d0/$d" verbose
770 r=`git symbolic-ref HEAD`
772 if git log HEAD..origin/"`repobranch "$d"`" | grep .; then
773 # we have uncommitted changes
774 if yesno "Could merge from \"`repobranch "$d"`\" into \"$r\" in $dv. Do it?"; then
775 if ! verbose git merge origin/"`repobranch "$d"`"; then
776 check_mergeconflict "$d"
777 exit 1 # this should ALWAYS be fatal
787 dv=`visible_repo_name "$d"`
788 enter "$d0/$d" verbose
789 r=`git symbolic-ref HEAD`
791 diffdata=`git diff --color HEAD`
792 if [ -n "$diffdata" ]; then
793 # we have uncommitted changes
794 if yesno "Uncommitted changes in \"$r\" in $dv. Commit?" '$ECHO "$diffdata" | less -r'; then
795 verbose git commit -a
798 rem=`git config "branch.$r.remote" || $ECHO origin`
799 bra=`git config "branch.$r.merge" || $ECHO "$r"`
800 upstream="$rem/${bra#refs/heads/}"
801 if ! git rev-parse "$upstream" >/dev/null 2>&1; then
802 upstream="origin/`repobranch "$d"`"
804 logdata=`git log --color "$upstream".."$r"`
805 if [ -n "$logdata" ]; then
806 if yesno "Push \"$r\" in $dv?" '$ECHO "$logdata" | less -r'; then
807 verbose git push "$rem" HEAD
810 if [ x"$submit" = x"-s" ]; then
813 verbose git push "$rem" HEAD:"${bra%%/*}/finished/${bra#*/}"
827 snowleopardhack=false
828 if [ -z "$CC" ]; then
829 export CC="gcc -DSUPPORTIPV6"
847 case "`$CC -dumpversion`" in
848 [5-9]*|[1-9][0-9]*|4.[3-9]*|4.[1-9][0-9]*)
850 # -march=native is broken < 4.3
851 export CC="$CC -mtune=native -march=native"
854 if [ -n "$WE_HATE_OUR_USERS" ]; then
855 export CC="$CC -fno-common"
864 if [ -n "$WE_HATE_OUR_USERS" ]; then
865 TARGETS="sv-$debug cl-$debug"
866 elif [ x"`uname`" = x"Darwin" ]; then
869 TARGETS="sv-$debug cl-$debug sdl-$debug"
872 # AGL cannot be compiled on systems with a kernel > 10.x (Snow Leopard)
874 TARGETS="sv-$debug sdl-$debug"
877 export CC="$CC -fno-reorder-blocks -I$PWD/misc/buildfiles/osx/Xonotic-SDL.app/Contents/Frameworks/SDL.framework/Headers -F$PWD/misc/buildfiles/osx/Xonotic-SDL.app/Contents/Frameworks"
879 TARGETS="sv-$debug cl-$debug sdl-$debug"
881 if [ $# -gt 0 ] && [ x"$1" = x"" ]; then
882 # if we give the command make the arg "", it will surely fail (invalid filename),
883 # so better handle it as an empty client option
886 elif [ -n "$1" ]; then
888 TARGETS_SAVE=$TARGETS
893 TARGETS="$TARGETS sdl-debug"
896 TARGETS="$TARGETS cl-debug"
897 if $snowleopardhack; then
898 export CC="$CC -arch i386"
902 TARGETS="$TARGETS cl-debug"
905 TARGETS="$TARGETS sv-debug"
908 BAD_TARGETS="$BAD_TARGETS $X"
912 if [ -n "$TARGETS" ]; then # at least a valid client
914 else # no valid client, let's assume this option is not meant to be a client then
915 TARGETS=$TARGETS_SAVE
919 if [ -z "$MAKEFLAGS" ]; then
920 if [ -f /proc/cpuinfo ]; then
921 ncpus=$((`grep -c '^processor :' /proc/cpuinfo`+0))
922 if [ $ncpus -gt 1 ]; then
926 if [ -n "$WE_HATE_OUR_USERS" ]; then
927 MAKEFLAGS="$MAKEFLAGS DP_MAKE_TARGET=mingw LIB_JPEG= CFLAGS_LIBJPEG="
931 enter "$d0/d0_blind_id" verbose
932 if ! $compiled0; then
933 # compilation of crypto library failed
934 # use binaries then, if we can...
936 if [ -n "$WE_HATE_OUR_USERS" ]; then
937 verbose cp "$d0/misc/buildfiles/win32/libd0_blind_id"-* .libs/
938 verbose cp "$d0/misc/buildfiles/win32/libd0_rijndael"-* .libs/
939 verbose cp "$d0/misc/buildfiles/win32/libgmp"-* .libs/
945 #verbose cp "$d0/misc/builddeps/dp.linux64/lib/libd0_blind_id".* .libs/
946 #verbose cp "$d0/misc/builddeps/dp.linux64/lib/libd0_rijndael".* .libs/
947 #verbose cp "$d0/misc/builddeps/dp.linux64/lib/libgmp".* .libs/
948 MAKEFLAGS="$MAKEFLAGS DP_CRYPTO_STATIC_LIBDIR=../misc/builddeps/dp.linux64/lib/ DP_CRYPTO_RIJNDAEL_STATIC_LIBDIR=../misc/builddeps/dp.linux64/lib/"
951 #verbose cp "$d0/misc/builddeps/dp.linux32/lib/libd0_blind_id".* .libs/
952 #verbose cp "$d0/misc/builddeps/dp.linux32/lib/libd0_rijndael".* .libs/
953 #verbose cp "$d0/misc/builddeps/dp.linux32/lib/libgmp".* .libs/
954 MAKEFLAGS="$MAKEFLAGS DP_CRYPTO_STATIC_LIBDIR=../misc/builddeps/dp.linux32/lib/ DP_CRYPTO_RIJNDAEL_STATIC_LIBDIR=../misc/builddeps/dp.linux32/lib/"
962 verbose cp "$d0/misc/buildfiles/osx/Xonotic.app/Contents/MacOS/libd0_blind_id".* .libs/
963 verbose cp "$d0/misc/buildfiles/osx/Xonotic.app/Contents/MacOS/libd0_rijndael".* .libs/
973 if [ -f Makefile ]; then
974 verbose make $MAKEFLAGS distclean
977 if ! [ -f Makefile ]; then
978 verbose sh autogen.sh
981 verbose make $MAKEFLAGS
984 enter "$d0/fteqcc" verbose
986 verbose make $MAKEFLAGS clean
988 verbose make $MAKEFLAGS
990 enter "$d0/data/xonotic-data.pk3dir" verbose
992 verbose make FTEQCC="../../../../fteqcc/fteqcc.bin" "$@" $MAKEFLAGS clean
994 verbose make FTEQCC="../../../../fteqcc/fteqcc.bin" "$@" $MAKEFLAGS
995 # 4 levels up: data, xonotic-data, qcsrc, server
997 enter "$d0/darkplaces" verbose
998 if [ x"$BAD_TARGETS" = x" " ]; then
999 $ECHO "Warning: invalid empty client, default clients will be used."
1002 verbose make $MAKEFLAGS clean
1004 for T in $TARGETS; do
1005 verbose make $MAKEFLAGS STRIP=: "$@" "$T"
1007 for T in $BAD_TARGETS; do
1008 $ECHO "Warning: discarded invalid client $T."
1011 verbose "$SELF" update-maps
1014 if [ -n "$WE_HATE_OUR_USERS" ]; then
1016 export PATH="$d0/misc/buildfiles/win32:$d0/d0_blind_id/.libs:$PATH"
1017 elif [ x"`uname`" = x"Darwin" ]; then
1018 export DYLD_LIBRARY_PATH="$d0/misc/buildfiles/osx/Xonotic-SDL.app/Contents/MacOS:$d0/d0_blind_id/.libs"
1019 export DYLD_FRAMEWORK_PATH="$d0/misc/buildfiles/osx/Xonotic-SDL.app/Contents/Frameworks"
1022 export LD_LIBRARY_PATH="$d0/d0_blind_id/.libs"
1026 sdl|glx|agl|dedicated)
1035 if ! [ -x "darkplaces/darkplaces$client" ]; then
1036 if [ -x "darkplaces/darkplaces$client.exe" ]; then
1039 $ECHO "Client darkplaces/darkplaces$client not found, aborting"
1043 set -- "darkplaces/darkplaces$client" -xonotic -mygames "$@"
1045 # if pulseaudio is running: USE IT
1046 if [ -z "$SDL_AUDIODRIVER" ] && ! [ -n "$WE_HATE_OUR_USERS" ] && ! [ x"`uname`" = x"Darwin" ]; then
1047 if ps -C pulseaudio >/dev/null; then
1048 if ldd /usr/lib/libSDL.so 2>/dev/null | grep pulse >/dev/null; then
1049 export SDL_AUDIODRIVER=pulse
1056 if [ x"$USE_GDB" = x"yes" ]; then
1057 set -- gdb --args "$@"
1058 elif [ x"$USE_GDB" != x"no" ] && which gdb >/dev/null 2>&1; then
1059 set -- gdb --batch -x savecore.gdb --args "$@"
1060 elif which catchsegv >/dev/null 2>&1; then
1061 set -- catchsegv "$@"
1065 if [ -f xonotic.core ]; then
1066 if yesno "The program has CRASHED. Do you want to examine the core dump?"; then
1067 gdb "$binary" xonotic.core
1068 #elif yesno "You did not want to examine the core dump. Do you want to provide it - including your DarkPlaces checkout - to the Xonotic developers?"; then
1069 # tar cvzf xonotic.core.tar.gz xonotic.core darkplaces/*.c darkplaces/*.h
1071 # rm -f xonotic.core.tar.gz
1073 $ECHO "The core dump can be examined later by"
1074 $ECHO " gdb $binary xonotic.core"
1081 if [ x"$1" = x"-k" ]; then
1086 if verbose cd "$d0/$d"; then
1087 if $keep_going; then
1088 verbose "$@" || true
1098 patchdir=`mktemp -d -t save-patches.XXXXXX`
1100 enter "$d0/$d" verbose
1101 git branch -v -v | cut -c 3- | {
1103 while read -r BRANCH REV UPSTREAM TEXT; do
1106 UPSTREAM=${UPSTREAM#\[}
1107 UPSTREAM=${UPSTREAM%\]}
1108 UPSTREAM=${UPSTREAM%:*}
1112 UPSTREAM=origin/"`repobranch "$d"`"
1116 if [ x"$REV" = x"->" ]; then
1119 if git format-patch -o "$patchdir/$i" "$UPSTREAM".."$BRANCH"; then
1120 $ECHO "$d" > "$patchdir/$i/info.txt"
1121 $ECHO "$BRANCH" >> "$patchdir/$i/info.txt"
1122 $ECHO "$UPSTREAM" >> "$patchdir/$i/info.txt"
1123 $ECHO "$TRACK" >> "$patchdir/$i/info.txt"
1126 rm -rf "$patchdir/$i"
1131 ( cd "$patchdir" && tar cvzf - . ) > "$outfile"
1136 patchdir=`mktemp -d -t restore-patches.XXXXXX`
1137 ( cd "$patchdir" && tar xvzf - ) < "$infile"
1139 for P in "$patchdir"/*/info.txt; do
1144 read -r UPSTREAM <&3
1146 verbose git checkout HEAD^0
1147 verbose git branch -D "$BRANCH"
1148 if [ x"$TRACK" = x"true" ]; then
1149 verbose git checkout --track -b "$BRANCH" "$UPSTREAM"
1151 verbose git branch -b "$BRANCH" "$UPSTREAM"
1163 report=$report"$*$LF"
1168 report=$report" $*$LF"
1173 o=`"$@" | sed 's/^/ /' || true`
1179 # sorry, fteqcc repo is managed manually
1183 enter "$d0/$d" verbose
1184 base="`repobranch "$d"`"
1186 for ref in `git for-each-ref --format='%(refname)' refs/remotes/origin/`; do
1187 case "${ref#refs/remotes/origin/}" in
1200 if [ -n "$branch" ]; then
1201 if [ x"$branch" != x"${ref#refs/remotes/origin/}" ]; then
1210 l0=`git rev-list "$base".."$ref" | wc -l`
1211 l1=`git rev-list master.."$ref" | wc -l`
1212 if [ $l0 -gt $l1 ]; then
1219 reportecho " Branch $ref:"
1220 note=`GIT_NOTES_REF=refs/notes/admin-merge git notes show "$ref" 2>/dev/null || true`
1221 logdata=`git log --color "$realbase".."$ref"`
1222 if [ -z "$logdata" ]; then
1223 reportecho4 "--> not merging, no changes vs master"
1224 if yesno "Branch \"$ref\" probably should get deleted. Do it?" ''; then
1225 git push origin :"${ref#refs/remotes/origin/}"
1226 reportecho4 "--> branch deleted"
1229 diffdata=`git diff --color --find-copies-harder --ignore-space-change "$realbase"..."$ref"`
1230 if [ -z "$diffdata" ]; then
1231 reportecho4 "--> not merging, no changes vs master, branch contains redundant history"
1232 if yesno "Branch \"$ref\" probably should get deleted. Do it?" '{ $ECHO "$logdata"; } | less -r'; then
1233 git push origin :"${ref#refs/remotes/origin/}"
1234 reportecho4 "--> branch deleted"
1236 elif [ -z "$branch" ] && [ -n "$note" ]; then
1237 reportdo4 $ECHO "$note"
1238 reportecho4 "--> not merging, already had this one rejected before"
1239 elif yesno "Branch \"$ref\" may want to get merged. Do it?" '{ $ECHO "$logdata"; $ECHO "$diffdata"; } | less -r'; then
1240 git checkout "$realbase"
1241 org=`git rev-parse HEAD`
1242 if ! git merge --no-ff "$ref" 2>&1 | tee "$t" && ! { git ls-files -u | grep ' 1 ' >/dev/null; }; then
1243 git reset --hard "$org"
1244 GIT_NOTES_REF=refs/notes/admin-merge git notes edit -m "Merge failed:$LF`cat "$t"`" "$ref"
1246 reportecho4 "--> merge failed"
1247 elif ! "$SELF" compile 2>&1 | tee "$t"; then
1248 git reset --hard "$org"
1249 GIT_NOTES_REF=refs/notes/admin-merge git notes edit -m "Compile failed:$LF`cat "$t"`" "$ref"
1251 reportecho4 "--> compile failed"
1252 elif ! yesno "Still merge \"$ref\" into `git symbolic-ref HEAD` of $d? Maybe you want to test first."; then
1253 git reset --hard "$org"
1254 GIT_NOTES_REF=refs/notes/admin-merge git notes edit "$ref"
1255 note=`GIT_NOTES_REF=refs/notes/admin-merge git notes show "$ref" 2>/dev/null || true`
1256 if [ x"$note" = x"del" ]; then
1257 git push origin :"${ref#refs/remotes/origin/}"
1258 reportecho4 "--> test failed, branch deleted"
1259 elif [ -n "$note" ]; then
1260 reportdo4 $ECHO "$note"
1261 reportecho4 "--> test failed"
1263 reportecho4 "--> test failed, postponed"
1266 # apply crlf, or other cleanup filters (non-behavioural changes)
1268 find . -type f -exec touch {} \;
1269 git commit -a --amend -C HEAD || true # don't fail if nothing to commit
1272 case ",`repoflags "$d"`," in
1274 # we do quite a mess here... luckily we know $org
1275 git fetch # svn needs to be current
1276 git rebase -i --onto origin/master "$org"
1277 git svn dcommit --add-author-from
1278 git reset --hard "$org"
1281 git push origin HEAD
1284 reportecho4 "--> MERGED"
1285 if yesno "Delete original branch \"$ref\"?"; then
1286 git push origin :"${ref#refs/remotes/origin/}"
1287 reportecho4 "--> branch deleted"
1291 GIT_NOTES_REF=refs/notes/admin-merge git notes edit "$ref"
1292 note=`GIT_NOTES_REF=refs/notes/admin-merge git notes show "$ref" 2>/dev/null || true`
1293 if [ x"$note" = x"del" ]; then
1294 git push origin :"${ref#refs/remotes/origin/}"
1295 reportecho4 "--> branch deleted"
1296 elif [ -n "$note" ]; then
1297 reportdo4 $ECHO "$note"
1298 reportecho4 "--> rejected"
1300 reportecho4 "--> postponed"
1309 $ECHO "$report" | ssh nexuiz@rm.endoftheinternet.org cat '>>' public_html/xonotic-merge-notes.txt
1321 # ./all clean [-m] [-f | -fu | -fU] [-r] [-D]
1322 # ./all clean --reclone
1325 if [ x"$X" = x"--reclone" ]; then
1332 elif [ x"$X" = x"-f" ]; then
1334 elif [ x"$X" = x"-u" ]; then
1336 elif [ x"$X" = x"-U" ]; then
1339 elif [ x"$X" = x"-fu" ]; then
1342 elif [ x"$X" = x"-fU" ]; then
1346 elif [ x"$X" = x"-m" ]; then
1348 elif [ x"$X" = x"-r" ]; then
1350 elif [ x"$X" = x"-D" ]; then
1352 elif $ECHO "$X" | grep '^-FFFF*UUUU*$' >/dev/null; then
1355 msg " ,--'-\\P/\`\\ FFFFFFF"
1356 msg " __/_ B/,-.\\ FFFFFFF"
1357 msg " / _\\ (// O\\\\ FFFFFF"
1358 msg "| (O \`) _\\._ _)\\ FFFUU"
1359 msg "| |___/.^d0~~\"\\ \\ UUUU"
1360 msg "| |\`~' \\ | UUUU"
1361 msg "| | __,C>|| UUUU"
1362 msg "\\ /_ ,-/,-' | UUUU"
1363 msg " \\\\_ \\_>~' / UUUU-"
1366 msg "Unknown arg: $X"
1376 if $gotoupstream; then
1378 msg "Must also use -f (delete local changes) when using -u"
1381 if $gotomaster; then
1382 if $fetchupstream; then
1383 verbose git fetch origin
1384 verbose git remote prune origin
1386 verbose git checkout -f "`repobranch "$d"`"
1387 verbose git reset --hard origin/"`repobranch "$d"`"
1389 r=`git symbolic-ref HEAD`
1391 rem=`git config "branch.$r.remote" || $ECHO origin`
1392 bra=`git config "branch.$r.merge" || $ECHO "$r"`
1393 upstream="$rem/${bra#refs/heads/}"
1394 if $fetchupstream; then
1395 verbose git fetch "$rem"
1396 verbose git remote prune "$rem"
1398 if ! git rev-parse "$upstream" >/dev/null 2>&1; then
1399 upstream="origin/`repobranch "$d"`"
1401 verbose git reset --hard "$upstream"
1403 elif $gotomaster; then
1405 verbose git checkout -f "`repobranch "$d"`"
1406 verbose git reset --hard
1408 verbose git checkout "`repobranch "$d"`"
1411 verbose git reset --hard
1413 if $rmuntracked; then
1416 verbose git clean -df || true
1419 verbose git clean -xdf || true
1423 if $killbranches; then
1424 git for-each-ref --format='%(refname)' refs/heads/ | while IFS= read -r B; do
1425 if [ x"$B" != x"`git symbolic-ref HEAD`" ]; then
1426 verbose git branch -D "${B#refs/heads/}"
1429 git rev-parse refs/heads/master >/dev/null 2>&1 || verbose git branch --track master origin/master || true
1430 git rev-parse "refs/heads/`repobranch "$d"`" >/dev/null 2>&1 || verbose git branch --track "`repobranch "$d"`" origin/"`repobranch "$d"`" || true
1432 checkself "$cmd" "$@"
1436 # release building goes here
1438 #"$SELF" each git clean -fxd
1439 case "$RELEASETYPE" in
1441 msg "Building a BETA"
1444 msg "Building a RELEASE"
1447 $ECHO >&2 -n "$ESC[2J$ESC[H"
1454 msg " +---------------------------------------------------------.---+"
1456 msg " +---------------------------------------------------------^---+"
1458 msg " | / \ This is the official release build system. |"
1459 msg " | | | If you are not a member of the Xonotic Core Team, |"
1460 msg " | | STOP | you are not supposed to use this script and should |"
1461 msg " | | | instead use ./all compile to compile the engine |"
1462 msg " | \____/ and game code. |"
1464 msg " | [ I understand ] |"
1465 msg " +-------------------------------------------------------------+"
1467 # A LOT of build infrastructure is required:
1470 # - .ssh/config must be configured so the following
1471 # host names are reachable and have a compile
1472 # infrastructure set up:
1473 # - xonotic-build-linux32 (with gcc on x86)
1474 # - xonotic-build-linux64 (with gcc on x86_64)
1475 # - xonotic-build-win32 (with i586-mingw32msvc-g++)
1476 # - xonotic-build-win64 (with amd64-mingw32msvc-g++
1477 # and x86_64-w64-mingw32-g++)
1478 # - xonotic-build-osx (with Xcode and SDL.framework)
1479 # - AMD Compressonator installed in WINE
1480 # - ResEdit installed in WINE
1481 # - a lot of other requirements you will figure out
1482 # while reading the error messages
1483 # - environment variable RELEASETYPE set
1484 # - optionally, environment variable RELEASEDATE set
1489 verbose rm -rf Xonotic Xonotic*.zip
1490 verbose mkdir -p Xonotic
1491 if [ -n "$RELEASEDATE" ]; then
1492 verbose $ECHO "$RELEASEDATE" > Xonotic/stamp.txt
1494 verbose date +%Y%m%d > Xonotic/stamp.txt
1496 verbose git archive --format=tar HEAD -- Docs misc server xonotic-linux-glx.sh xonotic-linux-sdl.sh misc/buildfiles key_0.d0pk | {
1498 verbose mkdir data fteqcc source source/darkplaces source/fteqcc
1500 verbose rm -rf misc/builddeps
1501 verbose mv misc/buildfiles/win32/* . || true
1502 verbose mv misc/buildfiles/win64 bin64 || true
1503 verbose mv misc/buildfiles/osx/* . || true
1504 verbose rm -rf misc/buildfiles
1505 verbose rm -rf misc/pki
1508 verbose cd darkplaces
1509 verbose git archive --format=tar HEAD
1511 verbose cd Xonotic/source/darkplaces
1516 verbose git archive --format=tar HEAD
1518 verbose cd Xonotic/source/fteqcc
1522 verbose cd data/xonotic-data.pk3dir
1523 verbose git archive --format=tar HEAD -- qcsrc Makefile
1525 verbose cd Xonotic/source
1528 rm -f Xonotic/key_15.d0pk
1530 release-compile-run)
1539 if [ -n "$targetfiles" ]; then
1540 case " $HOSTS_THAT_ARE_DISABLED " in
1545 case " $HOSTS_THAT_ARE_MYSELF " in
1547 verbose rsync --delete -zLvaSHP "$srcdir"/ "$buildpath/"
1548 verbose rsync --delete -zLvaSHP "$depsdir"/ "$buildpath.deps/"
1549 verbose ln -snf "$buildpath.deps" "$buildpath/.deps"
1550 verbose eval make -C "$buildpath" clean $maketargets $makeflags
1551 for f in $targetfiles; do
1552 verbose mv "$buildpath/${f%:*}" "${f##*:}" || true
1556 verbose rsync --delete -zLvaSHP "$srcdir"/ "$host:$buildpath/"
1557 verbose rsync --delete -zLvaSHP "$depsdir"/ "$host:$buildpath.deps/"
1558 verbose ssh "$host" "ln -snf $buildpath.deps $buildpath/.deps && cd $buildpath && nice -`nice` make clean $maketargets $makeflags"
1559 for f in $targetfiles; do
1560 verbose rsync -zvaSHP "$host:$buildpath/${f%:*}" "${f##*:}" || true
1564 # now rebrand the binaries...
1565 for f in $targetfiles; do
1566 #verbose "$d0/misc/tools/rebrand-darkplaces-engine.sh" "${XONOTIC_BRAND:-$d0/misc/tools/xonotic.brand}" "${f##*:}" || true
1569 verbose "$d0/misc/tools/change-icon-of-exe.sh" "$d0/misc/logos/icons_ico/xonotic.ico" "${f##*:}"
1571 d=`mktemp -d -t rebrand.XXXXXX`
1573 $ECHO "-mygames" > darkplaces.opt
1574 zip -9r darkplaces.zip darkplaces.opt
1587 fteqcc_maketargets=$3
1589 darkplaces_maketargets=$5
1591 host=xonotic-build-$suffix
1592 verbose "$SELF" release-compile-run "$host" /tmp/fteqcc.build."$suffix" "$fteqcc_maketargets" "$makeflags" "Xonotic/source/fteqcc" "$d0/misc/builddeps/dp.$suffix" "$fteqcc_files"
1593 verbose "$SELF" release-compile-run "$host" /tmp/Darkplaces.build."$suffix" "$darkplaces_maketargets" "$makeflags" "Xonotic/source/darkplaces" "$d0/misc/builddeps/dp.$suffix" "$darkplaces_files"
1595 release-engine-win32)
1596 verbose "$SELF" release-compile win32 \
1597 'STRIP=: DP_MAKE_TARGET=mingw CC="i586-mingw32msvc-gcc -march=i686 -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' \
1598 win 'fteqcc.exe:Xonotic/fteqcc/fteqcc.exe' \
1600 verbose "$SELF" release-compile win32 \
1601 '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' \
1603 release 'darkplaces.exe:Xonotic/xonotic.exe darkplaces-sdl.exe:Xonotic/xonotic-sdl.exe darkplaces-dedicated.exe:Xonotic/xonotic-dedicated.exe'
1605 release-engine-win64)
1606 verbose "$SELF" release-compile win64 \
1607 'STRIP=: DP_MAKE_TARGET=mingw CC="amd64-mingw32msvc-gcc -g -Wl,--dynamicbase -Wl,--nxcompat -I.deps/include -L.deps/lib -DSUPPORTIPV6" WINDRES="amd64-mingw32msvc-windres" SDL_CONFIG=".deps/bin/sdl-config" LIB_JPEG= CFLAGS_LIBJPEG= WIN64RELEASE=1 D3D=0' \
1608 win 'fteqcc.exe:Xonotic/fteqcc/fteqcc-x64.exe' \
1609 'sv-release sdl-release' 'darkplaces-sdl.exe:Xonotic/xonotic-x64-sdl.exe darkplaces-dedicated.exe:Xonotic/xonotic-x64-dedicated.exe'
1610 verbose "$SELF" release-compile win64 \
1611 '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' \
1613 cl-release 'darkplaces.exe:Xonotic/xonotic-x64.exe'
1616 # gcc on OSX is buggy, needs -fno-reorder-blocks for a release build to succeed
1617 verbose "$SELF" release-compile osx \
1618 'STRIP=: CC="gcc -g -arch i386 -arch ppc -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.4 -I.deps/include -L.deps/lib -fno-reorder-blocks -DSUPPORTIPV6"' \
1619 all 'fteqcc.bin:Xonotic/fteqcc/fteqcc.osx' \
1620 'sv-release sdl-release' 'darkplaces-sdl:Xonotic/Xonotic-SDL.app/Contents/MacOS/xonotic-osx-sdl-bin darkplaces-dedicated:Xonotic/xonotic-osx-dedicated'
1621 verbose "$SELF" release-compile osx \
1622 'STRIP=: CC="gcc -g -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.4 -I.deps/include -L.deps/lib -fno-reorder-blocks -DSUPPORTIPV6"' \
1624 'cl-release' 'darkplaces-agl:Xonotic/Xonotic.app/Contents/MacOS/xonotic-osx-agl-bin'
1626 release-engine-linux32)
1627 verbose "$SELF" release-compile linux32 \
1628 'STRIP=: CC="gcc -m32 -march=i686 -g -I.deps/include -L.deps/lib -DSUPPORTIPV6" DP_MODPLUG_STATIC_LIBDIR=.deps/lib LIB_JPEG=.deps/lib/libjpeg.a DP_CRYPTO_STATIC_LIBDIR=.deps/lib' \
1629 all 'fteqcc.bin:Xonotic/fteqcc/fteqcc.linux32' \
1630 release 'darkplaces-glx:Xonotic/xonotic-linux32-glx darkplaces-sdl:Xonotic/xonotic-linux32-sdl darkplaces-dedicated:Xonotic/xonotic-linux32-dedicated'
1632 release-engine-linux64)
1633 verbose "$SELF" release-compile linux64 \
1634 'STRIP=: CC="gcc -m64 -g -I.deps/include -L.deps/lib -DSUPPORTIPV6" DP_MODPLUG_STATIC_LIBDIR=.deps/lib LIB_JPEG=.deps/lib/libjpeg.a DP_CRYPTO_STATIC_LIBDIR=.deps/lib' \
1635 all 'fteqcc.bin:Xonotic/fteqcc/fteqcc.linux64' \
1636 release 'darkplaces-glx:Xonotic/xonotic-linux64-glx darkplaces-sdl:Xonotic/xonotic-linux64-sdl darkplaces-dedicated:Xonotic/xonotic-linux64-dedicated'
1639 verbose "$SELF" release-engine-linux32 &
1640 verbose "$SELF" release-engine-linux64 &
1641 verbose "$SELF" release-engine-win32 &
1642 verbose "$SELF" release-engine-win64 &
1643 verbose "$SELF" release-engine-osx &
1652 verbose "$SELF" update-maps
1655 case "$RELEASETYPE" in
1657 verbose make -C Xonotic/source FTEQCC="../../../fteqcc/fteqcc.linux32" XON_BUILDSYSTEM=1 clean all
1658 # back out of: source/qcsrc/server
1661 verbose make -C Xonotic/source FTEQCC="../../../fteqcc/fteqcc.linux32" XON_BUILDSYSTEM=1 FTEQCCFLAGS_WATERMARK= clean all
1664 verbose rm -f Xonotic/source/*/fteqcc.log
1666 release-buildpk3-transform-raw)
1669 release-buildpk3-transform-normal)
1672 # texture: convert to jpeg and dds
1673 verbose export do_jpeg=true
1674 verbose export jpeg_qual_rgb=95
1675 verbose export jpeg_qual_a=99
1676 verbose export do_dds=true
1677 verbose export dds_flags=
1678 verbose export do_ogg=false
1679 verbose export del_src=true
1680 find . -type f -print0 | verbose xargs -0 "$d0"/misc/tools/cached-converter.sh
1682 release-buildpk3-transform-low)
1685 # texture: convert to jpeg and dds
1686 # music: reduce bitrate
1687 verbose export do_jpeg=true
1688 verbose export jpeg_qual_rgb=80
1689 verbose export jpeg_qual_a=97
1690 verbose export do_dds=false
1691 verbose export do_ogg=true
1692 verbose export ogg_qual=1
1693 verbose export del_src=true
1694 find . -type f -print0 | verbose xargs -0 "$d0"/misc/tools/cached-converter.sh
1696 release-buildpk3-transform-lowdds)
1699 # texture: convert to jpeg and dds
1700 # music: reduce bitrate
1701 verbose export do_jpeg=false
1702 verbose export do_jpeg_if_not_dds=true
1703 verbose export jpeg_qual_rgb=80
1704 verbose export jpeg_qual_a=99
1705 verbose export do_dds=true
1706 verbose export dds_flags=
1707 verbose export do_ogg=true
1708 verbose export ogg_qual=1
1709 verbose export del_src=true
1710 find . -type f -print0 | verbose xargs -0 "$d0"/misc/tools/cached-converter.sh
1723 verbose rm -rf Xonotic/temp
1724 verbose mkdir -p Xonotic/temp
1727 verbose git archive --format=tar HEAD
1729 verbose cd Xonotic/temp
1732 verbose cd Xonotic/temp
1733 if [ x"$src" = x"data/xonotic-data.pk3dir" ]; then
1734 verbose cp ../source/progs.dat .
1735 verbose cp ../source/csprogs.dat .
1736 verbose cp ../source/menu.dat .
1737 verbose rm -rf qcsrc
1738 gv=`grep "^gameversion " "defaultXonotic.cfg" | awk '{ print $2 }'`
1739 major=$(($gv / 10000))
1740 minor=$(($gv / 100 - $major * 100))
1741 patch=$(($gv - $major * 10000 - $minor * 100))
1742 versionstr="$major.$minor.$patch"
1743 case "$RELEASETYPE" in
1745 versionstr="$versionstr""beta"
1749 s/^set g_xonoticversion [^ ]* /set g_xonoticversion $versionstr /;
1750 s/^gameversion_min [0-9]*/gameversion_min $(( ($gv / 100) * 100 - 100 ))/;
1751 s/^gameversion_max [0-9]*/gameversion_max $(( ($gv / 100) * 100 + 199 ))/;
1752 " defaultXonotic.cfg
1754 verbose cd gfx/menu/luminos
1755 verbose cp "$d0"/mediasource/gfx/menu/luminos_versionbuilder/background_l2.svg .
1756 verbose "$d0"/mediasource/gfx/menu/luminos_versionbuilder/versionbuilder "$versionstr"
1757 verbose rm background_l2.svg
1760 if [ x"$src" = x"data/xonotic-maps.pk3dir" ]; then
1761 for X in ../../data/*-????????????????????????????????????????-????????????????????????????????????????.pk3; do
1762 if [ -f "$X" ]; then
1764 verbose rm -f maps/*.log maps/*.irc maps/*.lin
1768 verbose export git_src_repo="$d0/$src" # skip hash-object
1769 verbose "$SELF" release-buildpk3-transform-$transform "Xonotic/temp"
1770 verbose mkzip "../../$dst" *
1772 verbose rm -rf Xonotic/temp
1775 stamp=`cat Xonotic/stamp.txt`
1781 dst="data/xonotic-$stamp-${dst#data/xonotic-}"
1787 while [ "$#" -gt 1 ]; do
1788 verbose "$SELF" release-buildpk3 "$src" "Xonotic/$dst$2.pk3" "$1"
1794 verbose "$SELF" release-buildpk3s data/font-nimbussansl.pk3dir raw ''
1795 verbose "$SELF" release-buildpk3s data/xonotic-data.pk3dir normal '' low '-low' lowdds '-lowdds'
1796 verbose "$SELF" release-buildpk3s data/xonotic-maps.pk3dir normal '' low '-low' lowdds '-lowdds'
1797 verbose "$SELF" release-buildpk3s data/xonotic-music.pk3dir raw '' low '-low'
1798 verbose "$SELF" release-buildpk3s data/xonotic-nexcompat.pk3dir low ''
1800 release-pack-needsx11)
1803 verbose startx "$SELF" release-pack -- /usr/bin/Xvfb :7
1806 verbose "$SELF" release-pack
1811 stamp=`cat Xonotic/stamp.txt`
1812 # exe and dll files do not need +x, so this makes them eligible for 7zip compression too
1813 chmod a-x Xonotic/*.exe Xonotic/*.dll || true
1814 # let's pass crypto import laws of some nasty countries
1815 crypto_libs=`find Xonotic -name \*d0_rijndael\*`
1816 if [ -n "$crypto_libs" ]; then
1817 verbose mkzip Xonotic-$stamp-crypto.zip \
1821 # build the archives
1822 verbose mkzip Xonotic-$stamp-engine.zip \
1824 Xonotic/bin64/*.dll \
1827 Xonotic/xonotic.exe \
1828 Xonotic/source/darkplaces/
1829 verbose cp Xonotic-$stamp-engine.zip Xonotic-$stamp-common.zip
1830 verbose mkzip Xonotic-$stamp-common.zip \
1831 Xonotic/source/fteqcc/ \
1832 Xonotic/source/qcsrc/ \
1837 Xonotic/key_0.d0pk \
1838 Xonotic/data/font-nimbussansl-$stamp.pk3
1839 verbose cp Xonotic-$stamp-common.zip Xonotic-$stamp.zip
1840 verbose mkzip0 Xonotic-$stamp.zip \
1841 Xonotic/data/xonotic-$stamp-data.pk3 \
1842 Xonotic/data/xonotic-$stamp-maps.pk3 \
1843 Xonotic/data/xonotic-$stamp-music.pk3 \
1844 Xonotic/data/xonotic-$stamp-nexcompat.pk3
1845 verbose cp Xonotic-$stamp-common.zip Xonotic-$stamp-low.zip
1846 verbose mkzip0 Xonotic-$stamp-low.zip \
1847 Xonotic/data/xonotic-$stamp-data-low.pk3 \
1848 Xonotic/data/xonotic-$stamp-maps-low.pk3 \
1849 Xonotic/data/xonotic-$stamp-music-low.pk3
1850 # verbose cp Xonotic-$stamp-common.zip Xonotic-$stamp-high.zip
1851 # verbose mkzip0 Xonotic-$stamp-high.zip \
1852 # Xonotic/data/xonotic-$stamp-data-raw.pk3 \
1853 # Xonotic/data/xonotic-$stamp-maps-raw.pk3 \
1854 # Xonotic/data/xonotic-$stamp-music.pk3 \
1855 # Xonotic/data/xonotic-$stamp-nexcompat.pk3
1856 verbose mv Xonotic-$stamp-common.zip Xonotic-$stamp-lowdds.zip
1857 verbose mkzip0 Xonotic-$stamp-lowdds.zip \
1858 Xonotic/data/xonotic-$stamp-data-lowdds.pk3 \
1859 Xonotic/data/xonotic-$stamp-maps-lowdds.pk3 \
1860 Xonotic/data/xonotic-$stamp-music-low.pk3
1863 verbose "$SELF" release-prepare
1864 verbose "$SELF" release-maps
1865 verbose "$SELF" release-engine
1866 verbose "$SELF" release-qc
1867 verbose "$SELF" release-pack-needsx11
1868 verbose "$SELF" release-zip
1873 $ECHO " $SELF admin-merge [<branch>]"
1874 $ECHO " $SELF branch <branch>"
1875 $ECHO " $SELF branch <remote> <branch> [<srcbranch>]"
1876 $ECHO " $SELF branches"
1877 $ECHO " $SELF checkout|switch <branch>"
1878 $ECHO " $SELF checkout|switch <remote>/<branch>"
1879 $ECHO " $SELF clean [-m] [-f | -fu | -fU] [-r] [-D]"
1880 $ECHO " $SELF clean --reclone"
1881 $ECHO " $SELF compile [-c] [-r] [-0]"
1882 $ECHO " $SELF each|foreach [-k] command..."
1883 $ECHO " $SELF fix_upstream_rebase"
1884 $ECHO " $SELF keygen"
1885 $ECHO " $SELF merge"
1886 $ECHO " $SELF push|commit [-s]"
1887 $ECHO " $SELF release"
1888 $ECHO " $SELF restore-patches"
1889 $ECHO " $SELF run [sdl|glx|wgl|agl|dedicated] options..."
1890 $ECHO " $SELF save-patches"
1891 $ECHO " $SELF update-maps"
1892 $ECHO " $SELF update|pull [-N] [-s | -h [-p] | -g [-p]] [-l de|nl|default]"