mirror of
https://github.com/DrBeef/Raze.git
synced 2024-11-16 09:21:12 +00:00
0c2157f5eb
git-svn-id: https://svn.eduke32.com/eduke32@1842 1a8010ca-5511-0410-912e-c29ae57300e0
159 lines
4.4 KiB
Bash
Executable file
159 lines
4.4 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
# some paths
|
|
top=/var/www/synthesis/eduke32
|
|
lockfile=$top/synthesis_building
|
|
source=eduke32
|
|
output=/var/www/dukeworld.duke4.net/eduke32/synthesis
|
|
make=( make PLATFORM=WINDOWS CC='wine gcc' CXX='wine g++' AS='wine nasm' RC='wine windres' STRIP='wine strip' AR='wine ar' RANLIB='wine ranlib' PRETTY_OUTPUT=0 NEDMALLOC=0 )
|
|
clean=veryclean
|
|
|
|
# the following file paths are relative to $source
|
|
targets=( eduke32.exe mapster32.exe )
|
|
bin_packaged=( eduke32.exe eduke32.debug.exe mapster32.exe mapster32.debug.exe backtrace.dll libiconv2.dll libintl3.dll SEHELP.HLP STHELP.HLP names.h buildlic.txt GNU.TXT m32help.hlp nedmalloc.dll samples/* )
|
|
not_src_packaged=( psd source/jaudiolib/third-party/vorbis.framework/Versions/A/vorbis Apple )
|
|
|
|
# group that owns the resulting packages
|
|
group=dukeworld
|
|
|
|
# some variables
|
|
dobuild=
|
|
|
|
# controls resulting package filenames... will support linux later
|
|
basename=eduke32
|
|
platform=win32
|
|
|
|
# if the output dir doesn't exist, create it
|
|
if [ ! -e $output ]
|
|
then
|
|
mkdir -p $output
|
|
fi
|
|
|
|
if [ -f $lockfile ]
|
|
then
|
|
echo "Build already in progress!"
|
|
exit
|
|
else
|
|
touch $lockfile
|
|
fi
|
|
|
|
cd $top
|
|
|
|
# update the code repository and get the last revision number from SVN
|
|
head=`svn update | tail -n1 | awk '{ print $NF }' | cut -d. -f1`
|
|
echo "HEAD is revision $head."
|
|
|
|
lastrevision=`ls -A1 $output | tail -n1 | cut -d- -f2`
|
|
|
|
# if the output dir is empty, we build no matter what
|
|
if [ ! $lastrevision ]
|
|
then
|
|
echo "No builds yet."
|
|
dobuild=1
|
|
else
|
|
echo "Last built revision is $lastrevision."
|
|
|
|
# if the last built revision is less than HEAD, we also build
|
|
if [ $lastrevision -lt $head ]
|
|
then
|
|
echo "Need a new build."
|
|
dobuild=1
|
|
fi
|
|
fi
|
|
|
|
if [ $dobuild ]
|
|
then
|
|
echo "Launching a build..."
|
|
|
|
cd $top/$source
|
|
|
|
# remove possible old debug binaries
|
|
echo rm eduke32.debug.exe
|
|
rm eduke32.debug.exe
|
|
echo rm mapster32.debug.exe
|
|
rm mapster32.debug.exe
|
|
|
|
# throw the svn revision into a header. this is ugly.
|
|
echo "const char *s_buildRev = \"r$head\";" > source/rev.h
|
|
# clean the tree and build debug first
|
|
echo "${make[@]}" RELEASE=0 $clean all
|
|
"${make[@]}" RELEASE=0 $clean all
|
|
|
|
# make sure all the targets were produced
|
|
for i in "${targets[@]}"; do
|
|
if [ ! -e $i ]
|
|
then
|
|
echo "Build failed! Bailing out..."
|
|
rm -r $lockfile
|
|
exit
|
|
fi
|
|
done
|
|
|
|
# move the debug binaries out of the way
|
|
echo mv eduke32.exe eduke32.debug.exe
|
|
mv eduke32.exe eduke32.debug.exe
|
|
echo mv mapster32.exe mapster32.debug.exe
|
|
mv mapster32.exe mapster32.debug.exe
|
|
|
|
# clean the tree and build release
|
|
echo "${make[@]}" $clean all
|
|
"${make[@]}" $clean all
|
|
|
|
# make sure all the targets were produced
|
|
for i in "${targets[@]}"; do
|
|
if [ ! -e $i ]
|
|
then
|
|
echo "Build failed! Bailing out..."
|
|
rm -r $lockfile
|
|
exit
|
|
fi
|
|
done
|
|
|
|
# get the date in the YYYYMMDD format (ex: 20091001)
|
|
date=`date +%Y%m%d`
|
|
|
|
# create the output directory
|
|
mkdir $output/$date-$head
|
|
|
|
# package the binary snapshot
|
|
echo zip -9 $output/$date-$head/${basename}_${platform}_$date-$head.zip ${bin_packaged[@]}
|
|
zip -9 $output/$date-$head/${basename}_${platform}_$date-$head.zip ${bin_packaged[@]}
|
|
|
|
# hack to restore [e]obj/keep.me
|
|
echo svn update -r $head
|
|
svn update -r $head
|
|
|
|
# export the source tree into the output directory
|
|
svn export . $output/$date-$head/${basename}_$date-$head
|
|
echo svn export . $output/$date-$head/${basename}_$date-$head
|
|
|
|
# package the source
|
|
cd $output/$date-$head
|
|
|
|
# first remove the unnecessary files
|
|
for i in "${not_src_packaged[@]}"; do
|
|
echo rm -r ${basename}_$date-$head/$i
|
|
rm -r ${basename}_$date-$head/$i
|
|
done
|
|
|
|
echo tar cjf ${basename}_src_$date-$head.tar.bz2 ${basename}_$date-$head
|
|
tar cjf ${basename}_src_$date-$head.tar.bz2 ${basename}_$date-$head
|
|
rm -r ${basename}_$date-$head
|
|
|
|
# output the changelog since last snapshot in the output directory
|
|
if [ $lastrevision ]
|
|
then
|
|
cd $top/$source
|
|
svn log -r $head:$lastrevision > $output/$date-$head/ChangeLog.txt
|
|
fi
|
|
|
|
# hack for our served directory structure... really belongs elsewhere,
|
|
# like in whatever script executes this one
|
|
chmod -R g+w $output/$date-$head
|
|
chown -R :$group $output/$date-$head
|
|
|
|
rm -r $lockfile
|
|
else
|
|
echo "Nothing to do."
|
|
rm -r $lockfile
|
|
fi
|