Update all libreadline easyconfig to link to ncurses#2206
Update all libreadline easyconfig to link to ncurses#2206boegel merged 1 commit intoeasybuilders:developfrom
Conversation
The full explanation for this can be found in issue easybuilders#1315. libreadline needs some terminal info. It can get this from libtermcap or ncurses, which are (as far as I understand it) API but not ABI compatible. On most (=all the ones I looked at) systems, libtermcap just gives a redirect to libtinfo. This libraries is created by splitting a part of the main ncurses library because most program only need this and not full ncurses. In EB we don't do this and it's one big fat library. Also, libreadline and ncurses don't mix. It's next to impossible to use both of them in the same code. The idea is that, the code that uses libreadline can choose which termcap library to use, either libtermcap or ncurses. But as said before, on most distro's the leads to the same library. So, my proposed solution is: we explicitly link libreadline to ncurses. This will definitely solve the problem in this PR but I'm not entirely sure about potential fallout. It seems like most EB stuff already links to ncurses when using libreadline. I'm still guessing about why this issue does not pop up in RHEL (and derivates) but on Debian we do hit it. Relevant bugreport: https://bugzilla.redhat.com/show_bug.cgi?id=499837
|
Test report by @wpoely86 |
|
On Debian 8, this fixes the issue: |
|
Test report by @boegel |
|
@wpoely86: seems to be working fine... I do want to test this on some other systems though, e.g. SuSE. |
|
Easyconfigs unit test suite PASSed (see https://jenkins1.ugent.be/job/easybuild-easyconfigs-pr-builder/5199/console for more details). This pull request is now ready for review/testing. Please try and find someone who can tackle this; contact @boegel if you're not sure what to do. |
|
Test report by @boegel |
|
@boegel actually, just compling |
|
Suggestions for stuff to build on top of these libreadlines? Python (bare)? What else? |
|
yeah, python (or R) should do the trick. |
|
the resulting binary should be tested to work. |
|
@wpoely86: how exactly? interactive use? |
|
yeah, that's when |
|
I've tested this on Debian and it's fine. |
|
Easyconfigs unit test suite PASSed (see https://jenkins1.ugent.be/job/easybuild-easyconfigs-pr-builder/5201/console for more details). This pull request is now ready for review/testing. Please try and find someone who can tackle this; contact @boegel if you're not sure what to do. |
|
Test report by @wpoely86 |
|
@wpoely86: please edit the test report to explain why it failed also: pro tip: run without |
|
It's not missing deps. I was doing strange stuff. anyway, the errors are not related to this PR. I'm trying again in a clean environment. |
|
Test report by @hajgato |
|
@wpoely86: I tested a |
|
Test report by @wpoely86 |
|
I'm not going to merge this with a failed test report without follow-up... Would be great to get this in for EB v2.5.0 |
|
@boegel look at the test report. It's fine. It's building the same ncurses twice but once with the full toolchain (which fails on a download). |
|
Test report by @boegel |
|
OK, I see no reason to hold this back further, let's hope this gets us out of the woods. Thanks for hunting this down @wpoely86! |
Update all libreadline easyconfig to link to ncurses
The full explanation for this can be found in issue #1315.
libreadline needs some terminal info. It can get this from libtermcap or
ncurses, which are (as far as I understand it) API but not ABI
compatible. On most (=all the ones I looked at) systems, libtermcap just
gives a redirect to libtinfo. This libraries is created by splitting a
part of the main ncurses library because most program only need this and
not full ncurses. In EB we don't do this and it's one big fat library.
Also, libreadline and ncurses don't mix. It's next to impossible to use
both of them in the same code.
The idea is that, the code that uses libreadline can choose which
termcap library to use, either libtermcap or ncurses. But as said
before, on most distro's the leads to the same library.
So, my proposed solution is: we explicitly link libreadline to ncurses.
This will definitely solve the problem in this PR but I'm not entirely
sure about potential fallout. It seems like most EB stuff already links
to ncurses when using libreadline. I'm still guessing about why this
issue does not pop up in RHEL (and derivates) but on Debian we do hit
it.
Relevant bugreport: https://bugzilla.redhat.com/show_bug.cgi?id=499837