e2f7f0625d
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26201 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
463 lines
12 KiB
Bash
Executable File
463 lines
12 KiB
Bash
Executable File
#!/bin/sh -e
|
|
#----------------------------------------------------------------------
|
|
# Build wxMac and wxPythonOSX from the tarball and then make an
|
|
# Installer package out of it.
|
|
|
|
spectemplate=distrib/wxPythonFull.spec.in
|
|
|
|
if [ ! -d wxPython -o ! -e ${spectemplate} ]; then
|
|
echo "Please run this script from the root wxPython directory."
|
|
exit 1
|
|
fi
|
|
|
|
#----------------------------------------------------------------------
|
|
# Check Parameters
|
|
|
|
function usage {
|
|
echo ""
|
|
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 "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 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 1 ]; then
|
|
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
|
|
|
|
|
|
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 ;;
|
|
|
|
*) echo "Unknown flag \"${flag}\""
|
|
usage
|
|
exit 1
|
|
esac
|
|
done
|
|
|
|
|
|
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
|
|
|
|
PREFIX=/usr/lib/wxPython-$VERSION
|
|
BINPREFIX=/usr/bin
|
|
|
|
WXROOT=`dirname $PWD`
|
|
PROGDIR="`dirname \"$0\"`"
|
|
TMPDIR=$PWD/_build_dmg
|
|
|
|
BUILDROOT=$TMPDIR/build
|
|
INSTALLROOT=$TMPDIR/install
|
|
INSTALLDEVEL=$TMPDIR/install-devel
|
|
DMGDIR=$TMPDIR/dmg
|
|
RESOURCEDIR=$PROGDIR/resources
|
|
DESTDIR=$PWD/dist
|
|
SRCROOT=$BUILDROOT/wxPythonSrc-$VERSION
|
|
|
|
|
|
#----------------------------------------------------------------------
|
|
# Setup builddirs
|
|
|
|
mkdir -p $BUILDROOT
|
|
mkdir -p $INSTALLROOT
|
|
#mkdir -p $INSTALLDEVEL
|
|
rm -rf $DMGDIR
|
|
mkdir -p $DMGDIR/root/Apps
|
|
mkdir -p $DMGDIR/root/Docs
|
|
mkdir -p $DMGDIR/root/Samples
|
|
|
|
|
|
pushd $BUILDROOT
|
|
|
|
|
|
#----------------------------------------------------------------------
|
|
# Unpack the tarball
|
|
|
|
if [ -z "$skiptar" ]; 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
|
|
MEASURE=$WXROOT//
|
|
find $WXROOT $FEXPR -print \
|
|
| grep -v $WXROOT/bld \
|
|
| grep -v wxPython/build \
|
|
| grep -v wxPython/_build \
|
|
| grep -v CVS \
|
|
| grep -v .pyc \
|
|
| cut -b ${#MEASURE}- > filelist
|
|
|
|
for x in `cat filelist`; do
|
|
if [ -d "$WXROOT/$x" ]; then
|
|
mkdir -p "wxPythonSrc-$VERSION/$x"
|
|
else
|
|
echo $x
|
|
cp -p "$WXROOT/$x" "wxPythonSrc-$VERSION/$x"
|
|
fi
|
|
done
|
|
|
|
touch .last_copy
|
|
fi
|
|
|
|
|
|
cd wxPythonSrc-$VERSION
|
|
WXDIR=`pwd`
|
|
mkdir -p $WXDIR/bld
|
|
cd $WXDIR/bld
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
|
|
# Configure wxWidgets
|
|
if [ -z "$skipconfig" ]; then
|
|
../configure \
|
|
--prefix=$PREFIX \
|
|
--with-mac \
|
|
--disable-monolithic \
|
|
--with-opengl \
|
|
--enable-sound \
|
|
--enable-display \
|
|
--enable-geometry \
|
|
--enable-precomp=no \
|
|
--enable-debug_flag
|
|
|
|
## --enable-optimise \
|
|
## --with-libjpeg=builtin \
|
|
## --with-libpng=builtin \
|
|
## --with-libtiff=builtin \
|
|
## --with-zlib=builtin \
|
|
|
|
fi
|
|
|
|
# Build wxWidgets and wxPython
|
|
if [ -z "$skipbuild" ]; 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
|
|
|
|
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 setup.py \
|
|
NO_SCRIPTS=1 \
|
|
WX_CONFIG="$WXDIR/bld/wx-config --prefix=$WXDIR --exec-prefix=$WXDIR/bld" \
|
|
build
|
|
|
|
|
|
# Build wxrc (XRC resource tool)
|
|
cd $WXDIR/bld/contrib/utils/wxrc
|
|
make
|
|
strip wxrc
|
|
|
|
fi
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
if [ -z "$skipinstall" ]; then
|
|
# 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 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 $BINPREFIX
|
|
|
|
|
|
# Install wxrc
|
|
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
|
|
|
|
|
|
# Set premissions for files in $INSTALLROOT
|
|
chown -R root:admin $INSTALLROOT
|
|
chmod -R g+w $INSTALLROOT
|
|
fi
|
|
|
|
popd
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
# Make the Installer packages and disk image
|
|
if [ -z "$skipdmg" ]; then
|
|
|
|
# Remove the .pyc/.pyo files they just take up space and can be recreated
|
|
# during the install.
|
|
$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 $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
|
|
|
|
# make the preflight script
|
|
cat > $RESOURCEDIR/preflight <<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
|
|
|
|
# make the postflight script
|
|
cat > $RESOURCEDIR/postflight <<EOF
|
|
#!/bin/sh -e
|
|
# Compile the .py files in the wxPython pacakge
|
|
$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
|
|
|
|
|
|
# and all of the wxPython pacakge should be group writable
|
|
chgrp -R admin \$2$SITEPACKAGES/wxPython
|
|
chmod -R g+w \$2$SITEPACKAGES/wxPython
|
|
chgrp -R admin \$2$SITEPACKAGES/wx
|
|
chmod -R g+w \$2$SITEPACKAGES/wx
|
|
|
|
exit 0
|
|
EOF
|
|
chmod +x $RESOURCEDIR/postflight
|
|
|
|
|
|
|
|
# Build the main Installer Package...
|
|
rm -rf wxPythonOSX-$KIND.pkg
|
|
python $PROGDIR/../buildpkg.py \
|
|
--Title=wxPythonOSX-$KIND \
|
|
--Version=$VERSION \
|
|
--Description="wxPython $VERSION for $W_MSG MacPython-OSX $PYVER" \
|
|
--NeedsAuthorization="YES" \
|
|
--Relocatable="NO" \
|
|
--InstallOnly="YES" \
|
|
$INSTALLROOT \
|
|
$RESOURCEDIR
|
|
|
|
mv wxPythonOSX-$KIND.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.
|
|
|
|
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.
|
|
|
|
|
|
|
|
Docs/wxDocs A folder containing the wxWidgets documentation
|
|
bundled in .zip files, and a small wxPython
|
|
application that can be used to view the docs.
|
|
Just run viewer.pyw.
|
|
|
|
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 $DMGDIR/root/Docs
|
|
tar xzvf $TARBALLDIR/wxPythonDocs-$VERSION.tar.gz
|
|
mv wxPython-$VERSION/docs wxDocs
|
|
rm -r wxPython-$VERSION
|
|
mv wxDocs/viewdocs.py wxDocs/viewdocs.pyw
|
|
|
|
# license files, docs, etc.
|
|
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-$KIND-Py$PYVER
|
|
|
|
echo Moving $DMGDIR/wxPythonOSX-$VERSION-$KIND-Py$PYVER.dmg to $DESTDIR
|
|
mv $DMGDIR/wxPythonOSX-$VERSION-$KIND-Py$PYVER.dmg $DESTDIR
|
|
fi
|
|
|
|
|
|
# Cleanup build/install dirs
|
|
if [ -z "$skipclean" ]; then
|
|
echo "Cleaning up..."
|
|
rm -rf $TMPDIR
|
|
else
|
|
echo "Cleanup is disabled. You should remove $TMPDIR when finished"
|
|
fi
|
|
|