[pypy-svn] r73571 - in pypy/branch/cpython-extension/pypy/module/cpyext: . test
afa at codespeak.net
afa at codespeak.net
Thu Apr 8 22:29:22 CEST 2010
Author: afa
Date: Thu Apr 8 22:29:19 2010
New Revision: 73571
Modified:
pypy/branch/cpython-extension/pypy/module/cpyext/__init__.py
pypy/branch/cpython-extension/pypy/module/cpyext/api.py
pypy/branch/cpython-extension/pypy/module/cpyext/test/test_bufferobject.py
Log:
allow cpyext to call C init_xxx() functions on startup.
Fix test_bufferobject
Modified: pypy/branch/cpython-extension/pypy/module/cpyext/__init__.py
==============================================================================
--- pypy/branch/cpython-extension/pypy/module/cpyext/__init__.py (original)
+++ pypy/branch/cpython-extension/pypy/module/cpyext/__init__.py Thu Apr 8 22:29:19 2010
@@ -30,11 +30,10 @@
space.wrap(state.api_lib))
else:
state.init_r2w_from_w2r()
-
- #XXX: segfaults
- #for func in api.INIT_FUNCTIONS:
- # func()
- # state.check_and_raise_exception()
+
+ for func in api.INIT_FUNCTIONS:
+ func()
+ state.check_and_raise_exception()
# import these modules to register api functions by side-effect
import pypy.module.cpyext.pyobject
Modified: pypy/branch/cpython-extension/pypy/module/cpyext/api.py
==============================================================================
--- pypy/branch/cpython-extension/pypy/module/cpyext/api.py (original)
+++ pypy/branch/cpython-extension/pypy/module/cpyext/api.py Thu Apr 8 22:29:19 2010
@@ -229,7 +229,7 @@
'PyArg_ParseTuple', 'PyArg_UnpackTuple', 'PyArg_ParseTupleAndKeywords',
'PyString_FromFormat', 'PyString_FromFormatV', 'PyModule_AddObject',
'Py_BuildValue', 'PyTuple_Pack', 'PyErr_Format',
- 'PyBuffer_FromMemory', 'PyBuffer_Type',
+ 'PyBuffer_FromMemory', 'PyBuffer_Type', 'init_bufferobject',
]
TYPES = {}
GLOBALS = { # this needs to include all prebuilt pto, otherwise segfaults occur
@@ -474,11 +474,9 @@
'\n'.join(functions))
eci = build_eci(True, export_symbols, code)
- eci = eci.convert_sources_to_files()
- modulename = platform.platform.compile(
- [], eci,
- outputfilename=str(udir / "module_cache" / "pypyapi"),
- standalone=False)
+ eci = eci.compile_shared_lib(
+ outputfilename=str(udir / "module_cache" / "pypyapi"))
+ modulename = py.path.local(eci.libraries[-1])
bootstrap_types(space)
Modified: pypy/branch/cpython-extension/pypy/module/cpyext/test/test_bufferobject.py
==============================================================================
--- pypy/branch/cpython-extension/pypy/module/cpyext/test/test_bufferobject.py (original)
+++ pypy/branch/cpython-extension/pypy/module/cpyext/test/test_bufferobject.py Thu Apr 8 22:29:19 2010
@@ -13,7 +13,7 @@
cbuf[0] = 'a';
cbuf[1] = 'b';
cbuf[2] = 'c';
- cbuf[3] = '\0';
+ cbuf[3] = '\\0';
return PyBuffer_FromMemory(cbuf, 4);
"""),
("free_buffer", "METH_NOARGS",
@@ -22,8 +22,8 @@
Py_RETURN_NONE;
""")
], prologue = """
- char* cbuf = NULL;
+ static char* cbuf = NULL;
""")
- w_buffer = module.get_FromMemory()
- assert False, w_buffer
+ buffer = module.get_FromMemory()
+ assert str(buffer) == 'abc\0'
module.free_buffer()
More information about the Pypy-commit
mailing list