[ python-Bugs-1324799 ] Curses module doesn't install on Solaris 2.8

SourceForge.net noreply at sourceforge.net
Mon May 15 04:06:24 CEST 2006


Bugs item #1324799, was opened at 2005-10-12 07:21
Message generated for change (Comment added) made by enchanter
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1324799&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Python Library
Group: Python 2.4
Status: Open
Resolution: None
Priority: 5
Submitted By: Andrew Koenig (arkoenig)
Assigned to: A.M. Kuchling (akuchling)
Summary: Curses module doesn't install on Solaris 2.8

Initial Comment:
During installation, the following happens:

building '_curses' extension
gcc -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -fPIC -
fno-strict-aliasing -I. -I/tmp/build-gnu20746/Python-
2.4.2/./Include -I/usr/gnu/include -I/usr/local/include -
I/tmp/build-gnu20746/Python-2.4.2/Include -I/tmp/build-
gnu20746/Python-2.4.2 -c /tmp/build-gnu20746/Python-
2.4.2/Modules/_cursesmodule.c -o build/temp.solaris-2.8-
sun4u-2.4/_cursesmodule.o
/tmp/build-gnu20746/Python-
2.4.2/Modules/_cursesmodule.c: In 
function 'PyCursesWindow_GetStr':
/tmp/build-gnu20746/Python-
2.4.2/Modules/_cursesmodule.c:822: warning: implicit 
declaration of function 'mvwgetnstr'
gcc -shared build/temp.solaris-2.8-sun4u-
2.4/_cursesmodule.o -L/usr/gnu/lib -L/usr/local/lib -lcurses -
ltermcap -o build/lib.solaris-2.8-sun4u-2.4/_curses.so
*** WARNING: renaming "_curses" since importing it 
failed: ld.so.1: ./python: fatal: relocation error: file 
build/lib.solaris-2.8-sun4u-2.4/_curses.so: symbol 
mvwgetnstr: referenced symbol not found
building '_curses_panel' extension
gcc -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -fPIC -
fno-strict-aliasing -I. -I/tmp/build-gnu20746/Python-
2.4.2/./Include -I/usr/gnu/include -I/usr/local/include -
I/tmp/build-gnu20746/Python-2.4.2/Include -I/tmp/build-
gnu20746/Python-2.4.2 -c /tmp/build-gnu20746/Python-
2.4.2/Modules/_curses_panel.c -o build/temp.solaris-2.8-
sun4u-2.4/_curses_panel.o
gcc -shared build/temp.solaris-2.8-sun4u-
2.4/_curses_panel.o -L/usr/gnu/lib -L/usr/local/lib -lpanel -
lcurses -ltermcap -o build/lib.solaris-2.8-sun4u-
2.4/_curses_panel.so
*** WARNING: renaming "_curses_panel" since importing 
it failed: No module named _curses

----------------------------------------------------------------------

Comment By: Tim Mooney (enchanter)
Date: 2006-05-14 21:06

Message:
Logged In: YES 
user_id=36222

First, your patch does fix the problem.

Next, Solaris 8+ *does* have mvwgetnwstr, the problem is
that it's in the X/Open version of the curses library, not
the (old, stinky, backwards-compatible) default version of
libcurses.

Solaris 10's man pages do a much better job of explaining
the differences, on 10 one can look at

  man -s 3xcurses libcurses

vs.

  man libcurses

If you want to compile and link against the X/Open version
of the curses library, you need to have

 -I/usr/xpg4/include

in CPPFLAGS and CFLAGS, and either

 -L/usr/xpg4/lib

or

 -L/usr/xpg4/lib/64

(depending on whether you're compiling for ILP32 or LP64).
/usr/xpg4/lib and /usr/xpg4/lib/64 are also not in the
default loader search path, so you either need to modify the
loader search path (man crle) or your also need a
-R/usr/xpg4/lib or -R/usr/xpg4/lib/64 in LDFLAGS too.

Because of the way the _cursesmodule is currently written,
though, it assumes that if __sun is defined as a
preprocessor symbol, STRICT_SYSV_CURSES should be defined,
which actually causes problems if you try build with with
newer X/Open curses.

It should be possible to support building against either
curses implementation on Solaris, but for now your patch at
least makes _cursesmodule compile with the default version.

----------------------------------------------------------------------

Comment By: A.M. Kuchling (akuchling)
Date: 2005-11-22 08:45

Message:
Logged In: YES 
user_id=11375

One use of mvwgetnwstr in the module is replaced by a manual
emulation of the function, if STRICT_SYSV_CURSES is true,
but another use isn't replaced; I suspect this is the problem.

I've attached a patch that ensures that mvwgetnstr() is only
used when STRICT_SYSV_CURSES is undefined.  Please let me
know if this fixes the compilation problem.


----------------------------------------------------------------------

Comment By: Nelson Arzola (narzola)
Date: 2005-10-29 03:01

Message:
Logged In: YES 
user_id=39023

I would like to add that this problem also exists under
Solaris 2.10.  For some reason, mvwgetnstr is not defined
under Solaris 10.  When I use nm to get the symbols out of
/usr/lib/libcurses.so.1, I do not find it.

When I replace the two references in
/dsk/data0/build/Python-2.4.2/Modules/_cursesmodule.c from
mvwgetnstr to mvwgetnwstr, I was able to compile the module
and pass the appropriate tests.

Since I don't use curses, I really don't have a good way to
test this.

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1324799&group_id=5470


More information about the Python-bugs-list mailing list