]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/distrib/mac/wxPythonOSX/build
regenerated
[wxWidgets.git] / wxPython / distrib / mac / wxPythonOSX / build
index 955467a1d9b0c5eee900fb4704d53035feaf683d..a9531de0d89696453c89c7ebb8b48a4ef6a8a60d 100755 (executable)
@@ -10,45 +10,70 @@ if [ ! -d wxPython -o ! -e ${spectemplate} ]; then
     exit 1
 fi
 
+if [ "$UID" != "0" ]; then
+    echo "-------------------------------------------------------"
+    echo " WARNING:  will be unable to change ownership of files"
+    echo " unless this script is run as root or via sudo"
+    echo "-------------------------------------------------------"
+fi
+
 #----------------------------------------------------------------------
 # Check Parameters
 
 function usage {
     echo ""
-    echo "Usage: $0  wx_version  py_version  [command flags...]"
-    echo "   wx_version     String to use for version in filenames, etc."
-    echo "   py_version     String to append to python (which python version to use.)"
+    echo "Usage: $0  [panther|jaguar]  [command flags...]"
+    echo ""
+    echo "   panther        Build for Apple's python in /usr/bin, such as on Panther"
+    echo "   jaguar         Build for a python in /usr/local/bin, such as on Jaguar"
     echo ""
-    echo "command flags:"
+    echo "optional command flags:"
     echo "   skiptar        Don't unpack the tarball"
-    echo "   use_cvs        Use the CVS workspace instead of a tarfile"
+    echo "   inplace        Don't use the tarball, build from the CVS tree instead"
+    echo "                  (The Docs and Demo tarballs are still required for a full build.)"
+    echo "   unicode        Make a unicode build"
     echo "   skipconfig     Don't run configure"
-    echo "   skipbuild      Don't build wxWindows or wxPython"
+    echo "   skipbuild      Don't build wxWidgets or wxPython"
     echo "   skipinstall    Don't do the installation step"
     echo "   skipdmg        Don't make the package or diskimage"
     echo "   skipclean      Don't do the cleanup at the end"
+    echo ""
 }
 
 
-if [ $# -lt 2 ]; then
+if [ $# -lt 1 ]; then
     usage
     exit 1
 fi
 
-VERSION=$1
-PYVER=$2
-shift;shift
-
+KIND=$1
+case $KIND in
+    panther)    PYTHON=/usr/bin/python ;;
+    jaguar)     PYTHON=/usr/local/bin/python ;;
+    *)          usage; exit 1 ;;
+esac
+PYTHONW=${PYTHON}w
+shift
+
+skiptar=no
+skipconfig=no
+skipbuild=no
+skipinstall=no
+skipdmg=no
+skipclean=no
+inplace=no
+unicode=no
 
 for flag in $*; do
     case ${flag} in
-       skiptar)     skiptar=1                   ;;
-       use_cvs)     skiptar=1; use_cvs=1        ;;
-       skipconfig)  skipconfig=1; skiptar=1     ;;
-       skipbuild)   skipbuild=1; skipconfig=1; skiptar=1 ;;
-       skipinstall) skipinstall=1               ;;
-        skipdmg)     skipdmg=1                   ;;
-       skipclean)   skipclean=1                 ;;
+       skiptar)     skiptar=yes                                ;;
+       skipconfig)  skipconfig=yes; skiptar=yes                ;;
+       skipbuild)   skipbuild=yes; skipconfig=yes; skiptar=yes ;;
+       skipinstall) skipinstall=yes                            ;;
+        skipdmg)     skipdmg=yes                                ;;
+       skipclean)   skipclean=yes                              ;;
+       inplace)     inplace=yes; skiptar=yes                   ;;
+       unicode)     unicode=yes                                ;;
 
        *)  echo "Unknown flag \"${flag}\""
            usage
@@ -57,23 +82,74 @@ for flag in $*; do
 done
 
 
-SRCDIR=/Volumes/Gate.Stuff/Development/wxPython/dist/$VERSION
-TARBALL=$SRCDIR/wxPythonSrc-$VERSION.tar.gz
-SITEPACKAGES=/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER/site-packages
+VERSION=`$PYTHON -c "import setup;print setup.VERSION"`
+PYVER=`$PYTHON -c "import sys; print sys.version[:3]"`
+PYPREFIX=`$PYTHON -c "import sys; print sys.exec_prefix"`
+PYLIB=$PYPREFIX/lib/python$PYVER
+SITEPACKAGES=$PYLIB/site-packages
+SHORTVER=`echo $VERSION | cut -c 1,2,3`
+
+if [ $unicode == yes ]; then
+    CHARTYPE=unicode
+    UNICODEOPT=--enable-unicode
+    PYUNICODEOPT=1
+else
+    CHARTYPE=ansi
+    UNICODEOPT=--disable-unicode
+    PYUNICODEOPT=0
+fi
+
+#if [ "$HOSTNAME" = "bigmac.alldunn.com" ]; then
+#    MAKEJOBS="--jobs=2"
+#fi
+
+
+if [ -z "$TARBALLDIR" ]; then
+    # this is a spot on my fileserver where the tarballs go, adjust
+    # as needed for where you put the wxPython tarball, or set
+    # TARBALLDIR before invoking this script...
+    TARBALLDIR=/stuff/Development/wxPython/dist/$VERSION
+fi
+TARBALL=$TARBALLDIR/wxPython-src-$VERSION.tar.gz
+
+if [ ! -e $TARBALLDIR/wxPython-demo-$VERSION.tar.gz ]; then 
+    echo "-------------------------------------------------------"
+    echo " WARNING:  Demo tarball not found, will skip building "
+    echo "           the Demo app bundle and etc."
+    echo " $TARBALLDIR/wxPython-demo-$VERSION.tar.gz"
+    echo "-------------------------------------------------------"
+fi
+
+if [ ! -e $TARBALLDIR/wxPython-docs-$VERSION.tar.gz ]; then
+    echo "-------------------------------------------------------"
+    echo " WARNING:  Docs tarball not found, will skip building "
+    echo "           the the wxDocsViewer app bundle and etc."
+    echo " $TARBALLDIR/wxPython-docs-$VERSION.tar.gz"
+    echo "-------------------------------------------------------"
+fi
+
+
+
 
-# TODO:  Should I change the prefix to /usr?
-PREFIX=/usr/local
+PREFIX=/usr/local/lib/wxPython-$CHARTYPE-$VERSION
+BINPREFIX=/usr/local/bin
 
+WXROOT=`dirname $PWD`
 PROGDIR="`dirname \"$0\"`"
 TMPDIR=$PWD/_build_dmg
 
 BUILDROOT=$TMPDIR/build
-INSTALLROOT=$TMPDIR/install
-INSTALLDEVEL=$TMPDIR/install-devel
+
+INSTALLROOT=$TMPDIR/install-root
+INSTALLAPPS=$TMPDIR/install-apps
+
 DMGDIR=$TMPDIR/dmg
+DMGROOT=$DMGDIR/root
+DMGAPPS=$DMGDIR/apps
+
 RESOURCEDIR=$PROGDIR/resources
 DESTDIR=$PWD/dist
-
+SRCROOT=$BUILDROOT/wxPython-src-$VERSION
 
 
 #----------------------------------------------------------------------
@@ -81,9 +157,13 @@ DESTDIR=$PWD/dist
 
 mkdir -p $BUILDROOT
 mkdir -p $INSTALLROOT
-mkdir -p $INSTALLDEVEL
+mkdir -p $INSTALLAPPS
+
 rm -rf $DMGDIR
-mkdir -p $DMGDIR/root
+mkdir -p $DMGROOT
+mkdir -p $DMGAPPS/Docs
+mkdir -p $DMGAPPS/Samples
+
 
 pushd $BUILDROOT
 
@@ -91,200 +171,181 @@ pushd $BUILDROOT
 #----------------------------------------------------------------------
 # Unpack the tarball
 
-if [ -z "$skiptar" ]; then
-    tar xzvf $TARBALL
+if [ $skiptar != yes ]; then
+    echo Unarchiving tarball...
+    tar xzf $TARBALL
 fi
 
-if [ "$use_cvs" = 1 ]; then
-    # copy the cvs workspace, except for build dirs
-
-    mkdir -p wxPythonSrc-$VERSION
-
-    echo Finding updated files...
-    if [ -e .last_copy ]; then
-       FEXPR="-cnewer .last_copy"
-    fi
-    find /projects/wx $FEXPR -print \
-       | grep -v wx/build \
-       | grep -v wxPython/build \
-       | grep -v wxPython/_build \
-       | grep -v CVS \
-       | cut -b 14- > filelist
-
-    for x in `cat filelist`; do
-       if [ -d "/projects/wx/$x" ]; then
-           mkdir -p "wxPythonSrc-$VERSION/$x"
-       else
-           echo $x
-           cp -p "/projects/wx/$x" "wxPythonSrc-$VERSION/$x"
-       fi
-    done
+if [ $inplace = no ]; then
+    # make a build dir and cd to it.
+    cd wxPython-src-$VERSION
+    WXDIR=`pwd`
+    mkdir -p $WXDIR/bld
+    cd $WXDIR/bld
+    WXBLD=$WXDIR/bld
+else
 
-    touch .last_copy
+    # If building "inplace" then our build dir will be off of the
+    # WXROOT like normal, adjust the variables to find things that
+    # way.
+    WXBLD=$WXROOT/build-$CHARTYPE
+    mkdir -p $WXBLD
+    cd $WXBLD
+    WXDIR=..
+    SRCROOT=$WXROOT
 fi
 
-
-cd wxPythonSrc-$VERSION
-WXDIR=`pwd`
-mkdir -p $WXDIR/build
-cd $WXDIR/build
+echo "Using wx root dir: $WXROOT"
+echo "Using build dir:   $WXBLD" 
+echo "Using source tree: $WXDIR"
 
 #----------------------------------------------------------------------
 
 
-# Configure wxWindows
-if [ -z "$skipconfig" ]; then
-    ../configure --with-mac --prefix=$PREFIX \
+# Configure wxWidgets
+if [ $skipconfig != yes ]; then
+    $WXDIR/configure \
+       --prefix=$PREFIX \
+       --with-mac \
+       --enable-monolithic \
        --with-opengl \
-       --enable-precomp=no \
+       --enable-sound \
+       --enable-display \
        --enable-geometry \
-       --enable-optimise \
        --enable-debug_flag \
-       --with-libjpeg=builtin \
-       --with-libpng=builtin \
-       --with-libtiff=builtin \
-       --with-zlib=builtin
-
-fi
-
-# Build wxWindows and wxPython
-if [ -z "$skipbuild" ]; then
-    make
-
-    cd $WXDIR/wxPython
-    python$PYVER setup.py \
-       IN_CVS_TREE=1 \
-       WX_CONFIG="$WXDIR/build/wx-config --prefix=$WXDIR --exec-prefix=$WXDIR/build" \
-       build
+       --enable-precomp=no \
+       --enable-optimise \
+       $UNICODEOPT
 
 
-    # Build wxrc (XRC resource tool) but don't use the makefiles since they expect
-    # a shared version of the xrc lib to have been built...
-    cd $WXDIR/contrib/utils/wxrc
-    WX_CONFIG="$WXDIR/build/wx-config --prefix=$WXDIR --exec-prefix=$WXDIR/build"
-    wCC=`$WX_CONFIG --cc`
-    wCXX=`$WX_CONFIG --cxx`
+fi
 
-    for f in wxrc.cpp ../../src/xrc/*.cpp; do
-       echo $f
-       $wCXX `$WX_CONFIG --cxxflags` -I ../../include -I ../../src/xrc/expat/xmlparse -I ../../src/xrc/expat/xmltok -c $f
-    done
-    for f in ../../src/xrc/expat/xmlparse/xmlparse.c ../../src/xrc/expat/xmltok/xmlrole.c ../../src/xrc/expat/xmltok/xmltok.c; do
-       echo $f
-       $wCC `$WX_CONFIG --cxxflags` -I ../../include -I ../../src/xrc/expat/xmlparse -I ../../src/xrc/expat/xmltok -c $f
-    done
+# Build wxWidgets and wxPython
+if [ $skipbuild != yes ]; then
 
-    # the handlers are not needed
-    rm xh_*.o xmlrsall.o
+    # Make wxWidgets and some contribs
 
-    $wCXX `$WX_CONFIG --libs` *.o -o wxrc
-    strip wxrc
+    # For some reason Rez and DeRez have started locking up if run as
+    # root, figure out why, but in the meantime...
+    if [ "$UID" = "0" ]; then
+       chmod a+w lib
+       if [ "$CHARTYPE" = "ansi" ]; then
+           su robind -c "make lib/libwx_macd-2.5.3.r"
+       else
+           su robind -c "make lib/libwx_macud-2.5.3.r"
+       fi
+    fi
 
+    make $MAKEJOBS
+    make $MAKEJOBS -C contrib/src/gizmos
+    make $MAKEJOBS -C contrib/src/ogl CXXFLAGS="-DwxUSE_DEPRECATED=0"
+    make $MAKEJOBS -C contrib/src/stc
+
+    # Build wxPython
+    cd $WXROOT/wxPython
+    $PYTHON setup.py \
+       UNICODE=$PYUNICODEOPT \
+       NO_SCRIPTS=1 \
+       EP_ADD_OPTS=1 \
+       WX_CONFIG="$WXBLD/wx-config --inplace" \
+       BUILD_BASE=$WXBLD/wxPython \
+       build
 fi
 
 #----------------------------------------------------------------------
-# Install wxWindows
 
-if [ -z "$skipinstall" ]; then
-    cd $WXDIR/build
-    make prefix=$INSTALLROOT/$PREFIX install
+if [ $skipinstall != yes ]; then
+    # Install wxWidgets
+    cd $WXBLD
+    make prefix=$INSTALLROOT$PREFIX install
+    make -C contrib/src/gizmos prefix=$INSTALLROOT$PREFIX install
+    make -C contrib/src/ogl CXXFLAGS="-DwxUSE_DEPRECATED=0" prefix=$INSTALLROOT/$PREFIX install
+    make -C contrib/src/stc prefix=$INSTALLROOT$PREFIX install
+
 
+    # relink wx-config with a relative link
+    cd $INSTALLROOT$PREFIX/bin
+    rm wx-config
+    ln -s ../lib/wx/config/* wx-config
 
     # and wxPython
-    cd $WXDIR/wxPython
-    python$PYVER setup.py \
-       IN_CVS_TREE=1 \
-       WX_CONFIG="$WXDIR/build/wx-config --prefix=$WXDIR --exec-prefix=$WXDIR/build" \
+    cd $WXROOT/wxPython
+    $PYTHON setup.py \
+       UNICODE=$PYUNICODEOPT \
+       NO_SCRIPTS=1 \
+       EP_ADD_OPTS=1 \
+       WX_CONFIG="$INSTALLROOT/$PREFIX/bin/wx-config --prefix=$INSTALLROOT/$PREFIX" \
+       BUILD_BASE=$WXBLD/wxPython \
        install \
        --root=$INSTALLROOT
 
+
+    # Apple's Python (on Panther) sym-links the site-packages dir to
+    # /Library/Python/$PYVER so we need to move the files so they are
+    # installed in the physical location, not the virtual one.
+    if [ "$KIND" = "panther" ]; then
+       if [ -e $INSTALLROOT/Library/Python/$PYVER ]; then
+           rm -r $INSTALLROOT/Library/Python/$PYVER
+       fi          
+       mkdir -p $INSTALLROOT/Library/Python/$PYVER
+       mv $INSTALLROOT/$SITEPACKAGES/* $INSTALLROOT/Library/Python/$PYVER
+       rm -r $INSTALLROOT/System
+       SITEPACKAGES=/Library/Python/$PYVER
+    fi
+
     # install wxPython's tool scripts
-    cd $WXDIR/wxPython/scripts
-    python$PYVER CreateMacScripts.py $INSTALLROOT $PREFIX/bin
+    mkdir -p $INSTALLROOT$BINPREFIX
+    cd $WXROOT/wxPython/scripts
+    python$PYVER CreateMacScripts.py $INSTALLROOT $BINPREFIX
 
-    # Install wxrc
-    cp $WXDIR/contrib/utils/wxrc/wxrc $INSTALLROOT$PREFIX/bin
 
+    # Remove the .pyc/.pyo files they just take up space and can be recreated
+    # during the install.
+    pushd $WXROOT/wxPython
+    $PYTHON $PROGDIR/../zappycfiles.py $INSTALLROOT > /dev/null
+    popd
 
-    # Move wxWindows devel files and save for a separate installer package
-    mkdir -p $INSTALLDEVEL$PREFIX
-    mkdir -p $INSTALLDEVEL$PREFIX/bin
-    mkdir -p $INSTALLDEVEL$PREFIX/lib
-    mv -f $INSTALLROOT$PREFIX/include $INSTALLDEVEL$PREFIX
-    mv -f $INSTALLROOT$PREFIX/lib/wx  $INSTALLDEVEL$PREFIX/lib
-    mv -f $INSTALLROOT$PREFIX/bin/wx* $INSTALLDEVEL$PREFIX/bin
+    # Set premissions for files in $INSTALLROOT
+    if [ "$UID" = "0" ]; then
+       chown -R root:admin $INSTALLROOT
+       chmod -R g+w        $INSTALLROOT
+    fi
+fi
 
-    # TODO for $INSTALLROOT and $INSTALLDEVEL ?
-    # chown -R root:admin
-    # chmod -R g+w
+if [ "$KIND" = "panther" ]; then
+    SITEPACKAGES=/Library/Python/$PYVER
 fi
+PKGDIR=`cat $INSTALLROOT$SITEPACKAGES/wx.pth`
 
 popd
 
 #----------------------------------------------------------------------
 
 # Make the Installer packages and disk image
-if [ -z "$skipdmg" ]; then
+if [ $skipdmg != yes ]; then
 
-    # Remove the .pyc/.pyo files they just take up space and can be recreated
-    # during the install.
-    python $PROGDIR/../zappycfiles.py $INSTALLROOT/Library/Frameworks/Python.framework
-
-    # Copy the demo, samples, and such to the Applications dir
-    APPDIR=$INSTALLROOT/Applications/wxPythonOSX-$VERSION
-    mkdir -p $APPDIR
-    cp -pR $WXDIR/wxPython/demo $APPDIR
-    cp -pR $WXDIR/wxPython/samples $APPDIR
-
-    # Move sample launchers to .pyw files.
-    # TODO:  A better, more automated way to do this!!!
-    pushd $APPDIR/samples
-    for x in StyleEditor/STCStyleEditor \
-           doodle/superdoodle \
-           frogedit/FrogEdit \
-           pySketch/pySketch \
-           wxProject/wxProject; do
-        mv $x.py $x.pyw
-    done
-    popd
+    #-----------------------------------------------
+    # The main runtime installer package
 
-    # Make an app to launch the demo
-    cat > $APPDIR/demo/RunDemo.pyw <<EOF
-import sys, os
-sys.path.insert(0, "/Applications/wxPythonOSX-$VERSION/demo")
-os.chdir("/Applications/wxPythonOSX-$VERSION/demo")
-import Main
-Main.main()
-EOF
-    pythonw $PROGDIR/../buildapp.py \
-       --builddir=$APPDIR \
-       --name=RunDemo \
-       --mainprogram=$APPDIR/demo/RunDemo.pyw \
-       --iconfile=$PROGDIR/RunDemo.icns \
-       build
+    # Make the welcome message
+    case $KIND in
+       panther)  W_MSG="the Panther (OS X 10.3.x) version of" ;;
+       jaguar)   W_MSG="the Jaguar (OS X 10.2.x) version of" ;;
+    esac
+    
 
-    # Make an app to launch PyShell
-    pythonw $PROGDIR/../buildapp.py \
-       --builddir=$APPDIR \
-       --name=PyShell \
-       --mainprogram=$INSTALLROOT$PREFIX/bin/pyshell.py \
-       --iconfile=$PROGDIR/PieShell.icns \
-       build
+    cat > $RESOURCEDIR/Welcome.txt <<EOF
+Welcome!
 
-     # Make an app to launch XRCed
-     pythonw $PROGDIR/../buildapp.py \
-       --builddir=$APPDIR \
-       --name=XRCed \
-       --mainprogram=$INSTALLROOT$PREFIX/bin/xrced.py \
-       --iconfile=$PROGDIR/XRCed.icns \
-       build
+This Installer package will install the wxPython $CHARTYPE runtime $VERSION for $W_MSG MacPython-OSX $PYVER.  This includes:
 
+    * The wxPython packages and modules
+    * The wxWidgets shared libraries and headers
+    * Some command line tool scripts, installed to /usr/local/bin.
 
-    # Make the welcome message
-    cat > $RESOURCEDIR/Welcome.txt <<EOF
-Welcome!
+You must install onto your current boot disk, eventhough the installer does not enforce this, otherwise things will not work.
 
-This program will install wxPython $VERSION for MacPython-OSX $PYVER.
+You can install more than one version of the wxPython runtime if you desire.  The most recently installed version will be the default wxPython, but you can choose another by setting the PYTHONPATH or by using the wxversion module.  See http://wiki.wxpython.org/index.cgi/MultiVersionInstalls for more details.
 
 Build date:   `date`
 EOF
@@ -294,6 +355,8 @@ EOF
 #!/bin/sh
 # Cleanup any old install of the wxPython package
 rm -rf \$2$SITEPACKAGES/wxPython
+rm -rf \$2$SITEPACKAGES/wx
+rm -rf \$2$SITEPACKAGES/$PKGDIR
 exit 0
 EOF
     chmod +x $RESOURCEDIR/preflight
@@ -302,89 +365,247 @@ EOF
     cat > $RESOURCEDIR/postflight <<EOF
 #!/bin/sh -e
 # Compile the .py files in the wxPython pacakge
-/usr/local/bin/python \$2$SITEPACKAGES/../compileall.py \$2$SITEPACKAGES/wxPython
-/usr/local/bin/python -O \$2$SITEPACKAGES/../compileall.py \$2$SITEPACKAGES/wxPython
-
-# and in the demo
-/usr/local/bin/python \$2$SITEPACKAGES/../compileall.py /Applications/wxPythonOSX-$VERSION/demo
+$PYTHON \$2$PYLIB/compileall.py \$2$SITEPACKAGES/$PKGDIR
+$PYTHON -O \$2$PYLIB/compileall.py \$2$SITEPACKAGES/$PKGDIR
 
-# Make the demo/data dir writable
-chmod a+w /Applications/wxPythonOSX-$VERSION/demo/data
-
-# and the wxPython pacakge should be group writable
-chgrp -R admin \$2$SITEPACKAGES/wxPython
-chgrp -R admin /Applications/wxPythonOSX-$VERSION
-chmod -R g+w \$2$SITEPACKAGES/wxPython
-chmod -R g+w /Applications/wxPythonOSX-$VERSION
+# and all of the wxPython pacakge should be group writable
+chgrp -R admin \$2$SITEPACKAGES/$PKGDIR
+chmod -R g+w \$2$SITEPACKAGES/$PKGDIR
 
 exit 0
 EOF
     chmod +x $RESOURCEDIR/postflight
 
+    
 
-
-    # Finally, build the main package...
-    rm -rf wxPythonOSX.pkg
+    # Build the main Installer Package...
+    rm -rf wxPython${SHORTVER}-osx-$CHARTYPE-$KIND.pkg
     python $PROGDIR/../buildpkg.py \
-       --Title=wxPythonOSX \
+       --Title=wxPython${SHORTVER}-osx-$CHARTYPE-$KIND \
        --Version=$VERSION \
-       --Description="wxPython $VERSION for MacPython-OSX $PYVER" \
+       --Description="wxPython $CHARTYPE runtime $VERSION for $W_MSG MacPython-OSX $PYVER" \
        --NeedsAuthorization="YES" \
        --Relocatable="NO" \
        --InstallOnly="YES" \
        $INSTALLROOT \
        $RESOURCEDIR
 
-    mv wxPythonOSX.pkg $DMGDIR/root
+    mv wxPython${SHORTVER}-osx-$CHARTYPE-$KIND.pkg $DMGROOT
 
+    rm $RESOURCEDIR/postflight
+    rm $RESOURCEDIR/preflight
+    rm $RESOURCEDIR/Welcome.txt
 
-    # and the devel package
-    rm -rf wxPythonOSX-devel.pkg
-    python $PROGDIR/../buildpkg.py \
-       --Title=wxPythonOSX-devel \
-       --Version=$VERSION \
-       --Description="Headers and such that allow you to link with the same wxMac that wxPython does" \
-       --NeedsAuthorization="YES" \
-       --Relocatable="NO" \
-       --InstallOnly="YES" \
-       $INSTALLROOT
 
-    mv wxPythonOSX-devel.pkg $DMGDIR/root
+    #-----------------------------------------------
+    # Make a README to go on the disk image
+    cat > "$DMGROOT/README 1st.txt" <<EOF
+Welcome to wxPython!
+
+This disk image contains the following items:
+
+    wxPython${SHORTVER}-osx-$CHARTYPE-$VERSION-$KIND
+
+        This Installer contains the wxPython runtime, compiled on a
+        $KIND OS X system, using the $CHARTYPE build of the wxWidgets
+        library.  It includes the Python modules and extension
+        modules, as well as the wxWidgets libraries.
+
+        It is possible to have more than one version of the runtime
+        installed at once if you wish.  The most recently installed
+        version will be the default wxPython, but you can choose
+        another by setting the PYTHONPATH or by using the wxversion
+        module.  For more details see:
+        http://wiki.wxpython.org/index.cgi/MultiVersionInstalls 
+
+
+    uninstall_wxPython.py
+
+        A simple tool to help you manage your installed versions of
+        wxPython.  It will allow you to choose from the currently
+        installed wxPython packages and to select one for
+        uninstallation.  It is a text-mode tool so you can either run
+        it from a Terminal command line, or you can open it with
+        PythonLauncher and let it create a Terminal to run it in.
+
+        NOTE: If you have versions prior to 2.5.3.1 installed, please
+        do run this uninstall tool to remove the older version.
+
+EOF
+
+
+
+    cp $PROGDIR/../uninstall_wxPython.py $DMGROOT
+
+
+    #-----------------------------------------------
+    # Make a disk image to hold these files
+    dmgname=wxPython${SHORTVER}-osx-$CHARTYPE-$VERSION-$KIND-py$PYVER
+    $PROGDIR/../makedmg $DMGROOT $DMGDIR $dmgname
+
+    echo Moving $DMGDIR/$dmgname.dmg to $DESTDIR
+    mv $DMGDIR/$dmgname.dmg  $DESTDIR
+
+
+#---------------------------------------------------------------------------
+# Now create app bundles for the demo, docs, and tools and make another
+# disk image to hold it all.
+#---------------------------------------------------------------------------
+
+    cat > "$DMGAPPS/README 1st.txt" <<EOF
+Welcome to wxPython!
+
+On this disk image you will find Demo, Tools, Docs, and etc. for
+wxPython $VERSION.  Everything here is optional and you can drag them
+out of the disk image and drop them wherever you want.  You will need
+to have an installed wxPython runtime to be able to use any of them.
+
+
+   wxPython Demo        An application bundle version of the demo.
+                        (This has it's own copy of the demo sources 
+                        within the bundle.)
+
+   XRCed                An application for editing wxPython resource
+                        files  (XRC files.)
+
+   PyCrust              An application that provides an interactive
+                        Python shell and also namespace inspectors.
+
 
 
-    # Make a README.txt to go on the disk image
-    cat > $DMGDIR/root/README.txt <<EOF
-The files on this disk image are Installer packages for wxPythonOSX
-$VERSION for MacPython-OSX $PVER.  You must already have MacPython-OSX
-installed.
+   Docs/wxDocsViewer    An application that allows you to view the
+                        wxWidgets documentation.
 
-The wxPython extension modules, library, demo and samples are
-contained in the wxPythonOSX package. You should install at least this
-package to use wxPython.
+   Docs/licence         License files.
 
-If you have any need to create applicaitons or extension modules that
-link with the same wxMac that wxPython does, then you can also install
-the wxPythonOSX-devel package to get the necessary header files and
-such.  Otherwise you don't need it.
+   Docs/other           A few readmes, change log, etc.
+
+
+   Samples/samples      Several small sample applications that
+                        demonstrate how to use wxPython.
+
+   Samples/demo         A copy of the wxPython demo source code,
+                        just open the folder and run demo.pyw.
 
 Happy Hacking!
 EOF
 
+#   PyAlaMode            An extension of PyCrust that includes source
+#                        file editing capabilities.
+
+
+    # wxDocs
+    if [ ! -e $TARBALLDIR/wxPython-docs-$VERSION.tar.gz ]; then
+       cat > "$DMGAPPS/Docs/Build ERROR.txt" <<EOF
+
+The wxPython-docs tarball was not found when building this disk image!
+
+EOF
+
+    else
+       pushd $BUILDROOT
+       tar xzvf $TARBALLDIR/wxPython-docs-$VERSION.tar.gz
+       popd
+
+        # Make an app to launch viewdocs.py
+       $PYTHONW $PROGDIR/../buildapp.py \
+           --builddir=$DMGAPPS/Docs \
+           --name=wxDocsViewer \
+           --mainprogram=$BUILDROOT/wxPython-$VERSION/docs/viewdocs.py \
+           --iconfile=$PROGDIR/Info.icns \
+           build
+
+       cp $BUILDROOT/wxPython-$VERSION/docs/*.zip $DMGAPPS/Docs/wxDocsViewer.app/Contents/Resources
+
+       cat > "$DMGAPPS/Docs/README 1st.txt" <<EOF
+
+The wxDocsViewer application needs to be copied to your Desktop (or
+someplace else you have write access to) before you can run it, so it
+can cache some indexes within its bundle.
+
+EOF
+
+    fi
+
+    # license files, docs, etc.
+    pushd $DMGAPPS/Docs
+    cp -pR $SRCROOT/wxPython/licence   .
+    cp -pR $SRCROOT/wxPython/docs      .
+    rm -rf docs/bin
+    rm -rf docs/xml-raw
+    mv docs other
+    popd
+
+
+    if [ ! -e $TARBALLDIR/wxPython-demo-$VERSION.tar.gz ]; then
+       cat > "$DMGAPPS/Samples/Build ERROR.txt" <<EOF
+
+The wxPython-demo tarball was not found when building this disk image!
+
+EOF
+       cp "$DMGAPPS/Samples/Build ERROR.txt" $DMGAPPS
+
+    else
+
+        # Copy the demo and samples to the disk image from the tarball
+       pushd $DMGAPPS/Samples
+       tar xzvf $TARBALLDIR/wxPython-demo-$VERSION.tar.gz
+       mv wxPython-$VERSION/* .
+       rm -rf wxPython-$VERSION
+       rm demo/b demo/.setup.sh
+       mv demo/demo.py demo/demo.pyw
+       popd
+
+        # Make an app bundle to run the demo
+       $PYTHONW $PROGDIR/../buildapp.py \
+           --builddir=$DMGAPPS \
+           --name="wxPython Demo" \
+           --mainprogram=$DMGAPPS/Samples/demo/demo.pyw \
+           --iconfile=$PROGDIR/RunDemo.icns \
+           build
+       cp -pR $DMGAPPS/Samples/demo/* "$DMGAPPS/wxPython Demo.app/Contents/Resources"
+    fi
+
+
+    # Make an app bundle to launch PyCrust
+    $PYTHONW $PROGDIR/../buildapp.py \
+       --builddir=$DMGAPPS \
+       --name=PyCrust \
+       --mainprogram=$INSTALLROOT$BINPREFIX/pycrust.py \
+       --iconfile=$PROGDIR/PieShell.icns \
+       build
+
+## TODO: PyAlaMode needs tweaked to be able to run from a bundle.  It
+## needs to know to ignore command line parameters and etc...
+#      # and PyAlaMode
+#      $PYTHONW $PROGDIR/../buildapp.py \
+#      --builddir=$DMGAPPS \
+#      --name=PyAlaMode \
+#      --mainprogram=$INSTALLROOT$BINPREFIX/pyalamode.py \
+#      --iconfile=$PROGDIR/PieShell.icns \
+#      build
+
+    # Make an app to launch XRCed
+    $PYTHONW $PROGDIR/../buildapp.py \
+       --builddir=$DMGAPPS \
+       --name=XRCed \
+       --mainprogram=$INSTALLROOT$BINPREFIX/xrced.py \
+       --iconfile=$PROGDIR/XRCed.icns \
+       build
+
 
-    # license files, etc.
-    cp -pR $WXDIR/wxPython/licence $DMGDIR/root
-    cp $WXDIR/wxPython/CHANGES.txt $DMGDIR/root
 
-    # and then finally make a disk image containing the packages and etc.
-    $PROGDIR/../makedmg $DMGDIR/root $DMGDIR wxPythonOSX-$VERSION-py$PYVER
+    # and then finally make a disk image containing everything
+    dmgname=wxPython${SHORTVER}-osx-docs-demos-$VERSION
+    $PROGDIR/../makedmg $DMGAPPS $DMGDIR $dmgname
 
-    echo Moving $DMGDIR/wxPythonOSX-$VERSION-py$PYVER.dmg to $DESTDIR
-    mv $DMGDIR/wxPythonOSX-$VERSION-py$PYVER.dmg $DESTDIR
+    echo Moving $DMGDIR/$dmgname.dmg to $DESTDIR
+    mv $DMGDIR/$dmgname.dmg  $DESTDIR
 fi
 
 
 # Cleanup build/install dirs
-if [ -z "$skipclean" ]; then
+if [ $skipclean != yes ]; then
     echo "Cleaning up..."
     rm -rf $TMPDIR
 else