-
Notifications
You must be signed in to change notification settings - Fork 704
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Separate terminfo library in ncurses breaks Python build #4049
Comments
I think this is something that can fixed in the python easyblock, when it sets up ncurses linking you can check if the termlib static library exists and if so append it to the static linking list. |
Oddly enough when I add |
Now you've hit a major problem with using builds that have the dummy toolchains, I don't think you can specify `toolchainopts` for dummy which means you can't tell it to make pic libs without a (fairly trivial) hack. Why not use ncurses at the GCCcore level in the toolchains hierarchy? The GCCcore level was created as a much more controlled replacement for the system compiler.
On 19 Jan 2017 9:34 pm, "Davide Vanzo" <notifications@github.com<mailto:notifications@github.com>> wrote:
Oddly enough when I add libtinfo.a to the list of static libraries the linker complains that it is not PIC compliant. Any idea why I am seeing such error?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub<#4049 (comment)>, or mute the thread<https://github.com/notifications/unsubscribe-auth/ADqZtRRJRhCUcYq_cNhB1dIxTWkrsNUsks5rT8jxgaJpZM4LnfRR>.
…------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
Forschungszentrum Juelich GmbH
52425 Juelich
Sitz der Gesellschaft: Juelich
Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498
Vorsitzender des Aufsichtsrats: MinDir Dr. Karl Eugen Huthmacher
Geschaeftsfuehrung: Prof. Dr.-Ing. Wolfgang Marquardt (Vorsitzender),
Karsten Beneke (stellv. Vorsitzender), Prof. Dr.-Ing. Harald Bolt,
Prof. Dr. Sebastian M. Schmidt
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
|
@ocaisa Thanks for the clarification. The problem was that in my system although I have both the dummy and the GCCcore versions of ncurses 6.0, EB is picking the dummy for static linking, generating the missing symbols error. So we need to find a way to solve the problem in case the |
@ocaisa you can build with Updating the Python easyblock in case the |
Yup, that was the fairly trivial hack I had in mind...but it sits outside the philosophy of the EB being aware of the compiler and it's capabilities
On 20 Jan 2017 8:05 pm, "Kenneth Hoste" <notifications@github.com<mailto:notifications@github.com>> wrote:
@ocaisa<https://github.com/ocaisa> you can build with -fPIC when a dummy toolchain is used by specifying CFLAGS via buildopts, cfr. https://github.com/hpcugent/easybuild-easyconfigs/blob/master/easybuild/easyconfigs/z/zlib/zlib-1.2.8.eb#L17
Updating the Python easyblock in case the ncurses is known to require additional libraries sounds like a good idea.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub<#4049 (comment)>, or mute the thread<https://github.com/notifications/unsubscribe-auth/ADqZtWgdtVYIMflyrypr0BjuV1VhcgIsks5rUQVggaJpZM4LnfRR>.
…------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
Forschungszentrum Juelich GmbH
52425 Juelich
Sitz der Gesellschaft: Juelich
Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498
Vorsitzender des Aufsichtsrats: MinDir Dr. Karl Eugen Huthmacher
Geschaeftsfuehrung: Prof. Dr.-Ing. Wolfgang Marquardt (Vorsitzender),
Karsten Beneke (stellv. Vorsitzender), Prof. Dr.-Ing. Harald Bolt,
Prof. Dr. Sebastian M. Schmidt
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
|
@ocaisa Assuming that the system C compiler is GCC is a pretty safe bet, no? |
Sure, of course, but the fix is a hack when you compare it to the capabilities available when you use an understood compiler and the recommended approach of toolchainopts |
easybuilders/easybuild-framework#1233 is an opportunity to fix that |
@ocaisa Even with the "hack" in my PR we are still stuck at the fact that the terminfo library is not position independent. Here is the full error stack.
|
Another thing I am trying to understand is why EB is picking the ncurses with the dummy toolchain instead of the one built with GCCcore, which would make much more sense. By looking through the attached log the problem seems to arise when loading the dependencies for libreadline. The weird thing is that if I run the same lmod command on the system, it returns the GCCcore/ncurses as dependency. And at this point I am totally lost. |
I think I found the source of the issue. First of all let's start by saying that this affects only the Python-3.5.2 for foss-2016b and intel-2016b toolchains (maybe others but I am working with those two right now) since it has XZ-5.5.2 as a dependency. XZ-5.5.2 is in turn dependent upon the gettext-0.19.8 library. However EB (let's take the foss toolchain as example) cannot use an hypotetical Unfortunately I do not see right now a way to break the dependency loop and avoid linking against the dummy gettext. Suggestions? |
It's not a bug, the problem is the XZ easyconfig, it explicitly asks for
The way to fix this would be to supply a gettext easyconfig at GCC or GCCcore level and remove the explicit specification of the dummy toolchain (the |
@ocaisa Yes, I figured that out 10 minutes after I sent the message. Check the edited post to see why it is not possible to use a |
Thanks to @boegel we finally found that the problem arises when trying to build Python when the In the initial environment the
EB issues a
EB loads
However, since |
Long story short: don't load (EasyBuild-generated) modules before running EasyBuild. We'll look into implementing a detection/warning mechanism (or maybe something stricter) for this in easybuilders/easybuild-framework#153 |
One other thing to note is that the only dummy version of ncurses 6.0 builds with separate tinfo library while others do still included it. That may bite in some unexpected ways when one moves to include dummy in minimal toolchains and tries to rebuild a bigger tree ontop of this. |
Following the addition of
--with-termlib
in ncurses-6.0.eb (see PR #3545), if Python gets built against this library using Python-2.7.12-foss-2016b.eb it fails since it cannot find the required symbols:If ncurses is built without that flag Python building completes successfully.
@ocaisa Suggestions?
The text was updated successfully, but these errors were encountered: