# Build wxMac and wxPythonOSX from the tarball and then make an
# Installer package out of it.
+##set -x
+
spectemplate=distrib/wxPythonFull.spec.in
if [ ! -d wxPython -o ! -e ${spectemplate} ]; then
if [ "$UID" != "0" ]; then
echo "-------------------------------------------------------"
- echo " WARNING: will be unable to change ownership of files"
+ echo " WARNING: I will be unable to change ownership of files"
echo " unless this script is run as root or via sudo"
echo "-------------------------------------------------------"
fi
function usage {
echo ""
- echo "Usage: $0 [panther|jaguar] [command flags...]"
+ echo "Usage: $0 PYVER [jaguar|panther] [command flags...]"
+ echo ""
+ echo " PYVER Python version to use to do the build"
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"
}
-if [ $# -lt 1 ]; then
+if [ $# -lt 2 ]; then
usage
exit 1
fi
-KIND=$1
+PYVER=$1
+if which python$PYVER && which pythonw$PYVER; then
+ PYTHON=`which python$PYVER`
+ PYTHONW=`which pythonw$PYVER`
+else
+ usage;
+ exit 1
+fi
+
+KIND=$2
case $KIND in
- panther) PYTHON=/usr/bin/python ;;
- jaguar) PYTHON=/usr/local/bin/python ;;
+ panther) TAG=macosx10.3 ;;
+ jaguar) TAG=macosx10.2 ;;
*) usage; exit 1 ;;
esac
-PYTHONW=${PYTHON}w
-shift
+
+shift;shift
skiptar=no
skipconfig=no
VERSION=`$PYTHON -c "import setup;print setup.VERSION"`
-PYVER=`$PYTHON -c "import sys; print sys.version[:3]"`
+SHORTVER=`echo $VERSION | cut -c 1,2,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
fi
+# Test if the python we are using is the System installed framework
+# or one that was installed by the user. This changes where the
+# site-packages (or its alias) is located in the installer tree.
+APPLE_PYTHON=no
+if [ -e /Library/Python/$PYVER ] && [ `dirname $PYTHON` == "/usr/bin" ]; then
+ APPLE_PYTHON=yes
+fi
+
+
+
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
BUILDROOT=$TMPDIR/build
INSTALLROOT=$TMPDIR/install-root
-INSTALLCOMMON=$TMPDIR/install-common
INSTALLAPPS=$TMPDIR/install-apps
DMGDIR=$TMPDIR/dmg
mkdir -p $BUILDROOT
mkdir -p $INSTALLROOT
-mkdir -p $INSTALLCOMMON
mkdir -p $INSTALLAPPS
rm -rf $DMGDIR
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
+
+ # If building "inplace" then our build dir will be off of the
+ # WXROOT like normal, adjust the variables to find things that
+ # way.
+ WXBLD=$WXROOT/build-$CHARTYPE
+ mkdir -p $WXBLD
+ cd $WXBLD
+ WXDIR=..
SRCROOT=$WXROOT
- WXBLD=$BUILDROOT
fi
-echo "Using source tree: $WXDIR"
+echo "Using wx root dir: $WXROOT"
echo "Using build dir: $WXBLD"
+echo "Using source tree: $WXDIR"
#----------------------------------------------------------------------
+if [ $KIND = panther ]; then
+ OTHER_CFG_OPTS=--enable-mediactrl
+fi
# Configure wxWidgets
if [ $skipconfig != yes ]; then
--enable-debug_flag \
--enable-precomp=no \
--enable-optimise \
- $UNICODEOPT
-
+ --disable-debugreport \
+ $UNICODEOPT $OTHER_CFG_OPTS
fi
# Make wxWidgets and some contribs
- # For some reason Rez and DeRez have started locking up if run as
- # root, figure out why, but in the meantime...
- if [ "$UID" = "0" ]; then
- chmod a+w lib
- if [ "$CHARTYPE" = "ansi" ]; then
- su robind -c "make lib/libwx_macd-2.5.3.r"
- else
- su robind -c "make lib/libwx_macud-2.5.3.r"
- fi
- fi
-
- make
- make -C contrib/src/gizmos
- make -C contrib/src/ogl CXXFLAGS="-DwxUSE_DEPRECATED=0"
- make -C contrib/src/stc
+# # For some reason Rez and DeRez have started locking up if run via
+# # an ssh terminal. Figure out why, but in the meantime...
+# if [ "$CHARTYPE" = "ansi" ]; then
+# echo cp /projects/wx2.5/bld/lib/libwx_macd-2.5.?.r* lib
+# cp /projects/wx2.5/bld/lib/libwx_macd-2.5.?.r* lib
+# else
+# echo cp /projects/wx2.5/bld-unicode/lib/libwx_macud-2.5.?.r* lib
+# cp /projects/wx2.5/bld-unicode/lib/libwx_macud-2.5.?.r* lib
+# fi
+# touch lib/libwx*.r*
+
+ make $MAKEJOBS
+ make $MAKEJOBS -C contrib/src/animate
+ make $MAKEJOBS -C contrib/src/gizmos
+ make $MAKEJOBS -C contrib/src/stc
# Build wxPython
- cd $WXDIR/wxPython
+ cd $WXROOT/wxPython
$PYTHON setup.py \
UNICODE=$PYUNICODEOPT \
NO_SCRIPTS=1 \
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 prefix=$INSTALLROOT$PREFIX install
+ make -C contrib/src/animate prefix=$INSTALLROOT$PREFIX install
+ make -C contrib/src/gizmos prefix=$INSTALLROOT$PREFIX install
+ make -C contrib/src/stc prefix=$INSTALLROOT$PREFIX install
# relink wx-config with a relative link
ln -s ../lib/wx/config/* wx-config
# and wxPython
- cd $WXDIR/wxPython
+ cd $WXROOT/wxPython
$PYTHON setup.py \
UNICODE=$PYUNICODEOPT \
NO_SCRIPTS=1 \
--root=$INSTALLROOT
- # Apple's Python (on Panther) sym-links the site-packages dir to
+ # Apple's Python Framework (such as what comes with Panther)
+ # sym-links the site-packages dir in the framework 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 [ $APPLE_PYTHON == yes ]; then
if [ -e $INSTALLROOT/Library/Python/$PYVER ]; then
rm -r $INSTALLROOT/Library/Python/$PYVER
fi
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 $INSTALLCOMMON $BINPREFIX
+ # install wxPython's tool scripts
+ mkdir -p $INSTALLROOT$BINPREFIX
+ cd $WXROOT/wxPython/scripts
+ python$PYVER CreateMacScripts.py $INSTALLROOT $BINPREFIX
# Remove the .pyc/.pyo files they just take up space and can be recreated
# during the install.
- pushd $WXDIR/wxPython
+ pushd $WXROOT/wxPython
$PYTHON $PROGDIR/../zappycfiles.py $INSTALLROOT > /dev/null
popd
- # Set premissions for files in $INSTALLROOT and $INSTALLCOMMON
+ # Set premissions for files in $INSTALLROOT
if [ "$UID" = "0" ]; then
- chown -R root:admin $INSTALLROOT $INSTALLCOMMON
- chmod -R g+w $INSTALLROOT $INSTALLCOMMON
+ chown -R root:admin $INSTALLROOT
+ chmod -R g+w $INSTALLROOT
fi
fi
-if [ "$KIND" = "panther" ]; then
+if [ $APPLE_PYTHON == yes ]; then
SITEPACKAGES=/Library/Python/$PYVER
fi
-PKGDIR=`cat $INSTALLCOMMON$SITEPACKAGES/wx.pth`
+PKGDIR=`cat $INSTALLROOT$SITEPACKAGES/wx.pth`
popd
* The wxPython packages and modules
* The wxWidgets shared libraries and headers
+ * Some command line tool scripts, installed to /usr/local/bin.
You must install onto your current boot disk, eventhough the installer does not enforce this, otherwise things will not work.
-You can install more than one version of the wxPython runtime if you desire. You also need to install one instance of the wxPython-common package, which will determine which of the installed runtimes will be the default.
+You can install more than one version of the wxPython runtime if you desire. The most recently installed version will be the default wxPython, but you can choose another by setting the PYTHONPATH or by using the wxversion module. See http://wiki.wxpython.org/index.cgi/MultiVersionInstalls for more details.
Build date: `date`
EOF
# Build the main Installer Package...
- rm -rf wxPython${SHORTVER}-osx-$CHARTYPE-$KIND.pkg
- python $PROGDIR/../buildpkg.py \
- --Title=wxPython${SHORTVER}-osx-$CHARTYPE-$KIND \
+ PKGNAME=wxPython${SHORTVER}-osx-$CHARTYPE-$KIND
+ if [ $PYVER != 2.3 ]; then
+ PKGNAME=wxPython${SHORTVER}-osx-$CHARTYPE-$KIND-py$PYVER
+ fi
+ rm -rf $PKGNAME.pkg
+ $PYTHON $PROGDIR/../buildpkg.py \
+ --Title=$PKGNAME \
--Version=$VERSION \
--Description="wxPython $CHARTYPE runtime $VERSION for $W_MSG MacPython-OSX $PYVER" \
--NeedsAuthorization="YES" \
$INSTALLROOT \
$RESOURCEDIR
- mv wxPython${SHORTVER}-osx-$CHARTYPE-$KIND.pkg $DMGROOT
+ mv $PKGNAME.pkg $DMGROOT
rm $RESOURCEDIR/postflight
rm $RESOURCEDIR/preflight
rm $RESOURCEDIR/Welcome.txt
- #-----------------------------------------------
- # The common files package
-
- # Make the welcome message
- cat > $RESOURCEDIR/Welcome.txt <<EOF
-Welcome!
-
-This package contains the common files that are shared between versions of the wxPython runtime. This includes some command line scripts installed to /usr/local/bin as well as a Python .pth file for site-packages that will determine which version of the installed runtimes is the default version.
-
-EOF
-
- # Build the common Installer Package...
- rm -rf wxPython-common-osx-$KIND.pkg
- python $PROGDIR/../buildpkg.py \
- --Title=wxPython-common-osx-$KIND \
- --Version=$VERSION \
- --Description="Common files for the wxPython runtime ($CHARTYPE-$VERSION)" \
- --NeedsAuthorization="YES" \
- --Relocatable="NO" \
- --InstallOnly="YES" \
- $INSTALLCOMMON \
- $RESOURCEDIR
-
- mv wxPython-common-osx-$KIND.pkg $DMGROOT
-
- rm $RESOURCEDIR/Welcome.txt
-
-
-
#-----------------------------------------------
# Make a README to go on the disk image
cat > "$DMGROOT/README 1st.txt" <<EOF
wxPython${SHORTVER}-osx-$CHARTYPE-$VERSION-$KIND
- This is the main component of the wxPython runtime. It
- includes the Python modules and extension modules, as well as
- the wxWidgets libraries. It is possible to have more than one
- version of the runtime installed at once if you wish, See
- http://wkik.wxpython.org/index.cgi/MultiVersionInstalls
- for details on how to choose which version is installed.
+ This Installer contains the wxPython runtime, compiled on a
+ $KIND OS X system, using the $CHARTYPE build of the wxWidgets
+ library. It includes the Python modules and extension
+ modules, as well as the wxWidgets libraries.
+ It is possible to have more than one version of the runtime
+ installed at once if you wish. The most recently installed
+ version will be the default wxPython, but you can choose
+ another by setting the PYTHONPATH or by using the wxversion
+ module. For more details see:
+ http://wiki.wxpython.org/index.cgi/MultiVersionInstalls
- wxPython-common-osx-$CHARTYPE-$VERSION-$KIND
-
- This is the common files for the runtime that are shared
- between all versions of the runtime. You need to have one of
- these installed and it will determine which of the runtimes is
- the default one that is imported with "import wx", so it
- should match the version and character type of one of the
- installed runtimes. If you are wanting to have only one
- wxPython installed then be sure to install both of the
- packages in this disk image.
uninstall_wxPython.py
it from a Terminal command line, or you can open it with
PythonLauncher and let it create a Terminal to run it in.
+ NOTE: If you have versions prior to 2.5.3.1 installed, please
+ do run this uninstall tool to remove the older version.
+
EOF
#-----------------------------------------------
# Make a disk image to hold these files
- dmgname=wxPython${SHORTVER}-osx-$CHARTYPE-$VERSION-$KIND-py$PYVER
+ dmgname=wxPython${SHORTVER}-osx-$CHARTYPE-$VERSION-$TAG-py$PYVER
$PROGDIR/../makedmg $DMGROOT $DMGDIR $dmgname
echo Moving $DMGDIR/$dmgname.dmg to $DESTDIR
$PYTHONW $PROGDIR/../buildapp.py \
--builddir=$DMGAPPS \
--name=PyCrust \
- --mainprogram=$INSTALLCOMMON$BINPREFIX/pycrust.py \
+ --mainprogram=$INSTALLROOT$BINPREFIX/pycrust.py \
--iconfile=$PROGDIR/PieShell.icns \
build
+## TODO: PyAlaMode needs tweaked to be able to run from a bundle. It
+## needs to know to ignore command line parameters and etc...
# # and PyAlaMode
# $PYTHONW $PROGDIR/../buildapp.py \
# --builddir=$DMGAPPS \
# --name=PyAlaMode \
-# --mainprogram=$INSTALLCOMMON$BINPREFIX/pyalamode.py \
+# --mainprogram=$INSTALLROOT$BINPREFIX/pyalamode.py \
# --iconfile=$PROGDIR/PieShell.icns \
# build
$PYTHONW $PROGDIR/../buildapp.py \
--builddir=$DMGAPPS \
--name=XRCed \
- --mainprogram=$INSTALLCOMMON$BINPREFIX/xrced.py \
+ --mainprogram=$INSTALLROOT$BINPREFIX/xrced.py \
--iconfile=$PROGDIR/XRCed.icns \
build
# and then finally make a disk image containing everything
- dmgname=wxPython${SHORTVER}-osx-docs-demos-$VERSION
+ dmgname=wxPython${SHORTVER}-osx-docs-demos-$VERSION-$TAG-py$PYVER
$PROGDIR/../makedmg $DMGAPPS $DMGDIR $dmgname
echo Moving $DMGDIR/$dmgname.dmg to $DESTDIR