git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@19674 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
391 lines
10 KiB
Bash
Executable File
391 lines
10 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 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 ""
|
|
echo "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 " 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"
|
|
}
|
|
|
|
|
|
if [ $# -lt 2 ]; then
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
VERSION=$1
|
|
PYVER=$2
|
|
shift;shift
|
|
|
|
|
|
for flag in $*; do
|
|
case ${flag} in
|
|
skiptar) skiptar=1 ;;
|
|
use_cvs) skiptar=1; use_cvs=1 ;;
|
|
skipconfig) skipconfig=1 ;;
|
|
skipbuild) skipbuild=1 ;;
|
|
skipinstall) skipinstall=1 ;;
|
|
skipdmg) skipdmg=1 ;;
|
|
skipclean) skipclean=1 ;;
|
|
|
|
*) echo "Unknown flag \"${flag}\""
|
|
usage
|
|
exit 1
|
|
esac
|
|
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
|
|
|
|
# TODO: Should I change the prefix to /usr?
|
|
PREFIX=/usr/local
|
|
|
|
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
|
|
|
|
|
|
|
|
#----------------------------------------------------------------------
|
|
# Setup builddirs
|
|
|
|
mkdir -p $BUILDROOT
|
|
mkdir -p $INSTALLROOT
|
|
mkdir -p $INSTALLDEVEL
|
|
rm -rf $DMGDIR
|
|
mkdir -p $DMGDIR/root
|
|
|
|
pushd $BUILDROOT
|
|
|
|
|
|
#----------------------------------------------------------------------
|
|
# Unpack the tarball
|
|
|
|
if [ -z "$skiptar" ]; then
|
|
tar xzvf $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
|
|
fi
|
|
|
|
|
|
cd wxPythonSrc-$VERSION
|
|
WXDIR=`pwd`
|
|
mkdir -p $WXDIR/build
|
|
cd $WXDIR/build
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
|
|
# Configure wxWindows
|
|
if [ -z "$skipconfig" ]; then
|
|
../configure --with-mac --prefix=$PREFIX \
|
|
--with-opengl \
|
|
--enable-precomp=no \
|
|
--enable-geometry \
|
|
--enable-optimise \
|
|
--enable-debug_flag \
|
|
--with-libjpeg=builtin \
|
|
--with-libpng=builtin \
|
|
--with-libtiff=builtin \
|
|
--with-zlib=builtin
|
|
|
|
fi
|
|
|
|
# Build wxWindows and wxPython
|
|
if [ -z "$skipbuild" ]; then
|
|
make
|
|
|
|
cd $WXDIR/wxPython
|
|
python$PYVER setup.py \
|
|
IN_CVS_TREE=1 \
|
|
WX_CONFIG="$WXDIR/build/wx-config --prefix=$WXDIR --exec-prefix=$WXDIR/build" \
|
|
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
|
|
strip wxrc
|
|
|
|
fi
|
|
|
|
#----------------------------------------------------------------------
|
|
# Install wxWindows
|
|
|
|
if [ -z "$skipinstall" ]; then
|
|
cd $WXDIR/build
|
|
make 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" \
|
|
install \
|
|
--root=$INSTALLROOT
|
|
|
|
# install wxPython's tool scripts
|
|
cd $WXDIR/wxPython/scripts
|
|
python$PYVER CreateMacScripts.py $INSTALLROOT $PREFIX/bin
|
|
|
|
# Install wxrc
|
|
cp $WXDIR/contrib/utils/wxrc/wxrc $INSTALLROOT$PREFIX/bin
|
|
|
|
|
|
# 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
|
|
|
|
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/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
|
|
|
|
|
|
# Make the welcome message
|
|
cat > $RESOURCEDIR/Welcome.txt <<EOF
|
|
Welcome!
|
|
|
|
This program will install wxPython $VERSION for MacPython-OSX $PYVER.
|
|
|
|
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
|
|
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
|
|
/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
|
|
|
|
# Make the demo/data dir writable
|
|
chmod a+w /Applications/wxPythonOSX-$VERSION/demo/data
|
|
|
|
# and 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
|
|
|
|
exit 0
|
|
EOF
|
|
chmod +x $RESOURCEDIR/postflight
|
|
|
|
|
|
|
|
# Finally, build the main package...
|
|
rm -rf wxPythonOSX.pkg
|
|
python $PROGDIR/../buildpkg.py \
|
|
--Title=wxPythonOSX \
|
|
--Version=$VERSION \
|
|
--Description="wxPython $VERSION for MacPython-OSX $PYVER" \
|
|
--NeedsAuthorization="YES" \
|
|
--Relocatable="NO" \
|
|
--InstallOnly="YES" \
|
|
$INSTALLROOT \
|
|
$RESOURCEDIR
|
|
|
|
mv wxPythonOSX.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.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.
|
|
|
|
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.
|
|
|
|
Happy Hacking!
|
|
EOF
|
|
|
|
|
|
# license files, etc.
|
|
cp -pR $WXDIR/wxPython/licence $DMGDIR/root
|
|
cp $WXDIR/wxPython/CHANGES.txt $DMGDIR/root
|
|
|
|
# and then finally make a disk image containing the packages and etc.
|
|
$PROGDIR/../makedmg $DMGDIR/root $DMGDIR wxPythonOSX-$VERSION-py$PYVER
|
|
|
|
echo Moving $DMGDIR/wxPythonOSX-$VERSION-py$PYVER.dmg to $DESTDIR
|
|
mv $DMGDIR/wxPythonOSX-$VERSION-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
|
|
|