Author: Remi Meier <[email protected]>
Branch: stmgc-c4
Changeset: r66826:92cab05fc583
Date: 2013-09-07 13:51 +0200
http://bitbucket.org/pypy/pypy/changeset/92cab05fc583/
Log: merge default and fix "__thread before static" error in
debug_print.c
diff --git a/lib_pypy/_tkinter/tklib.py b/lib_pypy/_tkinter/tklib.py
--- a/lib_pypy/_tkinter/tklib.py
+++ b/lib_pypy/_tkinter/tklib.py
@@ -1,6 +1,7 @@
# C bindings with libtcl and libtk.
from cffi import FFI
+import sys
tkffi = FFI()
@@ -102,6 +103,17 @@
int Tk_GetNumMainWindows();
""")
+# XXX find a better way to detect paths
+# XXX pick up CPPFLAGS and LDFLAGS and add to these paths?
+if sys.platform.startswith("openbsd"):
+ incdirs = ['/usr/local/include/tcl8.5', '/usr/local/include/tk8.5',
'/usr/X11R6/include']
+ linklibs = ['tk85', 'tcl85']
+ libdirs = ['/usr/local/lib', '/usr/X11R6/lib']
+else:
+ incdirs=['/usr/include/tcl'],
+ linklibs=['tcl', 'tk'],
+ libdirs = []
+
tklib = tkffi.verify("""
#include <tcl.h>
#include <tk.h>
@@ -109,6 +121,7 @@
char *get_tk_version() { return TK_VERSION; }
char *get_tcl_version() { return TCL_VERSION; }
""",
-include_dirs=['/usr/include/tcl'],
-libraries=['tcl', 'tk'],
+include_dirs=incdirs,
+libraries=linklibs,
+library_dirs = libdirs
)
diff --git a/pypy/interpreter/baseobjspace.py b/pypy/interpreter/baseobjspace.py
--- a/pypy/interpreter/baseobjspace.py
+++ b/pypy/interpreter/baseobjspace.py
@@ -77,12 +77,12 @@
raise NotImplementedError("only for interp-level user subclasses "
"from typedef.py")
- def getname(self, space, default='?'):
+ def getname(self, space):
try:
return space.str_w(space.getattr(self, space.wrap('__name__')))
except OperationError, e:
if e.match(space, space.w_TypeError) or e.match(space,
space.w_AttributeError):
- return default
+ return '?'
raise
def getaddrstring(self, space):
diff --git a/pypy/interpreter/function.py b/pypy/interpreter/function.py
--- a/pypy/interpreter/function.py
+++ b/pypy/interpreter/function.py
@@ -482,17 +482,16 @@
space.abstract_isinstance_w(w_firstarg, self.w_class)):
pass # ok
else:
- clsdescr = self.w_class.getname(space, "")
- if clsdescr:
+ clsdescr = self.w_class.getname(space)
+ if clsdescr and clsdescr != '?':
clsdescr += " instance"
else:
clsdescr = "instance"
if w_firstarg is None:
instdescr = "nothing"
else:
- instname = space.abstract_getclass(w_firstarg).getname(space,
- "")
- if instname:
+ instname = space.abstract_getclass(w_firstarg).getname(space)
+ if instname and instname != '?':
instdescr = instname + " instance"
else:
instdescr = "instance"
diff --git a/pypy/interpreter/test/test_argument.py
b/pypy/interpreter/test/test_argument.py
--- a/pypy/interpreter/test/test_argument.py
+++ b/pypy/interpreter/test/test_argument.py
@@ -128,7 +128,7 @@
def type(self, obj):
class Type:
- def getname(self, space, default='?'):
+ def getname(self, space):
return type(obj).__name__
return Type()
diff --git a/pypy/module/_minimal_curses/fficurses.py
b/pypy/module/_minimal_curses/fficurses.py
--- a/pypy/module/_minimal_curses/fficurses.py
+++ b/pypy/module/_minimal_curses/fficurses.py
@@ -26,6 +26,9 @@
def try_ldflags():
yield ExternalCompilationInfo(libraries=['curses'])
yield ExternalCompilationInfo(libraries=['curses', 'tinfo'])
+ yield ExternalCompilationInfo(libraries=['ncurses'])
+ yield ExternalCompilationInfo(libraries=['ncurses'],
+ library_dirs=['/usr/lib64'])
def try_tools():
try:
diff --git a/pypy/module/_weakref/interp__weakref.py
b/pypy/module/_weakref/interp__weakref.py
--- a/pypy/module/_weakref/interp__weakref.py
+++ b/pypy/module/_weakref/interp__weakref.py
@@ -175,8 +175,8 @@
state = '; dead'
else:
typename = space.type(w_obj).getname(space)
- objname = w_obj.getname(space, '')
- if objname:
+ objname = w_obj.getname(space)
+ if objname and objname != '?':
state = "; to '%s' (%s)" % (typename, objname)
else:
state = "; to '%s'" % (typename,)
diff --git a/pypy/objspace/descroperation.py b/pypy/objspace/descroperation.py
--- a/pypy/objspace/descroperation.py
+++ b/pypy/objspace/descroperation.py
@@ -597,8 +597,8 @@
if num1 != num2:
lt = num1 # if obj1 is a number, it is Lower Than obj2
else:
- name1 = w_typ1.getname(space, "")
- name2 = w_typ2.getname(space, "")
+ name1 = w_typ1.getname(space)
+ name2 = w_typ2.getname(space)
if name1 != name2:
lt = name1 < name2
else:
diff --git a/pypy/objspace/std/typeobject.py b/pypy/objspace/std/typeobject.py
--- a/pypy/objspace/std/typeobject.py
+++ b/pypy/objspace/std/typeobject.py
@@ -502,6 +502,12 @@
else:
return w_self.name
+ def getname(w_self, space):
+ name = w_self.name
+ if name is None:
+ name = '?'
+ return name
+
def add_subclass(w_self, w_subclass):
space = w_self.space
if not space.config.translation.rweakref:
diff --git a/rpython/jit/backend/x86/regalloc.py
b/rpython/jit/backend/x86/regalloc.py
--- a/rpython/jit/backend/x86/regalloc.py
+++ b/rpython/jit/backend/x86/regalloc.py
@@ -28,6 +28,7 @@
from rpython.rlib.rarithmetic import r_longlong, r_uint
from rpython.rtyper.lltypesystem.lloperation import llop
from rpython.rtyper.lltypesystem import lltype, rffi, rstr
+from rpython.rtyper.lltypesystem.lloperation import llop
class X86RegisterManager(RegisterManager):
diff --git a/rpython/rtyper/test/test_rclass.py
b/rpython/rtyper/test/test_rclass.py
--- a/rpython/rtyper/test/test_rclass.py
+++ b/rpython/rtyper/test/test_rclass.py
@@ -1192,3 +1192,19 @@
assert self.interpret(f, [True]) == f(True)
assert self.interpret(f, [False]) == f(False)
+
+ def test_init_with_star_args(self):
+ class Base(object):
+ def __init__(self, a, b):
+ self.a = a
+ self.b = b
+ class A(Base):
+ def __init__(self, *args):
+ Base.__init__(self, *args)
+ self.c = -1
+ cls = [Base, A]
+
+ def f(k, a, b):
+ return cls[k](a, b).b
+
+ assert self.interpret(f, [1, 4, 7]) == 7
diff --git a/rpython/translator/c/src/debug_print.c
b/rpython/translator/c/src/debug_print.c
--- a/rpython/translator/c/src/debug_print.c
+++ b/rpython/translator/c/src/debug_print.c
@@ -19,8 +19,8 @@
FILE *pypy_debug_file = NULL; /* XXX make it thread-local too? */
static unsigned char debug_ready = 0;
static unsigned char debug_profile = 0;
-__thread_if_stm static char debug_start_colors_1[32];
-__thread_if_stm static char debug_start_colors_2[28];
+static __thread_if_stm char debug_start_colors_1[32];
+static __thread_if_stm char debug_start_colors_2[28];
__thread_if_stm char pypy_debug_threadid[16] = {0};
static char *debug_stop_colors = "";
static char *debug_prefix = NULL;
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit