Author: Armin Rigo <ar...@tunes.org>
Branch: 
Changeset: r89114:17a956e1c059
Date: 2016-12-17 14:10 +0100
http://bitbucket.org/pypy/pypy/changeset/17a956e1c059/

Log:    Add the config option 'disable_entrypoints' for embedding PyPy
        together with another RPython VM

diff --git a/pypy/config/pypyoption.py b/pypy/config/pypyoption.py
--- a/pypy/config/pypyoption.py
+++ b/pypy/config/pypyoption.py
@@ -190,6 +190,12 @@
                "make sure that all calls go through space.call_args",
                default=False),
 
+    BoolOption("disable_entrypoints",
+               "Disable external entry points, notably the"
+               " cpyext module and cffi's embedding mode.",
+               default=False,
+               requires=[("objspace.usemodules.cpyext", False)]),
+
     OptionDescription("std", "Standard Object Space Options", [
         BoolOption("withtproxy", "support transparent proxies",
                    default=True),
diff --git a/pypy/goal/targetpypystandalone.py 
b/pypy/goal/targetpypystandalone.py
--- a/pypy/goal/targetpypystandalone.py
+++ b/pypy/goal/targetpypystandalone.py
@@ -83,12 +83,18 @@
                 return 1
         return exitcode
 
+    return entry_point, get_additional_entrypoints(space)
+
+
+def get_additional_entrypoints(space):
     # register the minimal equivalent of running a small piece of code. This
     # should be used as sparsely as possible, just to register callbacks
-
     from rpython.rlib.entrypoint import entrypoint_highlevel
     from rpython.rtyper.lltypesystem import rffi, lltype
 
+    if space.config.objspace.disable_entrypoints:
+        return {}
+
     @entrypoint_highlevel('main', [rffi.CCHARP, rffi.INT],
                           c_name='pypy_setup_home')
     def pypy_setup_home(ll_home, verbose):
@@ -188,11 +194,11 @@
             return -1
         return 0
 
-    return entry_point, {'pypy_execute_source': pypy_execute_source,
-                         'pypy_execute_source_ptr': pypy_execute_source_ptr,
-                         'pypy_init_threads': pypy_init_threads,
-                         'pypy_thread_attach': pypy_thread_attach,
-                         'pypy_setup_home': pypy_setup_home}
+    return {'pypy_execute_source': pypy_execute_source,
+            'pypy_execute_source_ptr': pypy_execute_source_ptr,
+            'pypy_init_threads': pypy_init_threads,
+            'pypy_thread_attach': pypy_thread_attach,
+            'pypy_setup_home': pypy_setup_home}
 
 
 # _____ Define and setup target ___
diff --git a/pypy/module/_cffi_backend/__init__.py 
b/pypy/module/_cffi_backend/__init__.py
--- a/pypy/module/_cffi_backend/__init__.py
+++ b/pypy/module/_cffi_backend/__init__.py
@@ -71,10 +71,11 @@
     def __init__(self, space, *args):
         MixedModule.__init__(self, space, *args)
         #
-        # import 'embedding', which has the side-effect of registering
-        # the 'pypy_init_embedded_cffi_module' entry point
-        from pypy.module._cffi_backend import embedding
-        embedding.glob.space = space
+        if not space.config.objspace.disable_entrypoints:
+            # import 'embedding', which has the side-effect of registering
+            # the 'pypy_init_embedded_cffi_module' entry point
+            from pypy.module._cffi_backend import embedding
+            embedding.glob.space = space
 
 
 def get_dict_rtld_constants():
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to