]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/distrib/mac/wxPythonOSX/build
Build and distrib tweaks ported over from the 2.6 branch
[wxWidgets.git] / wxPython / distrib / mac / wxPythonOSX / build
index a9531de0d89696453c89c7ebb8b48a4ef6a8a60d..f05c29b41dc13e10029c5a2df656e5e3f6fc41f9 100755 (executable)
@@ -3,6 +3,8 @@
 # Build wxMac and wxPythonOSX from the tarball and then make an
 # Installer package out of it.
 
+#set -o xtrace
+
 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,15 +24,18 @@ fi
 
 function usage {
     echo ""
-    echo "Usage: $0  [panther|jaguar]  [command flags...]"
+    echo "Usage: $0  PYVER [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 "   PYVER          Python version to use to do the build.  A"
+    echo "                  matching python\$PYVER must be found on the PATH"
     echo ""
     echo "optional command flags:"
     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 "   reswig         Regenerate SWIG wrappers"
+    echo "   universal      Generate Universal wxWidgets binary (requires Universal Python "
+    echo "                  to general Universal wxPython)."
     echo "   unicode        Make a unicode build"
     echo "   skipconfig     Don't run configure"
     echo "   skipbuild      Don't build wxWidgets or wxPython"
@@ -41,18 +46,15 @@ function usage {
 }
 
 
-if [ $# -lt 1 ]; then
-    usage
+PYVER=$1
+if [ "$PYVER" != "" ] && which python$PYVER && which pythonw$PYVER; then
+    PYTHON=`which python$PYVER`
+    PYTHONW=`which pythonw$PYVER`
+else
+    usage;
     exit 1
 fi
 
-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
@@ -63,6 +65,9 @@ skipdmg=no
 skipclean=no
 inplace=no
 unicode=no
+debug=no
+reswig=no
+universal=no
 
 for flag in $*; do
     case ${flag} in
@@ -70,11 +75,14 @@ for flag in $*; do
        skipconfig)  skipconfig=yes; skiptar=yes                ;;
        skipbuild)   skipbuild=yes; skipconfig=yes; skiptar=yes ;;
        skipinstall) skipinstall=yes                            ;;
-        skipdmg)     skipdmg=yes                                ;;
+       skipdmg)     skipdmg=yes                                ;;
        skipclean)   skipclean=yes                              ;;
        inplace)     inplace=yes; skiptar=yes                   ;;
        unicode)     unicode=yes                                ;;
-
+       ansi)        unicode=no                                 ;;
+       debug)       debug=yes                                  ;;
+       reswig)      reswig=yes                                 ;;
+       universal)   universal=yes                              ;;
        *)  echo "Unknown flag \"${flag}\""
            usage
            exit 1
@@ -82,12 +90,28 @@ for flag in $*; do
 done
 
 
+
+OSX_VERSION=`sw_vers -productVersion`
+OSX_VERSION=${OSX_VERSION:0:4}
+
+case $OSX_VERSION in
+    10.4)    TAG=macosx10.4 ;;
+    10.3)    TAG=macosx10.3 ;;
+    10.2)    TAG=macosx10.2 ;;
+    *)       usage; exit 1 ;;
+esac
+
+if [ $universal = yes ]; then
+    TAG=universal10.4
+fi
+
+
+
 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
@@ -99,9 +123,23 @@ else
     PYUNICODEOPT=0
 fi
 
-#if [ "$HOSTNAME" = "bigmac.alldunn.com" ]; then
-#    MAKEJOBS="--jobs=2"
-#fi
+if [ $debug == yes ]; then
+    DEBUG_FLAG=--enable-debug
+    PYDEBUGOPT=--debug
+else
+    DEBUG_FLAG=--enable-debug_flag
+    PYDEBUGOPT=
+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
@@ -110,21 +148,21 @@ if [ -z "$TARBALLDIR" ]; then
     # TARBALLDIR before invoking this script...
     TARBALLDIR=/stuff/Development/wxPython/dist/$VERSION
 fi
-TARBALL=$TARBALLDIR/wxPython-src-$VERSION.tar.gz
+TARBALL=$TARBALLDIR/wxPython-src-$VERSION.tar.bz2
 
