[pypy-commit] pypy default: _tkinter as an out-of-line module

arigo noreply at buildbot.pypy.org
Tue May 19 21:49:31 CEST 2015


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r77409:bb2d681d55e6
Date: 2015-05-19 21:49 +0200
http://bitbucket.org/pypy/pypy/changeset/bb2d681d55e6/

Log:	_tkinter as an out-of-line module

diff --git a/lib_pypy/_tkinter/__init__.py b/lib_pypy/_tkinter/__init__.py
--- a/lib_pypy/_tkinter/__init__.py
+++ b/lib_pypy/_tkinter/__init__.py
@@ -10,11 +10,7 @@
 class TclError(Exception):
     pass
 
-import cffi
-try:
-    from .tklib import tklib, tkffi
-except cffi.VerificationError:
-    raise ImportError("Tk headers and development libraries are required")
+from .tklib_cffi import ffi as tkffi, lib as tklib
 
 from .app import TkApp
 from .tclobj import TclObject as Tcl_Obj
diff --git a/lib_pypy/_tkinter/app.py b/lib_pypy/_tkinter/app.py
--- a/lib_pypy/_tkinter/app.py
+++ b/lib_pypy/_tkinter/app.py
@@ -1,6 +1,6 @@
 # The TkApp class.
 
-from .tklib import tklib, tkffi
+from .tklib_cffi import ffi as tkffi, lib as tklib
 from . import TclError
 from .tclobj import TclObject, FromObj, FromTclString, AsObj, TypeCache
 
diff --git a/lib_pypy/_tkinter/tclobj.py b/lib_pypy/_tkinter/tclobj.py
--- a/lib_pypy/_tkinter/tclobj.py
+++ b/lib_pypy/_tkinter/tclobj.py
@@ -1,6 +1,6 @@
 # TclObject, conversions with Python objects
 
-from .tklib import tklib, tkffi
+from .tklib_cffi import ffi as tkffi, lib as tklib
 
 class TypeCache(object):
     def __init__(self):
diff --git a/lib_pypy/_tkinter/tklib.py b/lib_pypy/_tkinter/tklib_build.py
rename from lib_pypy/_tkinter/tklib.py
rename to lib_pypy/_tkinter/tklib_build.py
--- a/lib_pypy/_tkinter/tklib.py
+++ b/lib_pypy/_tkinter/tklib_build.py
@@ -142,7 +142,7 @@
         if os.path.isdir(incdirs[0]):
             break
 
-tklib = tkffi.verify("""
+tkffi.set_source("_tkinter.tklib_cffi", """
 #include <tcl.h>
 #include <tk.h>
 
@@ -153,3 +153,6 @@
 libraries=linklibs,
 library_dirs = libdirs
 )
+
+if __name__ == "__main__":
+    tkffi.compile()
diff --git a/pypy/tool/release/package.py b/pypy/tool/release/package.py
--- a/pypy/tool/release/package.py
+++ b/pypy/tool/release/package.py
@@ -57,7 +57,7 @@
     if not sys.platform == 'win32':
         modules += ['_curses_build.py', '_syslog_build.py', '_gdbm_build.py']
     if not options.no_tk:
-        modules.append('_tkinter')
+        modules.append('_tkinter/tklib_build.py')
     for module in modules:
         if module.endswith('.py'):
             args = [str(pypy_c), module]


More information about the pypy-commit mailing list