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-svn358
14 basepk3=$base/data20090403.pk3 # 2.5
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/data$tag$date""patch.pk3" -f "$basepk3" -t Nexuiz/data/data$tag$date.pk3
305 [ -n "$hotbasepk3" ] && $zipdiff -o "Nexuiz/data/data$tag$date""hotfix.pk3" -f "$hotbasepk3" -t Nexuiz/data/data$tag$date.pk3
307 if unzip "Nexuiz/data/data$tag$date.pk3" gfx/brand.tga; then
308 zip -9r "Nexuiz/data/data$tag$date""patch.pk3" gfx/brand.tga
309 [ -n "$hotbasepk3" ] && zip -9r "Nexuiz/data/data$tag$date""hotfix.pk3" gfx/brand.tga
313 rm -f "$zipdir/nexuizpatch$date$ext.zip"
314 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/data$tag$date""patch.pk3 Nexuiz/havoc/*
315 ln -snf nexuizpatch$date$ext.zip "$zipdir/nexuizpatch-$newest.zip"
317 [ -n "$hotbasepk3" ] && rm -f "$zipdir/nexuizhotfix$date$ext.zip"
318 [ -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/data$tag$date""hotfix.pk3 Nexuiz/havoc/*
319 [ -n "$hotbasepk3" ] && ln -snf nexuizhotfix$date$ext.zip "$zipdir/nexuizhotfix-$newest.zip"
321 rm -f "$zipdir/nexuizdocs$date$ext.zip"
322 zip $zipflags -9yr "$zipdir/nexuizdocs$date$ext.zip" Nexuiz/gpl.txt Nexuiz/Docs Nexuiz/readme.html
323 ln -snf nexuizdocs$date$ext.zip "$zipdir/nexuizdocs-$newest.zip"
325 rm -f "$zipdir/nexuizdebug$date$ext.zip"
326 zip $zipflags -9yr "$zipdir/nexuizdebug$date$ext.zip" Nexuiz/gpl.txt Nexuiz/debuginfo/* Nexuiz/sources
327 ln -snf nexuizdebug$date$ext.zip "$zipdir/nexuizdebug-$newest.zip"
329 case "$versiontag" in
335 NOTE: This is a RELEASE BUILD.
337 To upload and finish the build, these things have to be done:
345 - Turn on "developer 1"; watch out for suspicious messages.
346 - While testing, make sure all campaign levels are tested. In CTF/KH levels,
347 try to do a capture. After that, finish the game by prvm_edictset server 1
349 - Play on a server running the new code. Ideally, that server should be public
350 and "somewhat compatible" to old clients, and some other players should be
352 - Post the build on the forum as a test release. E.g. run this script again
353 with the "version" variable NOT SET, so the build gets marked "testing only",
354 and upload it and post it on the forum for testing. Mention the test server
355 that is already running the new code. Wait for at least one week for critical
357 - If needed, fix the reported bugs and re-run this script for a release build.
358 Possibly repeat the testing process.
359 - Upload the "final" build you have just made to Sourceforge (upload.sf.net,
360 incoming). Use the naming scheme nexuiz-25.zip, nexuizpatch-24-to-25.zip
361 - Make the download available on sourceforge.
362 - Announce the build on the forum; update the downloads website. Note that the
363 download may be still unavailable because of the SF mirror system.
364 - Wait for the mirrors to catch up.
365 - Edit the website: make a new news item for the new release, change the logo
366 image in the top left for the new version (ask [-z-]).