The new ncurses library that is currently sitting in the NEW queue will have a significant change that, if we’ve done it right, should be an invisible change. If we’ve got it wrong, then the BTS (and us) may be a little busy.
What has happened is that the low-level terminfo library has been split out from the general ncurses library making a new package called libtinfo5. This also means that there only needs to be one libtinfo5 package because at this low level it doesn’t care about wide characters, so there is no libtinfo5w (and that gets important later). libncurses is linked to libtinfo so from the point of view of using libncurses there should be no major change in how things are done.
So, why bother?
The way ncurses was built before causes a nice long “conga line of trouble”. There really are (was) two main ncurses library packages, libncurses5 and libncursesw5. The w meant it was for wide characters. So anything that uses ncurses needs to decide which one to link to or perhaps both. A problem came up with the readline library that needs to link to ncurses because programs that link to IT (such as python) want a wide library but other programs do not. One solution is to have two readline libraries, but then any other library would need to be compiled and built twice as well and so on and so on.
readline didn’t really want the full ncurses library, it only wants the terminfo part but there was (until now) no way of picking up that bit only. Once this new version of ncurses gets released then readline can link to libterminfo which is agnostic to wide and non-wide characters which means it is as well which them means everything else should, in theory work. If you are using ncurses for some low-level terminfo work only, you may want to have a look to see if you can link to libtinfo5 only which will mean depending on libtinfo5 and not libncurses5 or libncursesw5.
I’m just writing this up mainly and uploading the packages, the bulk of the work was done by Sven and Matthias as well as some help from our ever-helpful upstream Thomas.
Could you please explain why the non-wide-character ncurses library still exists in Debian? In Linux From Scratch, I have successfully eliminated it years ago (because applications that don’t support Unicode have no right to exist now), see http://www.linuxfromscratch.org/lfs/view/development/chapter06/ncurses.html
It’s probably something we should seriously look into. As to why don’t we get rid of it (or at least have a plan to) the answer is; I don’t really know.
The problem is that there are a few dozen libraries linking against libncurses5, and if those are changed to link against libncursesw5 instead, we get a very ugly transition period where libncurses5 and libncursesw5 are linked into the same process which is going to lead to crashes. Avoiding that situation is actually the motivation for the libtinfo splitout.
I would love to get rid of the non-wide development packages (libncurses5 has to be kept for LSB compatibility), but it’s really difficult.