Message92312
There seems to be a problem building the curses module on systems with
ncurses 5.7. The following output was produced on OS X 10.6, on a trunk
build; I'm not sure whether this problem is Mac-specific (or 64-bit
specific).
building '_curses' extension
gcc -fno-strict-aliasing -g -Wall -Wstrict-prototypes -
I/Users/dickinsm/python/svn/trunk/Mac/Include -I. -I./Include -IInclude
-I/Users/dickinsm/python/svn/trunk -c
/Users/dickinsm/python/svn/trunk/Modules/_cursesmodule.c -o
build/temp.macosx-10.4-i386-2.7-
pydebug/Users/dickinsm/python/svn/trunk/Modules/_cursesmodule.o
/Users/dickinsm/python/svn/trunk/Modules/_cursesmodule.c: In function
‘PyCursesWindow_EchoChar’:
/Users/dickinsm/python/svn/trunk/Modules/_cursesmodule.c:805: error:
dereferencing pointer to incomplete type
/Users/dickinsm/python/svn/trunk/Modules/_cursesmodule.c:812: warning:
control reaches end of non-void function
/Users/dickinsm/python/svn/trunk/Modules/_cursesmodule.c: In function
‘PyCursesWindow_NoOutRefresh’:
/Users/dickinsm/python/svn/trunk/Modules/_cursesmodule.c:1230: error:
dereferencing pointer to incomplete type
/Users/dickinsm/python/svn/trunk/Modules/_cursesmodule.c:1261: warning:
control reaches end of non-void function
/Users/dickinsm/python/svn/trunk/Modules/_cursesmodule.c: In function
‘PyCursesWindow_Refresh’:
/Users/dickinsm/python/svn/trunk/Modules/_cursesmodule.c:1372: error:
dereferencing pointer to incomplete type
/Users/dickinsm/python/svn/trunk/Modules/_cursesmodule.c:1402: warning:
control reaches end of non-void function
/Users/dickinsm/python/svn/trunk/Modules/_cursesmodule.c: In function
‘PyCursesWindow_SubWin’:
/Users/dickinsm/python/svn/trunk/Modules/_cursesmodule.c:1438: error:
dereferencing pointer to incomplete type
Here's a relevant excerpt from _cursesmodule.c (lines 804--811)
#ifdef WINDOW_HAS_FLAGS
if (self->win->_flags & _ISPAD)
return PyCursesCheckERR(pechochar(self->win, ch | attr),
"echochar");
else
#endif
return PyCursesCheckERR(wechochar(self->win, ch | attr),
"echochar");
Here self->win has type WINDOW; the problem is that as of ncurses 5.7, the internals of the WINDOW type (and much else besides) are deliberately hidden (by default) from users of the library; there's a
preprocessor constant NCURSES_OPAQUE that controls this.
So an obvious workaround is to set NCURSES_OPAQUE=0 somewhere in the
Python build process; however, that may be the wrong thing to do if the ncurses developers are planning to mess with the ncurses internals in
the near future (which would explain the NCURSES_OPAQUE business). I
don't know whether there's some alternative 'official' way to
distinguish between ncurses windows and pads. |
|
Date |
User |
Action |
Args |
2009-09-06 12:53:32 | mark.dickinson | set | recipients:
+ mark.dickinson |
2009-09-06 12:53:31 | mark.dickinson | set | messageid: <1252241611.96.0.24137998755.issue6848@psf.upfronthosting.co.za> |
2009-09-06 12:53:30 | mark.dickinson | link | issue6848 messages |
2009-09-06 12:53:29 | mark.dickinson | create | |
|