17 : ${date:=`date +%Y%m%d`}
19 echo "date stamp: $date"
23 version=2-svntest-$date
30 versiontag=$versiontag
36 basepk3=$base/data20080229.pk3 # 2.4
39 nexprodir=$base/nexuiz/pro
40 dpdir=$base/darkplaces
43 buildfiles=$base/nexuiz/misc/buildfiles
44 mingwdlls=$buildfiles/w32
45 osxapps=$buildfiles/osx
46 copystrip=$buildfiles/copystrip
47 zipdiff=$base/nexuiz/misc/zipdiff
48 fteqccdir="$base/fteqcc"
52 aft="perl -I/chroot/debian-etch/usr/share/aft /chroot/debian-etch/usr/bin/aft"
57 7za a -tzip -mx=9 "$@"
61 #if [ -n "$EXPERIMENTAL" ]; then
62 # basepk3=$base/data20071231.pk3 # newer build to make smaller patches
66 # TODO normalize the builds
67 platforms='x86 amd64 osx'
84 rm -f "$fteqccdir"/*.o
85 rm -f "$fteqccdir"/*.bin
86 rsync --exclude "*.o" --exclude "*.d" --exclude "nexuiz-*" --delete-excluded --delete -zvaSHP . "$copystrip" "$fteqccdir" "$host:$path"
87 ssh "$host" ". ~/.profile && cd $path && COPYSTRIP_STRIP=$strip PATH=$path/copystrip:\$PATH make $makeflags clean nexuiz && cd ${fteqccdir##*/} && make $makeflags $fteqcc_cflags"
88 rsync --exclude "*.o" --exclude "*.d" --delete-excluded --delete -zvaSHP "$host:$path/." .
89 for P in -dedicated -sdl -glx -wgl -agl -dedicated.exe -sdl.exe .exe; do
90 [ -f nexuiz$P ] && mv nexuiz$P "$tmpdir/$prefix$P"
91 [ -f nexuiz$P-withdebug ] && mv nexuiz$P-withdebug "$tmpdir/debuginfo/$prefix$P"
95 mv "${fteqccdir##*/}"/fteqcc.exe "$tmpdir/fteqcc/$fteqccname"
98 mv "${fteqccdir##*/}"/fteqcc.bin "$tmpdir/fteqcc/$fteqccname"
106 buildon eos.thruhere.net nexuiz-linux-686 fteqcc-linux-686 /tmp/Darkplaces.build 'CC="gcc -g" DP_MODPLUG_STATIC_LIBDIR=/home/divverent/modplug-i386/lib' strip
107 buildon alientrap.org nexuiz-linux-x86_64 fteqcc-linux-x86_64 /tmp/Darkplaces.build 'CC="gcc -g -Wl,--hash-style=sysv" DP_MODPLUG_STATIC_LIBDIR=/home/divverent/modplug-x86_64/lib' strip
108 buildon alientrap.org nexuiz fteqcc.exe /tmp/Darkplaces.build 'DP_MAKE_TARGET=mingw CC="/chroot/debian-etch/usr/bin/i586-mingw32msvc-gcc -g -DSUPPORTDIRECTX -I/home/divverent/dxheaders" WINDRES=/chroot/debian-etch/usr/bin/i586-mingw32msvc-windres SDL_CONFIG=/home/divverent/sdl-win32/SDL-1.2.13/bin/sdl-config' /chroot/debian-etch/usr/bin/i586-mingw32msvc-strip
109 buildon mac.alientrap.org nexuiz-osx fteqcc-osx /tmp/Darkplaces.build 'CC="gcc -g -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk"' strip
110 mv "$tmpdir/nexuiz-osx-agl" "$tmpdir/Nexuiz.app/Contents/MacOS/nexuiz-osx-agl-bin"
111 mv "$tmpdir/nexuiz-osx-sdl" "$tmpdir/Nexuiz-SDL.app/Contents/MacOS/nexuiz-osx-sdl-bin"
115 while [ -f "$zipdir/nexuiz$date$i$ext.zip" ]; do
119 i=`echo "$i" | tr a-y b-z`
124 echo "Using build name nexuiz$date$ext"
131 conflicts=`find "$dpdir" "$nexdir" -name '*.orig' -o -name '*.rej' -o -name '*.mine' -o -name '.#*' -o -name '.*~'`
132 if [ -n "$conflicts" ]; then
133 echo "CONFLICTS OR UNNEEDED FILES HAVE BEEN FOUND!"
134 echo "NOT PROCEEDING"
148 if [ -s patches/series ]; then
149 quilt push -a # apply all patches
152 cp -r "$osxapps"/*.app "$tmpdir"
153 mkdir "$tmpdir/debuginfo"
154 mkdir "$tmpdir/fteqcc"
156 svn export "$fteqccdir" "$tmpdir/fteqcc/source"
157 svn info "$fteqccdir" > "$tmpdir/fteqcc/source/fteqcc-base-revision.txt"
158 fteqccrev=$((`grep "Last Changed Rev:" "$tmpdir/fteqcc/source/fteqcc-base-revision.txt" | cut -d : -f 2`))
159 echo "fteqcc rev $fteqccrev"
161 rm -f *.exe nexuiz-* *-withdebug* *.o
164 rm -f *.exe nexuiz-* *-withdebug '.#'* *.o
165 rm -rf fteqcc copystrip
169 cp "$nexdir/"nexuiz-*.sh "$tmpdir/"
170 cp "$nexdir/gpl.txt" "$tmpdir/"
173 svn export . "$tmpdir/data"
174 svn info . > "$tmpdir/data/nexuiz-data-base-revision.txt"
175 svn log > "$tmpdir/data/ChangeLog"
178 svn export . "$tmpdir/pro"
181 svn export . "$tmpdir/Docs"
184 mkdir -p "$tmpdir/sources"
185 mk7z ../sources/gamesource$date.zip qcsrc nexuiz-data-base-revision.txt ChangeLog
188 svn export . "$tmpdir/darkplaces"
189 svn info > "$tmpdir/darkplaces/nexuiz-base-revision.txt"
190 svn diff > "$tmpdir/darkplaces/nexuiz-engine-changes.diff"
191 svn log > "$tmpdir/darkplaces/ChangeLog"
194 mk7z "$tmpdir/sources/enginesource$date.zip" "darkplaces"
198 zip -9r "$tmpdir/sources/fteqcc-binaries-and-source-rev$fteqccrev.zip" "fteqcc"
206 make FTEQCC="$fteqccdir/fteqcc.bin"
208 rm -rf "$tmpdir/data/qcsrc"
211 perl -pi -e '/^#---SET nexversion=([0-9.]*)$/ and $_ = "#---SET nexversion='$version'\n"' FAQ.aft
212 perl -pi -e '/^\s*Version ([0-9.]*)<\/div>$/ and $_ = "Version '$version'</div>\n"' Readme.htm
213 cp "$dpdir/darkplaces.txt" .
219 mv common-spog.pk3 ..
220 perl -pi -e '/^set g_nexuizversion "?([0-9.]*)[^"]*"?/ and $_ = "set g_nexuizversion '$version'\n"' default.cfg
221 if [ -n "$versiontag" ]; then
222 perl -pi -e '/^set g_nexuizversion/ and $_ = "showbrand 3\n$_"' default.cfg
223 cp "$buildfiles/brand/$versiontag.tga" gfx/brand.tga
226 echo "$defaultcfg" >> default.cfg
230 perl -pi -e '/^set g_nexuizversion "?([0-9.]*)[^"]*"?/ and $_ = "set g_nexuizversion '$version-pro'\n"' default.cfg
231 if [ -n "$versiontag" ]; then
232 perl -pi -e '/^set g_nexuizversion/ and $_ = "showbrand 3\n$_"' default.cfg
235 echo "$defaultcfg" >> default.cfg
241 mv data.pk3 data/data$tag$date.pk3
242 mv common-spog.pk3 data/
245 mv pro.pk3 pro/data$tag${date}pro.pk3
247 cp -r "$mingwdlls"/* .
249 chmod 644 *.dll *.exe
254 find . -name .svn -exec rm -rf {} \; -prune
256 rm -f "$zipdir/nexuiz$date$ext.zip"
257 zip $zipflags -9yr "$zipdir/nexuiz$date$ext.zip" Nexuiz/gpl.txt Nexuiz/nexuiz* Nexuiz/Nexuiz* Nexuiz/*.dll Nexuiz/sources Nexuiz/Docs Nexuiz/data/data$tag$date.pk3 Nexuiz/data/common-spog.pk3 Nexuiz/pro/*
258 ln -snf nexuiz$date$ext.zip "$zipdir/nexuiz-$newest.zip"
260 rm -f "$zipdir/nexuizengineonly$date$ext.zip"
261 zip $zipflags -9yr "$zipdir/nexuizengineonly$date$ext.zip" Nexuiz/gpl.txt Nexuiz/nexuiz* Nexuiz/Nexuiz* Nexuiz/*.dll
262 ln -snf nexuizengineonly$date$ext.zip "$zipdir/nexuizengineonly-$newest.zip"
264 rm -f "$zipdir/nexuizsource$date$ext.zip"
265 zip $zipflags -9yr "$zipdir/nexuizsource$date$ext.zip" Nexuiz/gpl.txt Nexuiz/sources
266 ln -snf nexuizsource$date$ext.zip "$zipdir/nexuizsource-$newest.zip"
268 # TODO remove these excludes after the version after 2.4.2
269 $zipdiff -o "Nexuiz/data/datapatch$tag$date.pk3" -f "$basepk3" -t Nexuiz/data/data$tag$date.pk3 \
270 -x 'sound/cdtracks/track*.ogg' \
271 -x 'sound/cdtracks/brainsukker.ogg' \
272 -x 'sound/cdtracks/breakdown-easy.ogg' \
273 -x 'sound/cdtracks/calling-bogus.ogg' \
274 -x 'sound/cdtracks/chaos-fog.ogg' \
275 -x 'sound/cdtracks/digital-pursuit.ogg' \
276 -x 'sound/cdtracks/infight.ogg' \
277 -x 'sound/cdtracks/neuronal-diving.ogg' \
278 -x 'sound/cdtracks/subcities.ogg' \
279 -x 'sound/cdtracks/thru-the-mirror.ogg'
280 mkdir -p sound/cdtracks
281 ln -snf track001.ogg sound/cdtracks/digital-pursuit.ogg
282 ln -snf track002.ogg sound/cdtracks/breakdown-easy.ogg
283 ln -snf track003.ogg sound/cdtracks/brainsukker.ogg
284 ln -snf track004.ogg sound/cdtracks/chaos-fog.ogg
285 ln -snf track005.ogg sound/cdtracks/infight.ogg
286 ln -snf track006.ogg sound/cdtracks/neuronal-diving.ogg
287 ln -snf track007.ogg sound/cdtracks/subcities.ogg
288 ln -snf track008.ogg sound/cdtracks/thru-the-mirror.ogg
289 ln -snf track009.ogg sound/cdtracks/calling-bogus.ogg
290 zip -9yr "Nexuiz/data/datapatch$tag$date.pk3" sound/cdtracks/*
292 [ -n "$hotbasepk3" ] && $zipdiff -o "Nexuiz/data/datapatch$tag$date""hotfix.pk3" -f "$hotbasepk3" -t Nexuiz/data/data$tag$date.pk3
294 if unzip "Nexuiz/data/data$tag$date.pk3" gfx/brand.tga; then
295 zip $zipflags -9r "Nexuiz/data/datapatch$tag$date.pk3" gfx/brand.tga
296 [ -n "$hotbasepk3" ] && zip $zipflags -9r "Nexuiz/data/datapatch$tag$date""hotfix.pk3" gfx/brand.tga
300 rm -f "$zipdir/nexuizpatch$date$ext.zip"
301 zip $zipflags -9yr "$zipdir/nexuizpatch$date$ext.zip" Nexuiz/gpl.txt Nexuiz/nexuiz* Nexuiz/Nexuiz* Nexuiz/*.dll Nexuiz/sources Nexuiz/Docs Nexuiz/data/datapatch$tag$date.pk3 Nexuiz/pro/*
302 ln -snf nexuizpatch$date$ext.zip "$zipdir/nexuizpatch-$newest.zip"
304 [ -n "$hotbasepk3" ] && rm -f "$zipdir/nexuizhotfix$date$ext.zip"
305 [ -n "$hotbasepk3" ] && zip $zipflags -9yr "$zipdir/nexuizhotfix$date$ext.zip" Nexuiz/gpl.txt Nexuiz/nexuiz* Nexuiz/Nexuiz* Nexuiz/*.dll Nexuiz/sources Nexuiz/Docs Nexuiz/data/datapatch$tag$date""hotfix.pk3 Nexuiz/pro/*
306 [ -n "$hotbasepk3" ] && ln -snf nexuizhotfix$date$ext.zip "$zipdir/nexuizhotfix-$newest.zip"
308 rm -f "$zipdir/nexuizdocs$date$ext.zip"
309 zip $zipflags -9yr "$zipdir/nexuizdocs$date$ext.zip" Nexuiz/gpl.txt Nexuiz/Docs
310 ln -snf nexuizdocs$date$ext.zip "$zipdir/nexuizdocs-$newest.zip"
312 rm -f "$zipdir/nexuizdebug$date$ext.zip"
313 zip $zipflags -9yr "$zipdir/nexuizdebug$date$ext.zip" Nexuiz/gpl.txt Nexuiz/debuginfo/* Nexuiz/sources
314 ln -snf nexuizdebug$date$ext.zip "$zipdir/nexuizdebug-$newest.zip"
316 case "$versiontag" in
322 NOTE: This is a RELEASE BUILD.
324 To upload and finish the build, these things have to be done:
332 - Turn on "developer 1"; watch out for suspicious messages.
333 - While testing, make sure all campaign levels are tested. In CTF/KH levels,
334 try to do a capture. After that, finish the game by prvm_edictset server 1
336 - Play on a server running the new code. Ideally, that server should be public
337 and "somewhat compatible" to old clients, and some other players should be
339 - Post the build on the forum as a test release. E.g. run this script again
340 with the "version" variable NOT SET, so the build gets marked "testing only",
341 and upload it and post it on the forum for testing. Mention the test server
342 that is already running the new code. Wait for at least one week for critical
344 - If needed, fix the reported bugs and re-run this script for a release build.
345 Possibly repeat the testing process.
346 - Upload the "final" build you have just made to Sourceforge (upload.sf.net,
347 incoming). Use the naming scheme nexuiz-25.zip, nexuizpatch-24-to-25.zip
348 - Make the download available on sourceforge.
349 - Announce the build on the forum; update the downloads website. Note that the
350 download may be still unavailable because of the SF mirror system.
351 - Wait for the mirrors to catch up.
352 - Edit the website: make a new news item for the new release, change the logo
353 image in the top left for the new version (ask [-z-]).