#!/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 " 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 for flag in $*; do case ${flag} in skiptar) skiptar=1 ;; skipconfig) skipconfig=1; skiptar=1 ;; skipbuild) skipbuild=1; skipconfig=1; skiptar=1 ;; skipinstall) skipinstall=1 ;; skipdmg) skipdmg=1 ;; skipclean) skipclean=1 ;; *) 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... TARBALLDIR=/stuff/Development/wxPython/dist/$VERSION fi TARBALL=$TARBALLDIR/wxPythonSrc-$VERSION.tar.gz 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 [ -z "$skiptar" ]; then echo Unarchiving tarball... tar xzf $TARBALL fi cd wxPythonSrc-$VERSION WXDIR=`pwd` mkdir -p $WXDIR/bld cd $WXDIR/bld #---------------------------------------------------------------------- # Configure wxWidgets if [ -z "$skipconfig" ]; then ../configure \ --prefix=$PREFIX \ --with-mac \ --disable-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 [ -z "$skipbuild" ]; 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 # 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 \ WX_CONFIG="$WXDIR/bld/wx-config --inplace" \ build # Build wxrc (XRC resource tool) cd $WXDIR/bld/contrib/utils/wxrc make strip wxrc fi #---------------------------------------------------------------------- if [ -z "$skipinstall" ]; then # Install wxWidgets cd $WXDIR/bld 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" \ 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 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 $WXDIR/bld/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 [ -z "$skipdmg" ]; then # Remove the .pyc/.pyo files they just take up space and can be recreated # during the install. $PYTHON $PROGDIR/../zappycfiles.py $INSTALLROOT # 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/README 1st.txt" <