Merged revisions 66670,66681,66688,66696-66699 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r66670 | georg.brandl | 2008-09-28 15:01:36 -0500 (Sun, 28 Sep 2008) | 2 lines

  Don't show version in title.
........
  r66681 | georg.brandl | 2008-09-29 11:51:35 -0500 (Mon, 29 Sep 2008) | 2 lines

  Update nasm location.
........
  r66688 | jesse.noller | 2008-09-29 19:15:45 -0500 (Mon, 29 Sep 2008) | 2 lines

  issue3770: if SEM_OPEN is 0, disable the mp.synchronize module, rev. Nick Coghlan, Damien Miller
........
  r66696 | andrew.kuchling | 2008-09-30 07:31:07 -0500 (Tue, 30 Sep 2008) | 1 line

  Edits, and add markup
........
  r66697 | andrew.kuchling | 2008-09-30 08:00:34 -0500 (Tue, 30 Sep 2008) | 1 line

  Markup fix
........
  r66698 | andrew.kuchling | 2008-09-30 08:00:51 -0500 (Tue, 30 Sep 2008) | 1 line

  Markup fixes
........
  r66699 | andrew.kuchling | 2008-09-30 08:01:46 -0500 (Tue, 30 Sep 2008) | 1 line

  Markup fixes.  (optparse.rst probably needs an entire revision pass.)
........
diff --git a/Lib/multiprocessing/synchronize.py b/Lib/multiprocessing/synchronize.py
index be56a5b..08d7c5d 100644
--- a/Lib/multiprocessing/synchronize.py
+++ b/Lib/multiprocessing/synchronize.py
@@ -21,6 +21,17 @@
 from multiprocessing.util import Finalize, register_after_fork, debug
 from multiprocessing.forking import assert_spawning, Popen
 
+# Try to import the mp.synchronize module cleanly, if it fails
+# raise ImportError for platforms lacking a working sem_open implementation.
+# See issue 3770
+try:
+    from _multiprocessing import SemLock
+except (ImportError):
+    raise ImportError("This platform lacks a functioning sem_open" +
+                      " implementation, therefore, the required" +
+                      " synchronization primitives needed will not" +
+                      " function, see issue 3770.")
+
 #
 # Constants
 #
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index 4eb4a64..886395b 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -1075,6 +1075,7 @@
         test_tcl
         test_timeout
         test_urllibnet
+        test_multiprocessing
         """,
     'aix5':
         """
@@ -1102,6 +1103,7 @@
         test_ossaudiodev
         test_pep277
         test_tcl
+        test_multiprocessing
         """,
     'netbsd3':
         """
@@ -1115,6 +1117,7 @@
         test_ossaudiodev
         test_pep277
         test_tcl
+        test_multiprocessing
         """,
 }
 _expectations['freebsd5'] = _expectations['freebsd4']
diff --git a/Lib/test/test_multiprocessing.py b/Lib/test/test_multiprocessing.py
index dd3ff1b..a8600c0 100644
--- a/Lib/test/test_multiprocessing.py
+++ b/Lib/test/test_multiprocessing.py
@@ -18,6 +18,14 @@
 import random
 import logging
 
+
+# Work around broken sem_open implementations
+try:
+    import multiprocessing.synchronize
+except ImportError as e:
+    from test.test_support import TestSkipped
+    raise TestSkipped(e)
+
 import multiprocessing.dummy
 import multiprocessing.connection
 import multiprocessing.managers