#!/bin/sh -e # # Create a MachoPython package from the currently installed verison # and put it on a disk image # PYVER=2.2 curDir=`pwd` progDir="`dirname \"$0\"`" defDstPath="/projects/wx/wxPython/dist" pkgName="MachoPython" version=2.2.1-3 dmgRoot="dmg-root" pkgRoot="pkg-root" sitePkgDir="$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` '[-d dir]' 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 dstPath= while :; do case "$1" in -d) shift; dstPath="$1";; -*) usage "bad argument $1";; *) break;; esac shift done #----------------------------------- msg check and prepare build directories 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" #----------------------------------- msg Copying files to package build dir for d in Applications/Python.app Library/Frameworks/Python.framework; do msgdo mkdir -p -m 755 $dstPath/$temp/$pkgRoot/$d msgdo cp -pR /$d/* $dstPath/$temp/$pkgRoot/$d done msgdo mkdir -p -m 755 $dstPath/$temp/$pkgRoot/usr/local/bin msgdo cd $dstPath/$temp/$pkgRoot/usr/local/bin for f in pydoc python python$PYVER; do msgdo ln -s ../../../Library/Frameworks/Python.framework/Versions/Current/bin/$f . done cat > pythonw <<EOF #!/bin/sh exec /Applications/Python.app/Contents/MacOS/python \$@ EOF chmod +x pythonw cd $curDir #----------------------------------- msg Removing locally installed extension modules msgdo cd $dstPath/$temp/$sitePkgDir for f in *; do if [ $f != README ]; then msgdo rm -r $f fi done for f in Numeric numarray; do rm -r $dstPath/$temp/$pkgRoot/Library/Frameworks/Python.framework/Versions/$PYVER/include/python$PYVER/$f done cd $curDir #----------------------------------- msg Adjusting ownership and permission for d in Applications Library; do msgdo chown -R root:admin "$dstPath/$temp/$pkgRoot/$d" msgdo chmod -R g+w "$dstPath/$temp/$pkgRoot/$d" done msgdo chown -R root:wheel "$dstPath/$temp/$pkgRoot/usr" #----------------------------------- msg making installer package msgdo cp -pR "$progDir/resourcesPython" "$dstPath/$temp/" msgdo mv "$dstPath/$temp/resourcesPython" "$dstPath/$temp/resources" msgdo cp $progDir/$pkgName.info $progDir/$pkgName-$version.info 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 dmgName="$pkgName-$version" msgdo mv "$dstPath/$temp/$pkgName-$version.dmg" "$dstPath/$dmgName.dmg" msgdo chown ${user}:staff "$dstPath/$dmgName.dmg" cd $curDir #----------------------------------- msg cleaning up msgdo rm $progDir/$pkgName-$version.info msgdo rm -rf "$dstPath/$temp"