[pypy-svn] r49099 - pypy/dist/pypy/module/thread
fijal at codespeak.net
fijal at codespeak.net
Sun Nov 25 19:29:17 CET 2007
Author: fijal
Date: Sun Nov 25 19:29:15 2007
New Revision: 49099
Modified:
pypy/dist/pypy/module/thread/ll_thread.py
Log:
Fix threads.
Modified: pypy/dist/pypy/module/thread/ll_thread.py
==============================================================================
--- pypy/dist/pypy/module/thread/ll_thread.py (original)
+++ pypy/dist/pypy/module/thread/ll_thread.py Sun Nov 25 19:29:15 2007
@@ -4,33 +4,29 @@
from pypy.rpython.tool import rffi_platform as platform
from pypy.rpython.extfunc import genericcallable
from pypy.rpython.annlowlevel import cast_instance_to_base_ptr
-from pypy.translator.tool.cbuild import cache_c_module
+from pypy.translator.tool.cbuild import ExternalCompilationInfo
from pypy.rpython.lltypesystem import llmemory
import thread, py
from pypy.rpython.extregistry import ExtRegistryEntry
from pypy.annotation import model as annmodel
from pypy.rpython.lltypesystem.lltype import typeOf
from pypy.rlib.objectmodel import debug_assert
+from pypy.tool import autopath
error = thread.error
-from pypy.tool.autopath import pypydir
-pypydir = py.path.local(pypydir)
-c_dir = pypydir.join('translator', 'c')
-includes = ['unistd.h', 'src/thread.h']
-include_dirs = [str(c_dir)]
-
-def setup_thread_so():
- # XXX this is quiiiiiiiite a hack!
- files = [c_dir.join('src', 'thread.c')]
- modname = '_thread'
- cache_c_module(files, modname, include_dirs=[str(c_dir)])
- return str(pypydir.join('_cache', modname)) + '.so'
-libraries = [setup_thread_so()]
+eci = ExternalCompilationInfo(
+ includes = ['unistd.h', 'src/thread.h'],
+ separate_module_sources=['''
+ #include <Python.h>
+ #include <src/exception.h>
+ #include <src/thread.h>
+ '''],
+ include_dirs = [str(py.path.local(autopath.pypydir).join('translator', 'c'))]
+)
def llexternal(name, args, result, **kwds):
- return rffi.llexternal(name, args, result, includes=includes,
- libraries=libraries, include_dirs=[str(c_dir)],
+ return rffi.llexternal(name, args, result, compilation_info=eci,
**kwds)
CALLBACK = lltype.Ptr(lltype.FuncType([rffi.VOIDP], rffi.VOIDP))
@@ -38,8 +34,7 @@
c_thread_get_ident = llexternal('RPyThreadGetIdent', [], rffi.INT)
TLOCKP = rffi.COpaquePtr('struct RPyOpaque_ThreadLock',
- includes=includes,
- include_dirs=include_dirs)
+ compilation_info=eci)
c_thread_lock_init = llexternal('RPyThreadLockInit', [TLOCKP], lltype.Void)
c_thread_acquirelock = llexternal('RPyThreadAcquireLock', [TLOCKP, rffi.INT],
More information about the Pypy-commit
mailing list