]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/distrib/mac/wxPythonOSX/build
Detect Apple bug that prevents the joystick code compiling for OS X 10.1
[wxWidgets.git] / wxPython / distrib / mac / wxPythonOSX / build
index dacdd398e0ee21995e85ba25398d8f163b971386..62b695ffa38ab47c1c969c4bd295486e38e2fe00 100755 (executable)
@@ -3,6 +3,8 @@
 # Build wxMac and wxPythonOSX from the tarball and then make an
 # Installer package out of it.
 
+##set -x
+
 spectemplate=distrib/wxPythonFull.spec.in
 
 if [ ! -d wxPython -o ! -e ${spectemplate} ]; then
@@ -12,7 +14,7 @@ fi
 
 if [ "$UID" != "0" ]; then
     echo "-------------------------------------------------------"
-    echo " WARNING:  will be unable to change ownership of files"
+    echo " WARNING: I will be unable to change ownership of files"
     echo " unless this script is run as root or via sudo"
     echo "-------------------------------------------------------"
 fi
@@ -22,7 +24,9 @@ fi
 
 function usage {
     echo ""
-    echo "Usage: $0  [panther|jaguar]  [command flags...]"
+    echo "Usage: $0  PYVER  [jaguar|panther] [command flags...]"
+    echo ""
+    echo "   PYVER          Python version to use to do the build"
     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"
@@ -41,19 +45,28 @@ function usage {
 }
 
 
-if [ $# -lt 1 ]; then
+if [ $# -lt 2 ]; then
     usage
     exit 1
 fi
 
-KIND=$1
+PYVER=$1
+if which python$PYVER && which pythonw$PYVER; then
+    PYTHON=`which python$PYVER`
+    PYTHONW=`which pythonw$PYVER`
+else
+    usage;
+    exit 1
+fi
+
+KIND=$2
 case $KIND in
-    panther)    PYTHON=/usr/bin/python ;;
-    jaguar)     PYTHON=/usr/local/bin/python ;;
+    panther)    TAG=macosx10.3 ;;
+    jaguar)     TAG=macosx10.2 ;;
     *)          usage; exit 1 ;;
 esac
-PYTHONW=${PYTHON}w
-shift
+
+shift;shift
 
 skiptar=no
 skipconfig=no
@@ -83,11 +96,10 @@ done
 
 
 VERSION=`$PYTHON -c "import setup;print setup.VERSION"`
