diff --git a/Mac/OSX/BuildScript/build-installer.py b/Mac/OSX/BuildScript/build-installer.py
index 03f5696..2308059 100755
--- a/Mac/OSX/BuildScript/build-installer.py
+++ b/Mac/OSX/BuildScript/build-installer.py
@@ -591,10 +591,10 @@
     version = getVersion()
 
     print "Running configure..."
-    runCommand("%s -C --enable-framework --enable-universalsdk=%s LDFLAGS='-g -L'%s/libraries/usr/local/lib OPT='-g -O3 -I'%s/libraries/usr/local/include 2>&1"%(
+    runCommand("%s -C --enable-framework --enable-universalsdk=%s LDFLAGS='-g -L%s/libraries/usr/local/lib' OPT='-g -O3 -I%s/libraries/usr/local/include' 2>&1"%(
         shellQuote(os.path.join(SRCDIR, 'configure')),
-        shellQuote(SDKPATH), shellQuote(WORKDIR),
-        shellQuote(WORKDIR)))
+        shellQuote(SDKPATH), shellQuote(WORKDIR)[1:-1], 
+        shellQuote(WORKDIR)[1:-1]))
 
     print "Running make"
     runCommand("make")
@@ -839,6 +839,7 @@
 
     writePlist(pl, os.path.join(pkgroot, 'Resources', 'Description.plist'))
     for fn in os.listdir('resources'):
+        if fn == '.svn': continue
         if fn.endswith('.jpg'):
             shutil.copy(os.path.join('resources', fn), os.path.join(rsrcDir, fn))
         else:
