]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/distrib/mac/wxPythonOSX/build
another compilation fix for after last check in
[wxWidgets.git] / wxPython / distrib / mac / wxPythonOSX / build
index bb766cb256940af25cc16edd6f6c7658fa6f97b4..e46fbeafde8e4388c6aa1d226d9d27a081acda73 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,8 @@ 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 "   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 +54,23 @@ esac
 PYTHONW=${PYTHON}w
 shift
 
 PYTHONW=${PYTHON}w
 shift
 
+skiptar=no
+skipconfig=no
+skipbuild=no
+skipinstall=no
+skipdmg=no
+skipclean=no
+inplace=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                   ;;
 
        *)  echo "Unknown flag \"${flag}\""
            usage
 
        *)  echo "Unknown flag \"${flag}\""
            usage
@@ -70,11 +85,37 @@ PYPREFIX=`$PYTHON -c "import sys; print sys.exec_prefix"`
 PYLIB=$PYPREFIX/lib/python$PYVER
 SITEPACKAGES=$PYLIB/site-packages
 
 PYLIB=$PYPREFIX/lib/python$PYVER
 SITEPACKAGES=$PYLIB/site-packages
 
-TARBALLDIR=/stuff/Development/wxPython/dist/$VERSION
+
+
+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/wxPythonSrc-$VERSION.tar.gz
 
 TARBALL=$TARBALLDIR/wxPythonSrc-$VERSION.tar.gz
 
-PREFIX=/usr/lib/wxPython-$VERSION
-BINPREFIX=/usr/bin
+if [ ! -e $TARBALLDIR/wxPythonDemo-$VERSION.tar.gz ]; then 
+    echo "-------------------------------------------------------"
+    echo " WARNING:  Demo tarball not found, will skip building "
+    echo "           the Demo app bundle and etc."
+    echo " $TARBALLDIR/wxPythonDemo-$VERSION.tar.gz"
+    echo "-------------------------------------------------------"
+fi
+
+if [ ! -e $TARBALLDIR/wxPythonDocs-$VERSION.tar.gz ]; then
+    echo "-------------------------------------------------------"
+    echo " WARNING:  Docs tarball not found, will skip building "
+    echo "           the the wxDocsViewer app bundle and etc."
+    echo " $TARBALLDIR/wxPythonDocs-$VERSION.tar.gz"
+    echo "-------------------------------------------------------"
+fi
+
+
+
+
+PREFIX=/usr/local/lib/wxPython-$VERSION
+BINPREFIX=/usr/local/bin
 
 WXROOT=`dirname $PWD`
 PROGDIR="`dirname \"$0\"`"
 
 WXROOT=`dirname $PWD`
 PROGDIR="`dirname \"$0\"`"
@@ -107,53 +148,35 @@ 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 wxPythonSrc-$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 \
        --disable-monolithic \
        --prefix=$PREFIX \
        --with-mac \
        --disable-monolithic \
@@ -173,42 +196,36 @@ if [ -z "$skipconfig" ]; then
 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
+    make -C contrib/src/gizmos
     make -C contrib/src/ogl CXXFLAGS="-DwxUSE_DEPRECATED=0"
     make -C contrib/src/stc
     make -C contrib/src/xrc
 
     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
-    fi
-
     # Build wxPython
     cd $WXDIR/wxPython
     $PYTHON setup.py \
        NO_SCRIPTS=1 \
     # Build wxPython
     cd $WXDIR/wxPython
     $PYTHON setup.py \
        NO_SCRIPTS=1 \
-       WX_CONFIG="$WXDIR/bld/wx-config --prefix=$WXDIR --exec-prefix=$WXDIR/bld" \
+       WX_CONFIG="$WXBLD/wx-config --inplace" \
+       BUILD_BASE=$WXBLD/wxPython \
        build
 
 
        build
 
 
-    # Build wxrc (XRC resource tool) 
-    cd $WXDIR/bld/contrib/utils/wxrc
-    make 
+    # Build wxrc (XRC resource tool)
+    cd $WXBLD/contrib/utils/wxrc
+    make
     strip wxrc
 
 fi
 
 #----------------------------------------------------------------------
 
     strip wxrc
 
 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 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
@@ -221,6 +238,7 @@ if [ -z "$skipinstall" ]; then
     $PYTHON setup.py \
        NO_SCRIPTS=1 \
        WX_CONFIG="$INSTALLROOT/$PREFIX/bin/wx-config --prefix=$INSTALLROOT/$PREFIX" \
     $PYTHON setup.py \
        NO_SCRIPTS=1 \
        WX_CONFIG="$INSTALLROOT/$PREFIX/bin/wx-config --prefix=$INSTALLROOT/$PREFIX" \
+       BUILD_BASE=$WXBLD/wxPython \
        install \
        --root=$INSTALLROOT
 
        install \
        --root=$INSTALLROOT
 
