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
111 if ! IFS= read -r yesno; then
122 check_mergeconflict "$1"
127 data/xonotic-data.pk3dir | | master |
128 data/xonotic-music.pk3dir | | master |
129 data/xonotic-nexcompat.pk3dir | | master | no
130 darkplaces | | div0-stable | svn
131 netradiant | | master |
132 div0-gittools | | master | no
133 d0_blind_id | | master |
134 data/xonotic-maps.pk3dir | | master |
135 mediasource | | master | no
136 fteqcc | | xonotic-stable | noautocrlf
138 # todo: in darkplaces, change repobranch to div0-stable
140 repos=`$ECHO "$repos_urls" | grep . | cut -d '|' -f 1 | tr -d ' '`
142 base=`git config remote.origin.url`
145 base=${base%xonotic.git}
148 $ECHO "The main repo is not xonotic.git, what have you done?"
152 pushbase=`git config remote.origin.pushurl || true`
155 pushbase=${pushbase%xonotic.git}
160 $ECHO "The main repo is not xonotic.git, what have you done?"
167 repo_t=`$ECHO "$repos_urls" | grep "^$1 " | cut -d '|' -f 2 | tr -d ' '`
168 if [ -n "$repo_t" ]; then
178 if [ x"$1" = x"." ]; then
179 $ECHO "$base""xonotic.git"
181 $ECHO "$base${1##*/}.git"
188 [ -n "$pushbase" ] || return 0
189 repo_t=`$ECHO "$repos_urls" | grep "^$1 " | cut -d '|' -f 2 | tr -d ' '`
190 if [ -n "$repo_t" ]; then
195 $ECHO "$pushbase$repo_t"
199 if [ x"$1" = x"." ]; then
200 $ECHO "$pushbase""xonotic.git"
202 $ECHO "$pushbase${1##*/}.git"
209 repo_t=`$ECHO "$repos_urls" | grep "^$1 " | cut -d '|' -f 3 | tr -d ' '`
210 if [ -n "$repo_t" ]; then
219 $ECHO "$repos_urls" | grep "^$1 " | cut -d '|' -f 4 | tr -d ' '
227 # if we have the dir, always keep it
229 msg "Repository $d enabled because it already exists"
233 # if .yes file exists, always keep it
234 if [ -f "$d.yes" ]; then
235 msg "Repository $d enabled by a .yes file"
239 # if we have .no file, skip
240 if [ -f "$d.no" ]; then
241 msg "Repository $d disabled by a .no file, delete $d.no to enable"
244 # if we have matching pk3, skip
245 if [ x"$p" != x"$d" ] && [ -f "$p" ]; then
246 msg "Repository $d disabled by matching .pk3 file, delete $p or create $d.yes to enable"
249 # if "no" flag is set, skip
252 msg "Repository $d disabled by default, create $d.yes to enable"
257 msg "Repository $d enabled by default"
264 if [ "$#" = 0 ]; then
275 msg "*** $release_args: start"
276 release_starttime=`date +%s`
279 release_endtime=`date +%s`
280 release_deltatime=$(($release_endtime - $release_starttime))
281 msg "*** $release_args: $release_deltatime seconds"
283 trap release_end EXIT
287 fix_upstream_rebase()
289 if [ -z "$r_me" ] || [ -z "$r_other" ]; then
293 # one of the two sides of the merge should be remote upstream, or all is fine
294 r_r=`git symbolic-ref HEAD`
295 r_r=${r_r#refs/heads/}
296 r_rem=`git config "branch.$r_rem.remote" || $ECHO origin`
297 r_bra=`git config "branch.$r_bra.merge" || $ECHO "$r_r"`
298 r_bra=${r_bra#refs/heads/}
299 if [ x"$r_me" != x"`git rev-parse "$r_rem/$r_bra"`" ]; then
300 if [ x"$r_other" != x"`git rev-parse "$r_rem/$r_bra"`" ]; then
305 r_base=`git merge-base "$r_me" "$r_other"`
307 # no merge-base? upstream did filter-branch
308 if [ -n "$r_base" ]; then
309 # otherwise, check if the two histories are "similar"
310 r_l_me=`git log --pretty="format:%s" "$r_other".."$r_me" | grep -v "^Merge" | sort -u`
311 r_l_other=`git log --pretty="format:%s" "$r_me".."$r_other" | grep -v "^Merge" | sort -u`
313 # heuristics: upstream rebase/filter-branch if more than 50% of the commits of one of the sides are in the other too
314 r_lc_me=`$ECHO "$r_l_me" | wc -l`
315 r_lc_other=`$ECHO "$r_l_other" | wc -l`
316 r_lc_together=`{ $ECHO "$r_l_me"; $ECHO "$r_l_other"; } | sort -u | wc -l`
317 r_lc_same=$(($r_lc_me + $r_lc_other - $r_lc_together))
319 if [ $(( $r_lc_same * 2 )) -gt $(( $r_lc_me )) ] || [ $(( $r_lc_same * 2 )) -gt $(( $r_lc_other )) ]; then
320 if yesno "Probable upstream rebase detected, automatically fix?" 'git log --oneline --graph --date-order --left-right "$r_other"..."$r_me"'; then
321 git reset --hard "$r_me"
331 fix_upstream_rebase_mergeok()
333 r_me=`git rev-parse --revs-only HEAD^1 2>/dev/null || true`
334 r_other=`git rev-parse --revs-only HEAD^2 2>/dev/null || true`
338 fix_upstream_rebase_mergefail()
340 r_me=`git rev-parse --revs-only HEAD 2>/dev/null || true`
341 r_other=`git rev-parse --revs-only MERGE_HEAD 2>/dev/null || true`
347 verbose git config remote.origin.url "$1"
349 verbose git config remote.origin.pushurl "$2"
351 verbose git config --unset remote.origin.pushurl || true
353 verbose git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
354 case ",`repoflags "$d"`," in
356 verbose git config --unset core.autocrlf || true
359 verbose git config core.autocrlf input
362 if [ -z "`git config push.default || true`" ]; then
363 verbose git config push.default current # or is tracking better?
365 verbose git config filter.mapclean.clean "tr -d '\r' | grep '^[^/]'"
366 verbose git config filter.mapclean.smudge "cat"
372 case "$RELEASETYPE" in
382 find "$@" -exec touch -d "2001-01-01 01:01:01 +0000" {} \+ # ugly hack to make the pk3 files rsync-friendly
384 find "$@" -xtype f \( -executable -or -type l \) -print > "$ziplist"
385 7za a -tzip $sevenzipflags -x@"$ziplist" "$archive" "$@" || true
386 zip $zipflags -y -@<"$ziplist" "$archive" || true
393 case "$RELEASETYPE" in
404 find "$@" -xtype f \( -executable -or -type l \) -print > "$ziplist"
405 7za a -tzip $sevenzipflags -x@"$ziplist" "$archive" "$@" || true
406 zip $zipflags -y -@<"$ziplist" "$archive" || true
413 zip -0ry "$archive" "$@"
418 # first result is to be ignored, but we use it to check status
419 git ls-remote "$1" refs/heads/master >/dev/null 2>&1 || return 1
420 { 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*,,'
421 # unit: clock ticks (depends on what "time" returns
429 if ! { time -p true; } >/dev/null 2>&1; then
430 msg "Cannot do timing in this shell"
448 if t=`mirrorspeed "$m"`; then
450 tt=$(($t$op)) # fudge factor
451 msg "$m -> $t$op = $tt ticks"
452 if [ -z "$bestt" ] || [ "$tt" -lt "$bestt" ]; then
463 if [ -n "$bestin" ]; then
464 msg "Best mirror seems to be $pre$bestin$suf"
474 enter "$d0/$d" verbose
475 verbose fix_upstream_rebase_mergefail && verbose fix_upstream_rebase_mergeok
481 pushurl=`repopushurl "$d"`
482 branch=`repobranch "$d"`
483 if [ -d "$d0/$d" ]; then
485 fix_git_config "$url" "$pushurl"
491 # enable the ssh URL for pushing
494 if [ -f ~/.ssh/id_rsa.pub ]; then
496 msg "A key already exists and no new one will be generated. If you"
497 msg "already have done the procedure for getting your key approved, you"
498 msg "can skip the following paragraph and already use the repository."
500 msg "To get access, your key has to be approved first. For that, visit"
501 msg "http://dev.xonotic.org/, then log in, create a \"New Issue\" on"
502 msg "the \"Support\" tracker in the \"Repository\" category where you"
503 msg "apply for access and paste the following output into the issue:"
505 msg "`cat ~/.ssh/id_rsa.pub`"
507 msg "Note that you will only have write access to branches that start"
508 msg "with your user name."
509 elif [ -f ~/.ssh/id_dsa.pub ]; then
511 msg "A key already exists and no new one will be generated. If you"
512 msg "already have done the procedure for getting your key approved, you"
513 msg "can skip the following paragraph and already use the repository."
515 msg "To get access, your key has to be approved first. For that, visit"
516 msg "http://dev.xonotic.org/, then log in, create a \"New Issue\" on"
517 msg "the \"Support\" tracker in the \"Repository\" category where you"
518 msg "apply for access and paste the following output into the issue:"
520 msg "`cat ~/.ssh/id_dsa.pub`"
522 msg "Note that you will only have write access to branches that start"
523 msg "with your user name."
526 msg "No key has been generated yet. One will be generated now."
527 msg "If other people are using your computer, it is recommended"
528 msg "to specify a passphrase. Otherwise you can simply hit ENTER"
529 msg "when asked for a passphrase."
531 ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa
533 msg "To get access, your key has to be approved first. For that, visit"
534 msg "http://dev.xonotic.org/, then log in, create a \"New Issue\" on"
535 msg "the \"Support\" tracker in the \"Repository\" category where you"
536 msg "apply for access and paste the following output into the issue:"
538 msg "`cat ~/.ssh/id_rsa.pub`"
540 msg "Note that you will only have write access to branches that start"
541 msg "with your user name."
549 if [ x"$1" = x"-N" ]; then
551 elif [ x"$1" = x"-p" ]; then
553 pushbase=ssh://xonotic@git.xonotic.org/
554 elif [ x"$1" = x"-ps" ]; then
556 pushbase=ssh://xonotic@git.xonotic.org/
557 elif [ x"$1" = x"-ph" ]; then
559 pushbase=http://git.xonotic.org/login/xonotic/
560 elif [ x"$1" = x"-s" ]; then
562 base=ssh://xonotic@git.xonotic.org/
563 elif [ x"$1" = x"-g" ]; then
565 base=git://git.xonotic.org/xonotic/
566 elif [ x"$1" = x"-h" ]; then
568 base=http://git.xonotic.org/xonotic/
569 elif [ x"$1" = x"-l" ]; then
577 msg "Invalid location!"
578 msg "Possible locations for the -l option:"
579 msg " nl (Netherlands, run by merlijn)"
580 msg " de (Germany, run by divVerent)"
581 msg " us (United States of America, run by detrate)"
582 msg " best (find automatically)"
583 msg " default (currently nl)"
597 if [ x"`git config xonotic.all.mirrorselection 2>/dev/null || true`" != x"done" ]; then
604 # if we fetched via ssh://, switch to git:// for fetching and keep using ssh:// for pushing
608 base=git://git.xonotic.org/xonotic/
611 newbase=`$ECHO "$base" | sed "s,://\(.*\.\)\?git.xonotic.org/,:// .git.xonotic.org/,"`
614 if location=`bestmirror $newbase"xonotic.git" de us nl:'*6/5'`; then # 20% malus to the NL server to not overload it too much
615 git config xonotic.all.mirrorselection done
632 *://*.git.xonotic.org/*)
633 location=${base%%.git.xonotic.org/*}
634 location=${location##*://}
642 if [ -n "$location" ]; then
643 base=`$ECHO "$base" | sed "s,://\(.*\.\)\?git.xonotic.org/,://$location.git.xonotic.org/,"`
644 pushbase=`$ECHO "$pushbase" | sed "s,://\(.*\.\)\?git.xonotic.org/,://$location.git.xonotic.org/,"`
646 base=`$ECHO "$base" | sed "s,://\(.*\.\)\?git.xonotic.org/,://git.xonotic.org/,"`
647 pushbase=`$ECHO "$pushbase" | sed "s,://\(.*\.\)\?git.xonotic.org/,://git.xonotic.org/,"`
651 pushurl=`repopushurl .`
652 fix_git_config "$url" "$pushurl"
654 if $allow_pull || $fix_config; then
659 pushurl=`repopushurl "$d"`
660 branch=`repobranch "$d"`
661 if [ -d "$d0/$d" ]; then
662 # if we have .no file, skip
663 if [ -f "$d0/$d.no" ]; then
664 msg "Repository $d disabled by a .no file, delete $d.no to enable; thus, not updated"
668 enter "$d0/$d" verbose
669 r=`git symbolic-ref HEAD`
671 if git config branch.$r.remote >/dev/null 2>&1; then
672 if ! verbose git pull; then
673 fix_upstream_rebase_mergefail || true
674 check_mergeconflict "$d"
675 $ECHO "Pulling failed. Press ENTER to continue, or Ctrl-C to abort."
678 fix_upstream_rebase_mergeok || true
683 checkself "$cmd" "$@"
685 verbose git remote prune origin
689 verbose git clone "$url" "$d0/$d"
690 enter "$d0/$d" verbose
691 fix_git_config "$url" "$pushurl"
692 if [ "$branch" != "master" ]; then
693 verbose git checkout --track -b "$branch" origin/"$branch"
700 misc/tools/xonotic-map-compiler-autobuild download
704 if [ x"$1" = x"-f" ]; then
710 if [ -z "$branch" ]; then
713 branch=${remote#origin/}
722 if [ -n "$checkoutflags" ]; then
723 set -- -f "$@" # to make checkself work again
727 enter "$d0/$d" verbose
729 if [ -n "$b" ] && git rev-parse "refs/heads/$b" >/dev/null 2>&1; then
731 verbose git checkout $checkoutflags "$b"
732 elif [ -n "$b" ] && git rev-parse "refs/remotes/$remote/$b" >/dev/null 2>&1; then
734 verbose git checkout $checkoutflags --track -b "$b" "$remote/$b"
737 if git rev-parse "refs/heads/$b" >/dev/null 2>&1; then
739 verbose git checkout $checkoutflags "$b"
740 elif git rev-parse "refs/remotes/$remote/$b" >/dev/null 2>&1; then
742 verbose git checkout $checkoutflags --track -b "$b" "$remote/$b"
744 $ECHO "WTF? Not even branch $b doesn't exist in $d"
749 checkself "$cmd" "$@"
753 $ECHO "The requested branch was not found in any repository."
761 if [ -z "$branch" ]; then
765 if [ -z "$branch" ]; then
768 r=`git symbolic-ref HEAD`
775 dv=`visible_repo_name "$d"`
776 enter "$d0/$d" verbose
777 if git rev-parse "refs/heads/$branch" >/dev/null 2>&1; then
778 $ECHO "Already having this branch in $dv."
780 if yesno "Branch in $dv?"; then
781 if [ -n "$srcbranch" ]; then
784 b=origin/"`repobranch "$d"`"
785 verbose git fetch origin || true
787 # TODO do this without pushing
788 verbose git checkout -b "$branch" "$b"
789 verbose git config "branch.$branch.remote" "$remote"
790 verbose git config "branch.$branch.merge" "refs/heads/$branch"
800 cd "$d0/$d" # am in a pipe, shouldn't use enter
801 git branch -r -v -v | cut -c 3- | sed "s/^(no branch)/(no_branch)/" | sed "s,^,$d ,"
806 while read -r d BRANCH REV TEXT; do
807 if [ x"$BRANCH" = x"`repobranch "$d"`" ]; then
810 if [ x"$REV" = x"->" ]; then
813 BRANCH=${BRANCH#remotes/}
814 ID=`$ECHO "$BRANCH" | tr -c "A-Za-z0-9." "_"`
815 branches_list="$branches_list $BRANCH" # TEH SORT MAKEZ IT UNIEQ
816 eval "r=\$branches_repos_$ID"
818 eval "branches_repos_$ID=\$r"
820 $ECHO -n "$branches_list" | xargs -n 1 $ECHO | sort -u | while IFS= read -r BRANCH; do
821 ID=`$ECHO "$BRANCH" | tr -c "A-Za-z0-9." "_"`
822 eval "r=\$branches_repos_$ID"
823 printf "%-60s %s\n" "$BRANCH" "$r"
830 dv=`visible_repo_name "$d"`
831 enter "$d0/$d" verbose
832 r=`git symbolic-ref HEAD`
834 if git log HEAD..origin/"`repobranch "$d"`" | grep .; then
835 # we have uncommitted changes
836 if yesno "Could merge from \"`repobranch "$d"`\" into \"$r\" in $dv. Do it?"; then
837 if ! verbose git merge origin/"`repobranch "$d"`"; then
838 check_mergeconflict "$d"
839 exit 1 # this should ALWAYS be fatal
849 dv=`visible_repo_name "$d"`
850 enter "$d0/$d" verbose
851 r=`git symbolic-ref HEAD`
853 diffdata=`git diff --color HEAD`
854 if [ -n "$diffdata" ]; then
855 # we have uncommitted changes
856 if yesno "Uncommitted changes in \"$r\" in $dv. Commit?" '$ECHO "$diffdata" | less -r'; then
857 verbose git commit -a
860 rem=`git config "branch.$r.remote" || $ECHO origin`
861 bra=`git config "branch.$r.merge" || $ECHO "$r"`
862 upstream="$rem/${bra#refs/heads/}"
863 if ! git rev-parse "$upstream" >/dev/null 2>&1; then
864 upstream="origin/`repobranch "$d"`"
866 logdata=`git log --color "$upstream".."$r"`
867 if [ -n "$logdata" ]; then
868 if yesno "Push \"$r\" in $dv?" '$ECHO "$logdata" | less -r'; then
869 verbose git push "$rem" HEAD
872 if [ x"$submit" = x"-s" ]; then
875 verbose git push "$rem" HEAD:"${bra%%/*}/finished/${bra#*/}"
889 snowleopardhack=false
890 if [ -z "$CC" ]; then
891 export CC="gcc -DSUPPORTIPV6"
916 case "`$CC -dumpversion`" in
917 [5-9]*|[1-9][0-9]*|4.[3-9]*|4.[1-9][0-9]*)
919 # -march=native is broken < 4.3
920 export CC="$CC -mtune=native -march=native"
923 if [ -n "$WE_HATE_OUR_USERS" ]; then
924 export CC="$CC -fno-common"
933 if [ -n "$WE_HATE_OUR_USERS" ]; then
934 TARGETS="sv-$debug cl-$debug"
935 elif [ x"`uname`" = x"Darwin" ]; then
938 TARGETS="sv-$debug cl-$debug sdl-$debug"
941 # AGL cannot be compiled on systems with a kernel > 10.x (Snow Leopard)
943 TARGETS="sv-$debug sdl-$debug"
946 export CC="$CC -fno-reorder-blocks -I$PWD/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks/SDL.framework/Headers -F$PWD/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks"
948 TARGETS="sv-$debug cl-$debug sdl-$debug"
950 if [ $# -gt 0 ] && [ x"$1" = x"" ]; then
951 # if we give the command make the arg "", it will surely fail (invalid filename),
952 # so better handle it as an empty client option
955 elif [ -n "$1" ]; then
957 TARGETS_SAVE=$TARGETS
962 TARGETS="$TARGETS sdl-debug"
965 TARGETS="$TARGETS cl-debug"
966 if $snowleopardhack; then
967 export CC="$CC -arch i386"
971 TARGETS="$TARGETS cl-debug"
974 TARGETS="$TARGETS sv-debug"
977 BAD_TARGETS="$BAD_TARGETS $X"
981 if [ -n "$TARGETS" ]; then # at least a valid client
983 else # no valid client, let's assume this option is not meant to be a client then
984 TARGETS=$TARGETS_SAVE
988 if [ -z "$MAKEFLAGS" ]; then
989 if [ -f /proc/cpuinfo ]; then
990 ncpus=$((`grep -c '^processor :' /proc/cpuinfo`+0))
991 if [ $ncpus -gt 1 ]; then
995 if [ -n "$WE_HATE_OUR_USERS" ]; then
996 MAKEFLAGS="$MAKEFLAGS DP_MAKE_TARGET=mingw LIB_JPEG= CFLAGS_LIBJPEG="
1000 verbose cd "$d0/d0_blind_id"
1001 if ! $compiled0; then
1002 # compilation of crypto library failed
1003 # use binaries then, if we can...
1005 if [ -n "$WE_HATE_OUR_USERS" ]; then
1006 verbose cp "$d0/misc/buildfiles/win32/libd0_blind_id"-* .libs/
1007 verbose cp "$d0/misc/buildfiles/win32/libd0_rijndael"-* .libs/
1008 verbose cp "$d0/misc/buildfiles/win32/libgmp"-* .libs/
1014 #verbose cp "$d0/misc/builddeps/dp.linux64/lib/libd0_blind_id".* .libs/
1015 #verbose cp "$d0/misc/builddeps/dp.linux64/lib/libd0_rijndael".* .libs/
1016 #verbose cp "$d0/misc/builddeps/dp.linux64/lib/libgmp".* .libs/
1017 MAKEFLAGS="$MAKEFLAGS DP_CRYPTO_STATIC_LIBDIR=../misc/builddeps/dp.linux64/lib/ DP_CRYPTO_RIJNDAEL_STATIC_LIBDIR=../misc/builddeps/dp.linux64/lib/"
1020 #verbose cp "$d0/misc/builddeps/dp.linux32/lib/libd0_blind_id".* .libs/
1021 #verbose cp "$d0/misc/builddeps/dp.linux32/lib/libd0_rijndael".* .libs/
1022 #verbose cp "$d0/misc/builddeps/dp.linux32/lib/libgmp".* .libs/
1023 MAKEFLAGS="$MAKEFLAGS DP_CRYPTO_STATIC_LIBDIR=../misc/builddeps/dp.linux32/lib/ DP_CRYPTO_RIJNDAEL_STATIC_LIBDIR=../misc/builddeps/dp.linux32/lib/"
1031 verbose cp "$d0/misc/buildfiles/osx/Xonotic.app/Contents/MacOS/libd0_blind_id".* .libs/
1032 verbose cp "$d0/misc/buildfiles/osx/Xonotic.app/Contents/MacOS/libd0_rijndael".* .libs/
1042 if [ -f Makefile ]; then
1043 verbose make $MAKEFLAGS distclean
1046 if ! [ -f Makefile ]; then
1047 verbose sh autogen.sh
1050 verbose make $MAKEFLAGS
1053 verbose cd "$d0/fteqcc"
1055 verbose make $MAKEFLAGS clean
1057 verbose make $MAKEFLAGS
1059 verbose cd "$d0/data/xonotic-data.pk3dir"
1061 verbose make FTEQCC="../../../../fteqcc/fteqcc.bin" "$@" $MAKEFLAGS clean
1063 verbose make FTEQCC="../../../../fteqcc/fteqcc.bin" "$@" $MAKEFLAGS
1064 # 4 levels up: data, xonotic-data, qcsrc, server
1066 verbose cd "$d0/darkplaces"
1067 if [ x"$BAD_TARGETS" = x" " ]; then
1068 $ECHO "Warning: invalid empty client, default clients will be used."
1071 verbose make $MAKEFLAGS clean
1073 for T in $TARGETS; do
1074 verbose make $MAKEFLAGS STRIP=: "$@" "$T"
1076 for T in $BAD_TARGETS; do
1077 $ECHO "Warning: discarded invalid client $T."
1080 verbose "$SELF" update-maps
1083 if [ -n "$WE_HATE_OUR_USERS" ]; then
1085 export PATH="$d0/misc/buildfiles/win32:$d0/d0_blind_id/.libs:$PATH"
1086 elif [ x"`uname`" = x"Darwin" ]; then
1087 export DYLD_LIBRARY_PATH="$d0/misc/buildfiles/osx/Xonotic.app/Contents/MacOS:$d0/d0_blind_id/.libs"
1088 export DYLD_FRAMEWORK_PATH="$d0/misc/buildfiles/osx/Xonotic.app/Contents/Frameworks"
1091 export LD_LIBRARY_PATH="$d0/d0_blind_id/.libs"
1095 sdl|glx|agl|dedicated)
1104 if ! [ -x "darkplaces/darkplaces$client" ]; then
1105 if [ -x "darkplaces/darkplaces$client.exe" ]; then
1108 $ECHO "Client darkplaces/darkplaces$client not found, aborting"
1112 set -- "darkplaces/darkplaces$client" -xonotic "$@"
1114 # if pulseaudio is running: USE IT
1115 if [ -z "$SDL_AUDIODRIVER" ] && ! [ -n "$WE_HATE_OUR_USERS" ] && ! [ x"`uname`" = x"Darwin" ]; then
1116 if ps -C pulseaudio >/dev/null; then
1117 if ldd /usr/lib/libSDL.so 2>/dev/null | grep pulse >/dev/null; then
1118 export SDL_AUDIODRIVER=pulse
1125 if [ x"$USE_GDB" = x"yes" ]; then
1126 set -- gdb --args "$@"
1127 elif [ x"$USE_GDB" != x"no" ] && which gdb >/dev/null 2>&1; then
1128 set -- gdb --batch -x savecore.gdb --args "$@"
1129 elif which catchsegv >/dev/null 2>&1; then
1130 set -- catchsegv "$@"
1134 if [ -f xonotic.core ]; then
1135 if yesno "The program has CRASHED. Do you want to examine the core dump?"; then
1136 gdb "$binary" xonotic.core
1137 #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
1138 # tar cvzf xonotic.core.tar.gz xonotic.core darkplaces/*.c darkplaces/*.h
1140 # rm -f xonotic.core.tar.gz
1142 $ECHO "The core dump can be examined later by"
1143 $ECHO " gdb $binary xonotic.core"
1150 if [ x"$1" = x"-k" ]; then
1155 if verbose cd "$d0/$d"; then
1156 if $keep_going; then
1157 verbose "$@" || true
1167 patchdir=`mktemp -d -t save-patches.XXXXXX`
1169 enter "$d0/$d" verbose
1170 git branch -v -v | cut -c 3- | {
1172 while read -r BRANCH REV UPSTREAM TEXT; do
1175 UPSTREAM=${UPSTREAM#\[}
1176 UPSTREAM=${UPSTREAM%\]}
1177 UPSTREAM=${UPSTREAM%:*}
1181 UPSTREAM=origin/"`repobranch "$d"`"
1185 if [ x"$REV" = x"->" ]; then
1188 if git format-patch -o "$patchdir/$i" "$UPSTREAM".."$BRANCH"; then
1189 $ECHO "$d" > "$patchdir/$i/info.txt"
1190 $ECHO "$BRANCH" >> "$patchdir/$i/info.txt"
1191 $ECHO "$UPSTREAM" >> "$patchdir/$i/info.txt"
1192 $ECHO "$TRACK" >> "$patchdir/$i/info.txt"
1195 rm -rf "$patchdir/$i"
1200 ( cd "$patchdir" && tar cvzf - . ) > "$outfile"
1205 patchdir=`mktemp -d -t restore-patches.XXXXXX`
1206 ( cd "$patchdir" && tar xvzf - ) < "$infile"
1208 for P in "$patchdir"/*/info.txt; do
1213 read -r UPSTREAM <&3
1215 verbose git checkout HEAD^0
1216 verbose git branch -D "$BRANCH"
1217 if [ x"$TRACK" = x"true" ]; then
1218 verbose git checkout --track -b "$BRANCH" "$UPSTREAM"
1220 verbose git branch -b "$BRANCH" "$UPSTREAM"
1239 report=$report"$*$LF"
1244 report=$report" $*$LF"
1249 o=`"$@" | sed 's/^/ /' || true`
1255 # sorry, fteqcc repo is managed manually
1259 enter "$d0/$d" verbose
1260 base="`repobranch "$d"`"
1262 for ref in `git for-each-ref --format='%(refname)' refs/remotes/origin/`; do
1263 case "${ref#refs/remotes/origin/}" in
1276 if [ -n "$branch" ]; then
1277 if [ x"$branch" != x"${ref#refs/remotes/origin/}" ]; then
1286 l0=`git rev-list "$base".."$ref" | wc -l`
1287 l1=`git rev-list master.."$ref" | wc -l`
1288 if [ $l0 -gt $l1 ]; then
1295 reportecho " Branch $ref:"
1296 note=`GIT_NOTES_REF=refs/notes/admin-merge git notes show "$ref" 2>/dev/null || true`
1297 logdata=`git log --color "$realbase".."$ref"`
1298 if [ -z "$logdata" ]; then
1299 reportecho4 "--> not merging, no changes vs master"
1300 if yesno "Branch \"$ref\" probably should get deleted. Do it?" ''; then
1301 git push origin :"${ref#refs/remotes/origin/}"
1302 reportecho4 "--> branch deleted"
1305 diffdata=`git diff --color --find-copies-harder --ignore-space-change "$realbase"..."$ref"`
1306 if [ -z "$diffdata" ]; then
1307 reportecho4 "--> not merging, no changes vs master, branch contains redundant history"
1308 if yesno "Branch \"$ref\" probably should get deleted. Do it?" '{ $ECHO "$logdata"; } | less -r'; then
1309 git push origin :"${ref#refs/remotes/origin/}"
1310 reportecho4 "--> branch deleted"
1312 elif $only_delete; then
1313 reportecho4 "--> skipped in delete-only run"
1314 elif [ -z "$branch" ] && [ -n "$note" ]; then
1315 reportdo4 $ECHO "$note"
1316 reportecho4 "--> not merging, already had this one rejected before"
1317 elif yesno "Branch \"$ref\" may want to get merged. Do it?" '{ $ECHO "$logdata"; $ECHO "$diffdata"; } | less -r'; then
1318 git checkout "$realbase"
1319 org=`git rev-parse HEAD`
1320 if ! git merge --no-ff "$ref" 2>&1 | tee "$t" && ! { git ls-files -u | grep ' 1 ' >/dev/null; }; then
1321 git reset --hard "$org"
1322 GIT_NOTES_REF=refs/notes/admin-merge git notes edit -m "Merge failed:$LF`cat "$t"`" "$ref"
1324 reportecho4 "--> merge failed"
1325 elif ! "$SELF" compile 2>&1 | tee "$t"; then
1326 git reset --hard "$org"
1327 GIT_NOTES_REF=refs/notes/admin-merge git notes edit -m "Compile failed:$LF`cat "$t"`" "$ref"
1329 reportecho4 "--> compile failed"
1330 elif ! yesno "Still merge \"$ref\" into `git symbolic-ref HEAD` of $d? Maybe you want to test first."; then
1331 git reset --hard "$org"
1332 GIT_NOTES_REF=refs/notes/admin-merge git notes edit "$ref"
1333 note=`GIT_NOTES_REF=refs/notes/admin-merge git notes show "$ref" 2>/dev/null || true`
1334 if [ x"$note" = x"del" ]; then
1335 git push origin :"${ref#refs/remotes/origin/}"
1336 reportecho4 "--> test failed, branch deleted"
1337 elif [ -n "$note" ]; then
1338 reportdo4 $ECHO "$note"
1339 reportecho4 "--> test failed"
1341 reportecho4 "--> test failed, postponed"
1344 # apply crlf, or other cleanup filters (non-behavioural changes)
1346 find . -type f -exec touch {} \;
1347 git commit -a --amend -C HEAD || true # don't fail if nothing to commit
1350 case ",`repoflags "$d"`," in
1352 # we do quite a mess here... luckily we know $org
1353 git fetch # svn needs to be current
1354 git rebase -i --onto origin/master "$org"
1355 git svn dcommit --add-author-from
1356 git reset --hard "$org"
1359 git push origin HEAD
1362 reportecho4 "--> MERGED"
1363 if yesno "Delete original branch \"$ref\"?"; then
1364 git push origin :"${ref#refs/remotes/origin/}"
1365 reportecho4 "--> branch deleted"
1369 GIT_NOTES_REF=refs/notes/admin-merge git notes edit "$ref"
1370 note=`GIT_NOTES_REF=refs/notes/admin-merge git notes show "$ref" 2>/dev/null || true`
1371 if [ x"$note" = x"del" ]; then
1372 git push origin :"${ref#refs/remotes/origin/}"
1373 reportecho4 "--> branch deleted"
1374 elif [ -n "$note" ]; then
1375 reportdo4 $ECHO "$note"
1376 reportecho4 "--> rejected"
1378 reportecho4 "--> postponed"
1387 $ECHO "$report" | ssh nexuiz@rm.endoftheinternet.org cat '>>' public_html/xonotic-merge-notes.txt
1399 # ./all clean [-m] [-f | -fu | -fU] [-r] [-D]
1400 # ./all clean --reclone
1403 if [ x"$X" = x"--reclone" ]; then
1410 elif [ x"$X" = x"-f" ]; then
1412 elif [ x"$X" = x"-u" ]; then
1414 elif [ x"$X" = x"-U" ]; then
1417 elif [ x"$X" = x"-fu" ]; then
1420 elif [ x"$X" = x"-fU" ]; then
1424 elif [ x"$X" = x"-m" ]; then
1426 elif [ x"$X" = x"-r" ]; then
1428 elif [ x"$X" = x"-D" ]; then
1430 elif $ECHO "$X" | grep '^-FFFF*UUUU*$' >/dev/null; then
1433 msg " ,--'-\\P/\`\\ FFFFFFF"
1434 msg " __/_ B/,-.\\ FFFFFFF"
1435 msg " / _\\ (// O\\\\ FFFFFF"
1436 msg "| (O \`) _\\._ _)\\ FFFUU"
1437 msg "| |___/.^d0~~\"\\ \\ UUUU"
1438 msg "| |\`~' \\ | UUUU"
1439 msg "| | __,C>|| UUUU"
1440 msg "\\ /_ ,-/,-' | UUUU"
1441 msg " \\\\_ \\_>~' / UUUU-"
1444 msg "Unknown arg: $X"
1453 if $gotoupstream; then
1455 msg "Must also use -f (delete local changes) when using -u"
1458 if $gotomaster; then
1459 if $fetchupstream; then
1460 verbose git fetch origin
1461 verbose git remote prune origin
1463 verbose git checkout -f "`repobranch "$d"`"
1464 verbose git reset --hard origin/"`repobranch "$d"`"
1466 r=`git symbolic-ref HEAD`
1468 rem=`git config "branch.$r.remote" || $ECHO origin`
1469 bra=`git config "branch.$r.merge" || $ECHO "$r"`
1470 upstream="$rem/${bra#refs/heads/}"
1471 if $fetchupstream; then
1472 verbose git fetch "$rem"
1473 verbose git remote prune "$rem"
1475 if ! git rev-parse "$upstream" >/dev/null 2>&1; then
1476 upstream="origin/`repobranch "$d"`"
1478 verbose git reset --hard "$upstream"
1480 elif $gotomaster; then
1482 verbose git checkout -f "`repobranch "$d"`"
1483 verbose git reset --hard
1485 verbose git checkout "`repobranch "$d"`"
1488 verbose git reset --hard
1490 if $rmuntracked; then
1493 verbose git clean -df || true
1496 verbose git clean -xdf || true
1500 if $killbranches; then
1501 git for-each-ref --format='%(refname)' refs/heads/ | while IFS= read -r B; do
1502 if [ x"$B" != x"`git symbolic-ref HEAD`" ]; then
1503 verbose git branch -D "${B#refs/heads/}"
1506 git rev-parse refs/heads/master >/dev/null 2>&1 || verbose git branch --track master origin/master || true
1507 git rev-parse "refs/heads/`repobranch "$d"`" >/dev/null 2>&1 || verbose git branch --track "`repobranch "$d"`" origin/"`repobranch "$d"`" || true
1509 checkself "$cmd" "$@"
1513 # release building goes here
1515 #"$SELF" each git clean -fxd
1516 case "$RELEASETYPE" in
1518 $ECHO >&2 -n "$ESC[2J$ESC[H"
1525 msg " +---------------------------------------------------------.---+"
1527 msg " +---------------------------------------------------------^---+"
1529 msg " | / \ This is the official release build system. |"
1530 msg " | | | If you are not a member of the Xonotic Core Team, |"
1531 msg " | | STOP | you are not supposed to use this script and should |"
1532 msg " | | | instead use ./all compile to compile the engine |"
1533 msg " | \____/ and game code. |"
1535 msg " | [ I understand ] |"
1536 msg " +-------------------------------------------------------------+"
1538 # A LOT of build infrastructure is required:
1541 # - .ssh/config must be configured so the following
1542 # host names are reachable and have a compile
1543 # infrastructure set up:
1544 # - xonotic-build-linux32 (with gcc on x86)
1545 # - xonotic-build-linux64 (with gcc on x86_64)
1546 # - xonotic-build-win32 (with i586-mingw32msvc-g++)
1547 # - xonotic-build-win64 (with amd64-mingw32msvc-g++
1548 # and x86_64-w64-mingw32-g++)
1549 # - xonotic-build-osx (with Xcode and SDL.framework)
1550 # - AMD Compressonator installed in WINE
1551 # - ResEdit installed in WINE
1552 # - a lot of other requirements you will figure out
1553 # while reading the error messages
1554 # - environment variable RELEASETYPE set
1555 # - optionally, environment variable RELEASEDATE set
1560 msg "Building a FINISHED RELEASE"
1563 msg "Building a $RELEASETYPE"
1566 verbose rm -rf Xonotic Xonotic*.zip
1567 verbose mkdir -p Xonotic
1568 if [ -n "$RELEASEDATE" ]; then
1569 verbose $ECHO "$RELEASEDATE" > Xonotic/stamp.txt
1571 verbose date +%Y%m%d > Xonotic/stamp.txt
1573 verbose git archive --format=tar HEAD -- Docs misc server xonotic-linux-glx.sh xonotic-linux-sdl.sh misc/buildfiles key_0.d0pk | {
1575 verbose mkdir data fteqcc source source/darkplaces source/fteqcc source/d0_blind_id mapping
1577 verbose rm -rf misc/builddeps
1578 verbose mv misc/buildfiles/win32/* . || true
1579 verbose mv misc/buildfiles/win64 bin64 || true
1580 verbose mv misc/buildfiles/osx/* . || true
1581 verbose rm -rf misc/buildfiles
1582 verbose rm -rf misc/pki
1585 verbose cd darkplaces
1586 verbose git archive --format=tar HEAD
1588 verbose cd Xonotic/source/darkplaces
1593 verbose git archive --format=tar HEAD
1595 verbose cd Xonotic/source/fteqcc
1599 verbose cd data/xonotic-data.pk3dir
1600 verbose git archive --format=tar HEAD -- qcsrc Makefile
1602 verbose cd Xonotic/source
1606 verbose cd d0_blind_id
1607 verbose git archive --format=tar HEAD
1609 verbose cd Xonotic/source/d0_blind_id
1611 verbose sh autogen.sh
1613 rm -f Xonotic/key_15.d0pk
1615 verbose cd Xonotic/mapping
1616 verbose wget http://www.icculus.org/netradiant/files/netradiant-1.5.0-20110223.tar.bz2
1617 verbose wget http://www.icculus.org/netradiant/files/netradiant-1.5.0-20110223-win32-7z.exe
1618 for X in *-7z.exe; do
1622 # TODO possibly include other tools?
1625 release-compile-run)
1634 if [ -n "$targetfiles" ]; then
1635 case " $HOSTS_THAT_ARE_DISABLED " in
1640 case " $HOSTS_THAT_ARE_MYSELF " in
1642 verbose rsync --delete -zLvaSHP "$srcdir"/ "$buildpath/"
1643 verbose rsync --delete -zLvaSHP "$depsdir"/ "$buildpath.deps/"
1644 verbose ln -snf "$buildpath.deps" "$buildpath/.deps"
1645 verbose eval make -C "$buildpath" clean $maketargets $makeflags
1646 for f in $targetfiles; do
1647 verbose mv "$buildpath/${f%:*}" "${f##*:}" || true
1651 verbose rsync --delete -zLvaSHP "$srcdir"/ "$host:$buildpath/"
1652 verbose rsync --delete -zLvaSHP "$depsdir"/ "$host:$buildpath.deps/"
1653 verbose ssh "$host" "[ -f /etc/profile ] && . /etc/profile; [ -f ~/.profile ] && . ~/.profile; export LC_ALL=C; ln -snf $buildpath.deps $buildpath/.deps && cd $buildpath && nice -`nice` make clean $maketargets $makeflags"
1654 for f in $targetfiles; do
1655 verbose rsync -zvaSHP "$host:$buildpath/${f%:*}" "${f##*:}" || true
1659 # now rebrand the binaries...
1660 for f in $targetfiles; do
1661 #verbose "$d0/misc/tools/rebrand-darkplaces-engine.sh" "${XONOTIC_BRAND:-$d0/misc/tools/xonotic.brand}" "${f##*:}" || true
1663 Xonotic/xonotic*.exe)
1664 verbose "$d0/misc/tools/change-icon-of-exe.sh" "$d0/misc/logos/icons_ico/xonotic.ico" "${f##*:}"
1673 fteqcc_maketargets=$3
1675 darkplaces_maketargets=$5
1677 host=xonotic-build-$suffix
1678 verbose "$SELF" release-compile-run "$host" /tmp/fteqcc.build."$suffix" "$fteqcc_maketargets" "$makeflags" "Xonotic/source/fteqcc" "$d0/misc/builddeps/dp.$suffix" "$fteqcc_files"
1679 verbose "$SELF" release-compile-run "$host" /tmp/Darkplaces.build."$suffix" "$darkplaces_maketargets" "$makeflags" "Xonotic/source/darkplaces" "$d0/misc/builddeps/dp.$suffix" "$darkplaces_files"
1681 release-engine-win32)
1682 verbose "$SELF" release-compile win32 \
1683 'STRIP=: DP_MAKE_TARGET=mingw CC="i586-mingw32msvc-gcc -march=i686 -g1 -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' \
1684 win 'fteqcc.exe:Xonotic/fteqcc/fteqcc.exe' \
1686 verbose "$SELF" release-compile win32 \
1687 'STRIP=: DP_MAKE_TARGET=mingw CC="i586-mingw32msvc-g++ -g1 -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' \
1689 release 'darkplaces.exe:Xonotic/xonotic.exe darkplaces-sdl.exe:Xonotic/xonotic-sdl.exe darkplaces-dedicated.exe:Xonotic/xonotic-dedicated.exe'
1691 release-engine-win64)
1692 verbose "$SELF" release-compile win64 \
1693 'STRIP=: DP_MAKE_TARGET=mingw CC="amd64-mingw32msvc-gcc -g1 -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' \
1694 win 'fteqcc.exe:Xonotic/fteqcc/fteqcc-x64.exe' \
1695 'sv-release sdl-release' 'darkplaces-sdl.exe:Xonotic/xonotic-x64-sdl.exe darkplaces-dedicated.exe:Xonotic/xonotic-x64-dedicated.exe'
1696 verbose "$SELF" release-compile win64 \
1697 'STRIP=: DP_MAKE_TARGET=mingw CC="x86_64-w64-mingw32-g++ -g1 -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' \
1699 cl-release 'darkplaces.exe:Xonotic/xonotic-x64.exe'
1702 # gcc on OSX is buggy, needs -fno-reorder-blocks for a release build to succeed
1703 verbose "$SELF" release-compile osx \
1704 'STRIP=: CC="gcc -g1 -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"' \
1705 all 'fteqcc.bin:Xonotic/fteqcc/fteqcc.osx' \
1706 'sv-release sdl-release' 'darkplaces-sdl:Xonotic/Xonotic.app/Contents/MacOS/xonotic-osx-sdl-bin darkplaces-dedicated:Xonotic/xonotic-osx-dedicated'
1708 release-engine-linux32)
1709 verbose "$SELF" release-compile linux32 \
1710 'STRIP=: CC="gcc -m32 -march=i686 -g1 -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' \
1711 all 'fteqcc.bin:Xonotic/fteqcc/fteqcc.linux32' \
1712 release 'darkplaces-glx:Xonotic/xonotic-linux32-glx darkplaces-sdl:Xonotic/xonotic-linux32-sdl darkplaces-dedicated:Xonotic/xonotic-linux32-dedicated'
1714 release-engine-linux64)
1715 verbose "$SELF" release-compile linux64 \
1716 'STRIP=: CC="gcc -m64 -g1 -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' \
1717 all 'fteqcc.bin:Xonotic/fteqcc/fteqcc.linux64' \
1718 release 'darkplaces-glx:Xonotic/xonotic-linux64-glx darkplaces-sdl:Xonotic/xonotic-linux64-sdl darkplaces-dedicated:Xonotic/xonotic-linux64-dedicated'
1721 verbose "$SELF" release-engine-linux32 &
1722 verbose "$SELF" release-engine-linux64 &
1723 verbose "$SELF" release-engine-win32 &
1724 verbose "$SELF" release-engine-win64 &
1725 verbose "$SELF" release-engine-osx &
1734 verbose "$SELF" update-maps
1737 verbose make -C Xonotic/source FTEQCC="../../../fteqcc/fteqcc.linux32" XON_BUILDSYSTEM=1 clean all
1738 verbose rm -f Xonotic/source/qcsrc/*/fteqcc.log
1740 release-buildpk3-transform-raw)
1743 release-buildpk3-transform-normal)
1746 # texture: convert to jpeg and dds
1747 verbose export do_jpeg=true
1748 verbose export jpeg_qual_rgb=97
1749 verbose export jpeg_qual_a=99
1750 verbose export do_dds=false
1751 verbose export do_ogg=false
1752 verbose export del_src=true
1753 find . -type f -print0 | verbose xargs -0 "$d0"/misc/tools/cached-converter.sh
1755 release-buildpk3-transform-normaldds)
1758 # texture: convert to jpeg and dds
1759 # music: reduce bitrate
1760 verbose export do_jpeg=false
1761 verbose export do_jpeg_if_not_dds=true
1762 verbose export jpeg_qual_rgb=95
1763 verbose export jpeg_qual_a=99
1764 verbose export do_dds=true
1765 verbose export dds_flags=
1766 verbose export do_ogg=true
1767 verbose export del_src=true
1768 find . -type f -print0 | verbose xargs -0 "$d0"/misc/tools/cached-converter.sh
1770 release-buildpk3-transform-low)
1773 # texture: convert to jpeg and dds
1774 # music: reduce bitrate
1775 verbose export do_jpeg=true
1776 verbose export jpeg_qual_rgb=80
1777 verbose export jpeg_qual_a=97
1778 verbose export do_dds=false
1779 verbose export do_ogg=true
1780 verbose export ogg_qual=1
1781 verbose export del_src=true
1782 find . -type f -print0 | verbose xargs -0 "$d0"/misc/tools/cached-converter.sh
1784 release-buildpk3-transform-lowdds)
1787 # texture: convert to jpeg and dds
1788 # music: reduce bitrate
1789 verbose export do_jpeg=false
1790 verbose export do_jpeg_if_not_dds=true
1791 verbose export jpeg_qual_rgb=80
1792 verbose export jpeg_qual_a=99
1793 verbose export do_dds=true
1794 verbose export dds_flags=
1795 verbose export do_ogg=true
1796 verbose export ogg_qual=1
1797 verbose export del_src=true
1798 find . -type f -print0 | verbose xargs -0 "$d0"/misc/tools/cached-converter.sh
1811 verbose rm -rf Xonotic/temp
1812 verbose mkdir -p Xonotic/temp
1815 verbose git archive --format=tar HEAD
1817 verbose cd Xonotic/temp
1820 verbose cd Xonotic/temp
1821 if [ x"$src" = x"data/xonotic-data.pk3dir" ]; then
1822 verbose cp ../source/progs.dat .
1823 verbose cp ../source/csprogs.dat .
1824 verbose cp ../source/menu.dat .
1825 verbose rm -rf qcsrc
1826 gv=`grep "^gameversion " "defaultXonotic.cfg" | awk '{ print $2 }'`
1827 major=$(($gv / 10000))
1828 minor=$((($gv / 100) - ($major * 100)))
1829 patch=$(($gv - ($major * 10000) - ($minor * 100)))
1830 versionstr="$major.$minor.$patch"
1831 case "$RELEASETYPE" in
1835 versionstr="$versionstr$RELEASETYPE"
1839 s/^set g_xonoticversion [^ ]* /set g_xonoticversion $versionstr /;
1840 s/^gameversion_min [0-9]*/gameversion_min $(( ($gv / 100) * 100 - 100 ))/;
1841 s/^gameversion_max [0-9]*/gameversion_max $(( ($gv / 100) * 100 + 199 ))/;
1842 " defaultXonotic.cfg
1843 case "$RELEASETYPE" in
1845 echo "" >> defaultXonotic.cfg
1846 echo "// nicer menu" >> defaultXonotic.cfg
1847 echo "set menu_watermark \"\"" >> defaultXonotic.cfg
1851 verbose cd gfx/menu/luminos
1852 verbose cp "$d0"/mediasource/gfx/menu/luminos_versionbuilder/background_l2.svg .
1853 verbose "$d0"/mediasource/gfx/menu/luminos_versionbuilder/versionbuilder "$versionstr"
1854 verbose rm background_l2.svg
1857 if [ x"$src" = x"data/xonotic-maps.pk3dir" ]; then
1858 for X in ../../data/*-????????????????????????????????????????-????????????????????????????????????????.pk3; do
1859 if [ -f "$X" ]; then
1861 verbose rm -f maps/*.log maps/*.irc maps/*.lin
1865 verbose export git_src_repo="$d0/$src" # skip hash-object
1866 verbose "$SELF" release-buildpk3-transform-$transform "Xonotic/temp"
1867 verbose mkzipr "../../$dst" *
1869 verbose rm -rf Xonotic/temp
1872 stamp=`cat Xonotic/stamp.txt`
1878 dst="data/xonotic-$stamp-${dst#data/xonotic-}"
1884 while [ "$#" -gt 1 ]; do
1885 verbose "$SELF" release-buildpk3 "$src" "Xonotic/$dst$2.pk3" "$1"
1891 verbose "$SELF" release-buildpk3s data/font-nimbussansl.pk3dir raw ''
1892 verbose "$SELF" release-buildpk3s data/font-xolonium.pk3dir raw ''
1893 verbose "$SELF" release-buildpk3s data/xonotic-data.pk3dir normal '-high' low '-low' normaldds ''
1894 verbose "$SELF" release-buildpk3s data/xonotic-maps.pk3dir normal '-high' low '-low' normaldds ''
1895 verbose "$SELF" release-buildpk3s data/xonotic-music.pk3dir raw '' low '-low'
1896 verbose "$SELF" release-buildpk3s data/xonotic-nexcompat.pk3dir normal '-high' normaldds ''
1898 release-pack-needsx11)
1901 verbose startx "$SELF" release-pack -- /usr/bin/Xvfb :7
1904 verbose "$SELF" release-pack
1909 stamp=`cat Xonotic/stamp.txt`
1910 # exe and dll files do not need +x, so this makes them eligible for 7zip compression too
1911 chmod a-x Xonotic/*.exe Xonotic/*.dll || true
1912 # let's pass crypto import laws of some nasty countries
1913 crypto_libs=`find Xonotic -name \*d0_rijndael\*.so -o -name \*d0_rijndael\*.dylib -o -name \*d0_rijndael\*.dll -o -name \*d0_rijndael\*.c`
1914 if [ -n "$crypto_libs" ]; then
1915 verbose mkzip Xonotic-$stamp-crypto.zip \
1919 # build the archives
1920 verbose mkzip Xonotic-$stamp-engine.zip \
1922 Xonotic/bin64/*.dll \
1925 Xonotic/xonotic.exe \
1926 Xonotic/source/darkplaces/
1927 verbose cp Xonotic-$stamp-engine.zip Xonotic-$stamp-common.zip
1928 verbose mkzip Xonotic-$stamp-common.zip \
1929 Xonotic/source/fteqcc/ \
1930 Xonotic/source/qcsrc/ \
1935 Xonotic/key_0.d0pk \
1936 Xonotic/data/font-nimbussansl-$stamp.pk3 \
1937 Xonotic/data/font-xolonium-$stamp.pk3
1938 verbose cp Xonotic-$stamp-common.zip Xonotic-$stamp.zip
1939 verbose mkzip0 Xonotic-$stamp.zip \
1940 Xonotic/data/xonotic-$stamp-data.pk3 \
1941 Xonotic/data/xonotic-$stamp-maps.pk3 \
1942 Xonotic/data/xonotic-$stamp-music.pk3 \
1943 Xonotic/data/xonotic-$stamp-nexcompat.pk3
1944 verbose cp Xonotic-$stamp-common.zip Xonotic-$stamp-low.zip
1945 verbose mkzip0 Xonotic-$stamp-low.zip \
1946 Xonotic/data/xonotic-$stamp-data-low.pk3 \
1947 Xonotic/data/xonotic-$stamp-maps-low.pk3 \
1948 Xonotic/data/xonotic-$stamp-music-low.pk3
1949 verbose mv Xonotic-$stamp-common.zip Xonotic-$stamp-high.zip
1950 verbose mkzip0 Xonotic-$stamp-high.zip \
1951 Xonotic/data/xonotic-$stamp-data-high.pk3 \
1952 Xonotic/data/xonotic-$stamp-maps-high.pk3 \
1953 Xonotic/data/xonotic-$stamp-music.pk3 \
1954 Xonotic/data/xonotic-$stamp-nexcompat-high.pk3
1955 verbose mkzip Xonotic-$stamp-mappingsupport.zip \
1957 verbose mkzip0 Xonotic-$stamp-mappingsupport.zip \
1958 Xonotic/data/xonotic-$stamp-maps-low.pk3 # TODO add a Radiant build
1961 verbose "$SELF" release-prepare
1962 verbose "$SELF" release-maps
1963 verbose "$SELF" release-engine
1964 verbose "$SELF" release-qc
1965 verbose "$SELF" release-pack-needsx11
1966 verbose "$SELF" release-zip
1971 $ECHO " $SELF admin-merge [<branch>]"
1972 $ECHO " $SELF branch <branch>"
1973 $ECHO " $SELF branch <remote> <branch> [<srcbranch>]"
1974 $ECHO " $SELF branches"
1975 $ECHO " $SELF checkout|switch <branch>"
1976 $ECHO " $SELF checkout|switch <remote>/<branch>"
1977 $ECHO " $SELF clean [-m] [-f | -fu | -fU] [-r] [-D]"
1978 $ECHO " $SELF clean --reclone"
1979 $ECHO " $SELF compile [-c] [-r|-p] [-0]"
1980 $ECHO " $SELF each|foreach [-k] command..."
1981 $ECHO " $SELF fix_upstream_rebase"
1982 $ECHO " $SELF keygen"
1983 $ECHO " $SELF merge"
1984 $ECHO " $SELF push|commit [-s]"
1985 $ECHO " $SELF release"
1986 $ECHO " $SELF restore-patches"
1987 $ECHO " $SELF run [sdl|glx|wgl|agl|dedicated] options..."
1988 $ECHO " $SELF save-patches"
1989 $ECHO " $SELF update-maps"
1990 $ECHO " $SELF update|pull [-N] [-s | -h [-p] | -g [-p]] [-l de|nl|default]"