]> git.xonotic.org Git - xonotic/xonotic.git/commitdiff
Merge branch 'master' of ssh://git.xonotic.org/xonotic
authorRudolf Polzer <divverent@alientrap.org>
Thu, 5 Aug 2010 17:31:04 +0000 (19:31 +0200)
committerRudolf Polzer <divverent@alientrap.org>
Thu, 5 Aug 2010 17:31:04 +0000 (19:31 +0200)
all
misc/tools/cached-converter.sh
misc/tools/compress-texture

diff --git a/all b/all
index dfef27a79b16a79891c1e426aae9630944cb6bc9..cebe6e70b858879183a5897029813d8b9aab9553 100755 (executable)
--- a/all
+++ b/all
@@ -864,14 +864,28 @@ case "$cmd" in
                mkdir -p Xonotic
                git archive --format=tar HEAD -- Docs misc server xonotic-linux-glx.sh xonotic-linux-sdl.sh misc/buildfiles | {
                        cd Xonotic
-                       mkdir data fteqcc
+                       mkdir data fteqcc darkplaces-src fteqcc-src
                        tar xvf -
                        rm -rf misc/builddeps
-                       mv misc/buildfiles/win32/* .
-                       mv misc/buildfiles/win64/* .
-                       mv misc/buildfiles/osx/* .
+                       mv misc/buildfiles/win32/* . || true
+                       mv misc/buildfiles/win64/* . || true
+                       mv misc/buildfiles/osx/* . || true
                        rm -rf misc/buildfiles
                }
+               {
+                       cd darkplaces
+                       git archive --format=tar HEAD
+               } | {
+                       cd Xonotic/darkplaces-src
+                       tar xvf -
+               }
+               {
+                       cd fteqcc
+                       git archive --format=tar HEAD
+               } | {
+                       cd Xonotic/fteqcc-src
+                       tar xvf -
+               }
                ;;
        release-compile-run)
                host=$1
@@ -907,8 +921,8 @@ case "$cmd" in
                fteqcc_files=$4
                darkplaces_maketargets=$5
                darkplaces_files=$6
-               "$SELF" release-compile-run "xonotic-build-$suffix" /tmp/fteqcc.build."$suffix" "$fteqcc_maketargets" "$makeflags" "fteqcc" "$fteqcc_files"
-               "$SELF" release-compile-run "xonotic-build-$suffix" /tmp/Darkplaces.build."$suffix" "$darkplaces_maketargets" "$makeflags" "darkplaces" "$darkplaces_files"
+               "$SELF" release-compile-run "xonotic-build-$suffix" /tmp/fteqcc.build."$suffix" "$fteqcc_maketargets" "$makeflags" "Xonotic/fteqcc-src" "$fteqcc_files"
+               "$SELF" release-compile-run "xonotic-build-$suffix" /tmp/Darkplaces.build."$suffix" "$darkplaces_maketargets" "$makeflags" "Xonotic/darkplaces-src" "$darkplaces_files"
                ;;
        release-engine-win32)
                "$SELF" release-compile win32 \
@@ -932,13 +946,13 @@ case "$cmd" in
                "$SELF" release-compile linux32 \
                        'CC="gcc -m32 -g -Wl,--hash-style=sysv -I$HOME/dp.linux32/include -L$HOME/dp.linux32/lib" DP_MODPLUG_STATIC_LIBDIR=$HOME/dp.linux32/lib DP_LINK_TO_LIBJPEG=1' \
                        all 'fteqcc.bin:Xonotic/fteqcc/fteqcc.linux32' \
-                       debug 'darkplaces-glx:Xonotic/xonotic-linux-linux32-glx darkplaces-sdl:Xonotic/xonotic-linux32-sdl darkplaces-dedicated:Xonotic/xonotic-linux32-dedicated'
+                       debug 'darkplaces-glx:Xonotic/xonotic-linux32-glx darkplaces-sdl:Xonotic/xonotic-linux32-sdl darkplaces-dedicated:Xonotic/xonotic-linux32-dedicated'
                ;;
        release-engine-linux64)
                "$SELF" release-compile linux64 \
                        'CC="gcc -m64 -g -Wl,--hash-style=sysv -I$HOME/dp.linux64/include -L$HOME/dp.linux64/lib" DP_MODPLUG_STATIC_LIBDIR=$HOME/dp.linux64/lib DP_LINK_TO_LIBJPEG=1' \
                        all 'fteqcc.bin:Xonotic/fteqcc/fteqcc.linux64' \
-                       debug 'darkplaces-glx:Xonotic/xonotic-linux-linux64-glx darkplaces-sdl:Xonotic/xonotic-linux64-sdl darkplaces-dedicated:Xonotic/xonotic-linux64-dedicated'
+                       debug 'darkplaces-glx:Xonotic/xonotic-linux64-glx darkplaces-sdl:Xonotic/xonotic-linux64-sdl darkplaces-dedicated:Xonotic/xonotic-linux64-dedicated'
                ;;
        release-engine)
                "$SELF" release-engine-win32 &
@@ -950,13 +964,6 @@ case "$cmd" in
                ;;
        release-maps)
                "$SELF" update-maps
-               for X in data/*-????????????????????????????????????????-????????????????????????????????????????.pk3; do
-                       if [ -f "$X" ]; then
-                               cd Xonotic/data/xonotic-maps.pk3dir
-                               unzip ../../../"$X"
-                               cd ../../..
-                       fi
-               done
                ;;
        release-finish)
                # version numnber and stuff like that
@@ -977,7 +984,7 @@ case "$cmd" in
                export do_dds=true
                export dds_flags=
                export do_ogg=false
-               find textures -type f -print0 | xargs -0 "$d0"/misc/tools/cached-converter.sh
+               find models textures maps/*/ -type f -print0 | xargs -0 "$d0"/misc/tools/cached-converter.sh
                ;;
        release-buildpk3-transform-low)
                dir=$1
