#!/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 wx_version py_version [command flags...]" echo " wx_version String to use for version in filenames, etc." echo " py_version String to append to python (which python version to use.)" echo "" echo "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" } if [ $# -lt 2 ]; then usage exit 1 fi VERSION=$1 PYVER=$2 shift;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 SRCDIR=/Volumes/Gate.Stuff/Development/wxPython/dist/$VERSION TARBALL=$SRCDIR/wxPythonSrc-$VERSION.tar.gz SITEPACKAGES=/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER/site-packages # TODO: Should I change the prefix to /usr? PREFIX=/usr/local 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 tar xzvf $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 find /projects/wx $FEXPR -print \ | grep -v wx/build \ | grep -v wxPython/build \ | grep -v wxPython/_build \ | grep -v CVS \ | cut -b 14- > filelist for x in `cat filelist`; do if [ -d "/projects/wx/$x" ]; then mkdir -p "wxPythonSrc-$VERSION/$x" else echo $x cp -p "/projects/wx/$x" "wxPythonSrc-$VERSION/$x" fi done touch .last_copy fi cd wxPythonSrc-$VERSION WXDIR=`pwd` mkdir -p $WXDIR/build cd $WXDIR/build #---------------------------------------------------------------------- # Configure wxWindows if [ -z "$skipconfig" ]; then ../configure --with-mac --prefix=$PREFIX \ --with-opengl \ --enable-precomp=no \ --enable-geometry \ --enable-optimise \ --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 cd $WXDIR/wxPython python$PYVER setup.py \ IN_CVS_TREE=1 \ WX_CONFIG="$WXDIR/build/wx-config --prefix=$WXDIR --exec-prefix=$WXDIR/build" \ build # Build wxrc (XRC resource tool) but don't use the makefiles since they expect # a shared version of the xrc lib to have been built... cd $WXDIR/contrib/utils/wxrc WX_CONFIG="$WXDIR/build/wx-config --prefix=$WXDIR --exec-prefix=$WXDIR/build" wCC=`$WX_CONFIG --cc` wCXX=`$WX_CONFIG --cxx` for f in wxrc.cpp ../../src/xrc/*.cpp; do echo $f $wCXX `$WX_CONFIG --cxxflags` -I ../../include -I ../../src/xrc/expat/xmlparse -I ../../src/xrc/expat/xmltok -c $f done for f in ../../src/xrc/expat/xmlparse/xmlparse.c ../../src/xrc/expat/xmltok/xmlrole.c ../../src/xrc/expat/xmltok/xmltok.c; do echo $f $wCC `$WX_CONFIG --cxxflags` -I ../../include -I ../../src/xrc/expat/xmlparse -I ../../src/xrc/expat/xmltok -c $f done # the handlers are not needed rm xh_*.o xmlrsall.o $wCXX `$WX_CONFIG --libs` *.o -o wxrc strip wxrc fi #---------------------------------------------------------------------- # Install wxWindows if [ -z "$skipinstall" ]; then cd $WXDIR/build make prefix=$INSTALLROOT/$PREFIX install # and wxPython cd $WXDIR/wxPython python$PYVER setup.py \ IN_CVS_TREE=1 \ WX_CONFIG="$WXDIR/build/wx-config --prefix=$WXDIR --exec-prefix=$WXDIR/build" \ install \ --root=$INSTALLROOT # install wxPython's tool scripts cd $WXDIR/wxPython/scripts python$PYVER CreateMacScripts.py $INSTALLROOT $PREFIX/bin # Install wxrc cp $WXDIR/contrib/utils/wxrc/wxrc $INSTALLROOT$PREFIX/bin # Move wxWindows devel files and save for a separate installer package mkdir -p $INSTALLDEVEL$PREFIX mkdir -p $INSTALLDEVEL$PREFIX/bin mkdir -p $INSTALLDEVEL$PREFIX/lib mv -f $INSTALLROOT$PREFIX/include $INSTALLDEVEL$PREFIX mv -f $INSTALLROOT$PREFIX/lib/wx $INSTALLDEVEL$PREFIX/lib mv -f $INSTALLROOT$PREFIX/bin/wx* $INSTALLDEVEL$PREFIX/bin # TODO for $INSTALLROOT and $INSTALLDEVEL ? # chown -R root:admin # chmod -R g+w 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/Library/Frameworks/Python.framework # Copy the demo, samples, and such to the Applications dir APPDIR=$INSTALLROOT/Applications/wxPythonOSX-$VERSION mkdir -p $APPDIR cp -pR $WXDIR/wxPython/demo $APPDIR cp -pR $WXDIR/wxPython/samples $APPDIR # Move sample launchers to .pyw files. # TODO: A better, more automated way to do this!!! pushd $APPDIR/samples for x in StyleEditor/STCStyleEditor \ doodle/superdoodle \ frogedit/FrogEdit \ pySketch/pySketch \ wxProject/wxProject; do mv $x.py $x.pyw done popd # Make an app to launch the demo cat > $APPDIR/demo/RunDemo.pyw < $RESOURCEDIR/Welcome.txt < $RESOURCEDIR/preflight < $RESOURCEDIR/postflight < $DMGDIR/root/README.txt <