-if [ ! -e $TARBALLDIR/wxPython-demo-$VERSION.tar.gz ]; then 
+if [ ! -e $TARBALLDIR/wxPython-demo-$VERSION.tar.bz2 ]; 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 " $TARBALLDIR/wxPython-demo-$VERSION.tar.bz2"
     echo "-------------------------------------------------------"
 fi
 
-if [ ! -e $TARBALLDIR/wxPython-docs-$VERSION.tar.gz ]; then
+if [ ! -e $TARBALLDIR/wxPython-docs-$VERSION.tar.bz2 ]; 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 " $TARBALLDIR/wxPython-docs-$VERSION.tar.bz2"
     echo "-------------------------------------------------------"
 fi
 
@@ -134,6 +172,7 @@ fi
 PREFIX=/usr/local/lib/wxPython-$CHARTYPE-$VERSION
 BINPREFIX=/usr/local/bin
 
+SWIGBIN=/opt/swig/bin/swig
 WXROOT=`dirname $PWD`
 PROGDIR="`dirname \"$0\"`"
 TMPDIR=$PWD/_build_dmg
@@ -164,6 +203,9 @@ mkdir -p $DMGROOT
 mkdir -p $DMGAPPS/Docs
 mkdir -p $DMGAPPS/Samples
 
+if [ ! -d $DESTDIR ]; then
+  mkdir $DESTDIR
+fi
 
 pushd $BUILDROOT
 
@@ -173,7 +215,7 @@ pushd $BUILDROOT
 
 if [ $skiptar != yes ]; then
     echo Unarchiving tarball...
-    tar xzf $TARBALL
+    tar xjf $TARBALL
 fi
 
 if [ $inplace = no ]; then
@@ -201,9 +243,12 @@ echo "Using source tree: $WXDIR"
 
 #----------------------------------------------------------------------
 
+if [ $OSX_VERSION = 10.3 -o $OSX_VERSION = 10.4 ]; then 
+    OTHER_CFG_OPTS=--enable-mediactrl
+fi
 
 # Configure wxWidgets
-if [ $skipconfig != yes ]; then
+if [ $skipconfig != yes -a $universal != yes ]; then
     $WXDIR/configure \
        --prefix=$PREFIX \
        --with-mac \
@@ -212,11 +257,12 @@ if [ $skipconfig != yes ]; then
        --enable-sound \
        --enable-display \
        --enable-geometry \
-       --enable-debug_flag \
+       $DEBUG_FLAG \
        --enable-precomp=no \
        --enable-optimise \
-       $UNICODEOPT
-
+       --disable-debugreport \
+       --disable-precompiled-headers \
+       $UNICODEOPT $OTHER_CFG_OPTS
 
 fi
 
@@ -224,22 +270,23 @@ fi
 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
+    WXBLD_CONFIG="$WXBLD/wx-config"
+    if [ $universal = yes ]; then
+        export WXROOT
+        export BUILDPREFIX=$PREFIX
+        export INSTALLDIR=$INSTALLROOT$PREFIX
+        $WXDIR/distrib/scripts/mac/macbuild wxpython universal $CHARTYPE
+    else
+        make $MAKEJOBS
+        make $MAKEJOBS -C contrib/src/animate
+        make $MAKEJOBS -C contrib/src/gizmos
+        make $MAKEJOBS -C contrib/src/stc
+    fi
+    
+    SWIGIT=0
+    if [ $reswig = yes ]; then
+        SWIGIT=1
     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
@@ -247,8 +294,10 @@ if [ $skipbuild != yes ]; then
        UNICODE=$PYUNICODEOPT \
        NO_SCRIPTS=1 \
        EP_ADD_OPTS=1 \
-       WX_CONFIG="$WXBLD/wx-config --inplace" \
+       WX_CONFIG="$WXBLD_CONFIG --inplace" \
        BUILD_BASE=$WXBLD/wxPython \
+       SWIG=$SWIGBIN \
+       USE_SWIG=$SWIGIT \
        build
 fi
 
@@ -257,11 +306,12 @@ 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
-
+    if [ $universal != yes ]; then
+        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
+    fi
 
     # relink wx-config with a relative link
     cd $INSTALLROOT$PREFIX/bin
@@ -274,16 +324,17 @@ if [ $skipinstall != yes ]; then
        UNICODE=$PYUNICODEOPT \
        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
 
 
