git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26388 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			477 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			477 lines
		
	
	
		
			13 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/wxDocsViewer    An application that allows you to view the 
 | 
						|
                        wxWidgets documentation.
 | 
						|
 | 
						|
   Docs/licence         License files.
 | 
						|
 | 
						|
   Docs/other           A few readmes, change log, etc.  
 | 
						|
 | 
						|
 | 
						|
   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
 | 
						|
 | 
						|
    # 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-$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
 | 
						|
 |