]> git.saurik.com Git - wxWidgets.git/commitdiff
Scripts to make a installer package in a disk image for wxPython and
authorRobin Dunn <robin@alldunn.com>
Fri, 17 May 2002 05:33:32 +0000 (05:33 +0000)
committerRobin Dunn <robin@alldunn.com>
Fri, 17 May 2002 05:33:32 +0000 (05:33 +0000)
for Python too.  It's a strange mixture of sh, csh and perl, but it
works.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15584 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

15 files changed:
wxPython/distrib/mac/MachoPython.info [new file with mode: 0644]
wxPython/distrib/mac/_build [new file with mode: 0755]
wxPython/distrib/mac/_buildPython [new file with mode: 0755]
wxPython/distrib/mac/build [new file with mode: 0755]
wxPython/distrib/mac/buildPython [new file with mode: 0755]
wxPython/distrib/mac/makedmg [new file with mode: 0755]
wxPython/distrib/mac/makepkg [new file with mode: 0755]
wxPython/distrib/mac/resources/License.rtf [new file with mode: 0644]
wxPython/distrib/mac/resources/ReadMe.rtf [new file with mode: 0644]
wxPython/distrib/mac/resources/Welcome.txt [new file with mode: 0644]
wxPython/distrib/mac/resources/preflight [new file with mode: 0755]
wxPython/distrib/mac/resourcesPython/License.rtf [new file with mode: 0644]
wxPython/distrib/mac/resourcesPython/ReadMe.rtf [new file with mode: 0644]
wxPython/distrib/mac/resourcesPython/Welcome.txt [new file with mode: 0644]
wxPython/distrib/mac/wxMacPython.info [new file with mode: 0644]

