]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/distrib/all/build-all
in unescape add normal characters in addition to unescaped characters :)
[wxWidgets.git] / wxPython / distrib / all / build-all
index e224ebce19571f4808c240b85604a7e5fd50fe24..736459acee8e6a229ea74a2a692a0d60f1a11168 100755 (executable)
@@ -24,7 +24,7 @@ WIN_BUILD=/c/BUILD
 # Just like the above
 OSX_HOST_panther=bigmac
 OSX_HOST_jaguar=whopper
-OSX_BUILD=/tmp/BUILD
+OSX_BUILD=/BUILD
 
 
 # Alsmost the same...  See below for hosts and other info
@@ -48,7 +48,7 @@ function usage {
     echo "build types:"
     echo "   dryrun       Do the build, but don't copy anywhere (default)"
     echo "   daily        Do a daily build, copy to starship"
-    echo "   release      Do a normal release build, copy to starship"
+    echo "   release      Do a normal release (cantidate) build, copy to starship"
     echo ""
     echo "optional command flags:"
     echo "   2.2          Build for Python 2.2 (default=off)"
@@ -57,14 +57,22 @@ function usage {
     echo ""
     echo "   skipsource   Don't build the source archives, use the ones"
     echo "                already in the staging dir."
-    echo "   onlysource   Exit after building the source archives"
+    echo "   onlysource   Exit after building the source and docs archives"
+    echo "   skipdocs     Don't rebuild the docs"
     echo "   skipwin      Don't do the remote Windows build"
     echo "   skiposx      Don't do the remote OSX build"
     echo "   skiplinux    Don't do the remote Linux build"
     echo "   skipclean    Don't do the cleanup step on the remote builds"
+    echo "   skipupload   Don't upload the builds to starship"
+    echo "   parallel     parallelize the builds where possible"
     echo ""
+}
+
 
 
+function PrefixLines {
+    label=$1
+    tee tmp/$label.log | awk "{ print \"** $label: \" \$0; fflush();  }"
 }
 
 # ---------------------------------------------------------------------------
@@ -84,10 +92,13 @@ KIND=dryrun
 PYVER=2.3
 skipsource=no
 onlysource=no
+skipdocs=no
 skipwin=no
 skiposx=no
 skiplinux=no
 skipclean=no
+skipupload=no
+parallel=no
 
 for flag in $*; do
     case $flag in 
@@ -101,10 +112,14 @@ for flag in $*; do
 
        skipsource)  skipsource=yes              ;;
        onlysource)  onlysource=yes              ;;
+       skipdocs)    skipdocs=yes                ;;
        skipwin)     skipwin=yes                 ;;
        skiposx)     skiposx=yes                 ;;
        skiplinux)   skiplinux=yes               ;;
        skipclean)   skipclean=yes               ;;
+       skipupload)  skipupload=yes              ;;
+       parallel)    parallel=yes                ;;
+       noparallel)  parallel=no                 ;;
 
        help) usage; exit 1                      ;;
        *)    echo "Unknown flag \"$flag\""
@@ -130,6 +145,7 @@ VERSION=`python -c "import setup;print setup.VERSION"`
 #echo VERSION=$VERSION
 #exit 0
 
+
 echo "Getting started at " `date`
 
 # ---------------------------------------------------------------------------
