]> git.xonotic.org Git - xonotic/xonotic.git/commitdiff
Merge branch 'master' of ssh://git.xonotic.org/xonotic
authorRudolf Polzer <divverent@alientrap.org>
Fri, 6 Aug 2010 06:31:53 +0000 (08:31 +0200)
committerRudolf Polzer <divverent@alientrap.org>
Fri, 6 Aug 2010 06:31:53 +0000 (08:31 +0200)
all
misc/tools/cached-converter.sh

diff --git a/all b/all
index cebe6e70b858879183a5897029813d8b9aab9553..73b1e0456007bf9a8241a27dde3dfcd0064a466e 100755 (executable)
--- a/all
+++ b/all
@@ -860,8 +860,9 @@ case "$cmd" in
        # release building goes here
        release-prepare)
                #"$SELF" each git clean -fxd
-               rm -rf Xonotic
+               rm -rf Xonotic Xonotic*.zip
                mkdir -p Xonotic
+               date +%Y%m%d > Xonotic/stamp.txt
                git archive --format=tar HEAD -- Docs misc server xonotic-linux-glx.sh xonotic-linux-sdl.sh misc/buildfiles | {
                        cd Xonotic
                        mkdir data fteqcc darkplaces-src fteqcc-src
@@ -965,9 +966,6 @@ case "$cmd" in
        release-maps)
                "$SELF" update-maps
                ;;
-       release-finish)
-               # version numnber and stuff like that
-               ;;
        release-qc)
                verbose make -C data/xonotic-data.pk3dir FTEQCC="$d0/Xonotic/fteqcc/fteqcc.linux32" FTEQCCFLAGS_WATERMARK=
                ;;
@@ -984,7 +982,8 @@ case "$cmd" in
                export do_dds=true
                export dds_flags=
                export do_ogg=false
-               find models textures maps/*/ -type f -print0 | xargs -0 "$d0"/misc/tools/cached-converter.sh
+               export del_src=true
+               find . -type f -print0 | xargs -0 "$d0"/misc/tools/cached-converter.sh
                ;;
        release-buildpk3-transform-low)
                dir=$1
@@ -992,12 +991,13 @@ case "$cmd" in
                # texture: convert to jpeg and dds
                # music: reduce bitrate
                export do_jpeg=true
-               export jpeg_qual_rgb=85
+               export jpeg_qual_rgb=80
                export jpeg_qual_a=95
                export do_dds=false
                export do_ogg=true
                export ogg_qual=1
-               find models textures maps/*/ sound -type f -print0 | xargs -0 "$d0"/misc/tools/cached-converter.sh
+               export del_src=true
+               find . -type f -print0 | xargs -0 "$d0"/misc/tools/cached-converter.sh
                ;;
        release-buildpk3-transform-lowdds)
                dir=$1
@@ -1005,12 +1005,18 @@ case "$cmd" in
                # texture: convert to jpeg and dds
                # music: reduce bitrate
                export do_jpeg=false
+               export do_jpeg_if_not_dds=true
+               export jpeg_qual_rgb=80
+               export jpeg_qual_a=95
                export do_dds=true
                export dds_flags=
                export do_ogg=true
                export ogg_qual=1
                export del_src=true
-               find models textures maps/*/ sound -type f -print0 | xargs -0 "$d0"/misc/tools/cached-converter.sh
+               find . -type f -print0 | xargs -0 "$d0"/misc/tools/cached-converter.sh
+               if [ -f "quake.rc" ]; then
+                       echo "r_texture_dds_load 1" >> quake.rc
+               fi
                ;;
        release-buildpk3)
                src=$1
@@ -1047,6 +1053,18 @@ case "$cmd" in
                                fi
                        done
                fi
+               if [ -f "defaultXonotic.cfg" ]; then
+                       gv=`grep "^gameversion " "defaultXonotic.cfg" | awk '{ print $2 }'`
+                       major=$(($gv / 10000))
+                       minor=$(($gv / 100 - $major * 100))
+                       patch=$(($gv - $major * 10000 - $minor * 100))
+                       sed -i "
+                               s/^set g_xonoticversion [^ ]* /set g_xonoticversion $major.$minor.$patch /;
+                               s/^gameversion_min [0-9]*/gameversion_min $(( ($gv / 100) * 100 - 100 ))/;
+                               s/^gameversion_max [0-9]*/gameversion_max $(( ($gv / 100) * 100 + 199 ))/;
+                       " defaultXonotic.cfg
+                       echo "r_texture_dds_load 1" >> quake.rc
+               fi
                "$SELF" release-buildpk3-transform-$transform "Xonotic/temp"
                cd Xonotic/temp
                zip -9r "../../$dst" . ########### 7za a -tzip -mx=9 "../../$dst" .
@@ -1054,10 +1072,20 @@ case "$cmd" in
                rm -rf Xonotic/temp
                ;;
        release-buildpk3s)
+               stamp=`cat Xonotic/stamp.txt`
                src=$1
                shift
+               dst=${src%.pk3dir}
+               case "$dst" in
+                       data/xonotic-*)
+                               dst="data/xonotic-$stamp-${dst#data/xonotic-}"
+                               ;;
+                       *)
+                               dst="$dst-$stamp"
+                               ;;
+               esac
                while [ "$#" -gt 1 ]; do
