#!/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 #---------------------------------------------------------------------- # 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 " use_cvs Use the CVS workspace instead of a tarfile" echo " skipconfig Don't run configure" echo " skipbuild Don't build wxWindows 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 ;; 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 ;; *) 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 SRCDIR=/stuff/Development/wxPython/dist/$VERSION TARBALL=$SRCDIR/wxPythonSrc-$VERSION.tar.gz PREFIX=/usr/lib/wxPython-$VERSION BINPREFIX=/usr/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 #---------------------------------------------------------------------- # Setup builddirs mkdir -p $BUILDROOT mkdir -p $INSTALLROOT #mkdir -p $INSTALLDEVEL rm -rf $DMGDIR mkdir -p $DMGDIR/root pushd $BUILDROOT #---------------------------------------------------------------------- # Unpack the tarball if [ -z "$skiptar" ]; then 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 fi cd wxPythonSrc-$VERSION WXDIR=`pwd` mkdir -p $WXDIR/bld cd $WXDIR/bld #---------------------------------------------------------------------- # Configure wxWindows if [ -z "$skipconfig" ]; then ../configure \ --prefix=$PREFIX \ --with-mac \ --disable-monolithic \ --with-opengl \ --enable-geometry \ --enable-optimise \ --enable-sound \ --enable-display \ --enable-precomp=no \ \ --with-libjpeg=builtin \ --with-libpng=builtin \ --with-libtiff=builtin \ --with-zlib=builtin \ \ --enable-debug_flag fi # Build wxWindows and wxPython if [ -z "$skipbuild" ]; then # Make wxWindows 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 --prefix=$WXDIR --exec-prefix=$WXDIR/bld" \ build # Build wxrc (XRC resource tool) cd $WXDIR/bld/contrib/utils/wxrc make strip wxrc fi #---------------------------------------------------------------------- if [ -z "$skipinstall" ]; then # Install wxWindows 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 # 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 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" <