]> git.xonotic.org Git - xonotic/xonotic.git/blob - misc/tools/demopacker.sh
demopacker fixes
[xonotic/xonotic.git] / misc / tools / demopacker.sh
1 #!/bin/sh
2
3 xonotic=$1; shift
4 strip=$1; shift
5 demo=$1; shift
6 # rest: command line options to use
7
8 demobase=${demo##*/}
9
10 cp "$demo" data/"$demobase"
11
12 strace -qo strace.txt -f -e trace=open ./all run -nohome -readonly -forceqmenu -window "$@" -demo "$demobase"
13
14 allfiles()
15 {
16         <strace.txt \
17                 grep '^[0-9]*  *open("' strace.txt |\
18                 cut -d '"' -f 2 |\
19                 grep '^data/[^/]*\.pk3dir/' |\
20                 sort -u
21 }
22 allfiles=`allfiles`
23
24 include_as()
25 {
26         mkdir -p "output/$1"
27         rmdir "output/$1"
28         cat > "output/$1"
29 }
30
31 rm -rf output
32
33 while [ -n "$allfiles" ]; do
34         l=$allfiles
35         allfiles=
36         for f in $l; do
37                 [ -f "$f" ] || continue
38                 fn=${f#*/*/}
39                 case "$f" in
40 # BUG: DP cannot read the csprogs.dat from the demo in readonly mode, so we have to keep this one for now
41 #                       */csprogs.dat)
42 #                               # spam, skip it
43 #                               ;;
44                         */unifont-*.ttf)
45                                 # spam, skip it
46                                 ;;
47                         *.mapinfo)
48                                 <"$f" include_as "$fn"
49
50                                 # also include the map pk3 content
51                                 n=${f##*/}
52                                 n=${n%.*}
53                                 rm -rf data/temp-$n
54                                 mkdir data/temp-$n
55                                 (
56                                         cd data/temp-$n
57                                         unzip ../../data/"$n"-*.pk3
58                                 )
59                                 allfiles=$allfiles" `find data/temp-$n -type f`"
60                                 ;;
61                         *)
62                                 <"$f" include_as "$fn"
63                                 ;;
64                 esac
65         done
66 done
67
68 export do_jpeg=true
69 export dp_jpeg_if_not_dds=false
70 export jpeg_qual_rgb=80
71 export jpeg_qual_a=95
72 export do_dds=false
73 export do_ogg=true
74 export ogg_ogg=true
75 export ogg_qual=1
76 export del_src=true
77 export git_src_repo=
78 cd output
79 find . -type f -print0 | xargs -0 ../misc/tools/cached-converter.sh
80 cd ..
81 mv data/"$demobase" output/
82 echo "-xonotic -nohome -readonly -forceqmenu +bind ESCAPE quit $* -demo $demobase" > output/darkplaces.opt
83 rm output.pk3
84 ( cd output && zip -9r ../output.pk3 . )
85 cp "$xonotic" output.exe
86 $strip --strip-unneeded output.exe
87 cat output.pk3 >> output.exe