]> icculus.org git repositories - divverent/nexuiz.git/blob - misc/makebuild.sh
cullentities shall use engine defaults, they work well
[divverent/nexuiz.git] / misc / makebuild.sh
1 #!/bin/bash
2
3 set -e
4
5 base=`pwd`
6
7
8 case "$pw" in
9         '')
10                 zipflags=
11                 ;;
12         *)
13                 zipflags="-P $pw"
14                 ;;
15 esac
16
17 : ${date:=`date +%Y%m%d`}
18 : ${versiontag:=}
19 echo "date stamp: $date"
20
21 case "$version" in
22         '')
23                 version=2-svntest-$date
24                 versiontag=test
25                 defaultcfg=
26                 ext=
27                 ;;
28         *)
29                 version=$version
30                 versiontag=$versiontag
31                 defaultcfg=
32                 ext=_$version
33                 ;;
34 esac
35
36 basepk3=$base/data20070531.pk3
37 nexdir=$base/nexuiz-2.0
38 nexprodir=$base/nexuiz-current/pro
39 dpdir=$base/darkplaces
40 tmpdir=/tmp/NEX
41 zipdir=/home/polzer/public_html/nexuiz/builds
42 buildfiles=$base/nexuiz-current/misc/buildfiles
43 mingwdlls=$buildfiles/w32
44 osxapps=$buildfiles/osx
45 copystrip=$buildfiles/copystrip
46 fteqcc="fteqcc -O2"
47 mingw=/home/polzer/mingw32
48
49 # TODO normalize the builds
50 platforms='x86 amd64 osx'
51 buildon()
52 {
53         host=$1
54         prefix=$2
55         path=$3
56         makeflags=$4
57         rsync --exclude "*.o" --exclude "*.d" --exclude "nexuiz-*" --delete-excluded --delete -zvaSHP . $copystrip "$host:$path"
58         ssh "$host" ". ~/.profile && cd $path && PATH=$path/copystrip:\$PATH make $makeflags clean nexuiz"
59         rsync --exclude "*.o" --exclude "*.d" --delete-excluded --delete -zvaSHP "$host:$path/." .
60         for P in -dedicated -sdl -glx -wgl -agl -dedicated.exe -sdl.exe .exe; do
61                 [ -f nexuiz$P ] && mv nexuiz$P "$tmpdir/$prefix$P"
62                 [ -f nexuiz$P-withdebug ] && mv nexuiz$P-withdebug "$tmpdir/debuginfo/$prefix$P"
63         done
64         make clean
65 }
66
67 build()
68 {
69         buildon hagger  nexuiz              /tmp/Darkplaces.build 'DP_MAKE_TARGET=mingw CC="i586-mingw32msvc-gcc -g -I/home/polzer/mingw32.include" WINDRES=i586-mingw32msvc-windres SDL_CONFIG=/home/polzer/mingw32.SDL/bin/sdl-config'
70         buildon macmini nexuiz-osx-ppc      /tmp/Darkplaces.build 'CC="gcc -g -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk"' 
71                 mv "$tmpdir/nexuiz-osx-ppc-agl" "$tmpdir/Nexuiz.app/Contents/MacOS/nexuiz-osx-ppc-agl-bin"
72                 mv "$tmpdir/nexuiz-osx-ppc-sdl" "$tmpdir/Nexuiz-SDL.app/Contents/MacOS/nexuiz-osx-ppc-sdl-bin"
73         buildon hagger  nexuiz-linux-686    /tmp/Darkplaces.build 'CC="gcc -g"'
74         buildon hector  nexuiz-linux-x86_64 /tmp/Darkplaces.build 'CC="gcc -g"'
75 }
76
77 i=
78 while [ -f "$zipdir/nexuiz$date$i$ext.zip" ]; do
79         if [ -z "$i" ]; then
80                 i=a
81         else
82                 i=`echo "$i" | tr a-y b-z`
83         fi
84 done
85 ext=$i$ext
86
87 echo "Using build name nexuiz$date$ext"
88 sleep 3
89
90 if [ -n "$1" ]; then
91         osxhost="$1"
92 fi
93
94 conflicts=`find "$dpdir" "$nexdir" -name '*.orig' -o -name '*.rej' -o -name '*.mine' -o -name '.#*' -o -name '.*~'`
95 if [ -n "$conflicts" ]; then
96         echo "CONFLICTS OR UNNEEDED FILES HAVE BEEN FOUND!"
97         echo "NOT PROCEEDING"
98         echo
99         echo "$conflicts"
100         exit 1
101 fi
102
103 set -x
104
105 rm -rf "$tmpdir"
106 mkdir -p "$tmpdir"
107
108 cd "$dpdir"
109 quilt pop -a || true
110 svn revert -R .
111 quilt push -a # apply all patches
112
113 cp -r "$osxapps"/*.app "$tmpdir"
114 mkdir "$tmpdir/debuginfo"
115
116 rm -f *.exe nexuiz-* *-withdebug* *.o
117 make clean
118 build
119 rm -f *.exe nexuiz-* *-withdebug '.#'* *.o
120 make clean
121
122 cd "$tmpdir"
123
124 # cp nexuiz-agl "$tmpdir/Nexuiz.app/Contents/MacOS/nexuiz-osx-ppc-agl-bin"
125 # cp nexuiz-dedicated "$tmpdir/nexuiz-osx-ppc-dedicated"
126 # cp nexuiz-sdl "$tmpdir/Nexuiz-SDL.app/Contents/MacOS/nexuiz-osx-ppc-sdl-bin"
127 # cp nexuiz-agl-withdebug "$tmpdir/debuginfo/nexuiz-osx-ppc-agl-bin"
128 # cp nexuiz-dedicated-withdebug "$tmpdir/debuginfo/nexuiz-osx-ppc-dedicated-bin"
129 # cp nexuiz-sdl-withdebug "$tmpdir/debuginfo/nexuiz-osx-ppc-sdl-bin"
130
131 # make clean
132 # buildwin nexuiz
133 # for x in -dedicated -sdl ''; do
134 #       cp nexuiz$x.exe "$tmpdir/nexuiz$x.exe"
135 #       cp nexuiz$x.exe-withdebug "$tmpdir/debuginfo/nexuiz$x.exe"
136 # done
137
138 # make clean
139 # build32 nexuiz
140 # for x in dedicated sdl glx; do
141 #       cp nexuiz-$x "$tmpdir/nexuiz-linux-686-$x"
142 #       cp nexuiz-$x-withdebug "$tmpdir/debuginfo/nexuiz-linux-686-$x"
143 # done
144
145 # make clean
146 # build64 nexuiz
147 # for x in dedicated sdl glx; do
148 #       cp nexuiz-$x "$tmpdir/nexuiz-linux-x86_64-$x"
149 #       cp nexuiz-$x-withdebug "$tmpdir/debuginfo/nexuiz-linux-x86_64-$x"
150 # done
151
152 cp "$nexdir/"nexuiz-*.sh "$tmpdir/"
153 cp "$nexdir/"nexuiz-*.bat "$tmpdir/"
154 cp "$nexdir/gpl.txt" "$tmpdir/"
155
156 cd "$nexdir/data"
157 svn export . "$tmpdir/data"
158
159 cd "$nexprodir"
160 svn export . "$tmpdir/pro"
161
162 cd "$nexdir/Docs"
163 svn export . "$tmpdir/Docs"
164
165 cd "$tmpdir/data"
166 mkdir -p "$tmpdir/sources"
167 #zip -9r ../sources/gamesource$date.zip qcsrc
168 7za a -mx=9 -tzip ../sources/gamesource$date.zip qcsrc
169
170 cd "$dpdir"
171 svn export . "$tmpdir/darkplaces"
172 svn info > "$tmpdir/darkplaces/nexuiz-base-revision.txt"
173 svn diff > "$tmpdir/darkplaces/nexuiz-engine-changes.diff"
174 svn log > "$tmpdir/darkplaces/ChangeLog"
175
176 cd "$tmpdir"
177 7za a -mx=9 -tzip "$tmpdir/sources/enginesource$date.zip" "darkplaces"
178 rm -rf darkplaces
179
180 cd "$tmpdir/data/qcsrc/menu"
181 $fteqcc
182
183 cd "$tmpdir/data/qcsrc/server"
184 $fteqcc
185
186 rm -rf "$tmpdir/data/qcsrc"
187
188 cd "$tmpdir/Docs"
189 perl -pi -e '/^#---SET nexversion=([0-9.]*)$/ and $_ = "#---SET nexversion='$version'\n"' FAQ.aft
190 perl -pi -e '/^\s*Version ([0-9.]*)<\/div>$/ and $_ = "Version '$version'</div>\n"' Readme.htm
191 cp "$dpdir/darkplaces.txt" .
192 aft FAQ.aft
193 aft FAQ.aft
194 rm FAQ.aft-TOC
195
196 cd "$tmpdir/data"
197 mv common-spog.pk3 ..
198 perl -pi -e '/^set g_nexuizversion "?([0-9.]*)[^"]*"?/ and $_ = "set g_nexuizversion '$version'\n"' default.cfg
199 if [ -n "$versiontag" ]; then
200         perl -pi -e '/^set g_nexuizversion/ and $_ = "showbrand 3\n$_"' default.cfg
201         cp "$buildfiles/brand/$versiontag.tga" gfx/brand.tga
202 fi
203 echo >> default.cfg
204 echo "$defaultcfg" >> default.cfg
205 7za a -mx=7 -tzip ../data.pk3 .
206
207 cd "$tmpdir/pro"
208 perl -pi -e '/^set g_nexuizversion "?([0-9.]*)[^"]*"?/ and $_ = "set g_nexuizversion '$version-pro'\n"' default.cfg
209 if [ -n "$versiontag" ]; then
210         perl -pi -e '/^set g_nexuizversion/ and $_ = "showbrand 3\n$_"' default.cfg
211 fi
212 echo >> default.cfg
213 echo "$defaultcfg" >> default.cfg
214 7za a -mx=7 -tzip ../pro.pk3 .
215
216 cd "$tmpdir"
217 rm -rf data
218 mkdir data
219 mv data.pk3 data/data$date.pk3
220 mv common-spog.pk3 data/
221 rm -rf pro
222 mkdir pro
223 mv pro.pk3 pro/data${date}pro.pk3
224
225 cp -r "$mingwdlls"/* .
226 # fix up permissions
227 chmod 644 *.dll *.exe
228
229 mkdir Nexuiz
230 mv * Nexuiz/ || true
231
232 find . -name .svn -exec rm -rf {} \; -prune
233
234 rm -f "$zipdir/nexuiz$date$ext.zip"
235 zip $zipflags -9yr "$zipdir/nexuiz$date$ext.zip"           Nexuiz/gpl.txt Nexuiz/nexuiz* Nexuiz/Nexuiz* Nexuiz/*.dll Nexuiz/sources Nexuiz/Docs Nexuiz/data/data$date.pk3 Nexuiz/data/common-spog.pk3 Nexuiz/pro/*
236 ln -snf nexuiz$date$ext.zip "$zipdir/nexuizNEWEST.zip"
237
238 rm -f "$zipdir/nexuizengineonly$date$ext.zip"
239 zip $zipflags -9yr "$zipdir/nexuizengineonly$date$ext.zip" Nexuiz/gpl.txt Nexuiz/nexuiz* Nexuiz/Nexuiz* Nexuiz/*.dll
240 ln -snf nexuizengineonly$date$ext.zip "$zipdir/nexuizengineonlyNEWEST.zip"
241
242 rm -f "$zipdir/nexuizsource$date$ext.zip"
243 zip $zipflags -9yr "$zipdir/nexuizsource$date$ext.zip"     Nexuiz/gpl.txt                                            Nexuiz/sources
244 ln -snf nexuizsource$date$ext.zip "$zipdir/nexuizsourceNEWEST.zip"
245
246 zipdiff -o "Nexuiz/data/datapatch$date.pk3" -f "$basepk3" -t Nexuiz/data/data$date.pk3
247 mkdir -p gfx
248 if unzip "Nexuiz/data/data$date.pk3" gfx/brand.tga; then
249         zip $zipflags -9r "Nexuiz/data/datapatch$date.pk3" gfx/brand.tga
250         rm -rf gfx
251 fi
252
253 rm -f "$zipdir/nexuizpatch$date$ext.zip"
254 zip $zipflags -9yr "$zipdir/nexuizpatch$date$ext.zip"      Nexuiz/gpl.txt Nexuiz/nexuiz* Nexuiz/Nexuiz* Nexuiz/*.dll Nexuiz/sources Nexuiz/Docs Nexuiz/data/datapatch$date.pk3 Nexuiz/pro/*
255 ln -snf nexuizpatch$date$ext.zip "$zipdir/nexuizpatchNEWEST.zip"
256
257 rm -f "$zipdir/nexuizdocs$date$ext.zip"
258 zip $zipflags -9yr "$zipdir/nexuizdocs$date$ext.zip"       Nexuiz/gpl.txt Nexuiz/Docs
259 ln -snf nexuizdocs$date$ext.zip "$zipdir/nexuizdocsNEWEST.zip"
260
261 rm -f "$zipdir/nexuizdebug$date$ext.zip"
262 zip $zipflags -9yr "$zipdir/nexuizdebug$date$ext.zip"      Nexuiz/gpl.txt Nexuiz/debuginfo/* Nexuiz/sources
263 ln -snf nexuizdebug$date$ext.zip "$zipdir/nexuizdebugNEWEST.zip"