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 " 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
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
+
+TARBALLDIR=/stuff/Development/wxPython/dist/$VERSION
+TARBALL=$TARBALLDIR/wxPythonSrc-$VERSION.tar.gz
-# TODO: Should I change the prefix to /usr?
-PREFIX=/usr/local
+PREFIX=/usr/lib/wxPython-$VERSION
+BINPREFIX=/usr/bin
+WXROOT=`dirname $PWD`
PROGDIR="`dirname \"$0\"`"
TMPDIR=$PWD/_build_dmg
DMGDIR=$TMPDIR/dmg
RESOURCEDIR=$PROGDIR/resources
DESTDIR=$PWD/dist
-
+SRCROOT=$BUILDROOT/wxPythonSrc-$VERSION
#----------------------------------------------------------------------
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
# Unpack the tarball
if [ -z "$skiptar" ]; then
- tar xzvf $TARBALL
+ echo Unarchiving tarball...
+ tar xzf $TARBALL
fi
if [ "$use_cvs" = 1 ]; then
if [ -e .last_copy ]; then
FEXPR="-cnewer .last_copy"
fi
- find /projects/wx $FEXPR -print \
- | grep -v wx/build \
+ MEASURE=$WXROOT//
+ find $WXROOT $FEXPR -print \
+ | grep -v $WXROOT/bld \
| grep -v wxPython/build \
| grep -v wxPython/_build \
| grep -v CVS \
- | cut -b 14- > filelist
+ | grep -v .pyc \
+ | cut -b ${#MEASURE}- > filelist
for x in `cat filelist`; do
- if [ -d "/projects/wx/$x" ]; then
+ if [ -d "$WXROOT/$x" ]; then
mkdir -p "wxPythonSrc-$VERSION/$x"
else
echo $x
- cp -p "/projects/wx/$x" "wxPythonSrc-$VERSION/$x"
+ cp -p "$WXROOT/$x" "wxPythonSrc-$VERSION/$x"
fi
done
cd wxPythonSrc-$VERSION
WXDIR=`pwd`
-mkdir -p $WXDIR/build
-cd $WXDIR/build
+mkdir -p $WXDIR/bld
+cd $WXDIR/bld
#----------------------------------------------------------------------
-# Configure wxWindows
+# Configure wxWidgets
if [ -z "$skipconfig" ]; then
- ../configure --with-mac --prefix=$PREFIX \
+ ../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
+# Build wxWidgets and wxPython
if [ -z "$skipbuild" ]; then
- make
+ # 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
+
+ if [ ! -e $WXDIR/include/wx/gizmos ]; then
+ # Make some links so the wxPython build can find all the headers it needs
+ pushd $WXDIR/include/wx
+ ln -s ../../contrib/include/wx/* .
+ popd
+ fi
+
+ # 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="$WXDIR/bld/wx-config --prefix=$WXDIR --exec-prefix=$WXDIR/bld" \
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 $WXDIR/bld/contrib/utils/wxrc
+ make
strip wxrc
fi
#----------------------------------------------------------------------
-# Install wxWindows
if [ -z "$skipinstall" ]; then
- cd $WXDIR/build
- make prefix=$INSTALLROOT/$PREFIX install
+ # Install wxWidgets
+ cd $WXDIR/bld
+ 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" \
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
+ 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
+ cp $WXDIR/bld/contrib/utils/wxrc/wxrc $INSTALLROOT$BINPREFIX
+
+# # install the wxPython headers
+# cd $WXDIR/wxPython
+# cp -R include $INSTALLROOT$PREFIX
+# mkdir -p $INSTALLROOT$PREFIX/include/wx/wxPython/i_files
+# cp src/*.i $INSTALLROOT$PREFIX/include/wx/wxPython/i_files
- # 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
+ chown -R root:admin $INSTALLROOT
+ chmod -R g+w $INSTALLROOT
fi
popd
# 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 <<EOF
-import sys, os
-sys.path.insert(0, "/Applications/wxPythonOSX-$VERSION/demo")
-os.chdir("/Applications/wxPythonOSX-$VERSION/demo")
-import Main
-Main.main()
-EOF
- pythonw $PROGDIR/../buildapp.py \
- --builddir=$APPDIR \
- --name=RunDemo \
- --mainprogram=$APPDIR/demo/RunDemo.pyw \
- --iconfile=$PROGDIR/RunDemo.icns \
- build
-
- # Make an app to launch PyShell
- pythonw $PROGDIR/../buildapp.py \
- --builddir=$APPDIR \
- --name=PyShell \
- --mainprogram=$INSTALLROOT$PREFIX/bin/pyshell.py \
- --iconfile=$PROGDIR/PieShell.icns \
- build
-
- # Make an app to launch XRCed
- pythonw $PROGDIR/../buildapp.py \
- --builddir=$APPDIR \
- --name=XRCed \
- --mainprogram=$INSTALLROOT$PREFIX/bin/xrced.py \
- --iconfile=$PROGDIR/XRCed.icns \
- build
+ $PYTHON $PROGDIR/../zappycfiles.py $INSTALLROOT
# 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 <<EOF
Welcome!
-This program will install wxPython $VERSION for MacPython-OSX $PYVER.
+This program will install wxPython $VERSION for $W_MSG MacPython-OSX $PYVER.
+
+You must install onto your current boot disk, even though the installer does not enforce this, otherwise things will not work.
Build date: `date`
EOF
#!/bin/sh
# Cleanup any old install of the wxPython package
rm -rf \$2$SITEPACKAGES/wxPython
+rm -rf \$2$SITEPACKAGES/wx
exit 0
EOF
chmod +x $RESOURCEDIR/preflight
cat > $RESOURCEDIR/postflight <<EOF
#!/bin/sh -e
# Compile the .py files in the wxPython pacakge
-/usr/local/bin/python \$2$SITEPACKAGES/../compileall.py \$2$SITEPACKAGES/wxPython
-/usr/local/bin/python -O \$2$SITEPACKAGES/../compileall.py \$2$SITEPACKAGES/wxPython
-
-# and in the demo
-/usr/local/bin/python \$2$SITEPACKAGES/../compileall.py /Applications/wxPythonOSX-$VERSION/demo
+$PYTHON \$2$PYLIB/compileall.py \$2$SITEPACKAGES/wxPython
+$PYTHON \$2$PYLIB/compileall.py \$2$SITEPACKAGES/wx
+$PYTHON -O \$2$PYLIB/compileall.py \$2$SITEPACKAGES/wxPython
+$PYTHON -O \$2$PYLIB/compileall.py \$2$SITEPACKAGES/wx
-# Make the demo/data dir writable
-chmod a+w /Applications/wxPythonOSX-$VERSION/demo/data
-# and the wxPython pacakge should be group writable
+# and all of the wxPython pacakge should be group writable
chgrp -R admin \$2$SITEPACKAGES/wxPython
-chgrp -R admin /Applications/wxPythonOSX-$VERSION
chmod -R g+w \$2$SITEPACKAGES/wxPython
-chmod -R g+w /Applications/wxPythonOSX-$VERSION
+chgrp -R admin \$2$SITEPACKAGES/wx
+chmod -R g+w \$2$SITEPACKAGES/wx
exit 0
EOF
- # Finally, build the main package...
- rm -rf wxPythonOSX.pkg
+ # Build the main Installer Package...
+ rm -rf wxPythonOSX-$KIND.pkg
python $PROGDIR/../buildpkg.py \
- --Title=wxPythonOSX \
+ --Title=wxPythonOSX-$KIND \
--Version=$VERSION \
- --Description="wxPython $VERSION for MacPython-OSX $PYVER" \
+ --Description="wxPython $VERSION for $W_MSG MacPython-OSX $PYVER" \
--NeedsAuthorization="YES" \
--Relocatable="NO" \
--InstallOnly="YES" \
$INSTALLROOT \
$RESOURCEDIR
- mv wxPythonOSX.pkg $DMGDIR/root
+ mv wxPythonOSX-$KIND.pkg $DMGDIR/root
- # and the devel package
- rm -rf wxPythonOSX-devel.pkg
- python $PROGDIR/../buildpkg.py \
- --Title=wxPythonOSX-devel \
- --Version=$VERSION \
- --Description="Headers and such that allow you to link with the same wxMac that wxPython does" \
- --NeedsAuthorization="YES" \
- --Relocatable="NO" \
- --InstallOnly="YES" \
- $INSTALLROOT
- mv wxPythonOSX-devel.pkg $DMGDIR/root
+ # Make a README.txt to go on the disk image
+ cat > "$DMGDIR/root/README 1st.txt" <<EOF
+Welcome to wxPython!
+On this disk image you will find the installer for wxPython $VERSION for $W_MSG MacPython-OSX $PYVER. MacPython-OSX is not included.
- # Make a README.txt to go on the disk image
- cat > $DMGDIR/root/README.txt <<EOF
-The files on this disk image are Installer packages for wxPythonOSX
-$VERSION for MacPython-OSX $PVER. You must already have MacPython-OSX
-installed.
+ wxPython-$KIND.pkg The installer package. It contains the wxPython
+ extension modules, wxMac dynamic libraries and
+ headers, and some scripts for the command-line
+ tools.
+
+Everything else here is optional and you can drag them out of the disk
+image and drop them whereever you want. You do need to install the above
+package before you can use any of the items below.
+
+
+ Apps/wxPython Demo An application bundle version of the demo.
+ (This has it's own copy of the sources within
+ the bundle.)
+
+ Apps/XRCed An application for editing wxPython resource
+ files (XRC files.)
+
+ Apps/PyCrust An application that provides an interactive
+ Python shell and also namespace inspectors.
-The wxPython extension modules, library, demo and samples are
-contained in the wxPythonOSX package. You should install at least this
-package to use wxPython.
-If you have any need to create applicaitons or extension modules that
-link with the same wxMac that wxPython does, then you can also install
-the wxPythonOSX-devel package to get the necessary header files and
-such. Otherwise you don't need it.
+
+ Docs/wxDocsViewer An application that allows you to view the
+ wxWidgets documentation.
+
+ Docs/licence License files.
+
+ Docs/other A few readmes, change log, etc. The full
+ documentation is downloadable separately.
+
+
+ Samples/samples Several small sample applications that
+ demonstrate how to use wxPython.
+
+ Samples/demo A copy of the wxPython demo source code,
+ just open the folder and run demo.pyw.
Happy Hacking!
EOF
+# PyAlaMode An extension of PyCrust that includes source
+# file editing capabilities.
+
+
+ # wxDocs
+ pushd $BUILDROOT
+ tar xzvf $TARBALLDIR/wxPythonDocs-$VERSION.tar.gz
+ popd
- # license files, etc.
- cp -pR $WXDIR/wxPython/licence $DMGDIR/root
- cp $WXDIR/wxPython/CHANGES.txt $DMGDIR/root
+ # Make an app to launch viewdocs.py
+ $PYTHONW $PROGDIR/../buildapp.py \
+ --builddir=$DMGDIR/root/Docs \
+ --name=wxDocsViewer \
+ --mainprogram=$BUILDROOT/wxPython-$VERSION/docs/viewdocs.py \
+ --iconfile=$PROGDIR/Info.icns \
+ build
+
+ cp $BUILDROOT/wxPython-$VERSION/docs/*.zip $DMGDIR/root/Docs/wxDocsViewer.app/Contents/Resources
+
+ cat > "$DMGDIR/root/Docs/README 1st.txt" <<EOF
+
+The wxDocsViewer application needs to be copied to your Desktop (or
+someplace else you have write access to) before you can run it, so it
+can cache some indexes within its bundle.
+
+EOF
+
+ # license files, docs, etc.
+ pushd $DMGDIR/root/Docs
+ cp -pR $SRCROOT/wxPython/licence .
+ cp -pR $SRCROOT/wxPython/docs .
+ rm -rf docs/bin
+ rm -rf docs/xml-raw
+ mv docs other
+ popd
+
+ # Copy the demo and samples to the disk image from the tarball
+ pushd $DMGDIR/root/Samples
+ tar xzvf $TARBALLDIR/wxPythonDemo-$VERSION.tar.gz
+ mv wxPython-$VERSION/* .
+ rm -rf wxPython-$VERSION
+ rm demo/b demo/.setup.sh
+ mv demo/demo.py demo/demo.pyw
+ popd
+
+
+ # Make an app bundle to launch PyCrust
+ $PYTHONW $PROGDIR/../buildapp.py \
+ --builddir=$DMGDIR/root/Apps \
+ --name=PyCrust \
+ --mainprogram=$INSTALLROOT$BINPREFIX/pycrust.py \
+ --iconfile=$PROGDIR/PieShell.icns \
+ build
+
+# # and PyAlaMode
+# $PYTHONW $PROGDIR/../buildapp.py \
+# --builddir=$DMGDIR/root \
+# --name=PyAlaMode \
+# --mainprogram=$INSTALLROOT$BINPREFIX/pyalamode.py \
+# --iconfile=$PROGDIR/PieShell.icns \
+# build
+
+ # Make an app to launch XRCed
+ $PYTHONW $PROGDIR/../buildapp.py \
+ --builddir=$DMGDIR/root/Apps \
+ --name=XRCed \
+ --mainprogram=$INSTALLROOT$BINPREFIX/xrced.py \
+ --iconfile=$PROGDIR/XRCed.icns \
+ build
+
+ # Make an app bundle to run the demo
+ $PYTHONW $PROGDIR/../buildapp.py \
+ --builddir=$DMGDIR/root/Apps \
+ --name="wxPython Demo" \
+ --mainprogram=$DMGDIR/root/Samples/demo/demo.pyw \
+ --iconfile=$PROGDIR/RunDemo.icns \
+ build
+ cp -pR $DMGDIR/root/Samples/demo/* "$DMGDIR/root/Apps/wxPython Demo.app/Contents/Resources"
+
# and then finally make a disk image containing the packages and etc.
- $PROGDIR/../makedmg $DMGDIR/root $DMGDIR wxPythonOSX-$VERSION-py$PYVER
+ $PROGDIR/../makedmg $DMGDIR/root $DMGDIR wxPythonOSX-$VERSION-$KIND-Py$PYVER
- echo Moving $DMGDIR/wxPythonOSX-$VERSION-py$PYVER.dmg to $DESTDIR
- mv $DMGDIR/wxPythonOSX-$VERSION-py$PYVER.dmg $DESTDIR
+ echo Moving $DMGDIR/wxPythonOSX-$VERSION-$KIND-Py$PYVER.dmg to $DESTDIR
+ mv $DMGDIR/wxPythonOSX-$VERSION-$KIND-Py$PYVER.dmg $DESTDIR
fi