@@ -985,12 +992,25 @@ case "$cmd" in
                # texture: convert to jpeg and dds
                # music: reduce bitrate
                export do_jpeg=true
-               export jpeg_qual_rgb=95
-               export jpeg_qual_a=99
+               export jpeg_qual_rgb=85
+               export jpeg_qual_a=95
                export do_dds=false
                export do_ogg=true
                export ogg_qual=1
-               find textures sound/cdtracks -type f -print0 | xargs -0 "$d0"/misc/tools/cached-converter.sh
+               find models textures maps/*/ sound -type f -print0 | xargs -0 "$d0"/misc/tools/cached-converter.sh
+               ;;
+       release-buildpk3-transform-lowdds)
+               dir=$1
+               cd "$dir"
+               # texture: convert to jpeg and dds
+               # music: reduce bitrate
+               export do_jpeg=false
+               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
                ;;
        release-buildpk3)
                src=$1
@@ -1017,6 +1037,16 @@ case "$cmd" in
                        cp "$src"/csprogs.dat Xonotic/temp/
                        cp "$src"/menu.dat Xonotic/temp/
                fi
+               if [ x"$src" = x"data/xonotic-maps.pk3dir" ]; then
+                       for X in data/*-????????????????????????????????????????-????????????????????????????????????????.pk3; do
+                               if [ -f "$X" ]; then
+                                       (
+                                               cd Xonotic/temp
+                                               unzip ../../"$X"
+                                       )
+                               fi
+                       done
+               fi
                "$SELF" release-buildpk3-transform-$transform "Xonotic/temp"
                cd Xonotic/temp
                zip -9r "../../$dst" . ########### 7za a -tzip -mx=9 "../../$dst" .
@@ -1033,19 +1063,30 @@ case "$cmd" in
                done
                ;;
        release-pack)
-               "$SELF" release-buildpk3s data/font-dejavu.pk3dir                  raw ''
-               "$SELF" release-buildpk3s data/xonotic-data.pk3dir       normal '' raw '-raw' low '-low'
-               "$SELF" release-buildpk3s data/xonotic-maps.pk3dir       normal '' raw '-raw' low '-low'
-               "$SELF" release-buildpk3s data/xonotic-music.pk3dir      normal '' raw '-raw' low '-low'
-               "$SELF" release-buildpk3s data/xonotic-nexcompat.pk3dir                       low ''
+               "$SELF" release-buildpk3s data/font-nimbussansl.pk3dir             raw ''
+               "$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'
+               ;;
+       release-pack-needsx11)
+               case "$DISPLAY" in
+                       '')
+                               startx "$SELF" release-pack -- /usr/bin/Xvfb :7
+                               ;;
+                       *)
+                               "$SELF" release-pack
+                               ;;
+               esac
                ;;
        release)
                "$SELF" release-prepare
-               "$SELF" release-engine
-               "$SELF" release-maps
-               "$SELF" release-finish
-               "$SELF" release-qc
-               "$SELF" release-pack
+               "$SELF" release-maps &
+               "$SELF" release-engine &
+               "$SELF" release-finish &
+               "$SELF" release-qc &
+               wait
+               "$SELF" release-pack-needsx11
                ;;
 
        *)
index 4d52563ec279e3290e88b3b216a11b9368056946..7cd23ff70e4ddc762db89d29cf60df121fe9630a 100755 (executable)
@@ -10,6 +10,7 @@ set -e
 : ${dds_tool:=compressonator-dxtc}
 : ${do_ogg:=false}
 : ${ogg_qual:=1}
+: ${del_src:=false}
 
 me=$0
 case "$me" in
@@ -25,6 +26,8 @@ tmpdir=`mktemp -d -t cached-converter.XXXXXX`
 trap 'exit 1' INT
 trap 'rm -rf "$tmpdir"' EXIT
 
+lastinfiles=
+lastinfileshash=
 cached()
 {
        flag=$1; shift
@@ -36,24 +39,34 @@ cached()
        if ! $flag; then
                return 0
        fi
+       if [ x"$infile1" = x"$outfile1" ]; then
+               keep=true
+       fi
        options=`echo "$*" | git hash-object --stdin`
-       sum=`git hash-object "$infile1"`
-       if [ -n "$infile2" ]; then
-               sum=$sum`git hash-object "$infile2"`
+       if [ x"$infile1/../$infile2" = x"$lastinfiles" ]; then
+               sum=$lastinfileshash
+       else
+               sum=`git hash-object "$infile1"`
+               if [ -n "$infile2" ]; then
+                       sum=$sum`git hash-object "$infile2"`
+               fi
+               lastinfileshash=$sum
        fi
        mkdir -p "$CACHEDIR/$method-$options"
        name1="$CACHEDIR/$method-$options/$sum-1.${outfile1##*.}"
        [ -z "$outfile2" ] || name2="$CACHEDIR/$method-$options/$sum-2.${outfile2##*.}"
        tempfile1="${name1%/*}/new-${name1##*/}"
        [ -z "$outfile2" ] || tempfile2="${name2%/*}/new-${name2##*/}"
-       if [ -f "$name1" ]; then
-               ln "$name1" "$outfile1" 2>/dev/null || cp "$name1" "$outfile1"
-               [ -z "$outfile2" ] || ln "$name2" "$outfile2" 2>/dev/null || cp "$name2" "$outfile2"
+       if [ -f "$name1" ] && { [ -z "$outfile2" ] || [ -f "$name2" ]; }; then
+               case "$outfile1" in */*) mkdir -p "${outfile1%/*}"; esac && { ln "$name1" "$outfile1" 2>/dev/null || cp "$name1" "$outfile1"; }
+               [ -z "$outfile2" ] || { case "$outfile2" in */*) mkdir -p "${outfile2%/*}"; esac && { ln "$name2" "$outfile2" 2>/dev/null || cp "$name2" "$outfile2"; }; }
+               conv=true
        elif "$method" "$infile1" "$infile2" "$tempfile1" "$tempfile2" "$@"; then
                mv "$tempfile1" "$name1"
                [ -z "$outfile2" ] || mv "$tempfile2" "$name2"
                case "$outfile1" in */*) mkdir -p "${outfile1%/*}"; esac && { ln "$name1" "$outfile1" 2>/dev/null || cp "$name1" "$outfile1"; }
                [ -z "$outfile2" ] || { case "$outfile2" in */*) mkdir -p "${outfile2%/*}"; esac && { ln "$name2" "$outfile2" 2>/dev/null || cp "$name2" "$outfile2"; }; }
+               conv=true
        else
                rm -f "$tempfile1"
                rm -f "$tempfile2"
@@ -66,8 +79,8 @@ reduce_jpeg2_dds()
        i=$1; shift
        ia=$1; shift
        o=$1; shift; shift 
-       convert "$i" "$ia" -compose CopyOpacity -composite "$tmpdir/x.png" && \
-       "$meprefix"compress-texture "$dds_tool" dxt5 "$tmpdir/x.png" "$o" $1
+       convert "$i" "$ia" -compose CopyOpacity -composite "$tmpdir/x.tga" && \
+       "$meprefix"compress-texture "$dds_tool" dxt5 "$tmpdir/x.tga" "$o" $1
 }
 
 reduce_jpeg2_jpeg2()
@@ -87,7 +100,7 @@ reduce_jpeg_jpeg()
        cp "$i" "$o" && jpegoptim --strip-all -m"$1" "$o"
 }
 
-reduce_ogg()
+reduce_ogg_ogg()
 {
        i=$1; shift; shift
        o=$1; shift; shift
@@ -95,11 +108,19 @@ reduce_ogg()
        oggenc -q"$1" -o "$o" "$tmpdir/x.wav"
 }
 
+reduce_wav_ogg()
+{
+       i=$1; shift; shift
+       o=$1; shift; shift
+       oggenc -q"$1" -o "$o" "$i"
+}
+
 reduce_rgba_dds()
 {
        i=$1; shift; shift
        o=$1; shift; shift
-       "$meprefix"compress-texture "$dds_tool" dxt5 "$i" "$o" $1
+       convert "$i" "$tmpdir/x.tga" && \
+       "$meprefix"compress-texture "$dds_tool" dxt5 "$tmpdir/x.tga" "$o" $1
 }
 
 reduce_rgba_jpeg2()
