Skip to content

Update all libreadline easyconfig to link to ncurses#2206

Merged
boegel merged 1 commit intoeasybuilders:developfrom
wpoely86:libreadline2
Dec 12, 2015
Merged

Update all libreadline easyconfig to link to ncurses#2206
boegel merged 1 commit intoeasybuilders:developfrom
wpoely86:libreadline2

Conversation

@wpoely86
Copy link
Copy Markdown
Member

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

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
@wpoely86
Copy link
Copy Markdown
Member Author

Test report by @wpoely86
SUCCESS
Build succeeded for 3 out of 3 (3 easyconfigs in this PR)
Linux debian 8.1, Intel(R) Xeon(R) CPU 5130 @ 2.00GHz, Python 2.7.9
See https://gist.github.com/5dd2ced03bb38bf527cc for a full test report.

@wpoely86
Copy link
Copy Markdown
Member Author

On Debian 8, this fixes the issue:

$ ld --trace-symbol=UP $EBROOTLIBREADLINE/lib/libreadline.so
/home/opt/easybuild/software/libreadline/6.3-intel-2015a/lib/libreadline.so: reference to UP
/home/opt/easybuild/software/ncurses/5.9-intel-2015a/lib/libncurses.so.5: definition of UP
ld: warning: cannot find entry symbol _start; not setting start address

@wpoely86 wpoely86 mentioned this pull request Dec 10, 2015
@boegel
Copy link
Copy Markdown
Member

boegel commented Dec 10, 2015

Test report by @boegel
SUCCESS
Build succeeded for 6 out of 6 (6 easyconfigs in this PR)
Linux SL 6.7, Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz, Python 2.6.6
See https://gist.github.com/f35a0b2e77b7b5a10419 for a full test report.

@boegel
Copy link
Copy Markdown
Member

boegel commented Dec 10, 2015

@wpoely86: seems to be working fine...

$ ld --trace-symbol=UP $EBROOTLIBREADLINE/lib/libreadline.so
/user/scratch/gent/vsc400/vsc40023/easybuild_REGTEST/SL6/sandybridge/software/libreadline/6.3-intel-2015b/lib/libreadline.so: reference to UP
/user/scratch/gent/vsc400/vsc40023/easybuild_REGTEST/SL6/sandybridge/software/ncurses/5.9-intel-2015b/lib/libncurses.so.5: definition of UP
ld: warning: cannot find entry symbol _start; not setting start address

I do want to test this on some other systems though, e.g. SuSE.

@boegel boegel added this to the v2.5.0 milestone Dec 10, 2015
@hpcugentbot
Copy link
Copy Markdown

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.

@boegel
Copy link
Copy Markdown
Member

boegel commented Dec 10, 2015

Test report by @boegel
SUCCESS
Build succeeded for 2 out of 2 (2 easyconfigs in this PR)
Linux SLES 11_SP2, Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz, Python 2.6.9
See https://gist.github.com/b4c8652e6119059f1e89 for a full test report.

@wpoely86
Copy link
Copy Markdown
Member Author

@boegel actually, just compling libreadline will most certainly not break because of this. It's application uses it that should be check.

@boegel
Copy link
Copy Markdown
Member

boegel commented Dec 10, 2015

Suggestions for stuff to build on top of these libreadlines? Python (bare)? What else?

@wpoely86
Copy link
Copy Markdown
Member Author

yeah, python (or R) should do the trick.

@wpoely86
Copy link
Copy Markdown
Member Author

the resulting binary should be tested to work.

@boegel
Copy link
Copy Markdown
Member

boegel commented Dec 10, 2015

@wpoely86: how exactly? interactive use?

@wpoely86
Copy link
Copy Markdown
Member Author

yeah, that's when libreadline is used.

@wpoely86
Copy link
Copy Markdown
Member Author

I've tested this on Debian and it's fine.

@hpcugentbot
Copy link
Copy Markdown

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.

@wpoely86
Copy link
Copy Markdown
Member Author

Test report by @wpoely86
FAILED
Build succeeded for 0 out of 22 (1 easyconfigs in this PR)
Linux opensuse 13.2, Intel(R) Xeon(R) CPU X5675 @ 3.07GHz, Python 2.7.8
See https://gist.github.com/4d4320e2ec5b0778f30e for a full test report.

@boegel
Copy link
Copy Markdown
Member

boegel commented Dec 10, 2015

@wpoely86: please edit the test report to explain why it failed

also: pro tip: run without --upload-test-report first if you have a bunch of missing deps ;)

@wpoely86
Copy link
Copy Markdown
Member Author

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.

@hajgato
Copy link
Copy Markdown
Collaborator

hajgato commented Dec 10, 2015

Test report by @hajgato
SUCCESS
Build succeeded for 1 out of 1 (1 easyconfigs in this PR)
Linux SL 6.6, Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz, Python 2.6.6
See https://gist.github.com/9affb064d6e8d683431a for a full test report.

@boegel
Copy link
Copy Markdown
Member

boegel commented Dec 10, 2015

@wpoely86: I tested a python built on top of this interactively, seems to be working fine...

@wpoely86
Copy link
Copy Markdown
Member Author

Test report by @wpoely86
FAILED
Build succeeded for 18 out of 27 (3 easyconfigs in this PR)
Linux opensuse 13.2, Intel(R) Xeon(R) CPU X5675 @ 3.07GHz, Python 2.7.8
See https://gist.github.com/38def5f6a3567b831f3d for a full test report.

@boegel
Copy link
Copy Markdown
Member

boegel commented Dec 12, 2015

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

@wpoely86
Copy link
Copy Markdown
Member Author

@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).

@boegel
Copy link
Copy Markdown
Member

boegel commented Dec 12, 2015

Test report by @boegel
SUCCESS
Build succeeded for 40 out of 40 (40 easyconfigs in this PR)
Linux SL 6.7, Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz, Python 2.6.6
See https://gist.github.com/da6efeb741e3c134ee09 for a full test report.

@boegel
Copy link
Copy Markdown
Member

boegel commented Dec 12, 2015

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!

boegel added a commit that referenced this pull request Dec 12, 2015
Update all libreadline easyconfig to link to ncurses
@boegel boegel merged commit 79d1ac8 into easybuilders:develop Dec 12, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants