]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/distrib/mac/wxPythonOSX/build
Remember the version selected and allow require to be called again as
[wxWidgets.git] / wxPython / distrib / mac / wxPythonOSX / build
index b3221c8100cd15ee16f81229075f8816001f20ef..53404d8e2b58e24f2ee767d19812a4640317a666 100755 (executable)
@@ -10,6 +10,13 @@ if [ ! -d wxPython -o ! -e ${spectemplate} ]; then
     exit 1
 fi
 
     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
 
 #----------------------------------------------------------------------
 # Check Parameters
 
@@ -22,7 +29,9 @@ function usage {
     echo ""
     echo "optional command flags:"
     echo "   skiptar        Don't unpack the tarball"
     echo ""
     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 wxWidgets or wxPython"
     echo "   skipinstall    Don't do the installation step"
     echo "   skipconfig     Don't run configure"
     echo "   skipbuild      Don't build wxWidgets or wxPython"
     echo "   skipinstall    Don't do the installation step"
@@ -46,16 +55,25 @@ esac
 PYTHONW=${PYTHON}w
 shift
 
 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
 
 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
 
        *)  echo "Unknown flag \"${flag}\""
            usage
@@ -69,24 +87,66 @@ 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
 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 [ -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
+
 
 
-TARBALLDIR=/stuff/Development/wxPython/dist/$VERSION
-TARBALL=$TARBALLDIR/wxPythonSrc-$VERSION.tar.gz
 
 
-PREFIX=/usr/lib/wxPython-$VERSION
-BINPREFIX=/usr/bin
+
+PREFIX=/usr/local/lib/wxPython-$CHARTYPE-$VERSION
+BINPREFIX=/usr/local/bin
 
 WXROOT=`dirname $PWD`
 PROGDIR="`dirname \"$0\"`"
 TMPDIR=$PWD/_build_dmg
 
 BUILDROOT=$TMPDIR/build
 
 WXROOT=`dirname $PWD`
 PROGDIR="`dirname \"$0\"`"
 TMPDIR=$PWD/_build_dmg
 
 BUILDROOT=$TMPDIR/build
-INSTALLROOT=$TMPDIR/install
-INSTALLDEVEL=$TMPDIR/install-devel
+
+INSTALLROOT=$TMPDIR/install-root
+INSTALLCOMMON=$TMPDIR/install-common
+INSTALLAPPS=$TMPDIR/install-apps
+
 DMGDIR=$TMPDIR/dmg
 DMGDIR=$TMPDIR/dmg
+DMGROOT=$DMGDIR/root
+DMGAPPS=$DMGDIR/apps
+
 RESOURCEDIR=$PROGDIR/resources
 DESTDIR=$PWD/dist
 RESOURCEDIR=$PROGDIR/resources
 DESTDIR=$PWD/dist
-SRCROOT=$BUILDROOT/wxPythonSrc-$VERSION
+SRCROOT=$BUILDROOT/wxPython-src-$VERSION
 
 
 #----------------------------------------------------------------------
 
 
 #----------------------------------------------------------------------
@@ -94,11 +154,13 @@ SRCROOT=$BUILDROOT/wxPythonSrc-$VERSION
 
 mkdir -p $BUILDROOT
 mkdir -p $INSTALLROOT
 
 mkdir -p $BUILDROOT
 mkdir -p $INSTALLROOT
-#mkdir -p $INSTALLDEVEL
+mkdir -p $INSTALLCOMMON
+mkdir -p $INSTALLAPPS
+
 rm -rf $DMGDIR
 rm -rf $DMGDIR
-mkdir -p $DMGDIR/root/Apps
-mkdir -p $DMGDIR/root/Docs
-mkdir -p $DMGDIR/root/Samples
+mkdir -p $DMGROOT
+mkdir -p $DMGAPPS/Docs
+mkdir -p $DMGAPPS/Samples
 
 
 pushd $BUILDROOT
 
 
 pushd $BUILDROOT
@@ -107,121 +169,101 @@ pushd $BUILDROOT
 #----------------------------------------------------------------------
 # Unpack the tarball
 
 #----------------------------------------------------------------------
 # Unpack the tarball
 
-if [ -z "$skiptar" ]; then
+if [ $skiptar != yes ]; then
     echo Unarchiving tarball...
     tar xzf $TARBALL
 fi
 
     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
-    MEASURE=$WXROOT//
-    find $WXROOT $FEXPR -print \
-       | grep -v $WXROOT/bld \
-       | grep -v wxPython/build \
-       | grep -v wxPython/_build \
-       | grep -v CVS \
-       | grep -v .pyc \
-       | cut -b ${#MEASURE}- > filelist
-
-    for x in `cat filelist`; do
-       if [ -d "$WXROOT/$x" ]; then
-           mkdir -p "wxPythonSrc-$VERSION/$x"
-       else
-           echo $x
-           cp -p "$WXROOT/$x" "wxPythonSrc-$VERSION/$x"
-       fi
-    done
-
-    touch .last_copy
+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
+    # If building "inplace" then our build dir will be BUILDROOT,
+    # adjust the variables to find things that way.
+    WXDIR=$WXROOT
+    SRCROOT=$WXROOT
+    WXBLD=$BUILDROOT
 fi
 
 fi
 
-
-cd wxPythonSrc-$VERSION
-WXDIR=`pwd`
-mkdir -p $WXDIR/bld
-cd $WXDIR/bld
+echo "Using source tree: $WXDIR"
+echo "Using build dir:   $WXBLD" 
 
 #----------------------------------------------------------------------
 
 
 # Configure wxWidgets
 
 #----------------------------------------------------------------------
 
 
 # Configure wxWidgets
-if [ -z "$skipconfig" ]; then
-    ../configure \
+if [ $skipconfig != yes ]; then
+    $WXDIR/configure \
        --prefix=$PREFIX \
        --with-mac \
        --prefix=$PREFIX \
        --with-mac \
-       --disable-monolithic \
+       --enable-monolithic \
        --with-opengl \
        --with-opengl \
-       --enable-geometry \
-       --enable-optimise \
        --enable-sound \
        --enable-display \
        --enable-sound \
        --enable-display \
+       --enable-geometry \
+       --enable-debug_flag \
        --enable-precomp=no \
        --enable-precomp=no \
-       \
-       --with-libjpeg=builtin \
-       --with-libpng=builtin \
-       --with-libtiff=builtin \
-       --with-zlib=builtin \
-       \
-       --enable-debug_flag
+       --enable-optimise \
+       $UNICODEOPT
+
 
 fi
 
 # Build wxWidgets and wxPython
 
 fi
 
 # Build wxWidgets and wxPython
-if [ -z "$skipbuild" ]; then
+if [ $skipbuild != yes ]; then
 
     # Make wxWidgets and some contribs
 
     # Make wxWidgets and some contribs
-    make 
-    make -C contrib/src/gizmos 
-    make -C contrib/src/ogl CXXFLAGS="-DwxUSE_DEPRECATED=0"
-    make -C contrib/src/stc
-    make -C contrib/src/xrc
 
 
-    if [ ! -e $WXDIR/include/wx/gizmos ]; then
-       # Make some links so the wxPython build can find all the headers it needs
-       pushd $WXDIR/include/wx
-       ln -s ../../contrib/include/wx/* .
-       popd
+    # For some reason Rez and DeRez have started locking up if run as root...
+    if [ "$UID" = "0" ]; then
+       chmod a+w lib
+       su robind -c "make lib/libwx_macd-2.5.3.r"
     fi
 
     fi
 
+    make
+    make -C contrib/src/gizmos
+    make -C contrib/src/ogl CXXFLAGS="-DwxUSE_DEPRECATED=0"
+    make -C contrib/src/stc
+
     # Build wxPython
     cd $WXDIR/wxPython
     $PYTHON setup.py \
     # Build wxPython
     cd $WXDIR/wxPython
     $PYTHON setup.py \
+       UNICODE=$PYUNICODEOPT \
        NO_SCRIPTS=1 \
        NO_SCRIPTS=1 \
-       WX_CONFIG="$WXDIR/bld/wx-config --prefix=$WXDIR --exec-prefix=$WXDIR/bld" \
+       EP_ADD_OPTS=1 \
+       WX_CONFIG="$WXBLD/wx-config --inplace" \
+       BUILD_BASE=$WXBLD/wxPython \
        build
        build
-
-
-    # Build wxrc (XRC resource tool) 
-    cd $WXDIR/bld/contrib/utils/wxrc
-    make 
-    strip wxrc
-
 fi
 
 #----------------------------------------------------------------------
 
 fi
 
 #----------------------------------------------------------------------
 
-if [ -z "$skipinstall" ]; then
+if [ $skipinstall != yes ]; then
     # Install wxWidgets
     # Install wxWidgets
-    cd $WXDIR/bld
+    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
     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
-    make -C contrib/src/xrc 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 setup.py \
     # and wxPython
     cd $WXDIR/wxPython
     $PYTHON setup.py \
+       UNICODE=$PYUNICODEOPT \
        NO_SCRIPTS=1 \
        NO_SCRIPTS=1 \
+       EP_ADD_OPTS=1 \
        WX_CONFIG="$INSTALLROOT/$PREFIX/bin/wx-config --prefix=$INSTALLROOT/$PREFIX" \
        WX_CONFIG="$INSTALLROOT/$PREFIX/bin/wx-config --prefix=$INSTALLROOT/$PREFIX" \
+       BUILD_BASE=$WXBLD/wxPython \
        install \
        --root=$INSTALLROOT
 
        install \
        --root=$INSTALLROOT
 
@@ -230,58 +272,72 @@ if [ -z "$skipinstall" ]; then
     # /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
     # /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
 
        mkdir -p $INSTALLROOT/Library/Python/$PYVER
        mv $INSTALLROOT/$SITEPACKAGES/* $INSTALLROOT/Library/Python/$PYVER
        rm -r $INSTALLROOT/System
        SITEPACKAGES=/Library/Python/$PYVER
     fi
 
+    # move the common files to $INSTALLCOMMON
+    mkdir -p $INSTALLCOMMON$SITEPACKAGES
+    mv $INSTALLROOT$SITEPACKAGES/wx.pth       $INSTALLCOMMON$SITEPACKAGES
+    mv $INSTALLROOT$SITEPACKAGES/wxversion.py $INSTALLCOMMON$SITEPACKAGES
 
 
-    # install wxPython's tool scripts
-    mkdir -p $INSTALLROOT$BINPREFIX
+    # install wxPython's tool scripts in COMMON too
+    mkdir -p $INSTALLCOMMON$BINPREFIX
     cd $WXDIR/wxPython/scripts
     cd $WXDIR/wxPython/scripts
-    python$PYVER CreateMacScripts.py $INSTALLROOT $BINPREFIX
-
+    python$PYVER CreateMacScripts.py $INSTALLCOMMON $BINPREFIX
 
 
-    # Install wxrc
-    cp $WXDIR/bld/contrib/utils/wxrc/wxrc $INSTALLROOT$BINPREFIX
 
 
+    # Remove the .pyc/.pyo files they just take up space and can be recreated
+    # during the install.
+    pushd $WXDIR/wxPython
+    $PYTHON $PROGDIR/../zappycfiles.py $INSTALLROOT > /dev/null
+    popd
 
 
-    # install the wxPython headers
-    cd $WXDIR/wxPython
-    cp -R include $INSTALLROOT$PREFIX
-    mkdir -p      $INSTALLROOT$PREFIX/include/wx/wxPython/i_files
-    cp src/*.i    $INSTALLROOT$PREFIX/include/wx/wxPython/i_files
-
+    # Set premissions for files in $INSTALLROOT and $INSTALLCOMMON
+    if [ "$UID" = "0" ]; then
+       chown -R root:admin $INSTALLROOT $INSTALLCOMMON
+       chmod -R g+w        $INSTALLROOT $INSTALLCOMMON
+    fi
+fi
 
 
-    # Set premissions for files in $INSTALLROOT 
-    chown -R root:admin $INSTALLROOT
-    chmod -R g+w        $INSTALLROOT
+if [ "$KIND" = "panther" ]; then
+    SITEPACKAGES=/Library/Python/$PYVER
 fi
 fi
+PKGDIR=`cat $INSTALLCOMMON$SITEPACKAGES/wx.pth`
 
 popd
 
 #----------------------------------------------------------------------
 
 # Make the Installer packages and disk image
 
 popd
 
 #----------------------------------------------------------------------
 
 # Make the Installer packages and disk image
-if [ -z "$skipdmg" ]; then
-
-    # Remove the .pyc/.pyo files they just take up space and can be recreated
-    # during the install.
-    $PYTHON $PROGDIR/../zappycfiles.py $INSTALLROOT
+if [ $skipdmg != yes ]; then
 
 
+    #-----------------------------------------------
+    # The main runtime installer package
 
     # 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 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
+    
+
     cat > $RESOURCEDIR/Welcome.txt <<EOF
 Welcome!
 
     cat > $RESOURCEDIR/Welcome.txt <<EOF
 Welcome!
 
-This program will install wxPython $VERSION for $W_MSG MacPython-OSX $PYVER.
+This Installer package will install the wxPython $CHARTYPE runtime $VERSION for $W_MSG MacPython-OSX $PYVER.  This includes:
 
 
-You must install onto your current boot disk, even though the installer does not enforce this, otherwise things will not work.
+    * The wxPython packages and modules
+    * The wxWidgets shared libraries and headers
+
+You must install onto your current boot disk, eventhough the installer does not enforce this, otherwise things will not work.
+
+You can install more than one version of the wxPython runtime if you desire.  You also need to install one instance of the wxPython-common package, which will determine which of the installed runtimes will be the default.
 
 Build date:   `date`
 EOF
 
 Build date:   `date`
 EOF
@@ -292,6 +348,7 @@ EOF
 # Cleanup any old install of the wxPython package
 rm -rf \$2$SITEPACKAGES/wxPython
 rm -rf \$2$SITEPACKAGES/wx
 # 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
 exit 0
 EOF
     chmod +x $RESOURCEDIR/preflight
@@ -300,161 +357,277 @@ EOF
     cat > $RESOURCEDIR/postflight <<EOF
 #!/bin/sh -e
 # Compile the .py files in the wxPython pacakge
     cat > $RESOURCEDIR/postflight <<EOF
 #!/bin/sh -e
 # Compile the .py files in the wxPython pacakge
-$PYTHON \$2$PYLIB/compileall.py \$2$SITEPACKAGES/wxPython
-$PYTHON \$2$PYLIB/compileall.py \$2$SITEPACKAGES/wx
-$PYTHON -O \$2$PYLIB/compileall.py \$2$SITEPACKAGES/wxPython
-$PYTHON -O \$2$PYLIB/compileall.py \$2$SITEPACKAGES/wx
-
+$PYTHON \$2$PYLIB/compileall.py \$2$SITEPACKAGES/$PKGDIR
+$PYTHON -O \$2$PYLIB/compileall.py \$2$SITEPACKAGES/$PKGDIR
 
 # and all of the wxPython pacakge should be group writable
 
 # and all of the wxPython pacakge should be group writable
-chgrp -R admin \$2$SITEPACKAGES/wxPython
-chmod -R g+w \$2$SITEPACKAGES/wxPython
-chgrp -R admin \$2$SITEPACKAGES/wx
-chmod -R g+w \$2$SITEPACKAGES/wx
+chgrp -R admin \$2$SITEPACKAGES/$PKGDIR
+chmod -R g+w \$2$SITEPACKAGES/$PKGDIR
 
 exit 0
 EOF
     chmod +x $RESOURCEDIR/postflight
 
 
 exit 0
 EOF
     chmod +x $RESOURCEDIR/postflight
 
-
+    
 
     # Build the main Installer Package...
 
     # Build the main Installer Package...
-    rm -rf wxPythonOSX-$KIND.pkg
+    rm -rf wxPython${SHORTVER}-osx-$CHARTYPE-$KIND.pkg
     python $PROGDIR/../buildpkg.py \
     python $PROGDIR/../buildpkg.py \
-       --Title=wxPythonOSX-$KIND \
+       --Title=wxPython${SHORTVER}-osx-$CHARTYPE-$KIND \
        --Version=$VERSION \
        --Version=$VERSION \
-       --Description="wxPython $VERSION for $W_MSG MacPython-OSX $PYVER" \
+       --Description="wxPython $CHARTYPE runtime $VERSION for $W_MSG MacPython-OSX $PYVER" \
        --NeedsAuthorization="YES" \
        --Relocatable="NO" \
        --InstallOnly="YES" \
        $INSTALLROOT \
        $RESOURCEDIR
 
        --NeedsAuthorization="YES" \
        --Relocatable="NO" \
        --InstallOnly="YES" \
        $INSTALLROOT \
        $RESOURCEDIR
 
-    mv wxPythonOSX-$KIND.pkg $DMGDIR/root
+    mv wxPython${SHORTVER}-osx-$CHARTYPE-$KIND.pkg $DMGROOT
+
+    rm $RESOURCEDIR/postflight
+    rm $RESOURCEDIR/preflight
+    rm $RESOURCEDIR/Welcome.txt
+
+
+    #-----------------------------------------------
+    # The common files package
 
 
+    # Make the welcome message
+    cat > $RESOURCEDIR/Welcome.txt <<EOF
+Welcome!
 
 
+This package contains the common files that are shared between versions of the wxPython runtime.  This includes some command line scripts installed to /usr/local/bin as well as a Python .pth file for site-packages that will determine which version of the installed runtimes is the default version.
 
 
-    # Make a README.txt to go on the disk image
-    cat > "$DMGDIR/root/README 1st.txt" <<EOF
+EOF
+
+    # Build the common Installer Package...
+    rm -rf wxPython-common-osx-$KIND.pkg
+    python $PROGDIR/../buildpkg.py \
+       --Title=wxPython-common-osx-$KIND \
+       --Version=$VERSION \
+       --Description="Common files for the wxPython runtime ($CHARTYPE-$VERSION)" \
+       --NeedsAuthorization="YES" \
+       --Relocatable="NO" \
+       --InstallOnly="YES" \
+       $INSTALLCOMMON \
+       $RESOURCEDIR
+
+    mv wxPython-common-osx-$KIND.pkg $DMGROOT
+
+    rm $RESOURCEDIR/Welcome.txt
+
+
+
+    #-----------------------------------------------
+    # Make a README to go on the disk image
+    cat > "$DMGROOT/README 1st.txt" <<EOF
 Welcome to wxPython!
 
 Welcome to wxPython!
 
-On this disk image you will find the installer for wxPython $VERSION for $W_MSG MacPython-OSX $PYVER.  MacPython-OSX is not included.  
+This disk image contains the following items:
+
+    wxPython${SHORTVER}-osx-$CHARTYPE-$VERSION-$KIND
+
+        This is the main component of the wxPython runtime.  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, See
+        http://wkik.wxpython.org/index.cgi/MultiVersionInstalls
+        for details on how to choose which version is installed.
+
 
 
-   wxPython-$KIND.pkg   The installer package.  It contains the wxPython 
-                        extension modules, wxMac dynamic libraries and
-                        headers, and some scripts for the command-line 
-                        tools.  
+    wxPython-common-osx-$CHARTYPE-$VERSION-$KIND
+
+        This is the common files for the runtime that are shared
+        between all versions of the runtime.  You need to have one of
+        these installed and it will determine which of the runtimes is
+        the default one that is imported with "import wx", so it
+        should match the version and character type of one of the
+        installed runtimes.  If you are wanting to have only one
+        wxPython installed then be sure to install both of the
+        packages in this disk image.
+
+    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.
+
+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!
 
 
-Everything else here is optional and you can drag them out of the disk 
-image and drop them whereever you want.  You do need to install the above
-package before you can use any of the items below.
+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.
 
 
 
 
-   Apps/wxPython Demo   An application bundle version of the demo.
-                        (This has it's own copy of the sources within
-                        the bundle.)
+   wxPython Demo        An application bundle version of the demo.
+                        (This has it's own copy of the demo sources 
+                        within the bundle.)
 
 
-   Apps/XRCed           An application for editing wxPython resource
+   XRCed                An application for editing wxPython resource
                         files  (XRC files.)
 
                         files  (XRC files.)
 
-   Apps/PyCrust         An application that provides an interactive 
+   PyCrust              An application that provides an interactive
                         Python shell and also namespace inspectors.
 
 
 
                         Python shell and also namespace inspectors.
 
 
 
-   Docs/wxDocs          A folder containing the wxWidgets documentation
-                        bundled in .zip files, and a small wxPython
-                        application that can be used to view the docs.
-                        Just run viewer.pyw.
+   Docs/wxDocsViewer    An application that allows you to view the
+                        wxWidgets documentation.
 
    Docs/licence         License files.
 
 
    Docs/licence         License files.
 
-   Docs/other           A few readmes, change log, etc.  The full 
-                        documentation is downloadable separately. 
+   Docs/other           A few readmes, change log, etc.
 
 
 
 
-   Samples/samples      Several small sample applications that 
+   Samples/samples      Several small sample applications that
                         demonstrate how to use wxPython.
 
                         demonstrate how to use wxPython.
 
-   Samples/demo         A copy of the wxPython demo source code, 
+   Samples/demo         A copy of the wxPython demo source code,
                         just open the folder and run demo.pyw.
 
 Happy Hacking!
 EOF
 
                         just open the folder and run demo.pyw.
 
 Happy Hacking!
 EOF
 
-#   PyAlaMode            An extension of PyCrust that includes source 
+#   PyAlaMode            An extension of PyCrust that includes source
 #                        file editing capabilities.
 
 
     # wxDocs
 #                        file editing capabilities.
 
 
     # wxDocs
-    pushd $DMGDIR/root/Docs
-    tar xzvf $TARBALLDIR/wxPythonDocs-$VERSION.tar.gz
-    mv wxPython-$VERSION/docs  wxDocs
-    rm -r wxPython-$VERSION
-    mv wxDocs/viewdocs.py wxDocs/viewdocs.pyw
+    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.
 
     # 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
     cp -pR $SRCROOT/wxPython/licence   .
     cp -pR $SRCROOT/wxPython/docs      .
     rm -rf docs/bin
     rm -rf docs/xml-raw
     mv docs other
     popd
-    
-    # Copy the demo and samples to the disk image from the tarball
-    pushd $DMGDIR/root/Samples
-    tar xzvf $TARBALLDIR/wxPythonDemo-$VERSION.tar.gz
-    mv wxPython-$VERSION/* .
-    rm -rf wxPython-$VERSION
-    rm demo/b demo/.setup.sh
-    mv demo/demo.py demo/demo.pyw
-    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 \
 
     # Make an app bundle to launch PyCrust
     $PYTHONW $PROGDIR/../buildapp.py \
-       --builddir=$DMGDIR/root/Apps \
+       --builddir=$DMGAPPS \
        --name=PyCrust \
        --name=PyCrust \
-       --mainprogram=$INSTALLROOT$BINPREFIX/pycrust.py \
+       --mainprogram=$INSTALLCOMMON$BINPREFIX/pycrust.py \
        --iconfile=$PROGDIR/PieShell.icns \
        build
 
        --iconfile=$PROGDIR/PieShell.icns \
        build
 
-#     # and PyAlaMode
-#     $PYTHONW $PROGDIR/../buildapp.py \
-#      --builddir=$DMGDIR/root \
-#      --name=PyAlaMode \
-#      --mainprogram=$INSTALLROOT$BINPREFIX/pyalamode.py \
-#      --iconfile=$PROGDIR/PieShell.icns \
-#      build
+#      # and PyAlaMode
+#      $PYTHONW $PROGDIR/../buildapp.py \
+#      --builddir=$DMGAPPS \
+#      --name=PyAlaMode \
+#      --mainprogram=$INSTALLCOMMON$BINPREFIX/pyalamode.py \
+#      --iconfile=$PROGDIR/PieShell.icns \
+#      build
 
     # Make an app to launch XRCed
     $PYTHONW $PROGDIR/../buildapp.py \
 
     # Make an app to launch XRCed
     $PYTHONW $PROGDIR/../buildapp.py \
-       --builddir=$DMGDIR/root/Apps \
+       --builddir=$DMGAPPS \
        --name=XRCed \
        --name=XRCed \
-       --mainprogram=$INSTALLROOT$BINPREFIX/xrced.py \
+       --mainprogram=$INSTALLCOMMON$BINPREFIX/xrced.py \
        --iconfile=$PROGDIR/XRCed.icns \
        build
 
        --iconfile=$PROGDIR/XRCed.icns \
        build
 
-    # Make an app bundle to run the demo
-    $PYTHONW $PROGDIR/../buildapp.py \
-       --builddir=$DMGDIR/root/Apps \
-       --name="wxPython Demo" \
-       --mainprogram=$DMGDIR/root/Samples/demo/demo.pyw \
-       --iconfile=$PROGDIR/RunDemo.icns \
-       build
-    cp -pR $DMGDIR/root/Samples/demo/* "$DMGDIR/root/Apps/wxPython Demo.app/Contents/Resources"
-    
 
 
-    # and then finally make a disk image containing the packages and etc.
-    $PROGDIR/../makedmg $DMGDIR/root $DMGDIR wxPythonOSX-$VERSION-$KIND-Py$PYVER
 
 
-    echo Moving $DMGDIR/wxPythonOSX-$VERSION-$KIND-Py$PYVER.dmg to $DESTDIR
-    mv $DMGDIR/wxPythonOSX-$VERSION-$KIND-Py$PYVER.dmg  $DESTDIR
+    # and then finally make a disk image containing everything
+    dmgname=wxPython${SHORTVER}-osx-docs-demos-$VERSION
+    $PROGDIR/../makedmg $DMGAPPS $DMGDIR $dmgname
+
+    echo Moving $DMGDIR/$dmgname.dmg to $DESTDIR
+    mv $DMGDIR/$dmgname.dmg  $DESTDIR
 fi
 
 
 # Cleanup build/install dirs
 fi
 
 
 # Cleanup build/install dirs
-if [ -z "$skipclean" ]; then
+if [ $skipclean != yes ]; then
     echo "Cleaning up..."
     rm -rf $TMPDIR
 else
     echo "Cleaning up..."
     rm -rf $TMPDIR
 else