@@ -117,7 +138,8 @@ reduce_rgb_dds()
 {
        i=$1; shift; shift
        o=$1; shift; shift
-       "$meprefix"compress-texture "$dds_tool" dxt1 "$i" "$o" $1
+       convert "$i" "$tmpdir/x.tga" && \
+       "$meprefix"compress-texture "$dds_tool" dxt1 "$tmpdir/x.tga" "$o" $1
 }
 
 reduce_rgb_jpeg()
@@ -128,34 +150,68 @@ reduce_rgb_jpeg()
        jpegoptim --strip-all -m"$1" "$o"
 }
 
+has_alpha()
+{
+       i=$1; shift; shift
+       o=$1; shift; shift
+       if convert "$F" -depth 16 RGBA:- | perl -e 'while(read STDIN, $_, 8) { substr($_, 6, 2) eq "\xFF\xFF" or exit 1; } exit 0;'; then
+               # no alpha
+               : > "$o"
+       else
+               # has alpha
+               echo yes > "$o"
+       fi
+}
 
 for F in "$@"; do
+       echo >&2 "Handling $F..."
+       conv=false
+       keep=false
        case "$F" in
-       *_alpha.jpg)
-               # handle in *.jpg case
-               ;;
-       *.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"
-               else                                   
-                       cached "$do_dds"  reduce_rgb_dds     "$F" ""                  "dds/${F%.*}.dds" ""                  "$dds_flags"
-                       cached "$do_jpeg" reduce_jpeg_jpeg   "$F" ""                  "$F"              ""                  "$jpeg_qual_rgb"
-               fi
-               ;;
-       *.png|*.tga)
-               if convert "$F" -depth 16 RGBA:- | perl -e 'while(read STDIN, $_, 8) { substr($_, 6, 2) eq "\xFF\xFF" or exit 1; } exit 0;'; then
-                       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"
-               else                                                             
-                       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"
-               fi
-               ;;
-       *.ogg)
-               cached "$do_ogg" reduce_ogg "$F" "" "$F" "" "$ogg_qual"
-               ;;
+               *_alpha.jpg)
+                       # handle in *.jpg case
+
+                       # they always got converted, I assume
+                       if $do_dds || $do_jpeg; then
+                               conv=true
+                       fi
+                       keep=$do_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"
+                       else                                   
+                               cached "$do_dds"  reduce_rgb_dds     "$F" ""                  "dds/${F%.*}.dds" ""                  "$dds_flags"
+                               cached "$do_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
+                       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
+                       fi
+                       rm -f "$F.hasalpha"
+                       ;;
+               *.ogg)
+                       cached "$do_ogg" reduce_ogg_ogg "$F" "" "$F" "" "$ogg_qual"
+                       ;;
+               *.wav)
+                       cached "$do_ogg" reduce_wav_ogg "$F" "" "$F" "" "$ogg_qual"
+                       ;;
        esac
+       if $del_src; then
+               if $conv; then
+                       if ! $keep; then
+                               rm -f "$F"
+                       fi
+               fi
+       fi
 done
index 0cafa5a2ea815e19dbf1f597e26517b743e39a87..7b998fb7499ec606ea3255893216540a3ef72373 100755 (executable)
@@ -3,6 +3,8 @@
 # usage: compress-texture tool compression in.png out.dds
 # example: compress-texture compressonator dxt1 foo.jpg foo.dds
 
+echo >&2 "$0 $*"
+
 tool=$1; shift
 format=$1; shift
 src=$1; shift
@@ -25,9 +27,16 @@ case "$tool" in
                dir_dos="C:/${dir##*/}"
                ext=${src##*.}
                cp "$src" "$dir/src.$ext"
-               DISPLAY= wine "$HOME/.wine/drive_c/Program Files/AMD/The Compressonator 1.50/TheCompressonator.exe" -convert -mipmaps "$dir_dos/src.$ext" "$dir_dos/dst.dds" $c $f "$@" -mipper BoxFilter.dll
-               mv "$dir/dst.dds" "$dst"
+
+               # compressonator and wine suck, so we sometimes have to retry :(
+               for retry in 1 2 3 4 5; do
+                       wine "$HOME/.wine/drive_c/Program Files/AMD/The Compressonator 1.50/TheCompressonator.exe" -convert -mipmaps "$dir_dos/src.$ext" "$dir_dos/dst.dds" $c $f "$@" -mipper BoxFilter.dll
+                       if mv "$dir/dst.dds" "$dst"; then
+                               break
+                       fi
+               done
                rm -rf "$dir"
+               [ -f "$dst" ]
                ;;
        nvcompress)
                case "$format" in