On 1/11/19 5:28 PM, Kenneth Hoste wrote:
Dear Jakob,
On 18/12/2018 14:10, Jakob Schiøtz wrote:
Dear all,
One of my colleagues has a problem with the default Python build.
The curses module does not properly support unicode because the
Python executable is linked with libncurses instead of libncursesw.
Do you know if that is something that is easily fixable, or would
fixing this break something else?
Symptom:
~$ module load Python/3.6.6-foss-2018b
~$ python -c "import curses; curses.wrapper(lambda scr: scr.get_wch)"
Traceback (most recent call last):
File "<string>", line 1, in <module>
File
"/home/modules/software/Python/3.6.6-foss-2018b/lib/python3.6/curses/__init__.py",
line 94, in wrapper
return func(stdscr, *args, **kwds)
File "<string>", line 1, in <lambda>
AttributeError: '_curses.window' object has no attribute 'get_wch'
On other machines (e.g. my Macbook), this does not produce an error.
Linking to libncurses.a is currently hardcoded in the Python
easyblock, so that would have to be changed definitely in one way or
another.
It seems like ncursesw can be seen as a drop-in replacement for
ncurses with better locale support, based on
https://invisible-island.net/ncurses/ncurses.faq.html#growing_features .
But it's unclear how to best handle this w.r.t. backward compatibility.
Do we change the Python easyblock to (always) prefer linking to
ncursesw if it's available, and use ncurses only as a fallback?
Or do we add a custom easyconfig parameter to specify preference of
ncursesw vs ncurses?
Or maybe something else?
I would guess that no one will want to use ncurses if ncursesw is
available. So, I'd say "prefer linking to ncursesw if it's available,
and use ncurses only as a fallback".
Jens Jørgen
regards,
Kenneth