diff options
author | Derrick Hendricks <derrick@nanorex.com> | 2008-10-06 20:10:40 +0000 |
---|---|---|
committer | Derrick Hendricks <derrick@nanorex.com> | 2008-10-06 20:10:40 +0000 |
commit | ecbec03c376b32aaa02a255bf172a8af39c4b62f (patch) | |
tree | cf665f83fb2cb1a675546f8893929167c15bc60e | |
parent | f53706e400b1bd817f2c4fcb72a6b1ffa2a91e70 (diff) | |
download | nanoengineer-theirix-ecbec03c376b32aaa02a255bf172a8af39c4b62f.tar.gz nanoengineer-theirix-ecbec03c376b32aaa02a255bf172a8af39c4b62f.zip |
autobuild script for MacOSX
-rwxr-xr-x | packaging/Suite/MacOSX/autobuild_mac.sh | 228 |
1 files changed, 228 insertions, 0 deletions
diff --git a/packaging/Suite/MacOSX/autobuild_mac.sh b/packaging/Suite/MacOSX/autobuild_mac.sh new file mode 100755 index 000000000..3fb9fad4d --- /dev/null +++ b/packaging/Suite/MacOSX/autobuild_mac.sh @@ -0,0 +1,228 @@ +#!/bin/sh -x + +CUR_USER=`whoami` +WORK_AS=@INSERT_USER_NAME_HERE@ +MAXSEND=5 + +# give a warning that some things may not work right if you're not root +if [ "$CUR_USER" != "root" ] +then + echo "You really should be running this script as root." + echo "You have 10 seconds to cancel." + sleep 5 +fi + +# Set up home directory information. The home directory has to be set up to +# allow for a proper build of the software. Check the individual build files +#for information on what they require. +USERPATH=/Users/$WORK_AS +HOME=$USERPATH + +# Change into the home directory +cd || exit 1 +# Not needed, but left in for manual verification +pwd + +#Wipe out everything from any old autobuilds +if [ ! -e ~/autobuilds ] +then + mkdir ~/autobuilds || exit 1 +fi +if [ -e ~/autobuilds/MacOSX_Installers ] +then + rm -rf ~/autobuilds/MacOSX_Installers +fi +mkdir ~/autobuilds/MacOSX_Installers || exit 1 +if [ -e ~/autobuilds/tartrunk ] +then + rm -rf ~/autobuilds/tartrunk +fi +if [ -e ~/autobuilds/trunk ] +then + rm -rf ~/autobuilds/trunk +fi +if [ -e ~/autobuilds/uploads ] +then + rm -rf ~/autobuilds/uploads +fi + +# Make sure path information is set up as it is needed for the stand alone +# python needed to create "standalone" packages +PATH=/Library/Frameworks/Python.framework/Versions/Current/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin +export PATH + +# Make sure we're running with the python version expected. +PYTHON_VER=`python -c "import sys; print sys.version[:5]"` +if [ "$PYTHON_VER" != "2.4.4" ] +then + echo "Running with incorrect python version" + exit 1 +fi + +# Set up environment variables for later compiles. This is probably not needed +# but is added just in case some individual builds don't do this properly +export CPPFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.3 -I/usr/local/include -I/Developer/SDKs/MacOSX10.4u.sdk/usr/X11R6/include" +export CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.3 -I/usr/local/include -I/Developer/SDKs/MacOSX10.4u.sdk/usr/X11R6/include" +export LDFLAGS="-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk -isysroot /Developer/SDKs/MacOSX10.4u.sdk -L/usr/local/lib -L/Developer/SDKs/MacOSX10.4u.sdk/usr/X11R6/lib" +export CXXFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.3 -I/usr/local/include -I/Developer/SDKs/MacOSX10.4u.sdk/usr/X11R6/include" +export FFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.3 -I/usr/local/include -I/Developer/SDKs/MacOSX10.4u.sdk/usr/X11R6/include" +export MACOSX_DEPLOYMENT_TARGET=10.3 + +#Change into the autobuilds directory and make sure it's world access +cd ~/autobuilds || exit 1 +chmod 777 . || exit 1 + +# Download the svn tree +su - $WORK_AS -c "svn co http://polosims_svn-svn.cvsdude.com/polosims/trunk autobuilds/trunk > /tmp/svnstatus 2>&1" || exit 1 + +# Alternate way of getting the source tree (used for testing) +#cd ~/savedtrunk || exit 1 +#mkdir ~/autobuilds/trunk || exit 1 +#find . -print | cpio -pudvm ~/autobuilds/trunk || exit 1 +#cd ~/autobuilds || exit 1 + +cp $HOME/trunks/trunk/packaging/MacOSX/SV_AB_Makefile ~/autobuilds/trunk/packaging/MacOSX/SV_AB_Makefile + +# Copy versions.txt file for version information. This will be in the trunk +# under packaging later. When added, the script will check it out, change it, +# and check it back in before building. +cp /Users/$WORK_AS/versions.txt ~/autobuilds/trunk/packaging/Suite/ver_info.sh || exit 1 +chmod 755 ~/autobuilds/trunk/packaging/Suite/ver_info.sh || exit 1 +. ~/autobuilds/trunk/packaging/Suite/ver_info.sh || exit 1 + +# Increment the version number for NE1. Since this is for automatic snapshot +# builds, only the last digit should be changed +TN1=`echo $NE1_VERSION | cut -d "." -f 1` +TN2=`echo $NE1_VERSION | cut -d "." -f 2` +TN3=`echo $NE1_VERSION | cut -d "." -f 3` +TN4=`echo $NE1_VERSION | cut -d "." -f 4` +if [ "$TN3" = "" ] +then + TN3="0" +fi +if [ "$TN4" = "" ] +then + TN4="0" +fi +TN4=`expr $TN4 + 1` +NE1_VERSION="$TN1.$TN2.$TN3.$TN4" + +# Rewrite the file for later and for checkin. This is where the file will +# later be in the tree. +echo "NE1_VERSION=$NE1_VERSION" > ~/autobuilds/trunk/packaging/Suite/ver_info.sh || exit 1 +echo "GMX_VERSION=$GMX_VERSION" >> ~/autobuilds/trunk/packaging/Suite/ver_info.sh || exit 1 +echo "QMX_VERSION=$QMX_VERSION" >> ~/autobuilds/trunk/packaging/Suite/ver_info.sh || exit 1 +echo "PREF_VERSION=$PREF_VERSION" >> ~/autobuilds/trunk/packaging/Suite/ver_info.sh || exit 1 +echo "SIM_VERSION=$SIM_VERSION" >> ~/autobuilds/trunk/packaging/Suite/ver_info.sh || exit 1 + +# Get ready to do the tar builds +rm -rf /tmp/dist_tars +mkdir tartrunk || exit 1 +cd trunk || exit 1 +# Copy the trunk over so it can be worked on. +find . -print | cpio -pudvm ../tartrunk || exit 1 +cd ../tartrunk || exit 1 +cd packaging || exit 1 +# Make sure the new tree has the right version numbers too. Probably not needed +cp ~/autobuilds/trunk/packaging/Suite/ver_info.sh ~/autobuilds/tartrunk/packaging/Suite/ver_info.sh || exit 1 +./buildTars.sh || exit 1 +mv /tmp/dist_tars/*.tar.gz ~/autobuilds/MacOSX_Installers || exit 1 +sync + +# Get ready for doing the MacOSX builds +cd || exit 1 +# See if there are any prebuilds and if so, stash the directory somewhere and +# reuse the installers that we are interested in reusing. +if [ -e MacOSX_Installers ] +then + mv MacOSX_Installers MacOSX_Installers.autobuild.tmp || exit 1 + mkdir MacOSX_Installers || exit 1 + cd MacOSX_Installers.autobuild.tmp || exit 1 + if [ -e GROMACS_$GMX_VERSION.pkg ] + then + cp -R GROMACS_$GMX_VERSION.pkg ~/MacOSX_Installers || exit 1 + fi + if [ -e QuteMolX_$QMX_VERSION.pkg ] + then + cp -R QuteMolX_$QMX_VERSION.pkg ~/MacOSX_Installers || exit 1 + fi + if [ -e GROMACS_$GMX_VERSION.dmg ] + then + cp GROMACS_$GMX_VERSION.dmg ~/MacOSX_Installers || exit 1 + fi + if [ -e QuteMolX_$QMX_VERSION.dmg ] + then + cp QuteMolX_$QMX_VERSION.dmg ~/MacOSX_Installers || exit 1 + fi +else +# Else, make the directory for later use. + mkdir MacOSX_Installers || exit 1 +fi + +# Do the actual MacOSX builds now +cd ~/autobuilds || exit 1 +cd trunk || exit 1 +cd packaging/Suite || exit 1 +env +./buildMacSuite.sh || exit 1 +# After the builds are done, move them to the autobuilds area +mv ~/MacOSX_Installers/* ~/autobuilds/MacOSX_Installers || exit 1 +cd ~ || exit 1 +# If we stashed older builds, get them back so we can make sure not to +# resend files we already sent. +if [ -e MacOSX_Installers.autobuild.tmp ] +then + rm -rf MacOSX_Installers + mv MacOSX_Installers.autobuild.tmp MacOSX_Installers || exit 1 +fi +# If needed, create the directory needed for uploading to the website +if [ ! -e ~/autobuilds/uploads ] +then + mkdir ~/autobuilds/uploads || exit 1 + chown $WORK_AS ~/autobuilds/uploads || exit 1 +fi + +# See which installers are new so we know what to upload and update on the site +cd ~/autobuilds/MacOSX_Installers || exit 1 +for name in `ls *.tar.gz *.dmg` +do + if [ ! -e ~/MacOSX_Installers/$name ] + then + cp $name ~/MacOSX_Installers || exit 1 + cp $name ~/autobuilds/uploads || exit 1 + fi +done +# Don't upload pkgs files, but we still want to store them so we don't +# have to recompile all the time. +for name in `ls | grep ".pkg" | grep -v pref_mod` +do + if [ ! -e ~/MacOSX_Installers/$name ] + then + cp -R $name ~/MacOSX_Installers + fi +done + +# Exit here before sending files for test purposes +#exit 0 + +# Queue up all files for upload +cd ~/autobuilds/uploads || exit 1 +~/bin/sendandverify --reset +~/bin/sendandverify * +# See if any failed, and resend them a maximum of MAXSEND tries. MAXSEND +# includes the original send as try 1. +ERR_COUNT=$? +SEND_COUNT=1 +while [ $SEND_COUNT -le MAXSEND ] && [ $ERR_COUNT -gt 0 ] +do + echo "Resending $ERR_COUNT files." + SEND_COUNT=`expr $SEND_COUNT + 1` + ~/bin/sendandverify --resend-append + ERR_COUNT=$? +done +if [ $ERR_COUNT -gt 0 ] +then + echo "Error sending $ERR_COUNT files." +else + echo "All files sent successfully." +fi |