Author: Richard Plangger <planri...@gmail.com> Branch: py3.5 Changeset: r87761:71fd4ec38feb Date: 2016-10-13 17:22 +0200 http://bitbucket.org/pypy/pypy/changeset/71fd4ec38feb/
Log: expose sem_unlink on posix platforms (multiprocessing) to run the stdlib tests diff --git a/pypy/module/_multiprocessing/__init__.py b/pypy/module/_multiprocessing/__init__.py --- a/pypy/module/_multiprocessing/__init__.py +++ b/pypy/module/_multiprocessing/__init__.py @@ -7,7 +7,7 @@ interpleveldefs = { 'Connection' : 'interp_connection.W_FileConnection', 'SemLock' : 'interp_semaphore.W_SemLock', - + 'sem_unlink' : 'interp_semaphore.semaphore_unlink', 'address_of_buffer' : 'interp_memory.address_of_buffer', } @@ -18,6 +18,7 @@ interpleveldefs['PipeConnection'] = \ 'interp_connection.W_PipeConnection' interpleveldefs['win32'] = 'interp_win32.win32_namespace(space)' + del interpleveldefs['sem_unlink'] def init(self, space): MixedModule.init(self, space) diff --git a/pypy/module/_multiprocessing/interp_semaphore.py b/pypy/module/_multiprocessing/interp_semaphore.py --- a/pypy/module/_multiprocessing/interp_semaphore.py +++ b/pypy/module/_multiprocessing/interp_semaphore.py @@ -211,6 +211,12 @@ def handle_w(space, w_handle): return rffi.cast(SEM_T, space.int_w(w_handle)) + def semaphore_unlink(space, w_name): + name = space.str_w(w_name) + res = _sem_unlink(name) + if res < 0: + raise oefmt(space.w_OSError, "sem unlink failed with errno: %d", rposix.get_saved_errno()) + class CounterState: def __init__(self, space): self.counter = 0 diff --git a/pypy/module/_multiprocessing/test/test_semaphore.py b/pypy/module/_multiprocessing/test/test_semaphore.py --- a/pypy/module/_multiprocessing/test/test_semaphore.py +++ b/pypy/module/_multiprocessing/test/test_semaphore.py @@ -1,3 +1,4 @@ +import py import sys from pypy.module._multiprocessing.interp_semaphore import ( @@ -18,6 +19,12 @@ cls.w_SEMAPHORE = cls.space.wrap(SEMAPHORE) cls.w_RECURSIVE = cls.space.wrap(RECURSIVE_MUTEX) + @py.test.mark.skipif("sys.platform == 'win32'") + def test_sem_unlink(self): + from _multiprocessing import sem_unlink + try: sem_unlink("non-existent") + except OSError: pass + def test_semaphore(self): from _multiprocessing import SemLock import sys diff --git a/pypy/module/thread/threadlocals.py b/pypy/module/thread/threadlocals.py --- a/pypy/module/thread/threadlocals.py +++ b/pypy/module/thread/threadlocals.py @@ -7,6 +7,7 @@ ExecutionContext._signals_enabled = 0 # default value +ExecutionContext._sentinel_lock = None class OSThreadLocals: _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit