]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/distrib/all/build-all
Added ability to also do a remote build on the Jaguar machine
[wxWidgets.git] / wxPython / distrib / all / build-all
index 4358b6c390e9d4e80e6963d65a493555110c14ad..e224ebce19571f4808c240b85604a7e5fd50fe24 100755 (executable)
@@ -14,36 +14,21 @@ set -o errexit
 # to remote hosts
 STAGING_DIR=./BUILD
 
-# host name of the machine to use for windows builds
-WIN_HOST=cyclops
-
-# local dir (from the poerspecitve of the master machine) of the shared 
-# build dir on the windows machine, plus how to mount it there.  If the 
-# [u]mount commands are empty then WIN_SHARED will be used directly.
-WIN_SHARED=./tmp/mnt
-WIN_MOUNT="smbmount //$WIN_HOST/BUILD $WIN_SHARED -o credentials=/etc/samba/auth.cyclops.robind,dmask=755,fmask=644"
-WIN_UMOUNT="smbumount $WIN_SHARED"
-
-# Where is that dir from the remote machine's perspective?
-WIN_SHARED_REMOTE=/c/BUILD
-
 
+# host name of the machine to use for windows builds
+WIN_HOST=beast
+# Where is the build dir from the remote machine's perspective?
+WIN_BUILD=/c/BUILD
 
-# Same as the above
-OSX_HOST=bigmac
-OSX_SHARED=./tmp/mnt/BUILD
-OSX_MOUNT="smbmount //$OSX_HOST/robind ./tmp/mnt -o credentials=/etc/samba/auth.bigmac.robind,dmask=755,fmask=644"
-OSX_UMOUNT="smbumount ./tmp/mnt"
-OSX_SHARED_REMOTE=/Users/robind/BUILD
 
+# Just like the above
+OSX_HOST_panther=bigmac
+OSX_HOST_jaguar=whopper
+OSX_BUILD=/tmp/BUILD
 
 
-# Alsmost the same...  See below
-LINUX_HOST=rh9
-LINUX_SHARED=/stuff/temp/BUILD
-LINUX_MOUNT=
-LINUX_UMOUNT=
-LINUX_SHARED_REMOTE=/stuff/temp/BUILD
+# Alsmost the same...  See below for hosts and other info
+LINUX_BUILD=/tmp/BUILD
 
 
 # Upload server locations
@@ -167,6 +152,9 @@ if [ $skipsource != yes -o $onlysource = yes ]; then
     distrib/makedemo
     distrib/makedocs
 
+    # build the new docs too
+    docs/bin/everything
+
     # make the source tarball
     distrib/makerpm 2.3 skipclean skiprpm gtk2
 
@@ -204,121 +192,121 @@ fi
 if [ $skipwin != yes ]; then
     echo "-=-=- Starting Windows build..."
 
-    # mount the shared folder?
-    if [ -n "$WIN_MOUNT" ]; then 
-       echo "Mounting shared folder..."
-       $WIN_MOUNT
-    fi
-
-    # Copy the src file 
-    echo "Copying source file..."
-    cp $STAGING_DIR/wxPythonSrc-$VERSION.tar.gz $WIN_SHARED
-
-    # Untar it on the remote machine, and then run the build script
-    echo "Unarchiving source file on $WIN_HOST..."
-    ssh $WIN_HOST "cd $WIN_SHARED_REMOTE && tar xzf wxPythonSrc-$VERSION.tar.gz && rm wxPythonSrc-$VERSION.tar.gz"
-
-    echo "Running build script on $WIN_HOST..."
-    wxdir=$WIN_SHARED_REMOTE/wxPythonSrc-$VERSION
-    cmd=$wxdir/wxPython/distrib/all/build-windows
-    ssh $WIN_HOST "cd $wxdir && $cmd $wxdir $WIN_SHARED_REMOTE $skipclean $VERSION $PYVER"
+    echo "Copying source file and build script..."
+    scp $STAGING_DIR/wxPythonSrc-$VERSION.tar.gz \
+       distrib/all/build-windows \
+       $WIN_HOST:$WIN_BUILD
     
