[ 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