diff --git a/Mac/Makefile.in b/Mac/Makefile.in
index b1d4456..31d3b9f 100644
--- a/Mac/Makefile.in
+++ b/Mac/Makefile.in
@@ -16,6 +16,7 @@
 PYTHONFRAMEWORK=@PYTHONFRAMEWORK@
 PYTHONFRAMEWORKIDENTIFIER=@PYTHONFRAMEWORKIDENTIFIER@
 LIPO_32BIT_FLAGS=@LIPO_32BIT_FLAGS@
+CC=@CC@
 
 
 # These are normally glimpsed from the previous set
diff --git a/Mac/Tools/pythonw.c b/Mac/Tools/pythonw.c
index d7a86f2..bd50f5c 100644
--- a/Mac/Tools/pythonw.c
+++ b/Mac/Tools/pythonw.c
@@ -6,9 +6,21 @@
  *
  * This program uses posix_spawn rather than plain execv because we need
  * slightly more control over how the "real" interpreter is executed.
+ *
+ * On OSX 10.4 (and earlier) this falls back to using exec because the
+ * posix_spawnv functions aren't available there.
  */
+
+#pragma weak_import posix_spawnattr_init
+#pragma weak_import posix_spawnattr_setbinpref_np
+#pragma weak_import posix_spawnattr_setflags
+#pragma weak_import posix_spawn
+
+#include <Python.h>
 #include <unistd.h>
+#ifdef HAVE_SPAWN_H
 #include <spawn.h>
+#endif
 #include <stdio.h>
 #include <string.h>
 #include <errno.h>
@@ -74,6 +86,7 @@
 	return g_path;
 }
 
+#ifdef HAVE_SPAWN_H
 static void
 setup_spawnattr(posix_spawnattr_t* spawnattr)
 {
@@ -132,16 +145,26 @@
 		/* NOTREACHTED */
 	}
 }
+#endif
 
 int 
 main(int argc, char **argv) {
-	posix_spawnattr_t spawnattr = NULL;
 	char* exec_path = get_python_path();
 
+#ifdef HAVE_SPAWN_H
+	/* We're weak-linking to posix-spawnv to ensure that
+	 * an executable build on 10.5 can work on 10.4.
+	 */
+	if (posix_spawn != NULL) {
+		posix_spawnattr_t spawnattr = NULL;
 
-	setup_spawnattr(&spawnattr);		
-	posix_spawn(NULL, exec_path, NULL,
-		&spawnattr, argv, environ);
-	err(1, "posix_spawn: %s", argv[0]);
+		setup_spawnattr(&spawnattr);		
+		posix_spawn(NULL, exec_path, NULL,
+			&spawnattr, argv, environ);
+		err(1, "posix_spawn: %s", argv[0]);
+	}
+#endif
+	execve(exec_path, argv, environ);
+	err(1, "execve: %s", argv[0]);
 	/* NOTREACHED */
 }
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 66ca101..96d8d4d 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -3785,6 +3785,10 @@
 #else
 #ifdef HAVE_LIBUTIL_H
 #include <libutil.h>
+#else
+#ifdef HAVE_UTIL_H
+#include <util.h>
+#endif /* HAVE_UTIL_H */
 #endif /* HAVE_LIBUTIL_H */
 #endif /* HAVE_PTY_H */
 #ifdef HAVE_STROPTS_H
diff --git a/configure b/configure
index e6fcee7..3f33193 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.in Revision: 78066 .
+# From configure.in Revision: 78073 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.61 for python 3.2.
 #
@@ -4640,6 +4640,38 @@
 		   ARCH_RUN_32BIT=""
 		   LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
 