-    echo "Fetching the results..."
-    cp $WIN_SHARED/wxPythonWIN32*  $STAGING_DIR
-    ssh $WIN_HOST "cd $WIN_SHARED_REMOTE && rm wxPythonWIN32*"
-
-    # unmount?
-    if [ -n "$WIN_UMOUNT" ]; then 
-       echo "Unmounting shared folder..."
-       $WIN_UMOUNT
-    fi
+     echo "Running build script on $WIN_HOST..."
+     wxdir=$WIN_BUILD/wxPythonSrc-$VERSION
+     cmd=./build-windows
+     ssh $WIN_HOST "cd $WIN_BUILD && $cmd $wxdir $WIN_BUILD $skipclean $VERSION $PYVER && rm $cmd"
+
+     echo "Fetching the results..."
+     scp $WIN_HOST:$WIN_BUILD/wxPythonWIN32*  $STAGING_DIR
+     ssh $WIN_HOST "rm $WIN_BUILD/wxPythonWIN32*"
 fi
 
 
 # ---------------------------------------------------------------------------
 # OSX build
 
-if [ $skiposx != yes ]; then
-    echo "-=-=- Starting OSX build..."
+function DoOSXBuild {
+    local host=$1
+    local flavor=$2
 
-    # mount the shared folder?
-    if [ -n "$OSX_MOUNT" ]; then 
-       echo "Mounting shared folder..."
-       $OSX_MOUNT
+    # test if the target machine is online
+    if ping -q -c1 -w1 $host > /dev/null; then
+       echo "-----------------------------------------------------------------"
+       echo " The $host machine is online, build continuing..."
+       echo "-----------------------------------------------------------------"
+    else
+       echo "-----------------------------------------------------------------"
+       echo "The $host machine is offline, skipping the OSX $flavor build."
+       echo "-----------------------------------------------------------------"
+       return 0
     fi
 
-    # Copy the src file 
-    echo "Copying source files..."
-    cp $STAGING_DIR/wxPythonSrc-$VERSION.tar.gz $OSX_SHARED
-    cp $STAGING_DIR/wxPythonDocs-$VERSION.tar.gz $OSX_SHARED
-    cp $STAGING_DIR/wxPythonDemo-$VERSION.tar.gz $OSX_SHARED
+    echo "-=-=- Starting OSX-$flavor build on $host..."
 
-    # Untar it on the remote machine, and then run the build script
-    echo "Unarchiving source file on $OSX_HOST..."
-    ssh root@$OSX_HOST "cd $OSX_SHARED_REMOTE && tar xzf wxPythonSrc-$VERSION.tar.gz && rm wxPythonSrc-$VERSION.tar.gz"
+    echo "Copying source files and build script..."
+    ssh $host "mkdir -p $OSX_BUILD && rm -rf $OSX_BUILD/*"
+    scp $STAGING_DIR/wxPythonSrc-$VERSION.tar.gz \
+       $STAGING_DIR/wxPythonDocs-$VERSION.tar.gz \
+       $STAGING_DIR/wxPythonDemo-$VERSION.tar.gz \
+       distrib/all/build-osx \
+       $host:$OSX_BUILD
 
-    echo "Running build script on $OSX_HOST..."
-    wxdir=$OSX_SHARED_REMOTE/wxPythonSrc-$VERSION
-    cmd=$wxdir/wxPython/distrib/all/build-osx
-    ssh root@$OSX_HOST "cd $wxdir && $cmd $wxdir $OSX_SHARED_REMOTE $skipclean $VERSION $PYVER"
-    
-    echo "Fetching the results..."
-    cp $OSX_SHARED/wxPythonOSX*  $STAGING_DIR
-    ssh root@$OSX_HOST "cd $OSX_SHARED_REMOTE && rm wxPythonOSX*"
+     echo "Running build script on $host..."
+     wxdir=$OSX_BUILD/wxPythonSrc-$VERSION
+     cmd=./build-osx
+     ssh root@$host "cd $OSX_BUILD && $cmd $wxdir $OSX_BUILD $skipclean $VERSION $flavor $PYVER && rm $cmd"
+
+     echo "Fetching the results..."
+     scp "$host:$OSX_BUILD/wxPythonOSX*"  $STAGING_DIR
+     ssh $host "rm $OSX_BUILD/wxPythonOSX*"
+
+}
+
+
+if [ $skiposx != yes ]; then
+
+    DoOSXBuild $OSX_HOST_panther panther
+    DoOSXBuild $OSX_HOST_jaguar jaguar
 
-    # unmount?
-    if [ -n "$OSX_UMOUNT" ]; then 
-       echo "Unmounting shared folder..."
-       $OSX_UMOUNT
-    fi
 fi
 
 
 # ---------------------------------------------------------------------------
 # Linux build
 