diff --git a/Mac/OSX/Dist/README.txt b/Mac/OSX/Dist/README.txt
deleted file mode 100644
index 371c3fe..0000000
--- a/Mac/OSX/Dist/README.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-Building a MacPython distribution
-=================================
-
-The ``build`` shell script here creates MacPython distributions.
-It builds a complete framework-based Python out-of-tree, installs
-it in a funny place with $DESTROOT, massages that installation to remove
-.pyc files and such, creates an Installer package from the installation
-plus the stuff in ``resources`` and compresses that installer as a
-``.dmg`` disk image.
-
-Here are the steps you ned to follow to build a MacPython installer:
-
-- There are various version numbers that need to be updated. Weed through
-  ``Mac/OSXResources``, ``Mac/scripts`` and ``Mac/Tools`` and inspect the
-  various ``.plist`` and ``.strings`` files. Note that the latter are
-  UTF-16 files.
-- Edit ``resource/ReadMe.txt`` and ``resources/Welcome.rtf`` to reflect
-  version number and such.
-- Edit ``build`` to change ``PYVERSION``, ``PYVER`` and ``BUILDNUM``.
-- Edit ``resources/postflight`` and change version number.
-- Run ``./build``. Optionally you can pass the name of the directory
-  where Python will be built, so you don't have to wait for the complete
-  build when you're debugging the process. For the final distribution use
-  a clean build.
-- When done the script will tell you where the DMG image is.
-
-Currently (November 2003) there is still a bug in the build procedure
-for $DESTROOT builds: building some of the applets will fail (in
-``Mac/OSX/Makefile``) if you don't have the same version of Python installed
-normally. So before doing the distribution you should build and install
-a framework Python in the normal way.
-
-When all is done, announcements can be posted to at least the following
-places:
--   pythonmac-sig@python.org
--   python-dev@python.org
--   python-announce@python.org
--   archivist@info-mac.org
--   adcnews@apple.com
--   news@macnn.com
--   http://www.macupdate.com
--   http://guide.apple.com/usindex.lasso
--   http://www.apple.com/downloads/macosx/submit
--   http://www.versiontracker.com/ (userid Jack.Jansen@oratrix.com)
--   http://www.macshareware.net (userid jackjansen)
-
-Also, check out Stephan Deibels http://pythonology.org/market contact list
-
-After all this is done you may also need to update the Package Manager
-database for the new distribution. A description of this remains TBD.
diff --git a/Mac/OSX/Dist/build b/Mac/OSX/Dist/build
deleted file mode 100755
index b5ebe3e..0000000
--- a/Mac/OSX/Dist/build
+++ /dev/null
@@ -1,164 +0,0 @@
-#!/bin/sh -e
-#----------------------------------------------------------------------
-# Build MacPython 2.5 and make an Installer package of it
-
-# TODO:  Parameterize the versions, builddirs, etc...
-
-# Script configs
-PYVERSION=2.5a0
-PYVER=2.5
-BUILDNUM=1
-DOCLEANUP=no
-
-PROGDIR="`dirname \"$0\"`"
-case x$PROGDIR in
-x|x.) PROGDIR=`pwd` ;;
-x/*) ;;
-*) echo "Please run with a full pathname"
-   exit 1
-   ;;
-esac
-
-TMPDIR=/tmp/_py
-#TMPDIR=/projects/_py
-
-INSTALLROOT=$TMPDIR/install
-DMGDIR=$TMPDIR/dmg
-RESOURCEDIR=$PROGDIR/resources
-DESTDIR=$TMPDIR/dist
-PYTHONSRC=$PROGDIR/../../..
-WASTEDIR=$PYTHONSRC/../waste
-
-case x$1 in
-x)
-	BUILDROOT=$TMPDIR/build
-	;;
-*)
-	BUILDROOT=$1
-	;;
-esac
-
-# Setup
-if [ -e $BUILDROOT ]; then
-	echo Using existing build directory $BUILDROOT
-	CLEANBUILD=no
-else
-	echo Creating clean build directory $BUILDROOT
-	CLEANBUILD=yes
-	mkdir -p $BUILDROOT
-fi
-rm -rf $DMGDIR
-if [ ! -e $TMPDIR ]; then
-	mkdir $TMPDIR
-fi
-chgrp admin $TMPDIR
-mkdir -p $DMGDIR/root
-
-
-# Configure and build Python
-pushd $BUILDROOT
-
-# Ask the user whether s/he has edited Welcome.txt
-read -p "Have you updated $RESOURCEDIR/Welcome.txt (Y/n)? " welcome
-
-if [ "$welcome" = "n" -o "$welcome" = "N" ]; then
-	echo "Please do so and retry"
-	exit
-fi
-
-# Check if we should build and install the docs, but only if it
-# doesn't appear to be done already.  TODO: fix this path to be version independent
-if [ ! -e "build/temp.darwin-6.3-Power Macintosh-2.3/build-html/build-html idx" ]; then
-    read -p "Build the Python docs? (y/N)? " builddocs
-fi
-
-# If the filesystem is case-sensitive then "python" will be built, but
-# some parts of the install expect "python.exe which is what is built
-# on a case-insensitive filesystem.  Make a link just in case it is
-# needed.
-if [ ! -e python.exe ]; then
-    ln -s python python.exe
-fi
-
-# Make a link to the waste dir so that lib can be found.  This allows
-# the PythonIDE to be built
-if [ ! -e waste ]; then
-    ln -s $WASTEDIR waste
-fi
-
-#$PYTHONSRC/configure -C --enable-framework LDFLAGS=-Wl,-x
-$PYTHONSRC/configure -C --enable-framework
-make
-make DIRMODE=775 EXEMODE=775 FILEMODE=664 DESTDIR=$INSTALLROOT frameworkinstall
-make DIRMODE=775 EXEMODE=775 FILEMODE=664 DESTDIR=$INSTALLROOT frameworkinstallextras
-
-# Unfortunately all the ...MODE arguments above still don't do the trick.
-# Cop out, and recursively set everything group-writeable.
-chmod -R ug+w $INSTALLROOT
-
-if [ "$builddocs" = "y" -o "$builddocs" = "Y" ]; then
-    ./python.exe $PYTHONSRC/Mac/OSX/setupDocs.py build
-    echo ""
-    read -p "When the help indexer is done press Enter..." ans
-    ./python.exe $PYTHONSRC/Mac/OSX/setupDocs.py install \
-	--prefix=$INSTALLROOT/Library/Frameworks/Python.framework/Versions/$PYVER
-fi
-
-popd
-
-
-
-# Make the Installer package:
-# First, remove the unix tools as their paths will be wrong.  We'll recreate
-# them in the postinstall.
-rm -rf $INSTALLROOT/usr
-
-# Next, remove the .pyc/.pyo files
-python $PYTHONSRC/Mac/scripts/zappycfiles.py $INSTALLROOT/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER
-python $PYTHONSRC/Mac/scripts/zappycfiles.py $INSTALLROOT/Library/Frameworks/Python.framework/Versions/$PYVER/Mac/Tools
-
-# Finally, build the package...
-rm -rf MacPython-OSX.pkg
-python $PYTHONSRC/Mac/scripts/buildpkg.py \
-    --Title=MacPython-OSX \
-    --Version=$PYVERSION-$BUILDNUM \
-    --Description="Python $PYVERSION for Mac OS X, framework based" \
-    --NeedsAuthorization="YES" \
-    --Relocatable="NO" \
-    --InstallOnly="YES" \
-    --UseUserMask="NO" \
-    $INSTALLROOT \
-    $RESOURCEDIR
-
-#    --RootVolumeOnly="YES" \
-
-# ...and then make a disk image containing the package.
-mv MacPython-OSX.pkg $DMGDIR/root
-cp $RESOURCEDIR/ReadMe.txt $DMGDIR/root/ReadMe.txt
-$PROGDIR/makedmg $DMGDIR/root $DMGDIR MacPython-OSX-$PYVERSION-$BUILDNUM
-
-echo Moving $DMGDIR/MacPython-OSX-$PYVERSION-$BUILDNUM to $DESTDIR
-if [ ! -e $DESTDIR ]; then
-    mkdir $DESTDIR
-fi
-mv $DMGDIR/MacPython-OSX-$PYVERSION-$BUILDNUM.dmg $DESTDIR
-
-
-# Cleanup build/install dirs
-if [ $DOCLEANUP = yes ]; then
-    echo "Cleaning up..."
-    if [ $CLEANBUILD = yes ]; then
-    	rm -rf $BUILDROOT
-    fi
-    rm -rf $INSTALLROOT
-    rm -rf $DMGDIR
-else
-    echo "Cleanup is disabled.  You should remove these dirs when done:"
-    if [ $CLEANBUILD = yes ]; then
-    	echo "          $BUILDROOT"
-    fi
-    echo "          $INSTALLROOT"
-    echo "          $DMGDIR"
-fi
-echo "Your installer can be found in $DESTDIR"
-
diff --git a/Mac/OSX/Dist/example-pimp-database.plist b/Mac/OSX/Dist/example-pimp-database.plist
deleted file mode 100644
index c0c52ab..0000000
--- a/Mac/OSX/Dist/example-pimp-database.plist
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>Description</key>
-	<string>Enter database description</string>
-	<key>Maintainer</key>
-	<string>Enter your email address</string>
-	<key>Packages</key>
-	<array>
-		<dict>
-			<key>Description</key>
-			<string>Enter package description</string>
-			<key>Download-URL</key>
-			<string>Enter URL for archive download, delete for pseudo-pkgs</string>
-			<key>Flavor</key>
-			<string>Enter binary or source</string>
-			<key>Home-page</key>
-			<string>Enter URL of human-readable webpage</string>
-			<key>Install-command</key>
-			<string>Enter shell commands to run for installation</string>
-			<key>Install-test</key>
-			<string>Enter Python code to test for already installed</string>
-			<key>MD5Sum</key>
-			<string>Enter checksum of package archive</string>
-			<key>Name</key>
-			<string>Enter name of package</string>
-			<key>Post-install-command</key>
-			<string>Enter shell command to run after install</string>
-			<key>Pre-install-command</key>
-			<string>Enter shell command to run before install</string>
-			<key>Prerequisites</key>
-			<array>
-				<string>Enter human-readable recipy for pseudo-dependencies</string>
-				<dict>
-					<key>Flavor</key>
-					<string>Enter optional flavor for real dependency</string>
-					<key>Name</key>
-					<string>Enter name for real dependency</string>
-					<key>Version</key>
-					<string></string>
-				</dict>
-			</array>
-			<key>Version</key>
-			<string>Enter version string for package</string>
-		</dict>
-	</array>
-	<key>Version</key>
-	<string>0.1</string>
-</dict>
-</plist>
diff --git a/Mac/OSX/Dist/makedmg b/Mac/OSX/Dist/makedmg
deleted file mode 100755
index de13ef9..0000000
--- a/Mac/OSX/Dist/makedmg
+++ /dev/null
@@ -1,95 +0,0 @@
-#!/usr/bin/perl -w
-#
-# make disk image from folder
-#
-# usage: makedmg src dst name
-#
-# Donated by 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"; }
-}
diff --git a/Mac/OSX/Dist/resources/ReadMe.txt b/Mac/OSX/Dist/resources/ReadMe.txt
deleted file mode 100644
index 39a7b82..0000000
--- a/Mac/OSX/Dist/resources/ReadMe.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-This package will install MacPython 2.5a0 for Mac OS X
-10.3.
-
-Installation requires approximately 20 MB of disk
-space, ignore the message that it will take zero bytes.
-
-You must install onto your current boot disk, even
-though the installer does not enforce this, otherwise
-things will not work.
-
-MacPython consists of the Python programming language
-interpreter, plus a set of programs to allow easy
-access to it for Mac users (an integrated development
-environment, a Python extension package manager), plus
-a set of pre-built extension modules that open up
-specific Macintosh technologies to Python programs
-(Carbon, AppleScript, Quicktime, more).
-
-The installer puts the applications in MacPython-2.5 in
-your Applications folder, command-line tools in
-/usr/local/bin and the underlying machinery in
-/Library/Frameworks/Python.framework.
-
-The PythonIDE application has a Help command that gets
-you started quickly with MacPython and contains
-references to other documentation.
-
-More information on MacPython can be found at
-http://www.cwi.nl/~jack/macpython, more
-information on Python in general at
-http://www.python.org.
diff --git a/Mac/OSX/Dist/resources/Welcome.rtf b/Mac/OSX/Dist/resources/Welcome.rtf
deleted file mode 100644
index ec6bb1a..0000000
--- a/Mac/OSX/Dist/resources/Welcome.rtf
+++ /dev/null
@@ -1,15 +0,0 @@
-{\rtf1\mac\ansicpg10000\cocoartf102
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;}
-{\colortbl;\red255\green255\blue255;}
-\paperw11900\paperh16840\margl1440\margr1440\vieww9920\viewh10660\viewkind0
-\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural
-
-\f0\fs24 \cf0 This package will install 
-\f1\b MacPython 2.5a0
-\f0\b0  for 
-\f1\b Mac OS X 10.3
-\f0\b0 . Installation on 10.2 or earlier will not work.\
-\
-MacPython consists of the Python programming language interpreter, plus a set of programs to allow easy access to it for Mac users (an integrated development environment, a Python extension package manager), plus a set of pre-built extension modules that open up specific Macintosh technologies to Python programs (Carbon, AppleScript, Quicktime, more).\
-\
-See the ReadMe file for more information.}
\ No newline at end of file
diff --git a/Mac/OSX/Dist/resources/postflight b/Mac/OSX/Dist/resources/postflight
deleted file mode 100755
index 878b6d4..0000000
--- a/Mac/OSX/Dist/resources/postflight
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/bin/sh
-#----------------------------------------------------------------------
-# Create the unix tools and compile the .py files after Python has been
-# installed.
-#----------------------------------------------------------------------
-
-PYVER=2.5
-
-PKG=$1
-DEST=$2
-
-# Make sure things are group-writeable
-umask 2
-
-# if destination is / then use usr/local/bin, otherwise just bin
-if [ "$DEST" = "/" ]; then
-    TOOLDIR=/usr/local/bin
-    DEST=
-else
-    TOOLDIR=$DEST/bin
-fi
-
-# Make sure the dir exists
-mkdir -p $TOOLDIR
-
-# Make some links to the python executable
-ln -fsh $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/bin/python $TOOLDIR/python$PYVER
-ln -fsh python$PYVER $TOOLDIR/python
-
-
-# make the pythonw script
-rm -f $TOOLDIR/pythonw$PYVER
-cat > $TOOLDIR/pythonw$PYVER <<EOF
-#!/bin/sh
-exec "$DEST/Library/Frameworks/Python.framework/Versions/$PYVER/Resources/Python.app/Contents/MacOS/Python" "\$@"
-EOF
-chmod +x $TOOLDIR/pythonw$PYVER
-ln -fsh pythonw$PYVER $TOOLDIR/pythonw
-
-
-# Compile the .py files in the Python library to .pyc's and then .pyo's
-$TOOLDIR/python -Wi -tt \
-    $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER/compileall.py \
-    -x badsyntax -x site-packages $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER
-
-$TOOLDIR/python -Wi -tt -O \
-    $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER/compileall.py \
-    -x badsyntax -x site-packages $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER
-
-$TOOLDIR/python -Wi -tt \
-    $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER/compileall.py \
-    $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/Mac/Tools
-
-$TOOLDIR/python -Wi -tt -O \
-    $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER/compileall.py \
-    $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/Mac/Tools
-
-
-# Make the site-packages and other dirs writable by the admin if destination is /
-
-if [ "$DEST" = "/" ]; then
-	for d in $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/lib/python$PYVER/site-packages \
-			 $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/bin \
-			 $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/Resources/Python.app/Contents/Resources \
-			 $DEST/Applications/MacPython-$PYVER; do
-		chgrp -R admin $d
-		chmod -R g+w   $d
-	done
-fi
-
-if [ "$DEST" != "/" ]; then
-	# The link in the app bundles and in pydoc need updating.
-	installed_python=$DEST/Library/Frameworks/Python.framework/Versions/$PYVER/Resources/Python.app/Contents/MacOS/python
-	for app in BuildApplet IDLE PackageManager PythonIDE; do
-		ln -fsh  $installed_python \
-			  $DEST/Applications/MacPython-$PYVER/$app.app/Contents/MacOS
-		ed -s $DEST/Applications/MacPython-$PYVER/$app.app/Contents/MacOS/$app << xyzzy
-1c
-#!$installed_python
-.
-w
-q
-xyzzy
-	ed -s $DEST/Library/Frameworks/Python.framework/Versions/$PYVER/bin/pydoc << xyzzy
-1c
-#!$installed_python
-.
-w
-q
-xyzzy
-	done
-fi
diff --git a/Mac/OSX/Extras.ReadMe.txt b/Mac/OSX/Extras.ReadMe.txt
index 3ab4568..2d7fd42 100644
--- a/Mac/OSX/Extras.ReadMe.txt
+++ b/Mac/OSX/Extras.ReadMe.txt
@@ -3,12 +3,3 @@
 You should be aware that these are not Macintosh-specific but are shared
 among Python on all platforms, so there are some that only run on Windows
 or Unix or another platform, and/or make little sense on a Macintosh.
-
-Some examples can be run from within the PythonIDE, but many will require
-that you start them from the command line or with PythonLauncher. In the
-latter case, you can supply any needed command line arguments by holding
-the "alt" key while dragging the script to PythonLauncher, or while
-double-clicking the script if PythonLauncher is set as the default application
-to open Python scripts with. See "Changing the application that opens a file"
-in Mac Help for information on making PythonLauncher the default application.
-
diff --git a/Mac/OSX/Extras.install.py b/Mac/OSX/Extras.install.py
index 2521f06..ce00af3 100644
--- a/Mac/OSX/Extras.install.py
+++ b/Mac/OSX/Extras.install.py
@@ -12,6 +12,7 @@
     if name == 'CVS': return 0
     if name == '.cvsignore': return 0
     if name == '.DS_store': return 0
+    if name == '.svn': return 0
     if name.endswith('~'): return 0
     if name.endswith('.BAK'): return 0
     if name.endswith('.pyc'): return 0
diff --git a/Mac/OSX/IDLE/Makefile.in b/Mac/OSX/IDLE/Makefile.in
index a429277..a96e7ef 100644
--- a/Mac/OSX/IDLE/Makefile.in
+++ b/Mac/OSX/IDLE/Makefile.in
@@ -38,7 +38,7 @@
 		$(srcdir)/../Icons/IDLE.icns $(srcdir)/idlemain.py \
 		$(srcdir)/../Icons/PythonSource.icns \
 		$(srcdir)/../Icons/PythonCompiled.icns
-	rm -fr PythonLauncher.app
+	rm -fr IDLE.app
 	$(RUNSHARED) $(BUILDPYTHON) $(BUNDLEBULDER) \
 		--builddir=. \
 		--name=IDLE \
diff --git a/Mac/OSX/IDLE/idlemain.py b/Mac/OSX/IDLE/idlemain.py
index eaebee8..aa75d4c 100644
--- a/Mac/OSX/IDLE/idlemain.py
+++ b/Mac/OSX/IDLE/idlemain.py
@@ -7,7 +7,7 @@
 
 # Change the current directory the user's home directory, that way we'll get
 # a more useful default location in the open/save dialogs.
-os.chdir(os.expanduser('~'))
+os.chdir(os.path.expanduser('~/Documents'))
 
 
 # Make sure sys.executable points to the python interpreter inside the
diff --git a/Mac/OSX/README b/Mac/OSX/README
index 26c646db..1e58b02 100644
--- a/Mac/OSX/README
+++ b/Mac/OSX/README
@@ -1,29 +1,57 @@
-Building and using a framework-based Python on Mac OS X.
---------------------------------------------------------
+============
+MacOSX Notes
+============
 
-This document provides a quick introduction to framework-based Python, its
-advantages, and how to build it.
+This document provides a quick overview of some Mac OS X specific features in
+the Python distribution.
+
+
+Building and using a universal binary of Python on Mac OS X
+===========================================================
+
+1. What is a universal binary
+-----------------------------
+
+A universal binary build of Python contains object code for both PPC and i386
+and can therefore run at native speed on both classic powerpc based macs and
+the newer intel based macs.
+
+2. How do I build a universal binary
+------------------------------------
+
+You can enable universal binaries by specifying the "--enable-universalsdk"
+flag to configure::
+
+  $ ./configure --enable-universalsdk
+  $ make
+  $ make install
+
+This flag can be used a framework build of python, but also with a classic
+unix build. Either way you will have to build python on Mac OS X 10.4 (or later)
+with Xcode 2.1 (or later). You also have to install the 10.4u SDK when 
+installing Xcode.
+
+
+Building and using a framework-based Python on Mac OS X.
+========================================================
+
 
 1. Why would I want a framework Python instead of a normal static Python?
 --------------------------------------------------------------------------
 
 The main reason is because you want to create GUI programs in Python. With the
-exception of X11/XDarwin-based GUI toolkits it appears that all GUI programs
-need to be run from a fullblown MacOSX application (a ".app" bundle).
+exception of X11/XDarwin-based GUI toolkits all GUI programs need to be run 
+from a fullblown MacOSX application (a ".app" bundle).
 
 While it is technically possible to create a .app without using frameworks you
 will have to do the work yourself if you really want this.
 
 A second reason for using frameworks is that they put Python-related items in
-only two places: /Library/Framework/Python.framework and /Applications/MacPython-2.3.
-This simplifies matters for users installing Python from a binary distribution
-if they want to get rid of it again. Moreover, due to the way frameworks work
-a user without admin privileges can install a binary distribution in his or
-her home directory without recompilation.
-
-Incidentally, the procedure described here is also the procedure that is
-used to create the MacPython binary installer, so the information here
-should theoretically allow you to rebuild that.
+only two places: "/Library/Framework/Python.framework" and 
+"/Applications/MacPython 2.5".  This simplifies matters for users installing 
+Python from a binary distribution if they want to get rid of it again. Moreover,
+due to the way frameworks work a user without admin privileges can install a 
+binary distribution in his or her home directory without recompilation.
 
 2. How does a framework Python differ from a normal static Python?
 ------------------------------------------------------------------
@@ -37,44 +65,40 @@
 3. Do I need extra packages?
 ----------------------------
 
-Yes, probably. If you want to be able to use the PythonIDE you will need to
-get Waste, an all-singing-all-dancing TextEdit replacement, from
-www.merzwaren.com. It will unpack into a folder named something like "Waste
-2.1 Distribution". Make a symlink called "waste" to this folder, somewhere
-beside your Python source distribution (it can be "../waste", "../../waste",
-etc).
-
-If you want Tkinter support you need to get the OSX AquaTk distribution. If
+Yes, probably.  If you want Tkinter support you need to get the OSX AquaTk 
+distribution, this is installed by default on Mac OS X 10.4 or later. If
 you want wxPython you need to get that. If you want Cocoa you need to get
-pyobjc. Because all these are currently in a state of flux please refer to
-http://www.cwi.nl/~jack/macpython.html, which should contain pointers to more
-information.
+PyObjC. 
 
 4. How do I build a framework Python?
 -------------------------------------
 
 This directory contains a Makefile that will create a couple of python-related
 applications (fullblown OSX .app applications, that is) in
-/Applications/MacPython-2.3, and a hidden helper application Python.app inside the
-Python.framework, and unix tools "python" and "pythonw" into /usr/local/bin.
-In addition it has a target "installmacsubtree" that installs the relevant
-portions of the Mac subtree into the Python.framework.
+"/Applications/MacPython 2.3", and a hidden helper application Python.app 
+inside the Python.framework, and unix tools "python" and "pythonw" into 
+/usr/local/bin.  In addition it has a target "installmacsubtree" that installs 
+the relevant portions of the Mac subtree into the Python.framework.
 
 It is normally invoked indirectly through the main Makefile, as the last step
 in the sequence
-1. ./configure --enable-framework
-2. make
-3. make frameworkinstall
+
+ 1. ./configure --enable-framework
+
+ 2. make
+ 
+ 3. make install
 
 This sequence will put the framework in /Library/Framework/Python.framework,
-the applications in /Applications/Python and the unix tools in /usr/local/bin.
+the applications in /Applications/MacPython 2.5 and the unix tools in 
+/usr/local/bin.
 
 Installing in another place, for instance $HOME/Library/Frameworks if you have
 no admin privileges on your machine, has only been tested very lightly. This
 can be done by configuring with --enable-framework=$HOME/Library/Frameworks.
-The other two directories, /Applications/MacPython-2.3 and /usr/local/bin, will then
-also be deposited in $HOME. This is sub-optimal for the unix tools, which you
-would want in $HOME/bin, but there is no easy way to fix this right now.
+The other two directories, /Applications/MacPython-2.3 and /usr/local/bin, will 
+then also be deposited in $HOME. This is sub-optimal for the unix tools, which 
+you would want in $HOME/bin, but there is no easy way to fix this right now.
 
 Note that there are no references to the actual locations in the code or
 resource files, so you are free to move things around afterwards. For example,
@@ -89,18 +113,13 @@
 normal frameworkinstall which installs the Demo and Tools directories
 into /Applications/MacPython-2.3, this is useful for binary distributions.
 
-If you want to run the Makefile here directly, in stead of through the main
-Makefile, you will have to pass various variable-assignments. Read the
-beginning of the Makefile for details.
+What do all these programs do?
+===============================
 
-
-5. What do all these programs do?
----------------------------------
-
-PythonIDE.app is an integrated development environment for Python: editor,
+"IDLE.app" is an integrated development environment for Python: editor,
 debugger, etc.
 
-PythonLauncher.app is a helper application that will handle things when you
+"PythonLauncher.app" is a helper application that will handle things when you
 double-click a .py, .pyc or .pyw file. For the first two it creates a Terminal
 window and runs the scripts with the normal command-line Python. For the
 latter it runs the script in the Python.app interpreter so the script can do
@@ -108,7 +127,7 @@
 script to set runtime options. These options can be set once and for all
 through PythonLauncher's preferences dialog.
 
-BuildApplet.app creates an applet from a Python script. Drop the script on it
+"BuildApplet.app" creates an applet from a Python script. Drop the script on it
 and out comes a full-featured MacOS application. There is much more to this,
 to be supplied later. Some useful (but outdated) info can be found in
 Mac/Demo.
@@ -116,43 +135,27 @@
 The commandline scripts /usr/local/bin/python and pythonw can be used to run
 non-GUI and GUI python scripts from the command line, respectively.
 
-6. How do I create a binary distribution?
------------------------------------------
+How do I create a binary distribution?
+======================================
 
-First go to Mac/OSX and run "python fixversions.py -a" with the Python
-you are going to distribute. This will fix the version numbers and copyright
-strings in the various Info.plist files.
+Go to the directory "Mac/OSX/BuildScript". There you'll find a script 
+"build-installer.py" that does all the work. This will download and build
+a number of 3th-party libaries, configures and builds a framework Python,
+installs it, creates the installer pacakge files and then packs this in a 
+DMG image.
 
-Go to the Mac/OSX/Dist directory. There you find a script "build" that
-does all the work: it configures and builds a framework Python, installs
-it, creates the installer package file and packs this in a DMG image.
+The script will build a universal binary, you'll therefore have to run this
+script on Mac OS X 10.4 or later and with Xcode 2.1 or later installed.
 
 All of this is normally done completely isolated in /tmp/_py, so it does not
 use your normal build directory nor does it install into /.
 
-Because the build script locates the Python source tree relative to its own
-pathname you may have to run it with a full pathname. If you are debugging your
-install you can pass one argument: the pathname where the build directory
-is located (i.e. where configure and make will be run), then this directory
-will be saved between runs of the build script. Do *not* specify your normal
-build directory here.
+Because of the way the script locates the files it needs you have to run it
+from within the BuildScript directory. The script accepts a number of 
+command-line arguments, run it with --help for more information.
 
-build will ask you whether you have updated the readme file, and it will offer
-to include the full documentation in the installer. That option has not
-been used for a while, and it may not work.
-
-If you need to execute code on the client machine after installing Python
-you can add this to resources/postflight. If you need to do even stranger things
-you have to read Apple's documentation on PackageMaker and read the source
-of Mac/scripts/buildpkg.py.
-
-7. Odds and ends.
------------------
-
-The PythonLauncher is actually an Objective C Cocoa app built with Project
-Builder. It could be a Python program, except for the fact that pyobjc is not
-a part of the core distribution, and is not completely finished yet as of this
-writing.
+Odds and ends
+=============
 
 Something to take note of is that the ".rsrc" files in the distribution are
 not actually resource files, they're AppleSingle encoded resource files. The
@@ -161,3 +164,4 @@
 files.
 
 	Jack Jansen, Jack.Jansen@cwi.nl, 15-Jul-2004.
+	Ronald Oussoren, RonaldOussoren@mac.com, 26-May-2006
diff --git a/Mac/OSX/fixversions.py b/Mac/OSX/fixversions.py
deleted file mode 100644
index 0277c79..0000000
--- a/Mac/OSX/fixversions.py
+++ /dev/null
@@ -1,69 +0,0 @@
-"""fixversions - Fix version numbers in .plist files to match current
-python version and date"""
-
-import sys
-import os
-import time
-import plistlib
-
-SHORTVERSION = "%d.%d" % (sys.version_info[0], sys.version_info[1])
-if sys.version_info[2]:
-    SHORTVERSION = SHORTVERSION + ".%d" % sys.version_info[2]
-if sys.version_info[3] != 'final':
-    SHORTVERSION = SHORTVERSION + "%s%d" % (sys.version_info[3], sys.version_info[4])
-
-COPYRIGHT = "(c) %d Python Software Foundation." % time.gmtime()[0]
-
-LONGVERSION = SHORTVERSION + ", " + COPYRIGHT
-
-def fix(file):
-    plist = plistlib.Plist.fromFile(file)
-    changed = False
-    if plist.has_key("CFBundleGetInfoString") and \
-                    plist["CFBundleGetInfoString"] != LONGVERSION:
-        plist["CFBundleGetInfoString"] = LONGVERSION
-        changed = True
-    if plist.has_key("CFBundleLongVersionString") and \
-                    plist["CFBundleLongVersionString"] != LONGVERSION:
-        plist["CFBundleLongVersionString"] = LONGVERSION
-        changed = True
-    if plist.has_key("NSHumanReadableCopyright") and \
-                    plist["NSHumanReadableCopyright"] != COPYRIGHT:
-        plist["NSHumanReadableCopyright"] = COPYRIGHT
-        changed = True
-    if plist.has_key("CFBundleVersion") and \
-                    plist["CFBundleVersion"] != SHORTVERSION:
-        plist["CFBundleVersion"] = SHORTVERSION
-        changed = True
-    if plist.has_key("CFBundleShortVersionString") and \
-                    plist["CFBundleShortVersionString"] != SHORTVERSION:
-        plist["CFBundleShortVersionString"] = SHORTVERSION
-        changed = True
-    if changed:
-        os.rename(file, file + '~')
-        plist.write(file)
-
-def main():
-    if len(sys.argv) < 2:
-        print "Usage: %s plistfile ..." % sys.argv[0]
-        print "or: %s -a      fix standard Python plist files"
-        sys.exit(1)
-    if sys.argv[1] == "-a":
-        files = [
-                "../OSXResources/app/Info.plist",
-                "../OSXResources/framework/version.plist",
-                "../Tools/IDE/PackageManager.plist",
-                "../Tools/IDE/PythonIDE.plist",
-                "../scripts/BuildApplet.plist"
-        ]
-        if not os.path.exists(files[0]):
-            print "%s -a must be run from Mac/OSX directory"
-            sys.exit(1)
-    else:
-        files = sys.argv[1:]
-    for file in files:
-        fix(file)
-    sys.exit(0)
-
-if __name__ == "__main__":
-    main()
diff --git a/Mac/OSX/sample_sitecustomize.py b/Mac/OSX/sample_sitecustomize.py
deleted file mode 100644
index d7bbb12..0000000
--- a/Mac/OSX/sample_sitecustomize.py
+++ /dev/null
@@ -1,6 +0,0 @@
-import sys
-import os
-_maclib = os.path.join(sys.prefix, 'Mac', 'Lib')
-_scriptlib = os.path.join(_maclib, 'lib-scriptpackages')
-sys.path.append(_maclib)
-sys.path.append(_scriptlib)