+                   # You have to use different flags on various versions of
+		   # OSX to extract PPC code from an universal binary, basically
+                   # '-arch ppc' on OSX 10.4 and '-arch ppc7400' on anything
+                   # newer.
+                   # Because '-arch pp7400' works on OSX 10.5 or higher this
+                   # test is only present in the '32-bit' branch, all other
+                   # branches require OSX 10.5 to compile.
+
+		   { echo "$as_me:$LINENO: checking lipo flag for extracting ppc code" >&5
+echo $ECHO_N "checking lipo flag for extracting ppc code... $ECHO_C" >&6; }
+		   FN="test.$$"
+		   cat >${FN}.c <<-EOF
+		        int main() { return 0; }
+EOF
+		   ${CC} ${CFLAGS} -arch ppc -arch i386 -o ${FN} ${FN}.c -isysroot ${UNIVERSALSDK}
+		   if test $? != 0 ; then
+			   rm ${FN} ${FN}.c
+			   { echo "$as_me:$LINENO: result: failed, assumee -extract ppc7400" >&5
+echo "${ECHO_T}failed, assumee -extract ppc7400" >&6; }
+		   else
+			   lipo "${FN}" -extract ppc7400 -output "${FN}.out" 2>/dev/null
+			   if test $? != 0 ; then
+			       LIPO_32BIT_FLAGS="-extract ppc -extract i386"
+			       { echo "$as_me:$LINENO: result: \"'-extract ppc'\"" >&5
+echo "${ECHO_T}\"'-extract ppc'\"" >&6; }
+			   else
+			       { echo "$as_me:$LINENO: result: \"'-extract ppc7400'\"" >&5
+echo "${ECHO_T}\"'-extract ppc7400'\"" >&6; }
+			   fi
+			   rm -f ${FN} ${FN}.c ${FN}.out
+		   fi
+
 	         elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
 		   UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
 		   LIPO_32BIT_FLAGS=""
@@ -5589,6 +5621,8 @@
 
 
 
+
+
 for ac_header in asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \
 fcntl.h grp.h \
 ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \
@@ -5600,7 +5634,7 @@
 sys/termio.h sys/time.h \
 sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
 sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
-bluetooth/bluetooth.h linux/tipc.h
+bluetooth/bluetooth.h linux/tipc.h spawn.h util.h
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
diff --git a/configure.in b/configure.in
index 58ceea6..a0ca8d5 100644
--- a/configure.in
+++ b/configure.in
@@ -898,6 +898,34 @@
 		   ARCH_RUN_32BIT=""
 		   LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
 
+                   # You have to use different flags on various versions of
+		   # OSX to extract PPC code from an universal binary, basically
+                   # '-arch ppc' on OSX 10.4 and '-arch ppc7400' on anything                   
+                   # newer. 
+                   # Because '-arch pp7400' works on OSX 10.5 or higher this
+                   # test is only present in the '32-bit' branch, all other
+                   # branches require OSX 10.5 to compile.
+
+		   AC_MSG_CHECKING(lipo flag for extracting ppc code)
+		   FN="test.$$"
+		   cat >${FN}.c <<-EOF
+		        int main() { return 0; }
+EOF
+		   ${CC} ${CFLAGS} -arch ppc -arch i386 -o ${FN} ${FN}.c -isysroot ${UNIVERSALSDK}
+		   if test $? != 0 ; then
+			   rm ${FN} ${FN}.c
+			   AC_MSG_RESULT([failed, assumee -extract ppc7400])
+		   else
+			   lipo "${FN}" -extract ppc7400 -output "${FN}.out" 2>/dev/null
+			   if test $? != 0 ; then
+			       LIPO_32BIT_FLAGS="-extract ppc -extract i386"
+			       AC_MSG_RESULT("'-extract ppc'")
+			   else
+			       AC_MSG_RESULT("'-extract ppc7400'")
+			   fi
+			   rm -f ${FN} ${FN}.c ${FN}.out
+		   fi
+
 	         elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
 		   UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
 		   LIPO_32BIT_FLAGS=""
@@ -1251,7 +1279,7 @@
 sys/termio.h sys/time.h \
 sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
 sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
-bluetooth/bluetooth.h linux/tipc.h)
+bluetooth/bluetooth.h linux/tipc.h spawn.h util.h)
 AC_HEADER_DIRENT
 AC_HEADER_MAJOR
 
diff --git a/pyconfig.h.in b/pyconfig.h.in
index aad6c29..7d6f23c 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -632,6 +632,9 @@
 /* Define if you have the 'socketpair' function. */
 #undef HAVE_SOCKETPAIR
 
+/* Define to 1 if you have the <spawn.h> header file. */
+#undef HAVE_SPAWN_H
+
 /* Define if your compiler provides ssize_t */
 #undef HAVE_SSIZE_T
 
@@ -850,6 +853,9 @@
    Include/unicodeobject.h). */
 #undef HAVE_USABLE_WCHAR_T
 
+/* Define to 1 if you have the <util.h> header file. */
+#undef HAVE_UTIL_H
+
 /* Define to 1 if you have the `utimes' function. */
 #undef HAVE_UTIMES
 
