-UPLOAD_HOST=starship.python.net
-UPLOAD_DAILY_ROOT=/home/crew/robind/public_html/wxPython/daily
-UPLOAD_PREVIEW_ROOT=/home/crew/robind/public_html/wxPython/preview
-
-
-
-# ---------------------------------------------------------------------------
-# functions
-
-function usage {
- echo ""
- echo "Usage: $0 [command flags...]"
- echo ""
- 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 ""
- echo "optional command flags:"
- echo " 2.2 Build for Python 2.2 (default=off)"
- echo " 2.3 Build for Python 2.3 (default=on)"
- echo " all Build for all supported Python versions"
- 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 " 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 ""
-
-
-}
-
-# ---------------------------------------------------------------------------
-
-# Make sure we are running in the right directory. TODO: make this
-# test more robust. Currenly we just test for the presence of
-# 'wxPython' and 'wx' subdirs.
-if [ ! -d wxPython -o ! -d wx ]; then
- echo "Please run this script from the root wxPython directory."
- exit 1
-fi
-
-
-
-# Set defaults and check the command line options
-KIND=dryrun
-PYVER=2.3
-skipsource=no
-onlysource=no
-skipwin=no
-skiposx=no
-skiplinux=no
-skipclean=no
-
-for flag in $*; do
- case $flag in
- dryrun) KIND=dryrun ;;
- daily) KIND=daily ;;
- release) KIND=release ;;
-
- 2.2) PYVER=2.2 ;;
- 2.3) PYVER=2.3 ;;
- all) PYVER="2.2 2.3" ;;
-
- skipsource) skipsource=yes ;;
- onlysource) onlysource=yes ;;
- skipwin) skipwin=yes ;;
- skiposx) skiposx=yes ;;
- skiplinux) skiplinux=yes ;;
- skipclean) skipclean=yes ;;
-
- help) usage; exit 1 ;;
- *) echo "Unknown flag \"$flag\""
- usage
- exit 1
- esac
-done
-
-
-# ensure the staging area exists
-if [ ! -d $STAGING_DIR ]; then
- mkdir -p $STAGING_DIR
-fi
-
-# Figure out the wxPython version number, possibly adjusted for being a daily build
-if [ $KIND = daily ]; then
- DAILY=`date +%Y%m%d` # should it include the hour too? 2-digit year?
- echo $DAILY > DAILY_BUILD
-fi
-VERSION=`python -c "import setup;print setup.VERSION"`
-
-
-#echo VERSION=$VERSION
-#exit 0
-
-# ---------------------------------------------------------------------------
-# Make the sources and other basic stuff.
-
-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
-
- # 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
-
- # 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
-
- # cleanup
- echo "Cleaning up..."
- rm -f dist/*
- rm -rf _build_rpm
-fi
-
-if [ $KIND = daily ]; then
- rm DAILY_BUILD
-fi
-
-if [ $onlysource = yes ]; then
- exit 0
-fi
-
-# ---------------------------------------------------------------------------
-# Windows build
-
-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"
+config.UPLOAD_HOST = "starship.python.net"
+config.UPLOAD_DAILY_ROOT = "/home/crew/robind/public_html/wxPython/daily"
+config.UPLOAD_PREVIEW_ROOT = "/home/crew/robind/public_html/wxPython/preview"
+
+# defaults for build options
+config.KIND = "dryrun"
+config.skipsource = "no"
+config.onlysource = "no"
+config.skipdocs = "no"
+config.skipwin = "no"
+config.skiposx = "no"
+config.skiplinux = "no"
+config.skipclean = "no"
+config.skipupload = "no"
+config.skipnewdocs = "no"
+config.startcohost = "yes"
+
+#----------------------------------------------------------------------
+# Define all the build tasks
+
+class Job(Job):
+ LOGBASE = "./tmp"
+
+CFGFILE = "./tmp/config"
+
+
+# Things that need to be done before any of the builds
+initialTask = Task([ Job("", ["distrib/all/build-setup", CFGFILE]),
+ Job("", ["distrib/all/build-docs", CFGFILE]),
+ Job("", ["distrib/all/build-sources", CFGFILE]),
+ ])
+
+# Build tasks. Anything that can be done in parallel (depends greatly
+# on the nature of the build machine configurations...) is a separate
+# task.
+
+jaguarTask = Task( Job(config.OSX_HOST_jaguar,
+ ["distrib/all/build-osx", CFGFILE, config.OSX_HOST_jaguar, "jaguar", "2.3"]) )
+
+pantherTask = Task( Job(config.OSX_HOST_panther,
+ ["distrib/all/build-osx", CFGFILE, config.OSX_HOST_panther, "panther", "2.3"]) )
+
+beastTask1 = Task([ Job("beast.23", ["distrib/all/build-windows", CFGFILE, "2.3"]),
+ Job("co-rh9.23", ["distrib/all/build-rpm", CFGFILE, "beast", "co-rh9", "rh9", "2.3"]),
+ Job("co-mdk92.23", ["distrib/all/build-rpm", CFGFILE, "beast", "co-mdk92", "mdk92", "2.3"]),
+ Job("co-rh9.24", ["distrib/all/build-rpm", CFGFILE, "beast", "co-rh9", "rh9", "2.4"]),
+ Job("co-mdk92.24", ["distrib/all/build-rpm", CFGFILE, "beast", "co-mdk92", "mdk92", "2.4"]),
+ ])
+
+beastTask2 = Task([ Job("co-mdk101.23", ["distrib/all/build-rpm", CFGFILE, "beast", "co-mdk101","mdk101","2.3"]),
+ Job("co-fc2.23", ["distrib/all/build-rpm", CFGFILE, "beast", "co-fc2", "fc2", "2.3"]),
+ Job("co-mdk101.24", ["distrib/all/build-rpm", CFGFILE, "beast", "co-mdk101","mdk101","2.4"]),
+ Job("co-fc2.24", ["distrib/all/build-rpm", CFGFILE, "beast", "co-fc2", "fc2", "2.4"]),
+ Job("beast.24", ["distrib/all/build-windows", CFGFILE, "2.4"]),
+ ])
+
+
+buildTasks = [ jaguarTask,
+ pantherTask,
+ beastTask1,
+ beastTask2,
+ ]
+
+# Finalization. This is for things that must wait until all the
+# builds are done, such as copying the installers someplace, sending
+# emails, etc.
+finalizationTask = Task( Job("", ["distrib/all/build-finalize", CFGFILE]) )
+
+
+#----------------------------------------------------------------------
+
+def usage():
+ print ""
+ print "Usage: build-all [command flags...]"
+ print ""
+ print "build types:"
+ print " dryrun Do the build, but don't copy anywhere (default)"
+ print " daily Do a daily build, copy to starship"
+ print " release Do a normal release (cantidate) build, copy to starship"
+ print ""
+ print "optional command flags:"
+ print " skipsource Don't build the source archives, use the ones"
+ print " already in the staging dir."
+ print " onlysource Exit after building the source and docs archives"
+ print " skipdocs Don't rebuild the docs"
+ print " skipwin Don't do the remote Windows build"
+ print " skiposx Don't do the remote OSX build"
+ print " skiplinux Don't do the remote Linux build"
+ print " skipclean Don't do the cleanup step on the remote builds"
+ print " skipupload Don't upload the builds to starship"
+ print ""
+ print " nocohost Don't start the coLinux sessions if they are"
+ print " not already online"
+ print ""