New submission from Mark Dickinson <dicki...@gmail.com>: 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. ---------- components: Build messages: 92312 nosy: marketdickinson severity: normal status: open title: curses module build failure (ncurses 5.7) versions: Python 2.7 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue6848> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com