#!/bin/sh -e # # build binary wxMacPython package and put it on a disk image # # usage: build [-s dir] [-d dir] [--cvs-update] [--force] [--debug] # # (C)opyright 2002 Frank Vercruesse # # Many modifications by Robin Dunn PYVER=2.2 curDir=`pwd` progDir="`dirname \"$0\"`" defSrcPath="/projects/wx" defDstPath="/projects/wx/wxPython/dist" pkgName="wxPythonOSX" #version=`date +"%Y-%m-%d"` version=`cd $defSrcPath/wxPython; python$PYVER -c 'import setup;print setup.VERSION'` dmgRoot="dmg-root" pkgRoot="pkg-root" wxWindowsInst="$pkgRoot/usr/local" wxPythonInst="$pkgRoot/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER/site-packages" pythonExec="python$PYVER" makePkgExec="./makepkg" makeDmgExec="./makedmg" usage() { echo `basename $0`: ERROR: $* 1>&2 echo usage: `basename $0` '[-s dir] [-d dir] [--cvs-update] [--force] [--debug]' 1>&2 exit 1 } quotemeta() { # probably not quite correct, but seems to work echo "$1" | sed -e 's/\([^a-zA-z0-9.,--;_/]\)/\\\1/g' } msg() { echo "---------------------------------------------" echo $@ } msgdo() { echo "--> " $@ $@ } user=$1 shift update= force= debug= srcPath= dstPath= while :; do case "$1" in --cvs-update) update=1;; --force) force=1;; --debug) debug=1;; -s) shift; srcPath="$1";; -d) shift; dstPath="$1";; -*) usage "bad argument $1";; *) break;; esac shift done #----------------------------------- msg check and prepare build directories if ! test "$srcPath"; then srcPath=$defSrcPath fi if ! test -d "$srcPath"; then echo "no such directory: '$srcPath'" 1>&2 exit fi if ! test "$dstPath"; then dstPath=$defDstPath fi if ! test -d "$dstPath"; then msgdo mkdir -p -m 775 "$dstPath" msgdo chown ${user}:staff "$dstPath" fi temp="tmp$$" if test -e "$dstPath/$temp"; then msgdo rm -rf "$dstPath/$temp" fi msgdo mkdir -m 775 "$dstPath/$temp" if test -e "$dstPath/$temp/$pkgRoot"; then msgdo rm -rf "$dstPath/$temp/$pkgRoot" fi msgdo mkdir -m 1775 "$dstPath/$temp/$pkgRoot" msgdo chown root:admin "$dstPath/$temp/$pkgRoot" if test -e "$dstPath/$temp/$dmgRoot"; then msgdo rm -rf "$dstPath/$temp/$dmgRoot" fi msgdo mkdir -p -m 775 "$dstPath/$temp/$dmgRoot" msgdo chown $user:staff "$dstPath/$temp/$dmgRoot" #----------------------------------- # update cvs if [ $update ]; then msg Updating from CVS msgdo cd "$srcPath" msgdo cvs update -dP -A fi #----------------------------------- msg configuring wxWindows buildDir="$srcPath/build-pkg" dFlag="--enable-debug_flag --enable-optimise" if [ $debug ]; then buildDir="$srcPath/build-pkg-debug" dFlag="--enable-debug" fi if ! test -e "$buildDir"; then force=1 fi if [ $force ]; then if test -e "$buildDir"; then rm -rf "$buildDir" fi msgdo mkdir -m 775 "$buildDir" msgdo cd "$buildDir" msgdo ../configure --with-mac --with-opengl --enable-precomp=no $dFlag cd $curDir else echo wxWindows already configured fi #----------------------------------- msg building wxWindows msgdo cd $buildDir msgdo make msgdo cd ../locale msgdo make allmo cd $curDir #----------------------------------- msg installing wxWindows msgdo mkdir -p -m 1755 "$dstPath/$temp/$wxWindowsInst" msgdo cd "$buildDir" # install once to the package directory, and once to the # local machine so the wxPython build will get the right wxMac msgdo make install "prefix=`quotemeta \"$dstPath/$temp/$wxWindowsInst\"`" msgdo make install msgdo chown -R root:wheel "$dstPath/$temp/$pkgRoot/usr" cd $curDir #----------------------------------- msg building wxPython if [ $force ]; then fFlag="--force" else fFlag= fi if [ $debug ]; then dFlag="--debug" wxpBuildDir="build-pkg-debug" else dFlag= wxpBuildDir="build-pkg" fi bbFlag="BUILD_BASE=$wxpBuildDir" msgdo cd "$srcPath/wxPython" msgdo $pythonExec setup.py build 'IN_CVS_TREE=1' $bbFlag $fFlag $dFlag cd $curDir #----------------------------------- msg installing wxPython msgdo mkdir -p -m 775 "$dstPath/$temp/$wxPythonInst" msgdo cd "$srcPath/wxPython" msgdo $pythonExec setup.py install $bbFlag --install-lib="$dstPath/$temp/$wxPythonInst" cd $curDir msgdo chown -R root:admin "$dstPath/$temp/$pkgRoot/Library" msgdo chmod -R g+w "$dstPath/$temp/$pkgRoot/Library" #----------------------------------- msg copying additional wxPython files msgdo cp -pR "$srcPath/wxPython/samples" "$dstPath/$temp/$dmgRoot" msgdo cp -pR "$srcPath/wxPython/demo" "$dstPath/$temp/$dmgRoot" msgdo cp -pR "$srcPath/wxPython/licence" "$dstPath/$temp/$dmgRoot" find "$dstPath/$temp/$dmgRoot" -name "CVS" -type d -print0 | xargs -0 rm -rf find "$dstPath/$temp/$dmgRoot" -name ".DS_Store" -type f -print0 | xargs -0 rm find "$dstPath/$temp/$dmgRoot" -name ".cvsignore" -type f -print0 | xargs -0 rm find "$dstPath/$temp/$dmgRoot" -name ".#*" -type f -print0 | xargs -0 rm find "$dstPath/$temp/$dmgRoot" -name "b" -type f -print0 | xargs -0 rm find "$dstPath/$temp/$dmgRoot" -name "*~*~" -type f -print0 | xargs -0 rm msgdo cd "$srcPath/wxPython/scripts" sFiles=`$pythonExec CreateMacScripts.py` for f in $sFiles; do msgdo cp $f "$dstPath/$temp/$wxWindowsInst/bin" done cd $curDir msgdo chown -R ${user}:staff "$dstPath/$temp/$dmgRoot" #----------------------------------- msg making installer package msgdo cp -pR "$progDir/resources" "$dstPath/$temp" msgdo cp $progDir/$pkgName.info $progDir/$pkgName-$version.info if [ $debug ]; then echo "__WXDEBUG__ version." >> "$dstPath/$temp/resources/Welcome.txt" echo "" >> "$dstPath/$temp/resources/Welcome.txt" fi echo "Build date: `date`" >> "$dstPath/$temp/resources/Welcome.txt" msgdo cd "$progDir" msgdo "$makePkgExec" $dstPath/$temp/$pkgRoot $pkgName-$version.info -d $dstPath/$temp/$dmgRoot -r $dstPath/$temp/resources msgdo chown -R ${user}:staff $dstPath/$temp/$dmgRoot/$pkgName-$version.pkg cd $curDir #----------------------------------- msg making disk image msgdo cd "$progDir" msgdo "$makeDmgExec" $dstPath/$temp/$dmgRoot $dstPath/$temp $pkgName-$version if [ $debug ]; then dmgName="$pkgName-$version-debug" else dmgName="$pkgName-$version" fi msgdo mv "$dstPath/$temp/$pkgName-$version.dmg" "$dstPath/$dmgName.dmg" msgdo chown ${user}:staff "$dstPath/$dmgName.dmg" cd $curDir #----------------------------------- msg cleaning up msgdo chown -R ${user}:staff "$buildDir" msgdo chown -R ${user}:staff "$srcPath/wxPython/$wxpBuildDir" msgdo rm $progDir/$pkgName-$version.info msgdo rm -rf "$dstPath/$temp"