]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/distrib/mac/wxPythonOSX/build
Combine the common installer package into the main package
[wxWidgets.git] / wxPython / distrib / mac / wxPythonOSX / build
index 24d9d2bb00370b6366e02e3b3d349235c58e7ad0..0e6e4adda8cc625b01d1a31b8fb87974f75d04b5 100755 (executable)
@@ -31,6 +31,7 @@ function usage {
     echo "   skiptar        Don't unpack the tarball"
     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"
@@ -61,6 +62,7 @@ skipinstall=no
 skipdmg=no
 skipclean=no
 inplace=no
+unicode=no
 
 for flag in $*; do
     case ${flag} in
@@ -71,6 +73,7 @@ for flag in $*; do
         skipdmg)     skipdmg=yes                                ;;
        skipclean)   skipclean=yes                              ;;
        inplace)     inplace=yes; skiptar=yes                   ;;
+       unicode)     unicode=yes                                ;;
 
        *)  echo "Unknown flag \"${flag}\""
            usage
@@ -86,6 +89,16 @@ 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
@@ -114,7 +127,7 @@ fi
 
 
 
-PREFIX=/usr/local/lib/wxPython-$VERSION
+PREFIX=/usr/local/lib/wxPython-$CHARTYPE-$VERSION
 BINPREFIX=/usr/local/bin
 
 WXROOT=`dirname $PWD`
@@ -122,9 +135,14 @@ 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
@@ -135,11 +153,12 @@ SRCROOT=$BUILDROOT/wxPython-src-$VERSION
 
 mkdir -p $BUILDROOT
 mkdir -p $INSTALLROOT
-#mkdir -p $INSTALLDEVEL
+mkdir -p $INSTALLAPPS
+
 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
@@ -187,11 +206,8 @@ if [ $skipconfig != yes ]; then
        --enable-debug_flag \
        --enable-precomp=no \
        --enable-optimise \
+       $UNICODEOPT
 
-##     --with-libjpeg=builtin \
-##     --with-libpng=builtin \
-##     --with-libtiff=builtin \
-##     --with-zlib=builtin \
 
 fi
 
@@ -200,9 +216,16 @@ if [ $skipbuild != yes ]; then
 
     # Make wxWidgets and some contribs
 
-    # For some reason Rez and DeRez have started locking up if run as root...
-    chmod a+w lib
-    su robind -c "make lib/libwx_macd-2.5.3.r"
+    # 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
     make -C contrib/src/gizmos
@@ -212,6 +235,7 @@ if [ $skipbuild != yes ]; then
     # Build wxPython
     cd $WXDIR/wxPython
     $PYTHON setup.py \
+       UNICODE=$PYUNICODEOPT \
        NO_SCRIPTS=1 \
        EP_ADD_OPTS=1 \
        WX_CONFIG="$WXBLD/wx-config --inplace" \
@@ -238,6 +262,7 @@ if [ $skipinstall != yes ]; then
     # and wxPython
     cd $WXDIR/wxPython
     $PYTHON setup.py \
+       UNICODE=$PYUNICODEOPT \
        NO_SCRIPTS=1 \
        EP_ADD_OPTS=1 \
        WX_CONFIG="$INSTALLROOT/$PREFIX/bin/wx-config --prefix=$INSTALLROOT/$PREFIX" \
@@ -259,13 +284,18 @@ if [ $skipinstall != yes ]; then
        SITEPACKAGES=/Library/Python/$PYVER
     fi
 
-
     # install wxPython's tool scripts
     mkdir -p $INSTALLROOT$BINPREFIX
     cd $WXDIR/wxPython/scripts
     python$PYVER CreateMacScripts.py $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
+
     # Set premissions for files in $INSTALLROOT
     if [ "$UID" = "0" ]; then
        chown -R root:admin $INSTALLROOT
@@ -273,7 +303,10 @@ if [ $skipinstall != yes ]; then
     fi
 fi
 
-PKGDIR=`cat $INSTALLROOT/Library/Python/$PYVER/wx.pth`
+if [ "$KIND" = "panther" ]; then
+    SITEPACKAGES=/Library/Python/$PYVER
+fi
+PKGDIR=`cat $INSTALLROOT$SITEPACKAGES/wx.pth`
 
 popd
 
@@ -282,22 +315,28 @@ popd
 # Make the Installer packages and disk image
 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 > /dev/null
-
+    #-----------------------------------------------
+    # 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
+    
+
     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
+    * Some command line tool scripts, installed to /usr/local/bin.
+
+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.  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
@@ -320,7 +359,6 @@ EOF
 $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
 chgrp -R admin \$2$SITEPACKAGES/$PKGDIR
 chmod -R g+w \$2$SITEPACKAGES/$PKGDIR
@@ -329,48 +367,96 @@ exit 0
 EOF
     chmod +x $RESOURCEDIR/postflight
 
-
+    
 
     # Build the main Installer Package...
-    rm -rf wxPython${SHORTVER}-osx-$KIND.pkg
+    rm -rf wxPython${SHORTVER}-osx-$CHARTYPE-$KIND.pkg
     python $PROGDIR/../buildpkg.py \
-       --Title=wxPython${SHORTVER}-osx-$KIND \
+       --Title=wxPython${SHORTVER}-osx-$CHARTYPE-$KIND \
        --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
 
-    mv wxPython${SHORTVER}-osx-$KIND.pkg $DMGDIR/root
+    mv wxPython${SHORTVER}-osx-$CHARTYPE-$KIND.pkg $DMGROOT
 
