X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1fded56b375bf7a4687af1cdb182899614c1b2a8..9e9300c4576acb09a9fca823330fb48529c629d0:/wxPython/distrib/mac/wxPythonOSX/build diff --git a/wxPython/distrib/mac/wxPythonOSX/build b/wxPython/distrib/mac/wxPythonOSX/build index 955467a1d9..e46fbeafde 100755 --- a/wxPython/distrib/mac/wxPythonOSX/build +++ b/wxPython/distrib/mac/wxPythonOSX/build @@ -10,45 +10,67 @@ 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 "command flags:" + 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 " 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 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 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 ;; *) echo "Unknown flag \"${flag}\"" usage @@ -57,13 +79,45 @@ 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 + + + +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 + -# TODO: Should I change the prefix to /usr? -PREFIX=/usr/local + +PREFIX=/usr/local/lib/wxPython-$VERSION +BINPREFIX=/usr/local/bin + +WXROOT=`dirname $PWD` PROGDIR="`dirname \"$0\"`" TMPDIR=$PWD/_build_dmg @@ -73,7 +127,7 @@ INSTALLDEVEL=$TMPDIR/install-devel DMGDIR=$TMPDIR/dmg RESOURCEDIR=$PROGDIR/resources DESTDIR=$PWD/dist - +SRCROOT=$BUILDROOT/wxPythonSrc-$VERSION #---------------------------------------------------------------------- @@ -81,9 +135,12 @@ DESTDIR=$PWD/dist mkdir -p $BUILDROOT mkdir -p $INSTALLROOT -mkdir -p $INSTALLDEVEL +#mkdir -p $INSTALLDEVEL rm -rf $DMGDIR -mkdir -p $DMGDIR/root +mkdir -p $DMGDIR/root/Apps +mkdir -p $DMGDIR/root/Docs +mkdir -p $DMGDIR/root/Samples + pushd $BUILDROOT @@ -91,132 +148,130 @@ 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 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 - -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 \ + --disable-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 + --enable-precomp=no \ + --enable-debug_flag + +## --enable-optimise \ +## --with-libjpeg=builtin \ +## --with-libpng=builtin \ +## --with-libtiff=builtin \ +## --with-zlib=builtin \ fi -# Build wxWindows and wxPython -if [ -z "$skipbuild" ]; then +# 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$PYVER setup.py \ - IN_CVS_TREE=1 \ - WX_CONFIG="$WXDIR/build/wx-config --prefix=$WXDIR --exec-prefix=$WXDIR/build" \ + $PYTHON setup.py \ + NO_SCRIPTS=1 \ + WX_CONFIG="$WXBLD/wx-config --inplace" \ + BUILD_BASE=$WXBLD/wxPython \ 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 + # Build wxrc (XRC resource tool) + cd $WXBLD/contrib/utils/wxrc + make strip wxrc 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 + make -C contrib/src/xrc 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" \ + $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 $PREFIX/bin + python$PYVER CreateMacScripts.py $INSTALLROOT $BINPREFIX - # Install wxrc - cp $WXDIR/contrib/utils/wxrc/wxrc $INSTALLROOT$PREFIX/bin + # Install wxrc + cp $WXBLD/contrib/utils/wxrc/wxrc $INSTALLROOT$BINPREFIX - # 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 + # Set premissions for files in $INSTALLROOT + if [ "$UID" = "0" ]; then + chown -R root:admin $INSTALLROOT + chmod -R g+w $INSTALLROOT + fi fi popd @@ -224,67 +279,24 @@ 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 - - # Make an app to launch the demo - cat > $APPDIR/demo/RunDemo.pyw < /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/postflight < "$DMGDIR/root/README 1st.txt" < $DMGDIR/root/README.txt < "$DMGDIR/root/Docs/Build ERROR.txt" < "$DMGDIR/root/Docs/README 1st.txt" < "$DMGDIR/root/Samples/Build ERROR.txt" <