summaryrefslogtreecommitdiff
path: root/packaging/Suite/MacOSX/autobuild_mac.sh
blob: 3fb9fad4db58333b0e64c512f2b347e4a0c52495 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
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