# Build wxMac and wxPythonOSX from the tarball and then make an
# Installer package out of it.
+#set -o xtrace
+
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 [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 " PYVER Python version to use to do the build. A"
+ echo " matching python\$PYVER must be found on the PATH"
echo ""
echo "optional command flags:"
echo " skiptar Don't unpack the tarball"
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 " reswig Regenerate SWIG wrappers"
+ echo " universal Generate Universal wxWidgets binary (requires Universal Python "
+ echo " to general Universal wxPython)."
echo " unicode Make a unicode build"
echo " skipconfig Don't run configure"
echo " skipbuild Don't build wxWidgets or wxPython"
}
-if [ $# -lt 1 ]; then
- usage
+PYVER=$1
+if [ "$PYVER" != "" ] && which python$PYVER && which pythonw$PYVER; then
+ PYTHON=`which python$PYVER`
+ PYTHONW=`which pythonw$PYVER`
+else
+ 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
skiptar=no
skipclean=no
inplace=no
unicode=no
+debug=no
+reswig=no
+universal=no
for flag in $*; do
case ${flag} in
skipconfig) skipconfig=yes; skiptar=yes ;;
skipbuild) skipbuild=yes; skipconfig=yes; skiptar=yes ;;
skipinstall) skipinstall=yes ;;
- skipdmg) skipdmg=yes ;;
+ skipdmg) skipdmg=yes ;;
skipclean) skipclean=yes ;;
inplace) inplace=yes; skiptar=yes ;;
unicode) unicode=yes ;;
-
+ ansi) unicode=no ;;
+ debug) debug=yes ;;
+ reswig) reswig=yes ;;
+ universal) universal=yes ;;
*) echo "Unknown flag \"${flag}\""
usage
exit 1
done
+
+OSX_VERSION=`sw_vers -productVersion`
+OSX_VERSION=${OSX_VERSION:0:4}
+
+case $OSX_VERSION in
+ 10.4) TAG=macosx10.4 ;;
+ 10.3) TAG=macosx10.3 ;;
+ 10.2) TAG=macosx10.2 ;;
+ *) usage; exit 1 ;;
+esac
+
+if [ $universal = yes ]; then
+ TAG=universal10.4
+fi
+
+
+
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
PYUNICODEOPT=0
fi
-#if [ "$HOSTNAME" = "bigmac.alldunn.com" ]; then
-# MAKEJOBS="--jobs=2"
-#fi
+if [ $debug == yes ]; then
+ DEBUG_FLAG=--enable-debug
+ PYDEBUGOPT=--debug
+else
+ DEBUG_FLAG=--enable-debug_flag
+ PYDEBUGOPT=
+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
# TARBALLDIR before invoking this script...
TARBALLDIR=/stuff/Development/wxPython/dist/$VERSION
fi
-TARBALL=$TARBALLDIR/wxPython-src-$VERSION.tar.gz
+TARBALL=$TARBALLDIR/wxPython-src-$VERSION.tar.bz2
-if [ ! -e $TARBALLDIR/wxPython-demo-$VERSION.tar.gz ]; then
+if [ ! -e $TARBALLDIR/wxPython-demo-$VERSION.tar.bz2 ]; 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 " $TARBALLDIR/wxPython-demo-$VERSION.tar.bz2"
echo "-------------------------------------------------------"
fi
-if [ ! -e $TARBALLDIR/wxPython-docs-$VERSION.tar.gz ]; then
+if [ ! -e $TARBALLDIR/wxPython-docs-$VERSION.tar.bz2 ]; 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 " $TARBALLDIR/wxPython-docs-$VERSION.tar.bz2"
echo "-------------------------------------------------------"
fi
PREFIX=/usr/local/lib/wxPython-$CHARTYPE-$VERSION
BINPREFIX=/usr/local/bin
+SWIGBIN=/opt/swig/bin/swig
WXROOT=`dirname $PWD`
PROGDIR="`dirname \"$0\"`"
TMPDIR=$PWD/_build_dmg
mkdir -p $DMGAPPS/Docs
mkdir -p $DMGAPPS/Samples
+if [ ! -d $DESTDIR ]; then
+ mkdir $DESTDIR
+fi
pushd $BUILDROOT
if [ $skiptar != yes ]; then
echo Unarchiving tarball...
- tar xzf $TARBALL
+ tar xjf $TARBALL
fi
if [ $inplace = no ]; then
#----------------------------------------------------------------------
+if [ $OSX_VERSION = 10.3 -o $OSX_VERSION = 10.4 ]; then
+ OTHER_CFG_OPTS=--enable-mediactrl
+fi
# Configure wxWidgets
-if [ $skipconfig != yes ]; then
+if [ $skipconfig != yes -a $universal != yes ]; then
$WXDIR/configure \
--prefix=$PREFIX \
--with-mac \
--enable-sound \
--enable-display \
--enable-geometry \
- --enable-debug_flag \
+ --enable-graphics_ctx \
+ $DEBUG_FLAG \
--enable-precomp=no \
--enable-optimise \
- $UNICODEOPT
-
+ --disable-debugreport \
+ --disable-precompiled-headers \
+ $UNICODEOPT $OTHER_CFG_OPTS
fi
if [ $skipbuild != yes ]; then
# 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.4.r"
- else
- su robind -c "make lib/libwx_macud-2.5.4.r"
- fi
+ WXBLD_CONFIG="$WXBLD/wx-config"
+ if [ $universal = yes ]; then
+ export WXROOT
+ export BUILDPREFIX=$PREFIX
+ export INSTALLDIR=$INSTALLROOT$PREFIX
+ $WXDIR/distrib/scripts/mac/macbuild wxpython universal $CHARTYPE
+ else
+ make $MAKEJOBS
+ make $MAKEJOBS -C contrib/src/gizmos
+ make $MAKEJOBS -C contrib/src/stc
+ fi
+
+ SWIGIT=0
+ if [ $reswig = yes ]; then
+ SWIGIT=1
fi
-
- make $MAKEJOBS
- make $MAKEJOBS -C contrib/src/gizmos
- make $MAKEJOBS -C contrib/src/ogl CXXFLAGS="-DwxUSE_DEPRECATED=0"
- make $MAKEJOBS -C contrib/src/stc
# Build wxPython
cd $WXROOT/wxPython
UNICODE=$PYUNICODEOPT \
NO_SCRIPTS=1 \
EP_ADD_OPTS=1 \
- WX_CONFIG="$WXBLD/wx-config --inplace" \
+ WX_CONFIG="$WXBLD_CONFIG --inplace" \
BUILD_BASE=$WXBLD/wxPython \
+ SWIG=$SWIGBIN \
+ USE_SWIG=$SWIGIT \
build
fi
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
-
+ if [ $universal != yes ]; then
+ make prefix=$INSTALLROOT$PREFIX install
+ make -C contrib/src/gizmos prefix=$INSTALLROOT$PREFIX install
+ make -C contrib/src/stc prefix=$INSTALLROOT$PREFIX install
+ fi
# relink wx-config with a relative link
cd $INSTALLROOT$PREFIX/bin
UNICODE=$PYUNICODEOPT \
NO_SCRIPTS=1 \
EP_ADD_OPTS=1 \
- WX_CONFIG="$INSTALLROOT/$PREFIX/bin/wx-config --prefix=$INSTALLROOT/$PREFIX" \
+ 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
+ # 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
fi
fi
-if [ "$KIND" = "panther" ]; then
+if [ $APPLE_PYTHON == yes ]; then
SITEPACKAGES=/Library/Python/$PYVER
fi
PKGDIR=`cat $INSTALLROOT$SITEPACKAGES/wx.pth`
# The main runtime installer package
# 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" ;;
+ case $OSX_VERSION in
+ 10.4) W_MSG="the Tiger (OS X 10.4.x Intel) version of" ;;
+ 10.3) W_MSG="the Panther (OS X 10.3.x) version of" ;;
+ 10.2) W_MSG="the Jaguar (OS X 10.2.x) version of" ;;
esac
+
+ if [ $universal == yes ]; then
+ W_MSG="the Universal (OS X 10.4.x and above) version of"
+ fi
cat > $RESOURCEDIR/Welcome.txt <<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-$TAG
+ if [ $PYVER != 2.3 ]; then
+ PKGNAME=wxPython${SHORTVER}-osx-$CHARTYPE-$TAG-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/$PKGNAME.pkg
rm $RESOURCEDIR/postflight
rm $RESOURCEDIR/preflight
#-----------------------------------------------
# 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
- mv $DMGDIR/$dmgname.dmg $DESTDIR
+ mv $DMGDIR/$dmgname.dmg $DESTDIR/$dmgname.dmg
#---------------------------------------------------------------------------
# wxDocs
- if [ ! -e $TARBALLDIR/wxPython-docs-$VERSION.tar.gz ]; then
+ if [ ! -e $TARBALLDIR/wxPython-docs-$VERSION.tar.bz2 ]; then
cat > "$DMGAPPS/Docs/Build ERROR.txt" <<EOF
The wxPython-docs tarball was not found when building this disk image!
else
pushd $BUILDROOT
- tar xzvf $TARBALLDIR/wxPython-docs-$VERSION.tar.gz
+ tar xjvf $TARBALLDIR/wxPython-docs-$VERSION.tar.bz2
popd
# Make an app to launch viewdocs.py
popd
- if [ ! -e $TARBALLDIR/wxPython-demo-$VERSION.tar.gz ]; then
+ if [ ! -e $TARBALLDIR/wxPython-demo-$VERSION.tar.bz2 ]; then
cat > "$DMGAPPS/Samples/Build ERROR.txt" <<EOF
-The wxPython-demo tarball was not found when building this disk image!
+The wxPython-$VERSION-demo tarball was not found when building this disk image!
EOF
cp "$DMGAPPS/Samples/Build ERROR.txt" $DMGAPPS
# Copy the demo and samples to the disk image from the tarball
pushd $DMGAPPS/Samples
- tar xzvf $TARBALLDIR/wxPython-demo-$VERSION.tar.gz
+ tar xjvf $TARBALLDIR/wxPython-demo-$VERSION.tar.bz2
mv wxPython-$VERSION/* .
rm -rf wxPython-$VERSION
- rm demo/b demo/.setup.sh
+ rm -f demo/b demo/.setup.sh
mv demo/demo.py demo/demo.pyw
popd
# and then finally make a disk image containing everything
- dmgname=wxPython${SHORTVER}-osx-docs-demos-$VERSION-$KIND
+ dmgname=wxPython${SHORTVER}-osx-docs-demos-$VERSION-$TAG-py$PYVER
$PROGDIR/../makedmg $DMGAPPS $DMGDIR $dmgname
echo Moving $DMGDIR/$dmgname.dmg to $DESTDIR
- mv $DMGDIR/$dmgname.dmg $DESTDIR
+ mv $DMGDIR/$dmgname.dmg $DESTDIR/$dmgname.dmg
fi
echo "Cleanup is disabled. You should remove $TMPDIR when finished"
fi
+exit 0