-PYVER=`$PYTHON -c "import sys; print sys.version[:3]"`
+SHORTVER=`echo $VERSION | cut -c 1,2,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
@@ -100,6 +112,16 @@ else
 fi
 
 
+# Test if the python we are using is the System installed framework 
+# or one that was installed by the user.  This changes where the 
+# site-packages (or its alias) is located in the installer tree.
+APPLE_PYTHON=no
+if [ -e /Library/Python/$PYVER ] && [ `dirname $PYTHON` == "/usr/bin" ]; then
+    APPLE_PYTHON=yes
+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
@@ -137,7 +159,6 @@ TMPDIR=$PWD/_build_dmg
 BUILDROOT=$TMPDIR/build
 
 INSTALLROOT=$TMPDIR/install-root
-INSTALLCOMMON=$TMPDIR/install-common
 INSTALLAPPS=$TMPDIR/install-apps
 
 DMGDIR=$TMPDIR/dmg
@@ -154,7 +175,6 @@ SRCROOT=$BUILDROOT/wxPython-src-$VERSION
 
 mkdir -p $BUILDROOT
 mkdir -p $INSTALLROOT
-mkdir -p $INSTALLCOMMON
 mkdir -p $INSTALLAPPS
 
 rm -rf $DMGDIR
@@ -182,18 +202,26 @@ if [ $inplace = no ]; then
     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
+
+    # 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
-    WXBLD=$BUILDROOT
 fi
 
-echo "Using source tree: $WXDIR"
+echo "Using wx root dir: $WXROOT"
 echo "Using build dir:   $WXBLD" 
+echo "Using source tree: $WXDIR"
 
 #----------------------------------------------------------------------
 
+if [ $KIND = panther ]; then 
+    OTHER_CFG_OPTS=--enable-mediactrl
+fi
 
 # Configure wxWidgets
 if [ $skipconfig != yes ]; then
@@ -208,8 +236,8 @@ if [ $skipconfig != yes ]; then
        --enable-debug_flag \
        --enable-precomp=no \
        --enable-optimise \
-       $UNICODEOPT
-
+       --disable-debugreport \
+       $UNICODEOPT $OTHER_CFG_OPTS
 
 fi
 
@@ -218,24 +246,24 @@ if [ $skipbuild != yes ]; then
 
     # Make wxWidgets and some contribs
 
-    # 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
-    make -C contrib/src/ogl CXXFLAGS="-DwxUSE_DEPRECATED=0"
-    make -C contrib/src/stc
+#     # For some reason Rez and DeRez have started locking up if run via
+#     # an ssh terminal.  Figure out why, but in the meantime...
+#     if [ "$CHARTYPE" = "ansi" ]; then
+#      echo cp /projects/wx2.5/bld/lib/libwx_macd-2.5.?.r* lib
+#           cp /projects/wx2.5/bld/lib/libwx_macd-2.5.?.r* lib
+#     else
+#      echo cp /projects/wx2.5/bld-unicode/lib/libwx_macud-2.5.?.r* lib
+#              cp /projects/wx2.5/bld-unicode/lib/libwx_macud-2.5.?.r* lib
+#     fi
+#     touch lib/libwx*.r*
+
+    make $MAKEJOBS
+    make $MAKEJOBS -C contrib/src/animate
+    make $MAKEJOBS -C contrib/src/gizmos
+    make $MAKEJOBS -C contrib/src/stc
 
     # Build wxPython
-    cd $WXDIR/wxPython
+    cd $WXROOT/wxPython
     $PYTHON setup.py \
        UNICODE=$PYUNICODEOPT \
        NO_SCRIPTS=1 \
@@ -250,10 +278,10 @@ fi
 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
+    make                        prefix=$INSTALLROOT$PREFIX install
+    make -C contrib/src/animate prefix=$INSTALLROOT$PREFIX install
+    make -C contrib/src/gizmos  prefix=$INSTALLROOT$PREFIX install
+    make -C contrib/src/stc     prefix=$INSTALLROOT$PREFIX install
 
 
     # relink wx-config with a relative link
@@ -262,7 +290,7 @@ if [ $skipinstall != yes ]; then
     ln -s ../lib/wx/config/* wx-config
 
     # and wxPython
-    cd $WXDIR/wxPython
+    cd $WXROOT/wxPython
     $PYTHON setup.py \
        UNICODE=$PYUNICODEOPT \
        NO_SCRIPTS=1 \
@@ -273,10 +301,11 @@ if [ $skipinstall != yes ]; then
        --root=$INSTALLROOT
 
 
-    # Apple's Python (on Panther) sym-links the site-packages dir to
+    # Apple's Python Framework (such as what comes with Panther)
+    # sym-links the site-packages dir in the framework 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 [ $APPLE_PYTHON == yes ]; then
        if [ -e $INSTALLROOT/Library/Python/$PYVER ]; then
            rm -r $INSTALLROOT/Library/Python/$PYVER
        fi          
@@ -286,34 +315,29 @@ if [ $skipinstall != yes ]; then
        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 in COMMON too
-    mkdir -p $INSTALLCOMMON$BINPREFIX
-    cd $WXDIR/wxPython/scripts
-    python$PYVER CreateMacScripts.py $INSTALLCOMMON $BINPREFIX
+    # install wxPython's tool scripts
+    mkdir -p $INSTALLROOT$BINPREFIX
+    cd $WXROOT/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
+    pushd $WXROOT/wxPython
     $PYTHON $PROGDIR/../zappycfiles.py $INSTALLROOT > /dev/null
     popd
 
-    # Set premissions for files in $INSTALLROOT and $INSTALLCOMMON
+    # Set premissions for files in $INSTALLROOT
     if [ "$UID" = "0" ]; then
-       chown -R root:admin $INSTALLROOT $INSTALLCOMMON
-       chmod -R g+w        $INSTALLROOT $INSTALLCOMMON
+       chown -R root:admin $INSTALLROOT
+       chmod -R g+w        $INSTALLROOT
     fi
 fi
 
-if [ "$KIND" = "panther" ]; then
+if [ $APPLE_PYTHON == yes ]; then
     SITEPACKAGES=/Library/Python/$PYVER
 fi
-PKGDIR=`cat $INSTALLCOMMON$SITEPACKAGES/wx.pth`
+PKGDIR=`cat $INSTALLROOT$SITEPACKAGES/wx.pth`
 
 popd
 
@@ -339,10 +363,11 @@ This Installer package will install the wxPython $CHARTYPE runtime $VERSION for
 
     * 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.  You also need to install one instance of the wxPython-common package, which will determine which of the installed runtimes will be the default.
+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
@@ -376,9 +401,13 @@ EOF
     
 
     # Build the main Installer Package...
-    rm -rf wxPython${SHORTVER}-osx-$CHARTYPE-$KIND.pkg
-    python $PROGDIR/../buildpkg.py \
-       --Title=wxPython${SHORTVER}-osx-$CHARTYPE-$KIND \
+    PKGNAME=wxPython${SHORTVER}-osx-$CHARTYPE-$KIND
+    if [ $PYVER != 2.3 ]; then
+       PKGNAME=wxPython${SHORTVER}-osx-$CHARTYPE-$KIND-py$PYVER
+    fi
+    rm -rf $PKGNAME.pkg
+    $PYTHON $PROGDIR/../buildpkg.py \
+       --Title=$PKGNAME \
        --Version=$VERSION \
        --Description="wxPython $CHARTYPE runtime $VERSION for $W_MSG MacPython-OSX $PYVER" \
        --NeedsAuthorization="YES" \
@@ -387,42 +416,13 @@ EOF
        $INSTALLROOT \
        $RESOURCEDIR
 
-    mv wxPython${SHORTVER}-osx-$CHARTYPE-$KIND.pkg $DMGROOT
+    mv $PKGNAME.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.
-
-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
@@ -432,24 +432,18 @@ 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.
+        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 
 
-    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
 
@@ -460,6 +454,9 @@ This disk image contains the following items:
         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
 
 
@@ -469,7 +466,7 @@ EOF
 
     #-----------------------------------------------
     # Make a disk image to hold these files
-    dmgname=wxPython${SHORTVER}-osx-$CHARTYPE-$VERSION-$KIND-py$PYVER
+    dmgname=wxPython${SHORTVER}-osx-$CHARTYPE-$VERSION-$TAG-py$PYVER
     $PROGDIR/../makedmg $DMGROOT $DMGDIR $dmgname
 
     echo Moving $DMGDIR/$dmgname.dmg to $DESTDIR
@@ -600,15 +597,17 @@ EOF
     $PYTHONW $PROGDIR/../buildapp.py \
        --builddir=$DMGAPPS \
        --name=PyCrust \
-       --mainprogram=$INSTALLCOMMON$BINPREFIX/pycrust.py \
+       --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=$INSTALLCOMMON$BINPREFIX/pyalamode.py \
+#      --mainprogram=$INSTALLROOT$BINPREFIX/pyalamode.py \
 #      --iconfile=$PROGDIR/PieShell.icns \
 #      build
 
@@ -616,14 +615,14 @@ EOF
     $PYTHONW $PROGDIR/../buildapp.py \
        --builddir=$DMGAPPS \
        --name=XRCed \
-       --mainprogram=$INSTALLCOMMON$BINPREFIX/xrced.py \
+       --mainprogram=$INSTALLROOT$BINPREFIX/xrced.py \
        --iconfile=$PROGDIR/XRCed.icns \
        build
 
 
 
     # and then finally make a disk image containing everything
-    dmgname=wxPython${SHORTVER}-osx-docs-demos-$VERSION
+    dmgname=wxPython${SHORTVER}-osx-docs-demos-$VERSION-$TAG-py$PYVER
     $PROGDIR/../makedmg $DMGAPPS $DMGDIR $dmgname
 
     echo Moving $DMGDIR/$dmgname.dmg to $DESTDIR