Patch from Corran Webster <cwebster@nevada.edu> (tweaked for style by me):
changed 'copy_file()' to use the native Mac file copy routine.
diff --git a/Lib/distutils/util.py b/Lib/distutils/util.py
index 683d167..2f193fb 100644
--- a/Lib/distutils/util.py
+++ b/Lib/distutils/util.py
@@ -280,6 +280,17 @@
     if dry_run:
         return 1
 
+    # On a Mac, use the native file copy routine
+    if os.name == 'mac':
+        import macostools
+        try:
+            macostools.copy (src, dst, 0, preserve_times)
+        except OSError, exc:
+            raise DistutilsFileError, \
+                  "could not copy '%s' to '%s': %s" % (src, dst, exc[-1])
+        return 1
+    
+    # Otherwise use custom routine
     _copy_file_contents (src, dst)
     if preserve_mode or preserve_times:
         st = os.stat (src)