X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1e4a197e4c60e461b8068b0619692ea083e30b8b..4f60dce5d49d3a5f38d93c867bd3527fe60e1aec:/wxPython/distrib/mac/wxPythonOSX/build diff --git a/wxPython/distrib/mac/wxPythonOSX/build b/wxPython/distrib/mac/wxPythonOSX/build index 6fca6f4226..53404d8e2b 100755 --- a/wxPython/distrib/mac/wxPythonOSX/build +++ b/wxPython/distrib/mac/wxPythonOSX/build @@ -10,45 +10,70 @@ if [ ! -d wxPython -o ! -e ${spectemplate} ]; then 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 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 "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 "command flags:" + 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 " unicode Make a unicode build" echo " skipconfig Don't run configure" - echo " skipbuild Don't build wxWindows or wxPython" + 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 2 ]; then +if [ $# -lt 1 ]; then usage exit 1 fi -VERSION=$1 -PYVER=$2 -shift;shift - +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 +unicode=no 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 ;; + unicode) unicode=yes ;; *) echo "Unknown flag \"${flag}\"" usage @@ -57,23 +82,71 @@ for flag in $*; do 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 +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 +SHORTVER=`echo $VERSION | cut -c 1,2,3` + +if [ $unicode == yes ]; then + CHARTYPE=unicode + UNICODEOPT=--enable-unicode + PYUNICODEOPT=1 +else + CHARTYPE=ansi + UNICODEOPT=--disable-unicode + PYUNICODEOPT=0 +fi -# TODO: Should I change the prefix to /usr? -PREFIX=/usr/local +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/wxPython-src-$VERSION.tar.gz + +if [ ! -e $TARBALLDIR/wxPython-demo-$VERSION.tar.gz ]; then + echo "-------------------------------------------------------" + echo " WARNING: Demo tarball not found, will skip building " + echo " the Demo app bundle and etc." + echo " $TARBALLDIR/wxPython-demo-$VERSION.tar.gz" + echo "-------------------------------------------------------" +fi + +if [ ! -e $TARBALLDIR/wxPython-docs-$VERSION.tar.gz ]; then + echo "-------------------------------------------------------" + echo " WARNING: Docs tarball not found, will skip building " + echo " the the wxDocsViewer app bundle and etc." + echo " $TARBALLDIR/wxPython-docs-$VERSION.tar.gz" + echo "-------------------------------------------------------" +fi + + + + +PREFIX=/usr/local/lib/wxPython-$CHARTYPE-$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 + +INSTALLROOT=$TMPDIR/install-root +INSTALLCOMMON=$TMPDIR/install-common +INSTALLAPPS=$TMPDIR/install-apps + DMGDIR=$TMPDIR/dmg +DMGROOT=$DMGDIR/root +DMGAPPS=$DMGDIR/apps + RESOURCEDIR=$PROGDIR/resources DESTDIR=$PWD/dist - +SRCROOT=$BUILDROOT/wxPython-src-$VERSION #---------------------------------------------------------------------- @@ -81,9 +154,14 @@ DESTDIR=$PWD/dist mkdir -p $BUILDROOT mkdir -p $INSTALLROOT -mkdir -p $INSTALLDEVEL +mkdir -p $INSTALLCOMMON +mkdir -p $INSTALLAPPS + rm -rf $DMGDIR -mkdir -p $DMGDIR/root +mkdir -p $DMGROOT +mkdir -p $DMGAPPS/Docs +mkdir -p $DMGAPPS/Samples + pushd $BUILDROOT @@ -91,197 +169,175 @@ pushd $BUILDROOT #---------------------------------------------------------------------- # Unpack the tarball -if [ -z "$skiptar" ]; then - tar xzvf $TARBALL +if [ $skiptar != yes ]; 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 - 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 +if [ $inplace = no ]; then + # make a build dir and cd to it. + cd wxPython-src-$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 - -cd wxPythonSrc-$VERSION -WXDIR=`pwd` -mkdir -p $WXDIR/build -cd $WXDIR/build +echo "Using source tree: $WXDIR" +echo "Using build dir: $WXBLD" #---------------------------------------------------------------------- -# Configure wxWindows -if [ -z "$skipconfig" ]; then - ../configure --with-mac --prefix=$PREFIX \ +# Configure wxWidgets +if [ $skipconfig != yes ]; then + $WXDIR/configure \ + --prefix=$PREFIX \ + --with-mac \ + --enable-monolithic \ --with-opengl \ - --enable-precomp=no \ + --enable-sound \ + --enable-display \ --enable-geometry \ - --enable-optimise \ --enable-debug_flag \ - --with-libjpeg=builtin \ - --with-libpng=builtin \ - --with-libtiff=builtin \ - --with-zlib=builtin - -fi + --enable-precomp=no \ + --enable-optimise \ + $UNICODEOPT -# 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 +fi - # 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` +# Build wxWidgets and wxPython +if [ $skipbuild != yes ]; then - 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 + # Make wxWidgets and some contribs - # the handlers are not needed - rm xh_*.o xmlrsall.o + # For some reason Rez and DeRez have started locking up if run as root... + if [ "$UID" = "0" ]; then + chmod a+w lib + su robind -c "make lib/libwx_macd-2.5.3.r" + fi - $wCXX `$WX_CONFIG --libs` *.o -o wxrc - strip wxrc + make + make -C contrib/src/gizmos + make -C contrib/src/ogl CXXFLAGS="-DwxUSE_DEPRECATED=0" + make -C contrib/src/stc + # Build wxPython + cd $WXDIR/wxPython + $PYTHON setup.py \ + UNICODE=$PYUNICODEOPT \ + NO_SCRIPTS=1 \ + EP_ADD_OPTS=1 \ + WX_CONFIG="$WXBLD/wx-config --inplace" \ + BUILD_BASE=$WXBLD/wxPython \ + build fi #---------------------------------------------------------------------- -# Install wxWindows -if [ -z "$skipinstall" ]; then - cd $WXDIR/build - make prefix=$INSTALLROOT/$PREFIX install +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 + + # relink wx-config with a relative link + cd $INSTALLROOT$PREFIX/bin + rm wx-config + ln -s ../lib/wx/config/* wx-config # 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" \ + $PYTHON setup.py \ + UNICODE=$PYUNICODEOPT \ + NO_SCRIPTS=1 \ + EP_ADD_OPTS=1 \ + WX_CONFIG="$INSTALLROOT/$PREFIX/bin/wx-config --prefix=$INSTALLROOT/$PREFIX" \ + BUILD_BASE=$WXBLD/wxPython \ install \ --root=$INSTALLROOT - # install wxPython's tool scripts + + # 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 + + # move the common files to $INSTALLCOMMON + mkdir -p $INSTALLCOMMON$SITEPACKAGES + mv $INSTALLROOT$SITEPACKAGES/wx.pth $INSTALLCOMMON$SITEPACKAGES + mv $INSTALLROOT$SITEPACKAGES/wxversion.py $INSTALLCOMMON$SITEPACKAGES + + # install wxPython's tool scripts in COMMON too + mkdir -p $INSTALLCOMMON$BINPREFIX cd $WXDIR/wxPython/scripts - python$PYVER CreateMacScripts.py $INSTALLROOT $PREFIX/bin + python$PYVER CreateMacScripts.py $INSTALLCOMMON $BINPREFIX - # Install wxrc - cp $WXDIR/contrib/utils/wxrc/wxrc $INSTALLROOT$PREFIX/bin + # Remove the .pyc/.pyo files they just take up space and can be recreated + # during the install. + pushd $WXDIR/wxPython + $PYTHON $PROGDIR/../zappycfiles.py $INSTALLROOT > /dev/null + popd - # 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 + # Set premissions for files in $INSTALLROOT and $INSTALLCOMMON + if [ "$UID" = "0" ]; then + chown -R root:admin $INSTALLROOT $INSTALLCOMMON + chmod -R g+w $INSTALLROOT $INSTALLCOMMON + fi +fi +if [ "$KIND" = "panther" ]; then + SITEPACKAGES=/Library/Python/$PYVER fi +PKGDIR=`cat $INSTALLCOMMON$SITEPACKAGES/wx.pth` popd #---------------------------------------------------------------------- # 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. - 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 + #----------------------------------------------- + # The main runtime installer package - # Make an app to launch the demo - cat > $APPDIR/demo/RunDemo.pyw < $RESOURCEDIR/Welcome.txt < $RESOURCEDIR/Welcome.txt < $RESOURCEDIR/postflight < $RESOURCEDIR/Welcome.txt < "$DMGROOT/README 1st.txt" < "$DMGAPPS/README 1st.txt" < $DMGDIR/root/README.txt < "$DMGAPPS/Docs/Build ERROR.txt" < "$DMGAPPS/Docs/README 1st.txt" < "$DMGAPPS/Samples/Build ERROR.txt" <