Make _spawn_posix be ready for EINTR. waitpid(2) can be interrupted
by SIGCHLD or sth because no signal is masked before. This fixes
an optimized installation problem on FreeBSD libpthread.
diff --git a/Lib/distutils/spawn.py b/Lib/distutils/spawn.py
index 4857ce5..67391e8 100644
--- a/Lib/distutils/spawn.py
+++ b/Lib/distutils/spawn.py
@@ -144,7 +144,14 @@
         # Loop until the child either exits or is terminated by a signal
         # (ie. keep waiting if it's merely stopped)
         while 1:
-            (pid, status) = os.waitpid(pid, 0)
+            try:
+                (pid, status) = os.waitpid(pid, 0)
+            except OSError, exc:
+                import errno
+                if exc.errno == errno.EINTR:
+                    continue
+                raise DistutilsExecError, \
+                      "command '%s' failed: %s" % (cmd[0], exc[-1])
             if os.WIFSIGNALED(status):
                 raise DistutilsExecError, \
                       "command '%s' terminated by signal %d" % \