Author: mattip <[email protected]>
Branch:
Changeset: r81985:3ec0e1e24a2e
Date: 2016-01-28 00:04 +0200
http://bitbucket.org/pypy/pypy/changeset/3ec0e1e24a2e/
Log: remove all traces of micronumpy from cpyext if --withoutmod-
micronumpy option used
also back out ec6457a2d845
diff --git a/pypy/config/pypyoption.py b/pypy/config/pypyoption.py
--- a/pypy/config/pypyoption.py
+++ b/pypy/config/pypyoption.py
@@ -85,8 +85,7 @@
module_dependencies = {
'_multiprocessing': [('objspace.usemodules.time', True),
('objspace.usemodules.thread', True)],
- 'cpyext': [('objspace.usemodules.array', True),
- ('objspace.usemodules.micronumpy', True)],
+ 'cpyext': [('objspace.usemodules.array', True)],
'cppyy': [('objspace.usemodules.cpyext', True)],
}
module_suggests = {
diff --git a/pypy/module/cpyext/__init__.py b/pypy/module/cpyext/__init__.py
--- a/pypy/module/cpyext/__init__.py
+++ b/pypy/module/cpyext/__init__.py
@@ -36,7 +36,6 @@
import pypy.module.cpyext.object
import pypy.module.cpyext.stringobject
import pypy.module.cpyext.tupleobject
-import pypy.module.cpyext.ndarrayobject
import pypy.module.cpyext.setobject
import pypy.module.cpyext.dictobject
import pypy.module.cpyext.intobject
diff --git a/pypy/module/cpyext/api.py b/pypy/module/cpyext/api.py
--- a/pypy/module/cpyext/api.py
+++ b/pypy/module/cpyext/api.py
@@ -143,7 +143,7 @@
target.chmod(0444) # make the file read-only, to make sure that nobody
# edits it by mistake
-def copy_header_files(dstdir):
+def copy_header_files(dstdir, copy_numpy_headers):
# XXX: 20 lines of code to recursively copy a directory, really??
assert dstdir.check(dir=True)
headers = include_dir.listdir('*.h') + include_dir.listdir('*.inl')
@@ -151,15 +151,16 @@
headers.append(udir.join(name))
_copy_header_files(headers, dstdir)
- try:
- dstdir.mkdir('numpy')
- except py.error.EEXIST:
- pass
- numpy_dstdir = dstdir / 'numpy'
+ if copy_numpy_headers:
+ try:
+ dstdir.mkdir('numpy')
+ except py.error.EEXIST:
+ pass
+ numpy_dstdir = dstdir / 'numpy'
- numpy_include_dir = include_dir / 'numpy'
- numpy_headers = numpy_include_dir.listdir('*.h') +
numpy_include_dir.listdir('*.inl')
- _copy_header_files(numpy_headers, numpy_dstdir)
+ numpy_include_dir = include_dir / 'numpy'
+ numpy_headers = numpy_include_dir.listdir('*.h') +
numpy_include_dir.listdir('*.inl')
+ _copy_header_files(numpy_headers, numpy_dstdir)
class NotSpecified(object):
@@ -482,7 +483,6 @@
"PyComplex_Type": "space.w_complex",
"PyByteArray_Type": "space.w_bytearray",
"PyMemoryView_Type": "space.w_memoryview",
- "PyArray_Type": "space.gettypeobject(W_NDimArray.typedef)",
"PyBaseObject_Type": "space.w_object",
'PyNone_Type': 'space.type(space.w_None)',
'PyNotImplemented_Type': 'space.type(space.w_NotImplemented)',
@@ -773,6 +773,8 @@
"NOT_RPYTHON"
from pypy.module.cpyext.pyobject import make_ref
+ use_micronumpy = setup_micronumpy(space)
+
export_symbols = list(FUNCTIONS) + SYMBOLS_C + list(GLOBALS)
from rpython.translator.c.database import LowLevelDatabase
db = LowLevelDatabase()
@@ -1009,6 +1011,24 @@
pypy_decl_h.write('\n'.join(pypy_decls))
return functions
+separate_module_files = [source_dir / "varargwrapper.c",
+ source_dir / "pyerrors.c",
+ source_dir / "modsupport.c",
+ source_dir / "getargs.c",
+ source_dir / "abstract.c",
+ source_dir / "stringobject.c",
+ source_dir / "mysnprintf.c",
+ source_dir / "pythonrun.c",
+ source_dir / "sysmodule.c",
+ source_dir / "bufferobject.c",
+ source_dir / "cobject.c",
+ source_dir / "structseq.c",
+ source_dir / "capsule.c",
+ source_dir / "pysignals.c",
+ source_dir / "pythread.c",
+ source_dir / "missing.c",
+ ]
+
def build_eci(building_bridge, export_symbols, code):
"NOT_RPYTHON"
# Build code and get pointer to the structure
@@ -1062,24 +1082,7 @@
eci = ExternalCompilationInfo(
include_dirs=include_dirs,
- separate_module_files=[source_dir / "varargwrapper.c",
- source_dir / "pyerrors.c",
- source_dir / "modsupport.c",
- source_dir / "getargs.c",
- source_dir / "abstract.c",
- source_dir / "stringobject.c",
- source_dir / "mysnprintf.c",
- source_dir / "pythonrun.c",
- source_dir / "sysmodule.c",
- source_dir / "bufferobject.c",
- source_dir / "cobject.c",
- source_dir / "structseq.c",
- source_dir / "capsule.c",
- source_dir / "pysignals.c",
- source_dir / "pythread.c",
- source_dir / "ndarrayobject.c",
- source_dir / "missing.c",
- ],
+ separate_module_files= separate_module_files,
separate_module_sources=separate_module_sources,
compile_extra=compile_extra,
**kwds
@@ -1087,10 +1090,22 @@
return eci
+def setup_micronumpy(space):
+ use_micronumpy = space.config.objspace.usemodules.micronumpy
+ if not use_micronumpy:
+ return use_micronumpy
+ # import to register api functions by side-effect
+ import pypy.module.cpyext.ndarrayobject
+ global GLOBALS, SYMBOLS_C, separate_module_files
+ GLOBALS["PyArray_Type#"]= ('PyTypeObject*',
"space.gettypeobject(W_NDimArray.typedef)")
+ SYMBOLS_C += ['PyArray_Type', '_PyArray_FILLWBYTE', '_PyArray_ZEROS']
+ separate_module_files.append(source_dir / "ndarrayobject.c")
+ return use_micronumpy
def setup_library(space):
"NOT_RPYTHON"
from pypy.module.cpyext.pyobject import make_ref
+ use_micronumpy = setup_micronumpy(space)
export_symbols = list(FUNCTIONS) + SYMBOLS_C + list(GLOBALS)
from rpython.translator.c.database import LowLevelDatabase
@@ -1151,7 +1166,7 @@
setup_init_functions(eci, translating=True)
trunk_include = pypydir.dirpath() / 'include'
- copy_header_files(trunk_include)
+ copy_header_files(trunk_include, use_micronumpy)
def _load_from_cffi(space, name, path, initptr):
from pypy.module._cffi_backend import cffi1_module
diff --git a/pypy/module/cpyext/test/test_api.py
b/pypy/module/cpyext/test/test_api.py
--- a/pypy/module/cpyext/test/test_api.py
+++ b/pypy/module/cpyext/test/test_api.py
@@ -98,7 +98,7 @@
def test_copy_header_files(tmpdir):
- api.copy_header_files(tmpdir)
+ api.copy_header_files(tmpdir, True)
def check(name):
f = tmpdir.join(name)
assert f.check(file=True)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit