[pypy-commit] pypy py3k-test-cpyext: Don't import rpython.tool.udir from pypy.tool.cpyext.extbuild, since it's not py3-compatible

rlamy pypy.commits at gmail.com
Sat Oct 1 22:57:49 EDT 2016


Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: py3k-test-cpyext
Changeset: r87512:4e5503abe3ab
Date: 2016-10-02 03:04 +0100
http://bitbucket.org/pypy/pypy/changeset/4e5503abe3ab/

Log:	Don't import rpython.tool.udir from pypy.tool.cpyext.extbuild, since
	it's not py3-compatible

diff --git a/pypy/module/cpyext/test/test_cpyext.py b/pypy/module/cpyext/test/test_cpyext.py
--- a/pypy/module/cpyext/test/test_cpyext.py
+++ b/pypy/module/cpyext/test/test_cpyext.py
@@ -13,6 +13,7 @@
 from rpython.tool.identity_dict import identity_dict
 from rpython.tool import leakfinder
 from rpython.rlib import rawrefcount
+from rpython.tool.udir import udir
 
 only_pypy ="config.option.runappdirect and '__pypy__' not in sys.builtin_module_names"
 
@@ -64,6 +65,7 @@
         else:
             compile_extra = link_extra = None
     return SpaceCompiler(space,
+        builddir_base=udir,
         include_extra=api.include_dirs,
         compile_extra=compile_extra,
         link_extra=link_extra,
@@ -219,6 +221,7 @@
     def setup_class(cls):
         space = cls.space
         cls.w_here = space.wrap(str(HERE))
+        cls.w_udir = space.wrap(str(udir))
         if not cls.runappdirect:
             cls.sys_info = get_cpyext_info(space)
             cls.w_runappdirect = space.wrap(cls.runappdirect)
@@ -230,11 +233,11 @@
             #state.non_heaptypes_w[:] = []
             cls.w_debug_collect = space.wrap(interp2app(debug_collect))
         else:
-            cls.sys_info = get_sys_info_app()
+            cls.sys_info = get_sys_info_app(udir)
             def w_import_module(self, name, init=None, body='', filename=None,
                     include_dirs=None, PY_SSIZE_T_CLEAN=False):
                 from extbuild import get_sys_info_app
-                sys_info = get_sys_info_app()
+                sys_info = get_sys_info_app(self.udir)
                 return sys_info.import_module(
                     name, init=init, body=body, filename=filename,
                     include_dirs=include_dirs,
diff --git a/pypy/tool/cpyext/extbuild.py b/pypy/tool/cpyext/extbuild.py
--- a/pypy/tool/cpyext/extbuild.py
+++ b/pypy/tool/cpyext/extbuild.py
@@ -2,7 +2,6 @@
 import sys
 import py
 from pypy import pypydir
-from rpython.tool.udir import udir
 from rpython.translator.gensupp import uniquemodulename
 
 if os.name != 'nt':
@@ -17,8 +16,9 @@
 
     Note: here, 'system' means OS + target interpreter + test config + ...
     """
-    def __init__(self, include_extra=None, compile_extra=None, link_extra=None,
-            extra_libs=None, ext=None):
+    def __init__(self, builddir_base, include_extra=None, compile_extra=None,
+            link_extra=None, extra_libs=None, ext=None):
+        self.builddir_base = builddir_base
         self.include_extra = include_extra or []
         self.compile_extra = compile_extra
         self.link_extra = link_extra
@@ -39,7 +39,7 @@
         """
         include_dirs = include_dirs or []
         modname = name.split('.')[-1]
-        dirname = (udir/uniquemodulename('module')).ensure(dir=1)
+        dirname = (py.path.local(self.builddir_base)/uniquemodulename('module')).ensure(dir=1)
         if source_strings:
             assert not source_files
             files = convert_sources_to_files(source_strings, dirname)
@@ -64,7 +64,6 @@
         if filename is None, the module name will be used to construct the
         filename.
         """
-        name = name.encode()
         if body or init:
             body = body.encode()
             if init is None:
@@ -227,7 +226,7 @@
         raise RuntimeError("This interpreter does not define a filename "
             "suffix for C extensions!")
 
-def get_sys_info_app():
+def get_sys_info_app(base_dir):
     from distutils.sysconfig import get_python_inc
     if sys.platform == 'win32':
         compile_extra = ["/we4013"]
@@ -240,6 +239,7 @@
             "-O0", "-g", "-Werror=implicit-function-declaration", "-fPIC"]
         link_extra = None
     return ExtensionCompiler(
+        builddir_base=base_dir,
         include_extra=[get_python_inc()],
         compile_extra=compile_extra,
         link_extra=link_extra,


More information about the pypy-commit mailing list