git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24050 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			396 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			396 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; 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 \
 | 
						|
	--with-libjpeg=builtin \
 | 
						|
	--with-libpng=builtin \
 | 
						|
	--with-libtiff=builtin \
 | 
						|
 | 
						|
 | 
						|
#	--with-zlib=builtin
 | 
						|
#	--enable-debug_flag
 | 
						|
 | 
						|
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
 | 
						|
 | 
						|
    # TODO for $INSTALLROOT and $INSTALLDEVEL ?
 | 
						|
    # chown -R root:admin
 | 
						|
    # chmod -R g+w
 | 
						|
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
 | 
						|
 |