@@ -229,6 +247,9 @@ 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
        mkdir -p $INSTALLROOT/Library/Python/$PYVER
        mv $INSTALLROOT/$SITEPACKAGES/* $INSTALLROOT/Library/Python/$PYVER
        rm -r $INSTALLROOT/System
@@ -243,19 +264,14 @@ if [ -z "$skipinstall" ]; then
 
 
     # Install wxrc
 
 
     # Install wxrc
-    cp $WXDIR/bld/contrib/utils/wxrc/wxrc $INSTALLROOT$BINPREFIX
-
+    cp $WXBLD/contrib/utils/wxrc/wxrc $INSTALLROOT$BINPREFIX
 
 
-#     # 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 
-    chown -R root:admin $INSTALLROOT
-    chmod -R g+w        $INSTALLROOT
+    # Set premissions for files in $INSTALLROOT
+    if [ "$UID" = "0" ]; then
+       chown -R root:admin $INSTALLROOT
+       chmod -R g+w        $INSTALLROOT
+    fi
 fi
 
 popd
 fi
 
 popd
@@ -263,11 +279,11 @@ popd
 #----------------------------------------------------------------------
 
 # Make the Installer packages and disk image
 #----------------------------------------------------------------------
 
 # 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.
 
     # Remove the .pyc/.pyo files they just take up space and can be recreated
     # during the install.
-    $PYTHON $PROGDIR/../zappycfiles.py $INSTALLROOT
+    $PYTHON $PROGDIR/../zappycfiles.py $INSTALLROOT > /dev/null
 
 
     # Make the welcome message
 
 
     # Make the welcome message
@@ -337,15 +353,15 @@ EOF
     cat > "$DMGDIR/root/README 1st.txt" <<EOF
 Welcome to wxPython!
 
     cat > "$DMGDIR/root/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.  
+On this disk image you will find the installer for wxPython $VERSION for $W_MSG MacPython-OSX $PYVER.  MacPython-OSX is not included.
 
 
-   wxPython-$KIND.pkg   The installer package.  It contains the wxPython 
+   wxPython-$KIND.pkg   The installer package.  It contains the wxPython
                         extension modules, wxMac dynamic libraries and
                         extension modules, wxMac dynamic libraries and
-                        headers, and some scripts for the command-line 
-                        tools.  
+                        headers, and some scripts for the command-line
+                        tools.
 
 
-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
+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.
 
 
 package before you can use any of the items below.
 
 
@@ -356,48 +372,56 @@ package before you can use any of the items below.
    Apps/XRCed           An application for editing wxPython resource
                         files  (XRC files.)
 
    Apps/XRCed           An application for editing wxPython resource
                         files  (XRC files.)
 
-   Apps/PyCrust         An application that provides an interactive 
+   Apps/PyCrust         An application that provides an interactive
                         Python shell and also namespace inspectors.
 
 
 
                         Python shell and also namespace inspectors.
 
 
 
-   Docs/wxDocsViewer    An application that allows you to view the 
+   Docs/wxDocsViewer    An application that allows you to view the
                         wxWidgets documentation.
 
    Docs/licence         License files.
 
                         wxWidgets documentation.
 
    Docs/licence         License files.
 
-   Docs/other           A few readmes, change log, etc.  
+   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 $BUILDROOT
-    tar xzvf $TARBALLDIR/wxPythonDocs-$VERSION.tar.gz
-    popd
+    if [ ! -e $TARBALLDIR/wxPythonDocs-$VERSION.tar.gz ]; then
+       cat > "$DMGDIR/root/Docs/Build ERROR.txt" <<EOF
 
 
-    # Make an app to launch viewdocs.py
-    $PYTHONW $PROGDIR/../buildapp.py \
-       --builddir=$DMGDIR/root/Docs \
-       --name=wxDocsViewer \
-       --mainprogram=$BUILDROOT/wxPython-$VERSION/docs/viewdocs.py \
-       --iconfile=$PROGDIR/Info.icns \
-       build
+The wxPythonDocs tarball was not found when building this disk image!
+
+EOF
+
+    else
+       pushd $BUILDROOT
+       tar xzvf $TARBALLDIR/wxPythonDocs-$VERSION.tar.gz
+       popd
+
+        # Make an app to launch viewdocs.py
+       $PYTHONW $PROGDIR/../buildapp.py \
+           --builddir=$DMGDIR/root/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 $DMGDIR/root/Docs/wxDocsViewer.app/Contents/Resources
 
 
-    cat > "$DMGDIR/root/Docs/README 1st.txt" <<EOF
+       cat > "$DMGDIR/root/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
 
 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
@@ -405,6 +429,8 @@ can cache some indexes within its bundle.
 
 EOF
 
 
 EOF
 
+    fi
+
     # license files, docs, etc.
     pushd $DMGDIR/root/Docs
     cp -pR $SRCROOT/wxPython/licence   .
     # license files, docs, etc.
     pushd $DMGDIR/root/Docs
     cp -pR $SRCROOT/wxPython/licence   .
@@ -413,16 +439,37 @@ EOF
     rm -rf docs/xml-raw
     mv docs other
     popd
     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/wxPythonDemo-$VERSION.tar.gz ]; then
+       cat > "$DMGDIR/root/Samples/Build ERROR.txt" <<EOF
+
+The wxPythonDemo tarball was not found when building this disk image!
+
+EOF
+       cp "$DMGDIR/root/Samples/Build ERROR.txt" $DMGDIR/root/Apps
+
+    else
+
+        # 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
+
+        # 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"
+    fi
+
 
     # Make an app bundle to launch PyCrust
     $PYTHONW $PROGDIR/../buildapp.py \
 
     # Make an app bundle to launch PyCrust
     $PYTHONW $PROGDIR/../buildapp.py \
@@ -448,15 +495,7 @@ EOF
        --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
 
     # and then finally make a disk image containing the packages and etc.
     $PROGDIR/../makedmg $DMGDIR/root $DMGDIR wxPythonOSX-$VERSION-$KIND-Py$PYVER
@@ -467,7 +506,7 @@ fi
 
 
 # Cleanup build/install dirs
 
 
 # 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