#!/bin/sh -e #---------------------------------------------------------------------- # Build wxMac and wxPythonOSX from the tarball and then make an # Installer package out of it. spectemplate=distrib/wxPythonFull.spec.in if [ ! -d wxPython -o ! -e ${spectemplate} ]; then echo "Please run this script from the root wxPython directory." 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 function usage { echo "" echo "Usage: $0 [panther|jaguar] [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 "" 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 " skipconfig Don't run configure" echo " skipbuild Don't build wxWidgets or wxPython" echo " skipinstall Don't do the installation step" echo " skipdmg Don't make the package or diskimage" echo " skipclean Don't do the cleanup at the end" echo "" } if [ $# -lt 1 ]; then 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 skipconfig=no skipbuild=no skipinstall=no skipdmg=no skipclean=no inplace=no for flag in $*; do case ${flag} in 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 exit 1 esac done VERSION=`$PYTHON -c "import setup;print setup.VERSION"` 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 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 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\"`" TMPDIR=$PWD/_build_dmg BUILDROOT=$TMPDIR/build INSTALLROOT=$TMPDIR/install INSTALLDEVEL=$TMPDIR/install-devel DMGDIR=$TMPDIR/dmg RESOURCEDIR=$PROGDIR/resources DESTDIR=$PWD/dist SRCROOT=$BUILDROOT/wxPythonSrc-$VERSION #---------------------------------------------------------------------- # Setup builddirs mkdir -p $BUILDROOT mkdir -p $INSTALLROOT #mkdir -p $INSTALLDEVEL rm -rf $DMGDIR mkdir -p $DMGDIR/root/Apps mkdir -p $DMGDIR/root/Docs mkdir -p $DMGDIR/root/Samples pushd $BUILDROOT #---------------------------------------------------------------------- # Unpack the tarball if [ $skiptar != yes ]; then echo Unarchiving tarball... tar xzf $TARBALL fi 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 echo "Using source tree: $WXDIR" echo "Using build dir: $WXBLD" #---------------------------------------------------------------------- # Configure wxWidgets if [ $skipconfig != yes ]; then $WXDIR/configure \ --prefix=$PREFIX \ --with-mac \ --enable-monolithic \ --with-opengl \ --enable-sound \ --enable-display \ --enable-geometry \ --enable-precomp=no \ --enable-debug_flag ## --enable-optimise \ ## --with-libjpeg=builtin \ ## --with-libpng=builtin \ ## --with-libtiff=builtin \ ## --with-zlib=builtin \ fi # Build wxWidgets and wxPython if [ $skipbuild != yes ]; then # 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 # Build wxPython cd $WXDIR/wxPython $PYTHON setup.py \ NO_SCRIPTS=1 \ WX_CONFIG="$WXBLD/wx-config --inplace" \ BUILD_BASE=$WXBLD/wxPython \ build # Build wxrc (XRC resource tool) cd $WXBLD/contrib/utils/wxrc make strip wxrc 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 -C contrib/src/xrc prefix=$INSTALLROOT$PREFIX install # and wxPython cd $WXDIR/wxPython $PYTHON setup.py \ NO_SCRIPTS=1 \ 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 # /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 # install wxPython's tool scripts mkdir -p $INSTALLROOT$BINPREFIX cd $WXDIR/wxPython/scripts python$PYVER CreateMacScripts.py $INSTALLROOT $BINPREFIX # Install wxrc cp $WXBLD/contrib/utils/wxrc/wxrc $INSTALLROOT$BINPREFIX # Set premissions for files in $INSTALLROOT if [ "$UID" = "0" ]; then chown -R root:admin $INSTALLROOT chmod -R g+w $INSTALLROOT fi fi 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 # 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 < $RESOURCEDIR/preflight < $RESOURCEDIR/postflight < "$DMGDIR/root/README 1st.txt" < "$DMGDIR/root/Docs/Build ERROR.txt" < "$DMGDIR/root/Docs/README 1st.txt" < "$DMGDIR/root/Samples/Build ERROR.txt" <