Merged wxPython 2.4.x to the 2.5 branch (Finally!!!)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19793 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
390
wxPython/distrib/mac/wxPythonOSX/build
Executable file
390
wxPython/distrib/mac/wxPythonOSX/build
Executable file
@@ -0,0 +1,390 @@
|
||||
#!/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; 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
|
||||
|
||||
|
||||
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
|
||||
|
Reference in New Issue
Block a user