X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7dc107d60c7a2e7409718a1ed4f76a15f881a205..d8d7193d767beecab7335e58df1fa0d25ae1e2ea:/wxPython/distrib/all/build-all?ds=sidebyside diff --git a/wxPython/distrib/all/build-all b/wxPython/distrib/all/build-all index c26a85b6e7..736459acee 100755 --- a/wxPython/distrib/all/build-all +++ b/wxPython/distrib/all/build-all @@ -57,16 +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(); }" } # --------------------------------------------------------------------------- @@ -92,6 +98,7 @@ skiposx=no skiplinux=no skipclean=no skipupload=no +parallel=no for flag in $*; do case $flag in @@ -111,6 +118,8 @@ for flag in $*; do skiplinux) skiplinux=yes ;; skipclean) skipclean=yes ;; skipupload) skipupload=yes ;; + parallel) parallel=yes ;; + noparallel) parallel=no ;; help) usage; exit 1 ;; *) echo "Unknown flag \"$flag\"" @@ -136,6 +145,7 @@ VERSION=`python -c "import setup;print setup.VERSION"` #echo VERSION=$VERSION #exit 0 + echo "Getting started at " `date` # --------------------------------------------------------------------------- @@ -192,7 +202,20 @@ 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..." @@ -208,6 +231,15 @@ if [ $skipwin != yes ]; then echo "Fetching the results..." 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 @@ -218,6 +250,8 @@ 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 "-----------------------------------------------------------------" @@ -254,13 +288,17 @@ function DoOSXBuild { 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 @@ -269,12 +307,16 @@ fi # 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 local reltag=$2 shift;shift local pyver=$@ + set -o errexit + # test if the target machine is online if ping -q -c1 -w1 $host > /dev/null; then echo "-----------------------------------------------------------------" @@ -303,14 +345,49 @@ function DoLinuxBuild { } + + + 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... @@ -330,7 +407,7 @@ if [ $KIND = daily ]; then mkdir -p $destdir cp $STAGING_DIR/* $destdir - if [ skipupload != yes ]; then + if [ $skipupload != yes ]; then destdir=$UPLOAD_DAILY_ROOT/$DAILY echo "Copying to the starship at $destdir..." ssh $UPLOAD_HOST "mkdir -p $destdir" @@ -381,7 +458,7 @@ if [ $KIND = release ]; then mkdir -p $destdir cp $STAGING_DIR/* $destdir - if [ skipupload != yes ]; then + if [ $skipupload != yes ]; then echo "Copying to the starship..." destdir=$UPLOAD_PREVIEW_ROOT/$VERSION ssh $UPLOAD_HOST "mkdir -p $destdir"