-    # 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          
@@ -312,7 +363,7 @@ if [ $skipinstall != yes ]; then
     fi
 fi
 
-if [ "$KIND" = "panther" ]; then
+if [ $APPLE_PYTHON == yes ]; then
     SITEPACKAGES=/Library/Python/$PYVER
 fi
 PKGDIR=`cat $INSTALLROOT$SITEPACKAGES/wx.pth`
@@ -328,10 +379,15 @@ 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" ;;
+    case $OSX_VERSION in
+       10.4)  W_MSG="the Tiger (OS X 10.4.x Intel) version of" ;;
+       10.3)  W_MSG="the Panther (OS X 10.3.x) version of" ;;
+       10.2)  W_MSG="the Jaguar (OS X 10.2.x) version of" ;;
     esac
+
+    if [ $universal == yes ]; then
+      W_MSG="the Universal (OS X 10.4.x and above) version of"
+    fi
     
 
     cat > $RESOURCEDIR/Welcome.txt <<EOF
@@ -379,9 +435,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-$TAG
+    if [ $PYVER != 2.3 ]; then
+       PKGNAME=wxPython${SHORTVER}-osx-$CHARTYPE-$TAG-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" \
@@ -390,7 +450,7 @@ EOF
        $INSTALLROOT \
        $RESOURCEDIR
 
-    mv wxPython${SHORTVER}-osx-$CHARTYPE-$KIND.pkg $DMGROOT
+    mv $PKGNAME.pkg $DMGROOT/$PKGNAME.pkg
 
     rm $RESOURCEDIR/postflight
     rm $RESOURCEDIR/preflight
@@ -440,11 +500,11 @@ 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
-    mv $DMGDIR/$dmgname.dmg  $DESTDIR
+    mv $DMGDIR/$dmgname.dmg  $DESTDIR/$dmgname.dmg
 
 
 #---------------------------------------------------------------------------
@@ -495,7 +555,7 @@ EOF
 
 
     # wxDocs
-    if [ ! -e $TARBALLDIR/wxPython-docs-$VERSION.tar.gz ]; then
+    if [ ! -e $TARBALLDIR/wxPython-docs-$VERSION.tar.bz2 ]; then
        cat > "$DMGAPPS/Docs/Build ERROR.txt" <<EOF
 
 The wxPython-docs tarball was not found when building this disk image!
@@ -504,7 +564,7 @@ EOF
 
     else
        pushd $BUILDROOT
-       tar xzvf $TARBALLDIR/wxPython-docs-$VERSION.tar.gz
+       tar xjvf $TARBALLDIR/wxPython-docs-$VERSION.tar.bz2
        popd
 
         # Make an app to launch viewdocs.py
@@ -537,10 +597,10 @@ EOF
     popd
 
 
-    if [ ! -e $TARBALLDIR/wxPython-demo-$VERSION.tar.gz ]; then
+    if [ ! -e $TARBALLDIR/wxPython-demo-$VERSION.tar.bz2 ]; then
        cat > "$DMGAPPS/Samples/Build ERROR.txt" <<EOF
 
-The wxPython-demo tarball was not found when building this disk image!
+The wxPython-$VERSION-demo tarball was not found when building this disk image!
 
 EOF
        cp "$DMGAPPS/Samples/Build ERROR.txt" $DMGAPPS
@@ -549,10 +609,10 @@ EOF
 
         # Copy the demo and samples to the disk image from the tarball
        pushd $DMGAPPS/Samples
-       tar xzvf $TARBALLDIR/wxPython-demo-$VERSION.tar.gz
+       tar xjvf $TARBALLDIR/wxPython-demo-$VERSION.tar.bz2
        mv wxPython-$VERSION/* .
        rm -rf wxPython-$VERSION
-       rm demo/b demo/.setup.sh
+       rm -f demo/b demo/.setup.sh
        mv demo/demo.py demo/demo.pyw
        popd
 
@@ -596,11 +656,11 @@ EOF
 
 
     # 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
-    mv $DMGDIR/$dmgname.dmg  $DESTDIR
+    mv $DMGDIR/$dmgname.dmg  $DESTDIR/$dmgname.dmg
 fi
 
 
@@ -612,3 +672,4 @@ else
     echo "Cleanup is disabled.  You should remove $TMPDIR when finished"
 fi
 
+exit 0