diff --git a/wxPython/distrib/mac/MachoPython.info b/wxPython/distrib/mac/MachoPython.info
new file mode 100644 (file)
index 0000000..bceb580
--- /dev/null
@@ -0,0 +1,15 @@
+Title MachoPython
+Version 2.2.1
+Description The Python Programming Language
+DefaultLocation /
+DeleteWarning
+
+### Package Flags
+
+NeedsAuthorization YES
+Required NO
+Relocatable NO
+RequiresReboot NO
+UseUserMask NO
+OverwritePermissions NO
+InstallFat NO
diff --git a/wxPython/distrib/mac/_build b/wxPython/distrib/mac/_build
new file mode 100755 (executable)
index 0000000..6c33059
--- /dev/null
@@ -0,0 +1,247 @@
+#!/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="wxMacPython"
+version=`date +"%Y-%m-%d"`
+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=
+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 $dFlag
+    cd $curDir
+
+else
+    echo wxWindows already configured
+fi
+
+
+#-----------------------------------
+msg building wxWindows
+msgdo cd $buildDir
+msgdo make
+cd $curDir
+
+
+#-----------------------------------
+msg installing wxWindows
+msgdo mkdir -p -m 755 "$dstPath/$temp/$wxWindowsInst"
+msgdo cd "$buildDir"
+msgdo make install "prefix=`quotemeta \"$dstPath/$temp/$wxWindowsInst\"`"
+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"
+msgdo cp -pR "$srcPath/wxPython/tools"    "$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 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"
diff --git a/wxPython/distrib/mac/_buildPython b/wxPython/distrib/mac/_buildPython
new file mode 100755 (executable)
index 0000000..16bc2c6
--- /dev/null
@@ -0,0 +1,153 @@
+#!/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-2
+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 /Applicaitons/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 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"
diff --git a/wxPython/distrib/mac/build b/wxPython/distrib/mac/build
new file mode 100755 (executable)
index 0000000..c080de7
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh -e
+# 
+# build binary package and put it on a disk image
+# 
+# usage: build [-s dir] [-d dir] [--cvs-update] [--force] [--debug]
+# 
+# (C)opyright 2002 Frank Vercruesse
+
+
+prog="`dirname \"$0\"`/_`basename \"$0\"`"
+sudo "$prog" "${USER?'USER not set.'}" "$@"
diff --git a/wxPython/distrib/mac/buildPython b/wxPython/distrib/mac/buildPython
new file mode 100755 (executable)
index 0000000..1735a89
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh -e
+#
+# build binary package and put it on a disk image
+#
+
+
+prog="`dirname \"$0\"`/_`basename \"$0\"`"
+sudo "$prog" "${USER?'USER not set.'}" "$@"
diff --git a/wxPython/distrib/mac/makedmg b/wxPython/distrib/mac/makedmg
new file mode 100755 (executable)
index 0000000..e464506
--- /dev/null
@@ -0,0 +1,95 @@
+#!/usr/bin/perl -w
+# 
+# make disk image from folder
+# 
+# usage: makedmg src dst name
+# 
+# (C)opyright 2002 Frank Vercruesse
+
+
+$hdiUtilExec = "/usr/bin/hdiutil";
+$hdiDrvExec = "/usr/bin/hdid";
+$newfsExec = "/sbin/newfs_hfs";
+$duExec = "/usr/bin/du";
+$dittoExec = "/usr/bin/ditto";
+
+if ( $#ARGV != 2 ) {
+       die "Wrong number of arguments.\nUsage: makedmg src dst name\n";
+}
+
+&make_dmg( $ARGV[0], $ARGV[1], $ARGV[2]);
+
+
+sub make_dmg
+{
+       my $src = $_[0];
+       my $dst = $_[1];
+       my $name = $_[2];
+       
+       # check dirs
+       if( not -d $dst && -d $src ) {
+               die "src and dst must be directories\n";
+       }
+       
+       # calc disk image size
+       if( not open( MYPIPE, "$duExec -sk \"${src}\" |") ) {
+               die "couldn't open pipe\n";
+       }
+       (my $dmgsize) = split( /\s+/, <MYPIPE>);
+       close( MYPIPE);
+       $dmgsize /= 1024;
+       $dmgsize = int($dmgsize + 2);
+       if( $dmgsize < 5 ) {
+               $dmgsize = 5
+       }
+       
+       # create disk image
+       system "cd \"$dst\"; $hdiUtilExec create -megabytes $dmgsize -ov \"_${name}\"";
+       if( $? ) { die "couldn't create disk image\n"; }
+       
+       # format disk image
+       if( not open( MYPIPE, "cd \"$dst\"; $hdiDrvExec -nomount \"_${name}.dmg\" |") ) {
+               die "couldn't open pipe\n";
+       }
+       (my $dev) = split( /\t/, <MYPIPE>);
+       $dev =~ s/^(.*\S)\s*$/$1/;
+       my( $part, $raw, $pname);
+       while( <MYPIPE> ) {
+               ($part,$pname) = split /\t/;
+               if( $pname =~ m/^Apple_HFS/ ) {
+                       $part =~ s/^\s*(.*\S)\s*$/$1/;
+                       $raw = $part;
+                       $raw =~ s/^(\/dev\/)(.+)/$1r$2/;
+                       last;
+               }
+       }
+       close( MYPIPE);
+       system "cd \"$dst\" ; $newfsExec -v \"$name\" $raw";
+       if( $? ) { system "$hdiUtilExec eject $dev"; die "couldn't format disk image\n"; }
+       system "$hdiUtilExec eject $dev";
+       if( $? ) { die "couldn't eject disk image\n"; }
+       
+       # copy files
+       if( not open( MYPIPE, "cd \"$dst\"; $hdiDrvExec \"_${name}.dmg\" |") ) {
+               die "couldn't open pipe\n";
+       }
+       ($dev) = split( /\t/, <MYPIPE>);
+       $dev =~ s/^(.*\S)\s*$/$1/;
+       my $vname;
+       while( <MYPIPE> ) {
+               ($part,$pname,$vname) = split /\t/;
+               if( $pname =~ m/^Apple_HFS/ ) {
+                       $vname =~ s/^(.*\S)\s*$/$1/;
+                       last;
+               }
+       }
+       close( MYPIPE);
+       system "$dittoExec \"${src}\" \"${vname}\"";
+       if( $? ) { system "$hdiUtilExec eject $dev"; die "couldn't copy files\n"; }
+       system "$hdiUtilExec eject $dev";
+       if( $? ) { die "couldn't eject disk image\n"; }
+       
+       # convert disk image
+       system "cd \"$dst\"; $hdiUtilExec convert \"_${name}.dmg\" -format UDCO -o \"${name}\"";
+       if( $? ) { die "couldn't convert disk image\n"; }
+}
diff --git a/wxPython/distrib/mac/makepkg b/wxPython/distrib/mac/makepkg
new file mode 100755 (executable)
index 0000000..97cbd89
--- /dev/null
@@ -0,0 +1,283 @@
+#! /bin/csh -ef
+# 
+# original script by Chris Roberts (The OS X Package Manager)
+# slightly modified by Frank Vercruesse (mainly fixed quoting issues)
+
+set prog = `/usr/bin/basename $0`
+set usage = "Usage: $prog [-f] root-dir info-file [tiff-file] [-d dest-dir] [-r resource-dir] [-traditional | -gnutar]"
+set noglob
+
+if (-x /usr/bin/mkbom) then
+    set mkbom=/usr/bin/mkbom
+    set lsbom=/usr/bin/lsbom
+else
+    set mkbom=/usr/etc/mkbom
+    set lsbom=/usr/etc/lsbom
+endif
+
+if (-x /usr/bin/awk) then
+    set awk=/usr/bin/awk
+else
+    set awk=/bin/awk
+endif
+
+set gnutar=/usr/bin/gnutar
+set tar=/usr/bin/tar
+set pax=/bin/pax
+
+# gather parameters
+if ($#argv == 0) then
+    echo $usage
+    exit(1)
+endif
+
+while ( $#argv > 0 )
+    switch ( "$argv[1]" )
+       case -d:
+           if ( $?destDir ) then
+               echo ${prog}: dest-dir parameter already set to ${destDir}.
+               echo $usage
+               exit(1)
+           else if ( $#argv < 2 ) then
+               echo ${prog}: -d option requires destination directory.
+               echo $usage
+               exit(1)
+           else
+               set destDir = "$argv[2]"
+               shift; shift
+               breaksw
+           endif
+       case -f:
+           if ( $?rootDir ) then
+               echo ${prog}: root-dir parameter already set to ${rootDir}.
+               echo $usage
+               exit(1)
+           else if ( $#argv < 2 ) then
+               echo ${prog}: -f option requires package root directory.
+               echo $usage
+               exit(1)
+           else
+               set rootDir = "$argv[2]"
+               set fflag
+               shift; shift
+               breaksw
+           endif
+       case -r:
+           if ( $?resDir ) then
+               echo ${prog}: resource-dir parameter already set to ${resDir}.
+               echo $usage
+               exit(1)
+           else if ( $#argv < 2 ) then
+               echo ${prog}: -r option requires package resource directory.
+               echo $usage
+               exit(1)
+           else
+               set resDir = "$argv[2]"
+               shift; shift
+               breaksw
+           endif
+       case -traditional:
+           set usetar
+           unset usegnutar
+           unset usepax
+           shift
+           breaksw
+       case -gnutar:
+           set usegnutar
+           unset usepax
+           unset usetar
+           shift
+           breaksw
+       case -B:
+           # We got long file names, better use bigtar instead
+           #set archiver = /NextAdmin/Installer.app/Resources/installer_bigtar
+           #echo 2>&1 ${prog}: -B flag is  longer relevant.
+           shift
+           breaksw
+       case -*:
+           echo ${prog}: Unknown option: $argv[1]
+           echo $usage
+           exit(1)
+       case *.info:
+           if ( $?info ) then
+               echo ${prog}: info-file parameter already set to ${info}.
+               echo $usage
+               exit(1)
+           else
+               set info = "$argv[1]"
+               shift
+               breaksw
+           endif
+       case *.tiff:
+           if ( $?tiff ) then
+               echo ${prog}: tiff-file parameter already set to ${tiff}.
+               echo $usage
+               exit(1)
+           else
+               set tiff = "$argv[1]"
+               shift
+               breaksw
+           endif
+       default:
+           if ( $?rootDir ) then
+               echo ${prog}: unrecognized parameter: $argv[1]
+               echo $usage
+               exit(1)
+           else
+               set rootDir = "$argv[1]"
+               shift
+               breaksw
+           endif
+    endsw
+end
+
+# check for mandatory parameters
+if ( ! $?rootDir ) then
+    echo ${prog}: missing root-dir parameter.
+    echo $usage
+    exit(1)
+else if ( ! $?info) then
+    echo ${prog}: missing info-file parameter.
+    echo $usage
+    exit(1)
+endif
+
+# destDir gets default value if unset on command line
+if ( $?destDir ) then
+    /bin/mkdir -p "$destDir"
+else
+    set destDir = .
+endif
+
+# derive the root name for the package from the root name of the info file
+set root = `/usr/bin/basename $info .info`
+
+# create package directory
+set pkg = "${destDir}/${root}.pkg"
+echo Generating Installer package $pkg ...
+if ( -e "$pkg" ) /bin/rm -rf "$pkg"
+/bin/mkdir -p -m 755 "$pkg"
+/bin/mkdir -p -m 755 "$pkg/Contents"
+/bin/mkdir -p -m 755 "$pkg/Contents/Resources"
+/bin/mkdir -p -m 755 "$pkg/Contents/Resources/English.lproj/"
+echo -n "pmkrpkg1" >"$pkg/Contents/PkgInfo"
+chmod 755 "$pkg/Contents/PkgInfo"
+# (gnu)tar/pax and compress root directory to package archive
+echo -n "      creating package archive ... "
+if ( $?fflag ) then
+    set pkgTop = "${rootDir:t}"
+    set parent = "${rootDir:h}"
+    if ( "$parent" == "$pkgTop" ) set parent = "."
+else
+    set parent = "$rootDir"
+    set pkgTop = .    
+endif
+if ( $?usetar ) then
+    set pkgArchive = "$pkg/Contents/Resources/$root.tar.Z"
+    (cd "$parent"; $tar -w "$pkgTop") | /usr/bin/tar -f -c > "$pkgArchive"
+else if ( $?usegnutar ) then
+    set pkgArchive = "$pkg/Contents/Resources/$root.tar.gz"
+    (cd "$parent"; $gnutar zcf "$pkgArchive" "$pkgTop")
+else
+    set pkgArchive = "$pkg/Contents/Resources/$root.pax.gz"
+    (cd "$parent"; $pax -w -z -x cpio "$pkgTop") > "$pkgArchive"
+endif
+/bin/chmod 755 "$pkgArchive"
+echo done.
+
+# copy info file to package
+set pkgInfo = "$pkg/Contents/Resources/English.lproj/$root.info"
+echo -n "      copying ${info:t} ... "
+/bin/cp $info "$pkgInfo"
+/bin/chmod 755 "$pkgInfo"
+echo done.
+
+# copy tiff file to package
+if ( $?tiff ) then
+    set pkgTiff = "$pkg/$root.tiff"
+    echo -n "  copying ${tiff:t} ... "
+    /bin/cp $tiff "$pkgTiff"
+    /bin/chmod 444 "$pkgTiff"
+    echo done.
+endif
+
+# copy resources to package
+if ( $?resDir ) then
+    echo -n "  copying ${resDir:t} ... "
+
+    # don't want to see push/pop output
+    pushd "$resDir" > /dev/null
+       # get lists of resources. We'll want to change
+       # permissions on just these things later.
+        set directoriesInResDir = `find . -type d`
+        set filesInResDir = `find . -type f`
+    popd > /dev/null
+
+    # copy the resource directory contents into the package directory
+    foreach resFile (`ls "$resDir"`)
+       cp -r "$resDir/$resFile" "$pkg/Contents/Resources"
+    end
+
+    pushd "$pkg/Contents/Resources" > /dev/null
+       # Change all directories to +r+x, except the package
+       # directory itself
+        foreach resFileItem ($directoriesInResDir)
+            if ( "$resFileItem" != "." ) then
+                chmod 755 $resFileItem
+            endif
+        end
+       # change all flat files to read only
+        foreach resFileItem ($filesInResDir)
+            if ( "$resFileItem" != "./.DS_Store" ) then
+            chmod 755 $resFileItem
+           endif
+        end
+    popd > /dev/null
+
+    echo done.
+endif
+
+# generate bom file
+set pkgBom = "$pkg/Contents/Resources/$root.bom"
+echo -n "      generating bom file ... "
+/bin/rm -f "$pkgBom"
+if ( $?fflag ) then
+    $mkbom "$parent" "$pkgBom" >& /dev/null
+else
+    $mkbom "$rootDir" "$pkgBom" >& /dev/null
+endif
+/bin/chmod 444 "$pkgArchive"
+echo done.
+       
+# generate sizes file
+set pkgSizes = "$pkg/Contents/Resources/$root.sizes"
+echo -n "      generating sizes file ... "
+
+# compute number of files in package
+set numFiles = `$lsbom -s "$pkgBom" | /usr/bin/wc -l`
+
+# compute package size when compressed
+@ compressedSize = `/usr/bin/du -k -s "$pkg" | $awk '{print $1}'`
+@ compressedSize += 3          # add 1KB each for sizes, location, status files
+
+@ infoSize = `/bin/ls -s "$pkgInfo" | $awk '{print $1}'`
+@ bomSize = `/bin/ls -s "$pkgBom" | $awk '{print $1}'`
+if ( $?tiff ) then
+    @ tiffSize = `/bin/ls -s "$pkgTiff" | $awk '{print $1}'`
+else
+    @ tiffSize = 0
+endif 
+
+@ installedSize = `/usr/bin/du -k -s "$rootDir" | $awk '{print $1}'`
+@ installedSize += $infoSize + $bomSize + $tiffSize + 3
+
+# echo size parameters to sizes file
+echo NumFiles $numFiles             >  "$pkgSizes"
+echo InstalledSize $installedSize   >> "$pkgSizes"
+echo CompressedSize $compressedSize >> "$pkgSizes"
+echo done.
+echo " ... finished generating $pkg."
+
+exit(0)
+
+# end package
diff --git a/wxPython/distrib/mac/resources/License.rtf b/wxPython/distrib/mac/resources/License.rtf
new file mode 100644 (file)
index 0000000..480779a
--- /dev/null
@@ -0,0 +1,32 @@
+{\rtf1\mac\ansicpg10000\cocoartf100
+{\fonttbl\f0\fnil\fcharset77 Monaco;}
+{\colortbl;\red255\green255\blue255;}
+\margl1440\margr1440\vieww10820\viewh9000\viewkind0
+\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
+
+\f0\fs24 \cf0 wxWindows Library Licence, Version 3\
+====================================\
+\
+Copyright (c) 1998 Julian Smart, Robert Roebling et al\
+\
+Everyone is permitted to copy and distribute verbatim copies of this licence document, but changing it is not allowed.\
+\
+WXWINDOWS LIBRARY LICENCE\
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\
+\
+This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public Licence as published by the Free Software Foundation; either version 2 of the Licence, or (at your option) any later version.\
+\
+This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public Licence for more details.\
+\
+You should have received a copy of the GNU Library General Public Licence along with this software, usually in a file named COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.\
+\
+EXCEPTION NOTICE\
+\
+1. As a special exception, the copyright holders of this library give permission for additional uses of the text contained in this release of the library as licenced under the wxWindows Library Licence, applying either version 3 of the Licence, or (at your option) any later version of the Licence as published by the copyright holders of version 3 of the Licence document.\
+\
+2. The exception is that you may use, copy, link, modify and distribute under the user's own terms, binary object code versions of works based on the Library.\
+\
+3. If you copy code from files distributed under the terms of the GNU General Public Licence or the GNU Library General Public Licence into a copy of this library, as this licence permits, the exception does not apply to the code that you add in this way.  To avoid misleading anyone as to the status of such modified files, you must delete this exception notice from such code and/or adjust the licensing conditions notice accordingly.\
+\
+4. If you write modifications of your own for this library, it is your choice whether to permit this exception to apply to your modifications. If you do not wish that, you must delete the exception notice from such code and/or adjust the licensing conditions notice accordingly.\
+}
\ No newline at end of file
diff --git a/wxPython/distrib/mac/resources/ReadMe.rtf b/wxPython/distrib/mac/resources/ReadMe.rtf
new file mode 100644 (file)
index 0000000..53b83c1
--- /dev/null
@@ -0,0 +1,84 @@
+{\rtf1\mac\ansicpg10000\cocoartf100
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica;\f2\fnil\fcharset77 Monaco;
+\f3\fnil\fcharset77 LucidaGrande;}
+{\colortbl;\red255\green255\blue255;\red0\green0\blue255;}
+\margl1440\margr1440\vieww10820\viewh9000\viewkind0
+\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
+
+\f0\b\fs24 \cf0 About\
+\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
+
+\f1\b0 \cf0 \
+This is a binary package of wxPython for MachoPython 2.2.x on Mac OS X 10.1 or later. The wxMac binaries will be installed as well. MachoPython, however, is not included with this package, but is also required to run wxPython. Before you continue you should have already installed the MachoPython framework.\
+\
+Please note that the Mac OS ports of wxPython as well as wxWindows (a.k.a. wxMac) are works-in-progress. Report bugs via SourceForge [1] or discuss the problem on the mailing list(s) in question (see below).\
+\
+
+\fs18 [1] \cf2 http://sf.net/tracker/?atid=109863&group_id=9863
+\fs24 \cf0 \
+\
+\
+\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
+
+\f0\b \cf0 What will be installed and where\
+\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
+
+\f1\b0 \cf0 \
+wxMac goes into 
+\f2 /usr/local
+\f1  and wxPython will be installed into the appropriate subfolder of the Python framework. Choose the 
+\f3 Show files
+\f1  command from the 
+\f3 File
+\f1  menu for a complete file listing. (The menu item becomes available as soon as the license agreement is accepted in the next step.)
+\f2 \
+
+\f1 \
+\
+\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
+
+\f0\b \cf0 Getting started with wxPython
+\f1\b0 \
+\
+You can verify that wxPython was succesfully installed by running the demo. It resides on the same disk image where you found this package. Just double click the script named 
+\f2 demo.py
+\f1  or drag and drop it onto the Python interpreter in your 
+\f2 Application
+\f1  folder.\
+\
+The official wxPython site:\
+\
+\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
+
+\f2 \cf2  http://www.wxpython.org\cf0 \
+\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
+
+\f1 \cf0 \
+Some mailing lists you may want to subscribe to:\
+\
+\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
+
+\f2 \cf2  http://lists.wxwindows.org/mailman/listinfo/wxpython-users\
+\
+ http://lists.wxwindows.org/mailman/listinfo/wxpython-mac\
+\
+ http://lists.wxwindows.org/mailman/listinfo/wx-users\
+\
+ http://lists.wxwindows.org/mailman/listinfo/wx-dev
+\f1 \cf0 \
+\
+\
+\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
+
+\f0\b \cf0 Disclaimer
+\f1\b0 \
+\
+\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
+
+\f2 \cf0 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+\f1 \
+\
+\
+Robin Dunn\
+Frank Vercruesse\
+}
\ No newline at end of file
diff --git a/wxPython/distrib/mac/resources/Welcome.txt b/wxPython/distrib/mac/resources/Welcome.txt
new file mode 100644 (file)
index 0000000..e981f01
--- /dev/null
@@ -0,0 +1,2 @@
+You will be guided through the steps necessary to install wxPython 2.3.3pre (including wxMac) for MachoPython 2.2.x on Mac OS X 10.1 or later.
+
diff --git a/wxPython/distrib/mac/resources/preflight b/wxPython/distrib/mac/resources/preflight
new file mode 100755 (executable)
index 0000000..3cd97c3
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+/usr/bin/sudo -u $USER /bin/rm -rf "$2/Library/Frameworks/Python.framework/Versions/2.2/lib/python2.2/site-packages/wxPython"
+exit 0
diff --git a/wxPython/distrib/mac/resourcesPython/License.rtf b/wxPython/distrib/mac/resourcesPython/License.rtf
new file mode 100644 (file)
index 0000000..9973177
--- /dev/null
@@ -0,0 +1,25 @@
+{\rtf1\mac\ansicpg10000\cocoartf100
+{\fonttbl\f0\fnil\fcharset77 Monaco;}
+{\colortbl;\red255\green255\blue255;}
+\margl1440\margr1440\vieww15640\viewh10560\viewkind0
+\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
+
+\f0\fs24 \cf0 PSF LICENSE AGREEMENT FOR PYTHON 2.2.1\
+--------------------------------------\
+\
+1. This LICENSE AGREEMENT is between the Python Software Foundation ("PSF"), and the Individual or Organization ("Licensee") accessing and otherwise using Python 2.2.1 software in source or binary form and its associated documentation.\
+\
+2. Subject to the terms and conditions of this License Agreement, PSF hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python 2.2.1 alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of copyright, i.e., "Copyright (c) 2001, 2002 Python Software Foundation; All Rights Reserved" are retained in Python 2.2.1 alone or in any derivative version prepared by Licensee.\
+\
+3. In the event Licensee prepares a derivative work that is based on or incorporates Python 2.2.1 or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to Python 2.2.1.\
+\
+4. PSF is making Python 2.2.1 available to Licensee on an "AS IS" basis.  PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED.  BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 2.2.1 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.\
+\
+5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON 2.2.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 2.2.1, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.\
+\
+6. This License Agreement will automatically terminate upon a material breach of its terms and conditions.\
+\
+7. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between PSF and Licensee.  This License Agreement does not grant permission to use PSF trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party.\
+\
+8. By copying, installing or otherwise using Python 2.2.1, Licensee agrees to be bound by the terms and conditions of this License Agreement.\
+}
\ No newline at end of file
diff --git a/wxPython/distrib/mac/resourcesPython/ReadMe.rtf b/wxPython/distrib/mac/resourcesPython/ReadMe.rtf
new file mode 100644 (file)
index 0000000..4e9c27c
--- /dev/null
@@ -0,0 +1,91 @@
+{\rtf1\mac\ansicpg10000\cocoartf100
+{\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica;\f2\fnil\fcharset77 Monaco;
+}
+{\colortbl;\red255\green255\blue255;\red0\green0\blue255;}
+\margl1440\margr1440\vieww10820\viewh9000\viewkind0
+\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
+
+\f0\b\fs24 \cf0 About\
+\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
+
+\f1\b0 \cf0 \
+This is a Mach-O binary package of Python 2.2.1 (a.k.a. MachoPython) for Mac OS X 10.1 or later. \
+\
+\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
+
+\f0\b \cf0 What files will be installed and where?\
+\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
+
+\f1\b0 \cf0 \
+\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
+
+\f2 \cf0 /Applications\
+\
+ + Python.app
+\fs20  (a double-clickable interpreter)\
+\
+
+\fs24 /Library/Frameworks\
+\
+ + Python.framework
+\fs20  (library, headers, tools, etc.)\
+\
+
+\fs24 /usr/local/bin\
+ \
+ + pydoc 
+\fs20 (symbolic link to the pydoc script)
+\fs24 \
+ + python 
+\fs20 (symbolic link to the actual binary inside the framework)\
+
+\fs24  + python2.2 
+\fs20 (symbolic link to the actual binary inside the framework)\
+
+\fs24  + pythonw 
+\fs20 (a script that can run a GUI app from the command line)\
+\f1\fs24 \
+\
+\
+\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
+
+\f0\b \cf0 Getting started with Python
+\f1\b0 \
+\
+\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
+
+\f2 \cf2  http://www.python.org\cf0 \
+\cf2 \
+ http://www.python.org/sigs/pythonmac-sig\cf0 \
+\cf2 \
+ http://www.cwi.nl/~jack/macpython.html
+\f1 \cf0 \
+\
+\
+\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
+
+\f0\b \cf0 Credits\
+\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
+
+\f1\b0 \cf0 \
+Python itself is\
+\
+Copyright (c) 2001, 2002 Python Software Foundation; All Rights Reserved\
+\
+This binary package was compiled using the build instructions from Jack Jansen and Tony Lownds as found on the net.\
+\
+\
+\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
+
+\f0\b \cf0 Disclaimer
+\f1\b0 \
+\
+\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural
+
+\f2 \cf0 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+\f1 \
+\
+\
+Packaged by Robin Dunn\
+}
\ No newline at end of file
diff --git a/wxPython/distrib/mac/resourcesPython/Welcome.txt b/wxPython/distrib/mac/resourcesPython/Welcome.txt
new file mode 100644 (file)
index 0000000..77b3eca
--- /dev/null
@@ -0,0 +1,2 @@
+Mach-O Python 2.2.1 binary package for Mac OS X 10.1 or later.
+
diff --git a/wxPython/distrib/mac/wxMacPython.info b/wxPython/distrib/mac/wxMacPython.info
new file mode 100644 (file)
index 0000000..0b7183c
--- /dev/null
@@ -0,0 +1,15 @@
+Title wxMacPython
+Version 2.3.3
+Description wxMac and wxPython
+DefaultLocation /
+DeleteWarning 
+
+### Package Flags
+
+NeedsAuthorization YES
+Required NO
+Relocatable NO
+RequiresReboot NO
+UseUserMask NO
+OverwritePermissions NO
+InstallFat NO