-# This build is optional, check if the target machine is up and
-# running
-if [ $skiplinux != yes ]; then
-    if  ping -q -c1 -w1 $LINUX_HOST > /dev/null; then
-        # the ping succeeded
-       skiplinux=no
+# The remote Linux builds are different than those above.  The source
+# RPMs were already built in the source step, and so building the
+# binary RPMs is a very simple followup step.  Add to that the fact
+# that we need to build on more than one distro...
+
+function DoLinuxBuild {
+    local host=$1
+    local reltag=$2
+    shift;shift
+    local pyver=$@
+
+    # test if the target machine is online
+    if ping -q -c1 -w1 $host > /dev/null; then
+       echo "-----------------------------------------------------------------"
+       echo " The $host machine is online, build continuing..."
+       echo "-----------------------------------------------------------------"
     else
-        # the ping failed, skip the build
-       skiplinux=yes
        echo "-----------------------------------------------------------------"
-       echo "The $LINUX_HOST machine is offline, skipping the binary RPM build."
+       echo "The $host machine is offline, skipping the binary RPM build."
        echo "-----------------------------------------------------------------"
+       return 0
     fi
-fi
+       
+    echo "Copying source files and build script..."
+    ssh root@$host "mkdir -p $LINUX_BUILD && rm -rf $LINUX_BUILD/*"
+    scp $STAGING_DIR/wxPython*.src.rpm \
+       distrib/all/build-linux \
+       root@$host:$LINUX_BUILD
+
+    echo "Running build script on $host..."
+    cmd=./build-linux
+    ssh root@$host "cd $LINUX_BUILD && ./build-linux $reltag $skipclean $VERSION $pyver"
+    
+    echo "Fetching the results..."
+    scp "root@$host:$LINUX_BUILD/wxPythonGTK*.i[0-9]86.rpm"  $STAGING_DIR
+    ssh root@$host "rm $LINUX_BUILD/wxPythonGTK*.i[0-9]86.rpm"
 
+}
 
 if [ $skiplinux != yes ]; then
-    echo "-=-=- Starting Linux build..."
 
-    # The remote linux build is a bit different than the others.  The
-    # SRPMs will have already been built in the initial source
-    # building steps, the only  thing that the remote build needs to
-    # do is an "rpmbuild --rebuild"  for each package.  So we'll just
-    # copy the build script over and  execute it, there is no need to
-    # unpack the tarball and most of the  other steps...
+    DoLinuxBuild co-rh9 RH9 $PYVER
+    DoLinuxBuild co-fc2 FC2 2.3
 
-    
-    echo "Copying source files..."
-    mkdir -p $LINUX_SHARED
-    cp $STAGING_DIR/wxPython*.src.rpm $LINUX_SHARED
-    
-    scp distrib/all/build-linux root@$LINUX_HOST:/tmp > /dev/null
-    ssh root@$LINUX_HOST "cd /tmp && ./build-linux /tmp/wx $LINUX_SHARED_REMOTE $skipclean $VERSION $PYVER"
-    
-    echo "Fetching the results..."
-    cp $LINUX_SHARED/wxPythonGTK*.i[0-9]86.rpm  $STAGING_DIR
-    rm -r $LINUX_SHARED
 fi
 
 
-
-
 # ---------------------------------------------------------------------------
 # Final disposition of build results...
 
@@ -347,7 +335,7 @@ if [ $KIND = daily ]; then
     # TODO: something to remove old builds from starship, keeping 
     # only N days worth
 
-    # TODO:  Send email to wxPython-dev?
+    # Send email to wxPython-dev
     DATE=`date`
     TO=wxPython-dev@lists.wxwidgets.org
 
@@ -391,6 +379,29 @@ if [ $KIND = release ]; then
     rm $STAGING_DIR/*
     rmdir $STAGING_DIR
 
+    # Send email to wxPython-dev
+    DATE=`date`
+    TO=wxPython-dev@lists.wxwidgets.org
+
+    cat <<EOF  | /usr/sbin/sendmail  $TO
+From: R'bot <rbot@wxpython.org>
+To: $TO
+Subject: New release candidate build uploaded
+Date: $DATE
+
+Hi,
+
+A new RC build of wxPython has been uploaded to starship.  
+
+   Version: $VERSION
+   Pythons: $PYVER
+   URL:     http://starship.python.net/crew/robind/wxPython/preview/$VERSION
+
+Have fun!
+R'bot
+
+EOF
+
     echo "Finished at " `date`
     exit 0
 fi