Tools to build a disk image with a binary installer for MacPython-OSX,
donated by Robin Dunn and the rest of the wxPythonMac crew.

These are the versions from cvs.wxwindows.org as of 22-Mar-03, checked
in for reference.
diff --git a/Mac/OSX/Dist/makedmg b/Mac/OSX/Dist/makedmg
new file mode 100755
index 0000000..c89be80
--- /dev/null
+++ b/Mac/OSX/Dist/makedmg
@@ -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 + 4);
+	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"; }
+}