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 $ECHO >&2 -n "$ESC[2J$ESC[H"
1448 msg " +---------------------------------------------------------.---+"
1450 msg " +---------------------------------------------------------^---+"
1452 msg " | / \ This is the official release build system. |"
1453 msg " | | | If you are not a member of the Xonotic Core Team, |"
1454 msg " | | STOP | you are not supposed to use this script and should |"
1455 msg " | | | instead use ./all compile to compile the engine |"
1456 msg " | \____/ and game code. |"
1458 msg " | [ I understand ] |"
1459 msg " +-------------------------------------------------------------+"
1461 # A LOT of build infrastructure is required:
1464 # - .ssh/config must be configured so the following
1465 # host names are reachable and have a compile
1466 # infrastructure set up:
1467 # - xonotic-build-linux32 (with gcc on x86)
1468 # - xonotic-build-linux64 (with gcc on x86_64)
1469 # - xonotic-build-win32 (with i586-mingw32msvc-g++)
1470 # - xonotic-build-win64 (with amd64-mingw32msvc-g++
1471 # and x86_64-w64-mingw32-g++)
1472 # - xonotic-build-osx (with Xcode and SDL.framework)
1473 # - AMD Compressonator installed in WINE
1474 # - ResEdit installed in WINE
1475 # - a lot of other requirements you will figure out
1476 # while reading the error messages
1477 # - environment variable RELEASETYPE set
1478 # - optionally, environment variable RELEASEDATE set
1483 msg "Building a FINISHED RELEASE"
1486 msg "Building a $RELEASETYPE"
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 source/d0_blind_id
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
1529 verbose cd d0_blind_id
1530 verbose git archive --format=tar HEAD
1532 verbose cd Xonotic/source/d0_blind_id
1534 verbose sh autogen.sh
1536 rm -f Xonotic/key_15.d0pk
1538 release-compile-run)
1547 if [ -n "$targetfiles" ]; then
1548 case " $HOSTS_THAT_ARE_DISABLED " in
1553 case " $HOSTS_THAT_ARE_MYSELF " in
1555 verbose rsync --delete -zLvaSHP "$srcdir"/ "$buildpath/"
1556 verbose rsync --delete -zLvaSHP "$depsdir"/ "$buildpath.deps/"
1557 verbose ln -snf "$buildpath.deps" "$buildpath/.deps"
1558 verbose eval make -C "$buildpath" clean $maketargets $makeflags
1559 for f in $targetfiles; do
1560 verbose mv "$buildpath/${f%:*}" "${f##*:}" || true
1564 verbose rsync --delete -zLvaSHP "$srcdir"/ "$host:$buildpath/"
1565 verbose rsync --delete -zLvaSHP "$depsdir"/ "$host:$buildpath.deps/"
1566 verbose ssh "$host" "ln -snf $buildpath.deps $buildpath/.deps && cd $buildpath && nice -`nice` make clean $maketargets $makeflags"
1567 for f in $targetfiles; do
1568 verbose rsync -zvaSHP "$host:$buildpath/${f%:*}" "${f##*:}" || true
1572 # now rebrand the binaries...
1573 for f in $targetfiles; do
1574 #verbose "$d0/misc/tools/rebrand-darkplaces-engine.sh" "${XONOTIC_BRAND:-$d0/misc/tools/xonotic.brand}" "${f##*:}" || true
1576 Xonotic/xonotic*.exe)
1577 verbose "$d0/misc/tools/change-icon-of-exe.sh" "$d0/misc/logos/icons_ico/xonotic.ico" "${f##*:}"
1579 d=`mktemp -d -t rebrand.XXXXXX`
1581 $ECHO "-mygames" > darkplaces.opt
1582 zip -9r darkplaces.zip darkplaces.opt
1595 fteqcc_maketargets=$3
1597 darkplaces_maketargets=$5
1599 host=xonotic-build-$suffix
1600 verbose "$SELF" release-compile-run "$host" /tmp/fteqcc.build."$suffix" "$fteqcc_maketargets" "$makeflags" "Xonotic/source/fteqcc" "$d0/misc/builddeps/dp.$suffix" "$fteqcc_files"
1601 verbose "$SELF" release-compile-run "$host" /tmp/Darkplaces.build."$suffix" "$darkplaces_maketargets" "$makeflags" "Xonotic/source/darkplaces" "$d0/misc/builddeps/dp.$suffix" "$darkplaces_files"
1603 release-engine-win32)
1604 verbose "$SELF" release-compile win32 \
1605 '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' \
1606 win 'fteqcc.exe:Xonotic/fteqcc/fteqcc.exe' \
1608 verbose "$SELF" release-compile win32 \
1609 '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' \
1611 release 'darkplaces.exe:Xonotic/xonotic.exe darkplaces-sdl.exe:Xonotic/xonotic-sdl.exe darkplaces-dedicated.exe:Xonotic/xonotic-dedicated.exe'
1613 release-engine-win64)
1614 verbose "$SELF" release-compile win64 \
1615 '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' \
1616 win 'fteqcc.exe:Xonotic/fteqcc/fteqcc-x64.exe' \
1617 'sv-release sdl-release' 'darkplaces-sdl.exe:Xonotic/xonotic-x64-sdl.exe darkplaces-dedicated.exe:Xonotic/xonotic-x64-dedicated.exe'
1618 verbose "$SELF" release-compile win64 \
1619 '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' \
1621 cl-release 'darkplaces.exe:Xonotic/xonotic-x64.exe'
1624 # gcc on OSX is buggy, needs -fno-reorder-blocks for a release build to succeed
1625 verbose "$SELF" release-compile osx \
1626 '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"' \
1627 all 'fteqcc.bin:Xonotic/fteqcc/fteqcc.osx' \
1628 'sv-release sdl-release' 'darkplaces-sdl:Xonotic/Xonotic-SDL.app/Contents/MacOS/xonotic-osx-sdl-bin darkplaces-dedicated:Xonotic/xonotic-osx-dedicated'
1629 verbose "$SELF" release-compile osx \
1630 '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"' \
1632 'cl-release' 'darkplaces-agl:Xonotic/Xonotic.app/Contents/MacOS/xonotic-osx-agl-bin'
1634 release-engine-linux32)
1635 verbose "$SELF" release-compile linux32 \
1636 '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' \
1637 all 'fteqcc.bin:Xonotic/fteqcc/fteqcc.linux32' \
1638 release 'darkplaces-glx:Xonotic/xonotic-linux32-glx darkplaces-sdl:Xonotic/xonotic-linux32-sdl darkplaces-dedicated:Xonotic/xonotic-linux32-dedicated'
1640 release-engine-linux64)
1641 verbose "$SELF" release-compile linux64 \
1642 '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' \
1643 all 'fteqcc.bin:Xonotic/fteqcc/fteqcc.linux64' \
1644 release 'darkplaces-glx:Xonotic/xonotic-linux64-glx darkplaces-sdl:Xonotic/xonotic-linux64-sdl darkplaces-dedicated:Xonotic/xonotic-linux64-dedicated'
1647 verbose "$SELF" release-engine-linux32 &
1648 verbose "$SELF" release-engine-linux64 &
1649 verbose "$SELF" release-engine-win32 &
1650 verbose "$SELF" release-engine-win64 &
1651 verbose "$SELF" release-engine-osx &
1660 verbose "$SELF" update-maps
1663 verbose make -C Xonotic/source FTEQCC="../../../fteqcc/fteqcc.linux32" XON_BUILDSYSTEM=1 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
1747 versionstr="$versionstr$RELEASETYPE"
1751 s/^set g_xonoticversion [^ ]* /set g_xonoticversion $versionstr /;
1752 s/^gameversion_min [0-9]*/gameversion_min $(( ($gv / 100) * 100 - 100 ))/;
1753 s/^gameversion_max [0-9]*/gameversion_max $(( ($gv / 100) * 100 + 199 ))/;
1754 " defaultXonotic.cfg
1755 case "$RELEASETYPE" in
1757 echo "" >> defaultXonotic.cfg
1758 echo "// nicer menu" >> defaultXonotic.cfg
1759 echo "set menu_watermark \"\"" >> defaultXonotic.cfg
1763 verbose cd gfx/menu/luminos
1764 verbose cp "$d0"/mediasource/gfx/menu/luminos_versionbuilder/background_l2.svg .
1765 verbose "$d0"/mediasource/gfx/menu/luminos_versionbuilder/versionbuilder "$versionstr"
1766 verbose rm background_l2.svg
1769 if [ x"$src" = x"data/xonotic-maps.pk3dir" ]; then
1770 for X in ../../data/*-????????????????????????????????????????-????????????????????????????????????????.pk3; do
1771 if [ -f "$X" ]; then
1773 verbose rm -f maps/*.log maps/*.irc maps/*.lin
1777 verbose export git_src_repo="$d0/$src" # skip hash-object
1778 verbose "$SELF" release-buildpk3-transform-$transform "Xonotic/temp"
1779 verbose mkzip "../../$dst" *
1781 verbose rm -rf Xonotic/temp
1784 stamp=`cat Xonotic/stamp.txt`
1790 dst="data/xonotic-$stamp-${dst#data/xonotic-}"
1796 while [ "$#" -gt 1 ]; do
1797 verbose "$SELF" release-buildpk3 "$src" "Xonotic/$dst$2.pk3" "$1"
1803 verbose "$SELF" release-buildpk3s data/font-nimbussansl.pk3dir raw ''
1804 verbose "$SELF" release-buildpk3s data/xonotic-data.pk3dir normal '' low '-low' lowdds '-lowdds'
1805 verbose "$SELF" release-buildpk3s data/xonotic-maps.pk3dir normal '' low '-low' lowdds '-lowdds'
1806 verbose "$SELF" release-buildpk3s data/xonotic-music.pk3dir raw '' low '-low'
1807 verbose "$SELF" release-buildpk3s data/xonotic-nexcompat.pk3dir low ''
1809 release-pack-needsx11)
1812 verbose startx "$SELF" release-pack -- /usr/bin/Xvfb :7
1815 verbose "$SELF" release-pack
1820 stamp=`cat Xonotic/stamp.txt`
1821 # exe and dll files do not need +x, so this makes them eligible for 7zip compression too
1822 chmod a-x Xonotic/*.exe Xonotic/*.dll || true
1823 # let's pass crypto import laws of some nasty countries
1824 crypto_libs=`find Xonotic -name \*d0_rijndael\*.so -o -name \*d0_rijndael\*.dylib -o -name \*d0_rijndael\*.dll -o -name \*d0_rijndael\*.c`
1825 if [ -n "$crypto_libs" ]; then
1826 verbose mkzip Xonotic-$stamp-crypto.zip \
1830 # build the archives
1831 verbose mkzip Xonotic-$stamp-engine.zip \
1833 Xonotic/bin64/*.dll \
1836 Xonotic/xonotic.exe \
1837 Xonotic/source/darkplaces/
1838 verbose cp Xonotic-$stamp-engine.zip Xonotic-$stamp-common.zip
1839 verbose mkzip Xonotic-$stamp-common.zip \
1840 Xonotic/source/fteqcc/ \
1841 Xonotic/source/qcsrc/ \
1846 Xonotic/key_0.d0pk \
1847 Xonotic/data/font-nimbussansl-$stamp.pk3
1848 verbose cp Xonotic-$stamp-common.zip Xonotic-$stamp.zip
1849 verbose mkzip0 Xonotic-$stamp.zip \
1850 Xonotic/data/xonotic-$stamp-data.pk3 \
1851 Xonotic/data/xonotic-$stamp-maps.pk3 \
1852 Xonotic/data/xonotic-$stamp-music.pk3 \
1853 Xonotic/data/xonotic-$stamp-nexcompat.pk3
1854 verbose cp Xonotic-$stamp-common.zip Xonotic-$stamp-low.zip
1855 verbose mkzip0 Xonotic-$stamp-low.zip \
1856 Xonotic/data/xonotic-$stamp-data-low.pk3 \
1857 Xonotic/data/xonotic-$stamp-maps-low.pk3 \
1858 Xonotic/data/xonotic-$stamp-music-low.pk3
1859 verbose mv Xonotic-$stamp-common.zip Xonotic-$stamp-lowdds.zip
1860 verbose mkzip0 Xonotic-$stamp-lowdds.zip \
1861 Xonotic/data/xonotic-$stamp-data-lowdds.pk3 \
1862 Xonotic/data/xonotic-$stamp-maps-lowdds.pk3 \
1863 Xonotic/data/xonotic-$stamp-music-low.pk3
1866 verbose "$SELF" release-prepare
1867 verbose "$SELF" release-maps
1868 verbose "$SELF" release-engine
1869 verbose "$SELF" release-qc
1870 verbose "$SELF" release-pack-needsx11
1871 verbose "$SELF" release-zip
1876 $ECHO " $SELF admin-merge [<branch>]"
1877 $ECHO " $SELF branch <branch>"
1878 $ECHO " $SELF branch <remote> <branch> [<srcbranch>]"
1879 $ECHO " $SELF branches"
1880 $ECHO " $SELF checkout|switch <branch>"
1881 $ECHO " $SELF checkout|switch <remote>/<branch>"
1882 $ECHO " $SELF clean [-m] [-f | -fu | -fU] [-r] [-D]"
1883 $ECHO " $SELF clean --reclone"
1884 $ECHO " $SELF compile [-c] [-r] [-0]"
1885 $ECHO " $SELF each|foreach [-k] command..."
1886 $ECHO " $SELF fix_upstream_rebase"
1887 $ECHO " $SELF keygen"
1888 $ECHO " $SELF merge"
1889 $ECHO " $SELF push|commit [-s]"
1890 $ECHO " $SELF release"
1891 $ECHO " $SELF restore-patches"
1892 $ECHO " $SELF run [sdl|glx|wgl|agl|dedicated] options..."
1893 $ECHO " $SELF save-patches"
1894 $ECHO " $SELF update-maps"
1895 $ECHO " $SELF update|pull [-N] [-s | -h [-p] | -g [-p]] [-l de|nl|default]"