X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/71132988f877fe759f624243affbc0c38778efd8..4f60dce5d49d3a5f38d93c867bd3527fe60e1aec:/wxPython/distrib/all/build-all diff --git a/wxPython/distrib/all/build-all b/wxPython/distrib/all/build-all index b284ddd1ed..a8308d7f4e 100755 --- a/wxPython/distrib/all/build-all +++ b/wxPython/distrib/all/build-all @@ -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=/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 @@ -73,6 +58,7 @@ function usage { 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 " 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" @@ -99,6 +85,7 @@ KIND=dryrun PYVER=2.3 skipsource=no onlysource=no +skipdocs=no skipwin=no skiposx=no skiplinux=no @@ -116,6 +103,7 @@ for flag in $*; do skipsource) skipsource=yes ;; onlysource) onlysource=yes ;; + skipdocs) skipdocs=yes ;; skipwin) skipwin=yes ;; skiposx) skiposx=yes ;; skiplinux) skiplinux=yes ;; @@ -145,6 +133,8 @@ VERSION=`python -c "import setup;print setup.VERSION"` #echo VERSION=$VERSION #exit 0 +echo "Getting started at " `date` + # --------------------------------------------------------------------------- # Make the sources and other basic stuff. @@ -153,39 +143,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 - - # 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 @@ -202,121 +192,122 @@ 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/wxPython-src-$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/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/wxPython*-win32*" $STAGING_DIR + ssh $WIN_HOST "rm $WIN_BUILD/wxPython*-win32*" 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, OSX-$flavor 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 $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 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 \ + root@$host:$OSX_BUILD - echo "Running build script on $OSX_HOST..." - wxdir=$OSX_SHARED_REMOTE/wxPythonSrc-$VERSION - cmd=$wxdir/wxPython/distrib/all/build-osx - ssh $OSX_HOST "cd $wxdir && $cmd $wxdir $OSX_SHARED_REMOTE $skipclean $VERSION $PYVER" - - echo "Fetching the results..." - cp $OSX_SHARED/wxPythonOSX* $STAGING_DIR - ssh $OSX_HOST "cd $OSX_SHARED_REMOTE && rm wxPythonOSX*" + echo "Running build script on $host..." + 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 "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 - # 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. 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=$@ + + # 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* $STAGING_DIR/wxPython.spec\ + 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/wxPython*.i[0-9]86.rpm" $STAGING_DIR + ssh root@$host "rm $LINUX_BUILD/wxPython*.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... @@ -324,6 +315,7 @@ chmod a+r $STAGING_DIR/* if [ $KIND = dryrun ]; then # we're done + echo "Finished at " `date` exit 0 fi @@ -344,14 +336,14 @@ 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 cat < To: $TO -Subject: New test build uploaded +Subject: $DAILY test build uploaded Date: $DATE Hi, @@ -359,13 +351,15 @@ 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 + + echo "Finished at " `date` exit 0 fi @@ -386,6 +380,30 @@ if [ $KIND = release ]; then rm $STAGING_DIR/* rmdir $STAGING_DIR + # Send email to wxPython-dev + DATE=`date` + TO=wxPython-dev@lists.wxwidgets.org + + cat < +To: $TO +Subject: $VERSION release candidate build uploaded +Date: $DATE + +Hi, + +A new RC build of wxPython has been uploaded to starship. + + Version: $VERSION + 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 + + echo "Finished at " `date` exit 0 fi