+    rm $RESOURCEDIR/postflight
+    rm $RESOURCEDIR/preflight
+    rm $RESOURCEDIR/Welcome.txt
 
 
-    # Make a README.txt to go on the disk image
-    cat > "$DMGDIR/root/README 1st.txt" <<EOF
+    #-----------------------------------------------
+    # Make a README to go on the disk image
+    cat > "$DMGROOT/README 1st.txt" <<EOF
 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 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.
 
-   wxPython${SHORTVER}-osx-$KIND.pkg   The installer package.  It contains the wxPython
-                        extension modules, wxMac dynamic libraries and
-                        headers, and some scripts for the command-line
-                        tools.
+        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.
+
+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 wherever 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.)
 
-   Apps/PyCrust         An application that provides an interactive
+   PyCrust              An application that provides an interactive
                         Python shell and also namespace inspectors.
 
 
@@ -398,7 +484,7 @@ EOF
 
     # wxDocs
     if [ ! -e $TARBALLDIR/wxPython-docs-$VERSION.tar.gz ]; then
-       cat > "$DMGDIR/root/Docs/Build ERROR.txt" <<EOF
+       cat > "$DMGAPPS/Docs/Build ERROR.txt" <<EOF
 
 The wxPython-docs tarball was not found when building this disk image!
 
@@ -411,15 +497,15 @@ EOF
 
         # Make an app to launch viewdocs.py
        $PYTHONW $PROGDIR/../buildapp.py \
-           --builddir=$DMGDIR/root/Docs \
+           --builddir=$DMGAPPS/Docs \
            --name=wxDocsViewer \
            --mainprogram=$BUILDROOT/wxPython-$VERSION/docs/viewdocs.py \
            --iconfile=$PROGDIR/Info.icns \
            build
 
-       cp $BUILDROOT/wxPython-$VERSION/docs/*.zip $DMGDIR/root/Docs/wxDocsViewer.app/Contents/Resources
+       cp $BUILDROOT/wxPython-$VERSION/docs/*.zip $DMGAPPS/Docs/wxDocsViewer.app/Contents/Resources
 
-       cat > "$DMGDIR/root/Docs/README 1st.txt" <<EOF
+       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
@@ -430,7 +516,7 @@ EOF
     fi
 
     # license files, docs, etc.
-    pushd $DMGDIR/root/Docs
+    pushd $DMGAPPS/Docs
     cp -pR $SRCROOT/wxPython/licence   .
     cp -pR $SRCROOT/wxPython/docs      .
     rm -rf docs/bin
@@ -440,17 +526,17 @@ EOF
 
 
     if [ ! -e $TARBALLDIR/wxPython-demo-$VERSION.tar.gz ]; then
-       cat > "$DMGDIR/root/Samples/Build ERROR.txt" <<EOF
+       cat > "$DMGAPPS/Samples/Build ERROR.txt" <<EOF
 
 The wxPython-demo tarball was not found when building this disk image!
 
 EOF
-       cp "$DMGDIR/root/Samples/Build ERROR.txt" $DMGDIR/root/Apps
+       cp "$DMGAPPS/Samples/Build ERROR.txt" $DMGAPPS
 
     else
 
         # Copy the demo and samples to the disk image from the tarball
-       pushd $DMGDIR/root/Samples
+       pushd $DMGAPPS/Samples
        tar xzvf $TARBALLDIR/wxPython-demo-$VERSION.tar.gz
        mv wxPython-$VERSION/* .
        rm -rf wxPython-$VERSION
@@ -460,34 +546,36 @@ EOF
 
         # Make an app bundle to run the demo
        $PYTHONW $PROGDIR/../buildapp.py \
-           --builddir=$DMGDIR/root/Apps \
+           --builddir=$DMGAPPS \
            --name="wxPython Demo" \
-           --mainprogram=$DMGDIR/root/Samples/demo/demo.pyw \
+           --mainprogram=$DMGAPPS/Samples/demo/demo.pyw \
            --iconfile=$PROGDIR/RunDemo.icns \
            build
-       cp -pR $DMGDIR/root/Samples/demo/* "$DMGDIR/root/Apps/wxPython Demo.app/Contents/Resources"
+       cp -pR $DMGAPPS/Samples/demo/* "$DMGAPPS/wxPython Demo.app/Contents/Resources"
     fi
 
 
     # Make an app bundle to launch PyCrust
     $PYTHONW $PROGDIR/../buildapp.py \
-       --builddir=$DMGDIR/root/Apps \
+       --builddir=$DMGAPPS \
        --name=PyCrust \
        --mainprogram=$INSTALLROOT$BINPREFIX/pycrust.py \
        --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
+## 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=$DMGDIR/root/Apps \
+       --builddir=$DMGAPPS \
        --name=XRCed \
        --mainprogram=$INSTALLROOT$BINPREFIX/xrced.py \
        --iconfile=$PROGDIR/XRCed.icns \
@@ -495,11 +583,12 @@ EOF
 
 
 
-    # and then finally make a disk image containing the packages and etc.
-    $PROGDIR/../makedmg $DMGDIR/root $DMGDIR wxPython${SHORTVER}-osx-$VERSION-$KIND-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/wxPython${SHORTVER}-osx-$VERSION-$KIND-py$PYVER.dmg to $DESTDIR
-    mv $DMGDIR/wxPython${SHORTVER}-osx-$VERSION-$KIND-py$PYVER.dmg  $DESTDIR
+    echo Moving $DMGDIR/$dmgname.dmg to $DESTDIR
+    mv $DMGDIR/$dmgname.dmg  $DESTDIR
 fi