@@ -140,42 +156,39 @@ if [ $skipsource != yes -o $onlysource = yes ]; then
     # clean out the local dist dir
     rm -f dist/*
 
-    # Regenerate the reST docs
-    echo "Regenerating the reST docs..."
-    cd docs
-    for x in *.txt; do
-       docutils-html $x `basename $x .txt`.html
-    done
-    cd -
-       
-    # build the doc and demo tarballs
-    distrib/makedemo
-    distrib/makedocs
-
-    # build the new docs too
-    docs/bin/everything
-
-    # make the source tarball
-    distrib/makerpm 2.3 skipclean skiprpm gtk2
-
-    # make the source RPMs
-    for ver in $PYVER; do 
-       distrib/makerpm $ver skipclean skipcopy skiptar srpm
-       distrib/makerpm $ver skipclean skipcopy skiptar srpm gtk2
-    done
+    if [ $skipdocs != yes ]; then 
+        # Regenerate the reST docs
+       echo "Regenerating the reST docs..."
+       cd docs
+       for x in *.txt; do
+           docutils-html $x `basename $x .txt`.html
+       done
+       cd -
+       
+        # build the doc and demo tarballs
+       distrib/makedemo
+       distrib/makedocs
+
+        # build the new docs too
+       docs/bin/everything
+    fi
+
+    # make the source tarball and srpm
+    distrib/makerpm 2.3 srpm
 
     # Copy everything to the staging dir
     echo "Moving stuff to $STAGING_DIR..."
-    rm -f dist/*.spec
     mv dist/* $STAGING_DIR
-    for doc in CHANGES BUILD INSTALL MigrationGuide default; do
-       cp docs/$doc.* $STAGING_DIR
-    done
+
+    if [ $skipdocs != yes ]; then 
+       for doc in CHANGES BUILD INSTALL MigrationGuide default; do
+           cp docs/$doc.* $STAGING_DIR
+       done
+    fi
 
     # cleanup
     echo "Cleaning up..."
     rm -f dist/*
-    rm -rf _build_rpm
 fi 
 
 if [ $KIND = daily ]; then
@@ -189,22 +202,44 @@ fi
 # ---------------------------------------------------------------------------
 # Windows build
 
-if [ $skipwin != yes ]; then
+function DoWindowsBuild {
+    set -o errexit
+
+    # test if the target machine is online
+    if ping -q -c1 -w1 $WIN_HOST > /dev/null; then
+       echo "-----------------------------------------------------------------"
+       echo " The $WIN_HOST machine is online, Windows build continuing..."
+       echo "-----------------------------------------------------------------"
+    else
+       echo "-----------------------------------------------------------------"
+       echo "The $WIN_HOST machine is offline, skipping the Windows build."
+       echo "-----------------------------------------------------------------"
+       return 0
+    fi
     echo "-=-=- Starting Windows build..."
 
     echo "Copying source file and build script..."
-    scp $STAGING_DIR/wxPythonSrc-$VERSION.tar.gz \
+    scp $STAGING_DIR/wxPython-src-$VERSION.tar.gz \
        distrib/all/build-windows \
        $WIN_HOST:$WIN_BUILD
     
      echo "Running build script on $WIN_HOST..."
-     wxdir=$WIN_BUILD/wxPythonSrc-$VERSION
+     wxdir=$WIN_BUILD/wxPython-src-$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*"
+     scp "$WIN_HOST:$WIN_BUILD/wxPython*-win32*"  $STAGING_DIR
+     ssh $WIN_HOST "rm $WIN_BUILD/wxPython*-win32*"
+}
+
+if [ $skipwin != yes ]; then
+    if [ $parallel = no ]; then
+       DoWindowsBuild
+    else
+       DoWindowsBuild 2>&1 | PrefixLines $WIN_HOST &
+       winPID=$!
+    fi
 fi
 
 
@@ -215,14 +250,16 @@ function DoOSXBuild {
     local host=$1
     local flavor=$2
 
+    set -o errexit
+
     # 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 " The $host machine is online, OSX-$flavor build continuing..."
        echo "-----------------------------------------------------------------"
     else
        echo "-----------------------------------------------------------------"
-       echo "The $host machine is offline, skipping the OSX $flavor build."
+       echo "The $host machine is offline, skipping the OSX-$flavor build."
        echo "-----------------------------------------------------------------"
        return 0
     fi
@@ -230,40 +267,47 @@ function DoOSXBuild {
     echo "-=-=- Starting OSX-$flavor build on $host..."
 
     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 \
+    ssh root@$host "mkdir -p $OSX_BUILD && rm -rf $OSX_BUILD/* || true"
+    #ssh root@$host "mkdir -p $OSX_BUILD  || true"
+    scp $STAGING_DIR/wxPython-src-$VERSION.tar.gz \
+       $STAGING_DIR/wxPython-docs-$VERSION.tar.gz \
+       $STAGING_DIR/wxPython-demo-$VERSION.tar.gz \
        distrib/all/build-osx \
-       $host:$OSX_BUILD
+       root@$host:$OSX_BUILD
 
      echo "Running build script on $host..."
-     wxdir=$OSX_BUILD/wxPythonSrc-$VERSION
+     wxdir=$OSX_BUILD/wxPython-src-$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*"
+     scp "root@$host:$OSX_BUILD/wxPython*-osx*"  $STAGING_DIR
+     ssh root@$host "rm $OSX_BUILD/wxPython*-osx*"
 
 }
 
 
 if [ $skiposx != yes ]; then
-
-    DoOSXBuild $OSX_HOST_panther panther
-    DoOSXBuild $OSX_HOST_jaguar jaguar
-
+    if [ $parallel = no ]; then
+       DoOSXBuild $OSX_HOST_jaguar jaguar
+       DoOSXBuild $OSX_HOST_panther panther
+    else
+       DoOSXBuild $OSX_HOST_jaguar jaguar   2>&1 | PrefixLines $OSX_HOST_jaguar  &
+       DoOSXBuild $OSX_HOST_panther panther 2>&1 | PrefixLines $OSX_HOST_panther &
+    fi
 fi
 
 
+
 # ---------------------------------------------------------------------------
 # Linux build
 
 # 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...
+# binary RPMs is a very simple followup step.  But then add to that
+# the fact that we need to build on more than one distro...
+
+
 
 function DoLinuxBuild {
     local host=$1
@@ -271,6 +315,8 @@ function DoLinuxBuild {
     shift;shift
     local pyver=$@
 
+    set -o errexit
+
     # test if the target machine is online
     if ping -q -c1 -w1 $host > /dev/null; then
        echo "-----------------------------------------------------------------"
@@ -285,7 +331,7 @@ function DoLinuxBuild {
        
     echo "Copying source files and build script..."
     ssh root@$host "mkdir -p $LINUX_BUILD && rm -rf $LINUX_BUILD/*"
-    scp $STAGING_DIR/wxPython*.src.rpm \
+    scp $STAGING_DIR/wxPython-src* $STAGING_DIR/wxPython.spec\
        distrib/all/build-linux \
        root@$host:$LINUX_BUILD
 
@@ -294,19 +340,54 @@ function DoLinuxBuild {
     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"
+    scp "root@$host:$LINUX_BUILD/wxPython*.i[0-9]86.rpm"  $STAGING_DIR
+    ssh root@$host "rm $LINUX_BUILD/wxPython*.i[0-9]86.rpm"
 
 }
 
+
+
+
 if [ $skiplinux != yes ]; then
 
-    DoLinuxBuild co-rh9 RH9 $PYVER
-    DoLinuxBuild co-fc2 FC2 2.3
+    if [ $parallel = no ]; then
+       DoLinuxBuild co-rh9    rh9    $PYVER
+       DoLinuxBuild co-fc2    fc2    2.3
+       DoLinuxBuild co-mdk92  mdk92  2.3
+       DoLinuxBuild co-mdk101 mdk101 2.3
+    else
+
+        # Since the linux builds are currently done in coLinux
+        # 'machines' running on the WIN_HOST let's wait for the
+        # windows build to be done before launching them
+
+       #if [ -n $winPID ]; then
+       #    wait $winPID
+       #fi
 
+       (DoLinuxBuild co-rh9    rh9    $PYVER 2>&1 | PrefixLines co-rh9 &; \
+        DoLinuxBuild co-fc2    fc2    2.3    2>&1 | PrefixLines co-fc2    ) &
+
+       wait $!  # wait for the previous two to complete before starting the next two
+
+       (DoLinuxBuild co-mdk92  mdk92  2.3    2>&1 | PrefixLines co-mdk92  &; \
+        DoLinuxBuild co-mdk101 mdk101 2.3    2>&1 | PrefixLines co-mdk101    ) &
+    fi
 fi
 
 
+# ---------------------------------------------------------------------------
+
+if [ $parallel = yes ]; then
+
+    # TODO:  Figure out how to test if all the builds were successful
+
+    echo "***********************************"
+    echo " Waiting for builds to complete... "
+    echo "***********************************"
+    wait
+fi
+
 # ---------------------------------------------------------------------------
 # Final disposition of build results...
 
@@ -321,28 +402,30 @@ fi
 
 if [ $KIND = daily ]; then 
 
-    destdir=$UPLOAD_DAILY_ROOT/$DAILY
-    echo "Copying to the starship at $destdir..."
-    ssh $UPLOAD_HOST "mkdir -p $destdir"
-    scp $STAGING_DIR/* $UPLOAD_HOST:/$destdir
-    ssh $UPLOAD_HOST "cd $destdir && ls -al"
+    echo "Copying to the local file server..."
+    destdir=/stuff/temp/$VERSION
+    mkdir -p $destdir
+    cp $STAGING_DIR/* $destdir
 
+    if [ $skipupload != yes ]; then 
+       destdir=$UPLOAD_DAILY_ROOT/$DAILY
+       echo "Copying to the starship at $destdir..."
+       ssh $UPLOAD_HOST "mkdir -p $destdir"
+       scp $STAGING_DIR/* $UPLOAD_HOST:/$destdir
+       ssh $UPLOAD_HOST "cd $destdir && ls -al"
 
-    echo "Cleaning up staging dir..."
-    rm $STAGING_DIR/*
-    rmdir $STAGING_DIR
 
-    # TODO: something to remove old builds from starship, keeping 
-    # only N days worth
+        # TODO: something to remove old builds from starship, keeping 
+        # only N days worth
 
-    # Send email to wxPython-dev
-    DATE=`date`
-    TO=wxPython-dev@lists.wxwidgets.org
+        # Send email to wxPython-dev
+       DATE=`date`
+       TO=wxPython-dev@lists.wxwidgets.org
 
-    cat <<EOF  | /usr/sbin/sendmail  $TO
+       cat <<EOF  | /usr/sbin/sendmail  $TO
 From: R'bot <rbot@wxpython.org>
 To: $TO
-Subject: New test build uploaded
+Subject: $DAILY test build uploaded
 Date: $DATE
 
 Hi,
@@ -350,13 +433,18 @@ Hi,
 A new test build of wxPython has been uploaded to starship.  
 
    Version: $VERSION
-   Pythons: $PYVER
    URL:     http://starship.python.net/crew/robind/wxPython/daily/$DAILY
+   Changes: http://starship.python.net/crew/robind/wxPython/daily/$DAILY/CHANGES.html
 
 Have fun!
 R'bot
 
 EOF
+    fi
+
+    echo "Cleaning up staging dir..."
+    rm $STAGING_DIR/*
+    rmdir $STAGING_DIR
 
     echo "Finished at " `date`
     exit 0
@@ -370,23 +458,20 @@ if [ $KIND = release ]; then
     mkdir -p $destdir
     cp $STAGING_DIR/* $destdir
 
-    echo "Copying to the starship..."
-    destdir=$UPLOAD_PREVIEW_ROOT/$VERSION
-    ssh $UPLOAD_HOST "mkdir -p $destdir"
-    scp $STAGING_DIR/* $UPLOAD_HOST:/$destdir
+    if [ $skipupload != yes ]; then 
+       echo "Copying to the starship..."
+       destdir=$UPLOAD_PREVIEW_ROOT/$VERSION
+       ssh $UPLOAD_HOST "mkdir -p $destdir"
+       scp $STAGING_DIR/* $UPLOAD_HOST:/$destdir
 
-    echo "Cleaning up staging dir..."
-    rm $STAGING_DIR/*
-    rmdir $STAGING_DIR
-
-    # Send email to wxPython-dev
-    DATE=`date`
-    TO=wxPython-dev@lists.wxwidgets.org
+        # Send email to wxPython-dev
+       DATE=`date`
+       TO=wxPython-dev@lists.wxwidgets.org
 
-    cat <<EOF  | /usr/sbin/sendmail  $TO
+       cat <<EOF  | /usr/sbin/sendmail  $TO
 From: R'bot <rbot@wxpython.org>
 To: $TO
-Subject: New release candidate build uploaded
+Subject: $VERSION release candidate build uploaded
 Date: $DATE
 
 Hi,
@@ -394,14 +479,20 @@ 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
+   Changes: http://starship.python.net/crew/robind/wxPython/preview/$VERSION/CHANGES.html
 
 Have fun!
 R'bot
 
 EOF
 
+    fi
+
+    echo "Cleaning up staging dir..."
+    rm $STAGING_DIR/*
+    rmdir $STAGING_DIR
+
     echo "Finished at " `date`
     exit 0
 fi