6 # pw=foo extract password
7 # version=2.5 make a FINAL build
8 # tag=FOO insert FOO before the date in build names
12 # customizable specific stuff
13 netradiant_release=1.5.0-svn227
14 basepk3=$base/data20080229.pk3 # 2.4
17 havocdir=$base/nexuiz/havoc
18 dpdir=$base/darkplaces
21 buildfiles=$base/nexuiz/misc/buildfiles
22 mingwdlls=$buildfiles/w32
23 osxapps=$buildfiles/osx
24 copystrip=$buildfiles/copystrip
25 zipdiff=$base/nexuiz/misc/tools/zipdiff
26 fteqccdir="$base/fteqcc"
30 aft="perl -I/chroot/debian-etch/usr/share/aft /chroot/debian-etch/usr/bin/aft"
31 # end system specific stuff
42 : ${date:=`date +%Y%m%d`}
44 echo "date stamp: $date"
48 version=2-svntest-$date
55 versiontag=$versiontag
63 7za a -tzip -mx=9 "$@"
67 #if [ -n "$EXPERIMENTAL" ]; then
68 # basepk3=$base/data20071231.pk3 # newer build to make smaller patches
72 # TODO normalize the builds
73 platforms='x86 amd64 osx'
90 rm -f "$fteqccdir"/*.o
91 rm -f "$fteqccdir"/*.bin
92 rsync --exclude "*.o" --exclude "*.d" --exclude "nexuiz-*" --delete-excluded --delete -zvaSHP . "$copystrip" "$fteqccdir" "$host:$path"
93 ssh "$host" ". ~/.profile && cd $path && COPYSTRIP_STRIP=$strip PATH=$path/copystrip:\$PATH make $makeflags clean nexuiz && cd ${fteqccdir##*/} && make $makeflags $fteqcc_cflags"
94 rsync --exclude "*.o" --exclude "*.d" --delete-excluded --delete -zvaSHP "$host:$path/." .
95 for P in -dedicated -sdl -glx -wgl -agl -dedicated.exe -sdl.exe .exe; do
96 [ -f nexuiz$P ] && mv nexuiz$P "$tmpdir/$prefix$P"
97 [ -f nexuiz$P-withdebug ] && mv nexuiz$P-withdebug "$tmpdir/debuginfo/$prefix$P"
101 mv "${fteqccdir##*/}"/fteqcc.exe "$tmpdir/fteqcc/$fteqccname"
104 mv "${fteqccdir##*/}"/fteqcc.bin "$tmpdir/fteqcc/$fteqccname"
112 buildon nexmacbuild nexuiz-osx fteqcc-osx /tmp/Darkplaces.build 'CC="gcc -g -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4"' strip
113 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
114 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
115 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
116 mv "$tmpdir/nexuiz-osx-agl" "$tmpdir/Nexuiz.app/Contents/MacOS/nexuiz-osx-agl-bin"
117 mv "$tmpdir/nexuiz-osx-sdl" "$tmpdir/Nexuiz-SDL.app/Contents/MacOS/nexuiz-osx-sdl-bin"
122 while [ -f "$zipdir/nexuiz$date$i$ext.zip" ]; do
126 i=`echo "$i" | tr a-y b-z`
131 echo "Using build name nexuiz$date$ext"
135 conflicts=`find "$dpdir" "$nexdir" -name '*.orig' -o -name '*.rej' -o -name '*.mine' -o -name '.#*' -o -name '.*~'`
136 if [ -n "$conflicts" ]; then
137 echo "CONFLICTS OR UNNEEDED FILES HAVE BEEN FOUND!"
138 echo "NOT PROCEEDING"
150 # clean up and patch DP
154 if [ -s patches/series ]; then
155 quilt push -a # apply all patches
158 # prepare directory structure
159 cp -r "$osxapps"/*.app "$tmpdir"
160 mkdir "$tmpdir/debuginfo"
161 mkdir "$tmpdir/fteqcc"
163 # prepare fteqcc build
164 svn export "$fteqccdir" "$tmpdir/fteqcc/source"
165 svn info "$fteqccdir" > "$tmpdir/fteqcc/source/fteqcc-base-revision.txt"
166 fteqccrev=$((`grep "Last Changed Rev:" "$tmpdir/fteqcc/source/fteqcc-base-revision.txt" | cut -d : -f 2`))
167 echo "fteqcc rev $fteqccrev"
169 # build all executables
170 rm -f *.exe nexuiz-* *-withdebug* *.o
173 rm -f *.exe nexuiz-* *-withdebug '.#'* *.o
174 rm -rf fteqcc copystrip
177 # move shell scripts and license
179 cp "$nexdir/"nexuiz-*.sh "$tmpdir/"
180 cp "$nexdir/gpl.txt" "$tmpdir/"
181 cp "$nexdir/readme.html" "$tmpdir/"
185 svn export . "$tmpdir/data"
186 svn info . > "$tmpdir/data/nexuiz-data-base-revision.txt"
187 svn log > "$tmpdir/data/ChangeLog"
191 svn export . "$tmpdir/havoc"
195 svn export . "$tmpdir/Docs"
199 svn export . "$tmpdir/server"
203 mkdir -p "$tmpdir/sources"
204 mk7z ../sources/gamesource$date.zip qcsrc nexuiz-data-base-revision.txt ChangeLog
208 svn export . "$tmpdir/darkplaces"
209 svn info > "$tmpdir/darkplaces/nexuiz-base-revision.txt"
210 svn diff > "$tmpdir/darkplaces/nexuiz-engine-changes.diff"
211 svn log > "$tmpdir/darkplaces/ChangeLog"
213 mk7z "$tmpdir/sources/enginesource$date.zip" "darkplaces"
216 # make fteqcc archive
218 zip -9r "$tmpdir/sources/fteqcc-binaries-and-source-rev$fteqccrev.zip" "fteqcc"
226 # make local compiler
228 make FTEQCC="$fteqccdir/fteqcc.bin"
231 rm -rf "$tmpdir/data/qcsrc"
233 cp "$dpdir/darkplaces.txt" .
235 mv common-spog.pk3 ..
236 perl -pi -e '/^set g_nexuizversion "?([0-9.]*)[^"]*"?/ and $_ = "set g_nexuizversion '$version'\n"' defaultNexuiz.cfg
237 if [ -z "$versiontag" ]; then
238 perl -pi -e 'm|^//!<showbrand| .. m|^//!>showbrand| and $_ = "";' defaultNexuiz.cfg
241 echo >> defaultNexuiz.cfg
242 echo "$defaultcfg" >> defaultNexuiz.cfg
251 mv data.pk3 data/data$tag$date.pk3
252 mv common-spog.pk3 data/
255 mv havoc.pk3 havoc/data$tag${date}havoc.pk3
257 cp -r "$mingwdlls"/* .
259 chmod 644 *.dll *.exe
263 wget http://www.icculus.org/netradiant/files/netradiant-${netradiant_release}-win32.zip
264 #echo "Downloading netradiant, press enter and type the PWs"
266 #scp divverent@icculus.org:netradiant-webspace/files/netradiant-${netradiant_release}-win32.zip .
267 unzip netradiant-${netradiant_release}-win32.zip
268 mv NetRadiant netradiant-${netradiant_release}-win32
269 rm -f netradiant-${netradiant_release}-win32.zip
270 wget http://www.icculus.org/netradiant/files/netradiant-${netradiant_release}-osxintel.zip
271 #scp divverent@icculus.org:netradiant-webspace/files/netradiant-${netradiant_release}-osxintel.zip .
272 unzip netradiant-${netradiant_release}-osxintel.zip
273 mv NetRadiant.app NetRadiant-${netradiant_release}-osxintel.app
274 rm -f netradiant-${netradiant_release}-osxintel.zip
275 cat >> unsupported.txt <<EOF
276 This directory contains NetRadiant, a stabilized Q3 map editor,
\r
277 configured for Nexuiz.
\r
279 It is not officially supported by Alientrap.
\r
281 Website: http://www.icculus.org/netradiant/
\r
285 # make main structure
289 find . -name .svn -exec rm -rf {} \; -prune
291 rm -f "$zipdir/nexuiz$date$ext.zip"
292 zip $zipflags -9yr "$zipdir/nexuiz$date$ext.zip" Nexuiz/gpl.txt Nexuiz/nexuiz* Nexuiz/Nexuiz* Nexuiz/*.dll Nexuiz/sources Nexuiz/Docs Nexuiz/readme.html Nexuiz/server Nexuiz/data/data$tag$date.pk3 Nexuiz/data/common-spog.pk3 Nexuiz/havoc/* Nexuiz/extra/*
293 ln -snf nexuiz$date$ext.zip "$zipdir/nexuiz-$newest.zip"
295 rm -f "$zipdir/nexuizengineonly$date$ext.zip"
296 zip $zipflags -9yr "$zipdir/nexuizengineonly$date$ext.zip" Nexuiz/gpl.txt Nexuiz/nexuiz* Nexuiz/Nexuiz* Nexuiz/*.dll
297 ln -snf nexuizengineonly$date$ext.zip "$zipdir/nexuizengineonly-$newest.zip"
299 rm -f "$zipdir/nexuizsource$date$ext.zip"
300 zip $zipflags -9yr "$zipdir/nexuizsource$date$ext.zip" Nexuiz/gpl.txt Nexuiz/sources
301 ln -snf nexuizsource$date$ext.zip "$zipdir/nexuizsource-$newest.zip"
303 # TODO remove these excludes after the version after 2.4.2
304 $zipdiff -o "Nexuiz/data/datapatch$tag$date.pk3" -f "$basepk3" -t Nexuiz/data/data$tag$date.pk3 \
305 -x 'sound/cdtracks/track*.ogg' \
306 -x 'sound/cdtracks/brainsukker.ogg' \
307 -x 'sound/cdtracks/breakdown-easy.ogg' \
308 -x 'sound/cdtracks/calling-bogus.ogg' \
309 -x 'sound/cdtracks/chaos-fog.ogg' \
310 -x 'sound/cdtracks/digital-pursuit.ogg' \
311 -x 'sound/cdtracks/infight.ogg' \
312 -x 'sound/cdtracks/neuronal-diving.ogg' \
313 -x 'sound/cdtracks/subcities.ogg' \
314 -x 'sound/cdtracks/thru-the-mirror.ogg'
315 mkdir -p sound/cdtracks
316 ln -snf track001.ogg sound/cdtracks/digital-pursuit.ogg
317 ln -snf track002.ogg sound/cdtracks/breakdown-easy.ogg
318 ln -snf track003.ogg sound/cdtracks/brainsukker.ogg
319 ln -snf track004.ogg sound/cdtracks/chaos-fog.ogg
320 ln -snf track005.ogg sound/cdtracks/infight.ogg
321 ln -snf track006.ogg sound/cdtracks/neuronal-diving.ogg
322 ln -snf track007.ogg sound/cdtracks/subcities.ogg
323 ln -snf track008.ogg sound/cdtracks/thru-the-mirror.ogg
324 ln -snf track009.ogg sound/cdtracks/calling-bogus.ogg
325 zip -9yr "Nexuiz/data/datapatch$tag$date.pk3" sound/cdtracks/*
327 [ -n "$hotbasepk3" ] && $zipdiff -o "Nexuiz/data/datapatch$tag$date""hotfix.pk3" -f "$hotbasepk3" -t Nexuiz/data/data$tag$date.pk3
329 if unzip "Nexuiz/data/data$tag$date.pk3" gfx/brand.tga; then
330 zip -9r "Nexuiz/data/datapatch$tag$date.pk3" gfx/brand.tga
331 [ -n "$hotbasepk3" ] && zip -9r "Nexuiz/data/datapatch$tag$date""hotfix.pk3" gfx/brand.tga
335 rm -f "$zipdir/nexuizpatch$date$ext.zip"
336 zip $zipflags -9yr "$zipdir/nexuizpatch$date$ext.zip" Nexuiz/gpl.txt Nexuiz/nexuiz* Nexuiz/Nexuiz* Nexuiz/*.dll Nexuiz/sources Nexuiz/Docs Nexuiz/readme.html Nexuiz/server Nexuiz/data/datapatch$tag$date.pk3 Nexuiz/havoc/*
337 ln -snf nexuizpatch$date$ext.zip "$zipdir/nexuizpatch-$newest.zip"
339 [ -n "$hotbasepk3" ] && rm -f "$zipdir/nexuizhotfix$date$ext.zip"
340 [ -n "$hotbasepk3" ] && zip $zipflags -9yr "$zipdir/nexuizhotfix$date$ext.zip" Nexuiz/gpl.txt Nexuiz/nexuiz* Nexuiz/Nexuiz* Nexuiz/*.dll Nexuiz/sources Nexuiz/Docs Nexuiz/readme.html Nexuiz/server Nexuiz/data/datapatch$tag$date""hotfix.pk3 Nexuiz/havoc/*
341 [ -n "$hotbasepk3" ] && ln -snf nexuizhotfix$date$ext.zip "$zipdir/nexuizhotfix-$newest.zip"
343 rm -f "$zipdir/nexuizdocs$date$ext.zip"
344 zip $zipflags -9yr "$zipdir/nexuizdocs$date$ext.zip" Nexuiz/gpl.txt Nexuiz/Docs Nexuiz/readme.html
345 ln -snf nexuizdocs$date$ext.zip "$zipdir/nexuizdocs-$newest.zip"
347 rm -f "$zipdir/nexuizdebug$date$ext.zip"
348 zip $zipflags -9yr "$zipdir/nexuizdebug$date$ext.zip" Nexuiz/gpl.txt Nexuiz/debuginfo/* Nexuiz/sources
349 ln -snf nexuizdebug$date$ext.zip "$zipdir/nexuizdebug-$newest.zip"
351 case "$versiontag" in
357 NOTE: This is a RELEASE BUILD.
359 To upload and finish the build, these things have to be done:
367 - Turn on "developer 1"; watch out for suspicious messages.
368 - While testing, make sure all campaign levels are tested. In CTF/KH levels,
369 try to do a capture. After that, finish the game by prvm_edictset server 1
371 - Play on a server running the new code. Ideally, that server should be public
372 and "somewhat compatible" to old clients, and some other players should be
374 - Post the build on the forum as a test release. E.g. run this script again
375 with the "version" variable NOT SET, so the build gets marked "testing only",
376 and upload it and post it on the forum for testing. Mention the test server
377 that is already running the new code. Wait for at least one week for critical
379 - If needed, fix the reported bugs and re-run this script for a release build.
380 Possibly repeat the testing process.
381 - Upload the "final" build you have just made to Sourceforge (upload.sf.net,
382 incoming). Use the naming scheme nexuiz-25.zip, nexuizpatch-24-to-25.zip
383 - Make the download available on sourceforge.
384 - Announce the build on the forum; update the downloads website. Note that the
385 download may be still unavailable because of the SF mirror system.
386 - Wait for the mirrors to catch up.
387 - Edit the website: make a new news item for the new release, change the logo
388 image in the top left for the new version (ask [-z-]).