-                       "$SELF" release-buildpk3 "$src" "Xonotic/${src%.pk3dir}$2.pk3" "$1"
+                       "$SELF" release-buildpk3 "$src" "Xonotic/$dst$2.pk3" "$1"
                        shift
                        shift
                done
@@ -1067,7 +1095,7 @@ case "$cmd" in
                "$SELF" release-buildpk3s data/xonotic-data.pk3dir       normal '' raw '-raw' low '-low' lowdds '-lowdds'
                "$SELF" release-buildpk3s data/xonotic-maps.pk3dir       normal '' raw '-raw' low '-low' lowdds '-lowdds'
                "$SELF" release-buildpk3s data/xonotic-music.pk3dir                raw ''     low '-low'
-               "$SELF" release-buildpk3s data/xonotic-nexcompat.pk3dir                       low ''     lowdds '-lowdds'
+               "$SELF" release-buildpk3s data/xonotic-nexcompat.pk3dir                       low ''
                ;;
        release-pack-needsx11)
                case "$DISPLAY" in
@@ -1079,14 +1107,53 @@ case "$cmd" in
                                ;;
                esac
                ;;
+       release-zip)
+               stamp=`cat Xonotic/stamp.txt`
+               zip -9r Xonotic-common.zip \
+                       Xonotic/*.dll \
+                       Xonotic/darkplaces-src \
+                       Xonotic/Docs \
+                       Xonotic/fteqcc-src \
+                       Xonotic/misc \
+                       Xonotic/fteqcc \
+                       Xonotic/server \
+                       Xonotic/*.app \
+                       Xonotic/xonotic-* \
+                       Xonotic/data/font-nimbussansl-$stamp.pk3
+               cp Xonotic-common.zip Xonotic.zip
+               zip -0r Xonotic.zip \
+                       Xonotic/data/xonotic-$stamp-data.pk3 \
+                       Xonotic/data/xonotic-$stamp-maps.pk3 \
+                       Xonotic/data/xonotic-$stamp-music.pk3 \
+                       Xonotic/data/xonotic-$stamp-nexcompat.pk3
+               cp Xonotic-common.zip Xonotic-low.zip
+               zip -0r Xonotic-low.zip \
+                       Xonotic/data/xonotic-$stamp-data-low.pk3 \
+                       Xonotic/data/xonotic-$stamp-maps-low.pk3 \
+                       Xonotic/data/xonotic-$stamp-music-low.pk3 \
+                       Xonotic/data/xonotic-$stamp-nexcompat.pk3
+               cp Xonotic-common.zip Xonotic-lowdds.zip
+               zip -0r Xonotic-lowdds.zip \
+                       Xonotic/data/xonotic-$stamp-data-lowdds.pk3 \
+                       Xonotic/data/xonotic-$stamp-maps-lowdds.pk3 \
+                       Xonotic/data/xonotic-$stamp-music-low.pk3 \
+                       Xonotic/data/xonotic-$stamp-nexcompat.pk3
+               cp Xonotic-common.zip Xonotic-high.zip
+               zip -0r Xonotic-high.zip \
+                       Xonotic/data/xonotic-$stamp-data-raw.pk3 \
+                       Xonotic/data/xonotic-$stamp-maps-raw.pk3 \
+                       Xonotic/data/xonotic-$stamp-music.pk3 \
+                       Xonotic/data/xonotic-$stamp-nexcompat.pk3
+               rm -f Xonotic-common.zip
+               ;;
        release)
                "$SELF" release-prepare
                "$SELF" release-maps &
                "$SELF" release-engine &
-               "$SELF" release-finish &
-               "$SELF" release-qc &
                wait
+               "$SELF" release-qc
                "$SELF" release-pack-needsx11
+               "$SELF" release-zip
                ;;
 
        *)
index 7cd23ff70e4ddc762db89d29cf60df121fe9630a..a9098cbfad93f210c5d3782bb6d5f7010abcd5e9 100755 (executable)
@@ -4,6 +4,7 @@ set -e
 
 : ${CACHEDIR:=$HOME/.xonotic-cached-converter}
 : ${do_jpeg:=true}
+: ${do_jpeg_if_not_dds:=false}
 : ${jpeg_qual_rgb:=95}
 : ${jpeg_qual_a:=99}
 : ${do_dds:=true}
@@ -128,8 +129,8 @@ reduce_rgba_jpeg2()
        i=$1; shift; shift
        o=$1; shift
        oa=$1; shift
-       convert "$i" -alpha extract -quality 100 "$o" && \
-       convert "$i" -alpha off     -quality 100 "$oa" && \
+       convert "$i" -alpha off     -quality 100 "$o" && \
+       convert "$i" -alpha extract -quality 100 "$oa" && \
        jpegoptim --strip-all -m"$1" "$o" && \
        jpegoptim --strip-all -m"$2" "$oa"
 }
@@ -163,40 +164,65 @@ has_alpha()
        fi
 }
 
+to_delete=
 for F in "$@"; do
+       f=${F%.*}
+
        echo >&2 "Handling $F..."
        conv=false
        keep=false
+
+       will_jpeg=$do_jpeg
+       will_dds=$do_dds
+       case "$f" in
+               ./textures/*) ;;
+               ./models/*) ;;
+               ./maps/*/*) ;;
+               ./particles/*) ;;
+               ./progs/*) ;;
+               *)
+                       # we can't DDS compress the 2D textures, sorry
+                       # but JPEG is still fine
+                       will_dds=false
+                       ;;
+       esac
+
+       if $do_jpeg_if_not_dds; then
+               if $will_dds; then
+                       will_jpeg=false
+               else
+                       will_jpeg=true
+               fi
+       fi
+
        case "$F" in
                *_alpha.jpg)
                        # handle in *.jpg case
 
                        # they always got converted, I assume
-                       if $do_dds || $do_jpeg; then
+                       if $will_dds || $will_jpeg; then
                                conv=true
                        fi
-                       keep=$do_jpeg
+                       keep=$will_jpeg
                        ;;
                *.jpg)
-                       if [ -f "${F%.jpg}_alpha.jpg" ]; then
-                               cached "$do_dds"  reduce_jpeg2_dds   "$F" "${F%.*}_alpha.jpg" "dds/${F%.*}.dds" ""                  "$dds_flags"
-                               cached "$do_jpeg" reduce_jpeg2_jpeg2 "$F" "${F%.*}_alpha.jpg" "$F"              "${F%.*}_alpha.jpg" "$jpeg_qual_rgb" "$jpeg_qual_a"
+                       if [ -f "${f}_alpha.jpg" ]; then
+                               cached "$will_dds"  reduce_jpeg2_dds   "$F" "${f}_alpha.jpg" "dds/${f}.dds" ""               "$dds_flags"
+                               cached "$will_jpeg" reduce_jpeg2_jpeg2 "$F" "${f}_alpha.jpg" "$F"           "${f}_alpha.jpg" "$jpeg_qual_rgb" "$jpeg_qual_a"
                        else                                   
-                               cached "$do_dds"  reduce_rgb_dds     "$F" ""                  "dds/${F%.*}.dds" ""                  "$dds_flags"
-                               cached "$do_jpeg" reduce_jpeg_jpeg   "$F" ""                  "$F"              ""                  "$jpeg_qual_rgb"
+                               cached "$will_dds"  reduce_rgb_dds     "$F" ""               "dds/${f}.dds" ""               "$dds_flags"
+                               cached "$will_jpeg" reduce_jpeg_jpeg   "$F" ""               "$F"           ""               "$jpeg_qual_rgb"
                        fi
                        ;;
                *.png|*.tga)
                        cached true has_alpha "$F" "" "$F.hasalpha" ""
                        conv=false
                        if [ -s "$F.hasalpha" ]; then
-                               cached "$do_dds"  reduce_rgba_dds    "$F" ""                  "dds/${F%.*}.dds" ""                  "$dds_flags"
-                               cached "$do_jpeg" reduce_rgba_jpeg2  "$F" ""                  "${F%.*}.jpg"     "${F%.*}_alpha.jpg" "$jpeg_qual_rgb" "$jpeg_qual_a"
-                               rm -f "$F" # TGA becomes useless after JPEGging
+                               cached "$will_dds"  reduce_rgba_dds    "$F" ""               "dds/${f}.dds" ""               "$dds_flags"
+                               cached "$will_jpeg" reduce_rgba_jpeg2  "$F" ""               "${f}.jpg"     "${f}_alpha.jpg" "$jpeg_qual_rgb" "$jpeg_qual_a"
                        else                                                             
-                               cached "$do_dds"  reduce_rgb_dds     "$F" ""                  "dds/${F%.*}.dds" ""                  "$dds_flags"
-                               cached "$do_jpeg" reduce_rgb_jpeg    "$F" ""                  "${F%.*}.jpg"     ""                  "$jpeg_qual_rgb"
-                               rm -f "$F" # TGA becomes useless after JPEGging
+                               cached "$will_dds"  reduce_rgb_dds     "$F" ""               "dds/${f}.dds" ""               "$dds_flags"
+                               cached "$will_jpeg" reduce_rgb_jpeg    "$F" ""               "${f}.jpg"     ""               "$jpeg_qual_rgb"
                        fi
                        rm -f "$F.hasalpha"
                        ;;
@@ -210,8 +236,20 @@ for F in "$@"; do
        if $del_src; then
                if $conv; then
                        if ! $keep; then
-                               rm -f "$F"
+                               # FIXME can't have spaces in filenames that way
+                               to_delete="$to_delete $F"
+                       fi
+               fi
+       fi
+       # fix up DDS paths by a symbolic link
+       if [ -f "dds/${f}.dds" ]; then
+               if [ -z "${f##./textures/*}" ]; then
+                       if [ -n "${f##./textures/*/*}" ]; then
+                               ln -snf "textures/${f%./textures/}.dds" "dds/${f%./textures/}.dds"
                        fi
                fi
        fi
 done
+for F in $to_delete; do
+       rm -f "$F"
+done