Spack links with RPATHs. It also allows you to have sub-DAG(s) built with 
different compiler(s).  It's not the default, but it's easy to specify if you 
need it:

   spack install tool%intel ^wx%gcc

You can also encode that in the package if it really requires gcc.

We've played with RUNPATH at LLNL and it's not as easy as you might think to 
swap it in for RPATH.  The compiler options for RUNPATH are less consistent and 
I'm not sure it's supported on all of them, though I haven't checked recently. 
I've not yet encountered a compiler without RPATH support -- have you?  RedHat 
recently asked us about getting rid of RPATH and we told them no pretty 
emphatically.

The main issue with RUNPATH is the one mentioned in the Qt blog below.  Its 
semantics differ from RPATH for indirect dependencies -- it's easy for system 
libs to leak into a RUNPATH'd binary. Personally I think this is broken.  If 
you want your executables to "just work", use RPATH.

The other thing about RUNPATH is that it allows your users to shoot themselves 
in the foot with LD_LIBRARY_PATH.  They never remember that they stuck that 
line in their bashrc that one time for that one code, and blam everything's 
broken.  RPATH puts the precedence in the hands of the tool, which knows how to 
link, at least in theory.

Combining RPATH with lmod hierarchies is something we talked about at the 
hackathon.   I haven't thought too deeply about this but I think RPATHs would 
really simplify the management code that goes into hierarchical modules - for 
deps that are not "in" the hierarchy (e.g. Boost), if you RPATH them you don't 
have to generate code to load/unload them on swap if, say, one leaf needs one 
boost version and another leaf requires a different boost version.

Todd


________________________________
From: [email protected] on behalf of Alan O'Cais
Sent: Tuesday, January 05, 2016 2:24:39 AM
To: [email protected]
Subject: Re: [easybuild] next EasyBuild conf call: Wed Jan 6th 2016, 5pm CET

How about some further discussion on RPATH/RUNPATH, what's involved in 
supporting it and whether or not it's a good idea (since RPATH is actually 
depreciated for about 15 years in favour of RUNPATH but still typically 
respected https://sourceware.org/ml/binutils/2012-05/msg00025.html). From what 
it I understand RUNPATH will ensure a binary always find it's libs but gives 
priority to LD_LIBRARY_PATH, how things really function is not that 
straightforward though (see "Why does this happen?" in 
http://blog.qt.io/blog/2011/10/28/rpath-and-runpath/).

Personally I think I might be favour of creating an abstraction layer between 
the module view (default, hierarchy,...) and the installations and combining 
this with RUNPATH. I don't see a good reason to change where things get 
installed based on the module naming scheme, all we really need is the ability 
to translate between the default naming scheme and other naming schemes (which 
is trivial since if we know the installation path for the default, we can grab 
all the installed eb files from within). If you couple this with RUNPATH, every 
executable/lib will just work even if you cherry pick the modules you want to 
expose to users. This would have huge advantages in the sense that we could use 
different naming schemes for different groups on the same system and the same 
installations. It would also remove the disadvantages currently imposed by 
hierarchical schemes (wxwidgets only builds with GCC and since I 
can't/shouldn't load GCC and intel at once in a proper hierarchical scheme, 
nothing that requires wxwidgets can be built for intel, this restriction 
doesn't exist for the default naming scheme and would be solved in the 
hierarchical scheme with RUNPATH).

Alan

Alan

On 5 January 2016 at 10:33, Kenneth Hoste 
<[email protected]<mailto:[email protected]>> wrote:
Dear EasyBuilders,

The next EasyBuild conf call is planned for tomorrow, Wed Jan 6th 2016, at 5pm 
CET.
(Google+ event: https://plus.google.com/events/cv4pst7c0s9kbrgnofca4dkdgvs)

Topics I have in mind include:

* 2016a common toolchains
* support for eb --new-pr (WIP)
    * cfr. https://github.com/hpcugent/easybuild-framework/pull/1528
* workaround for issues with Python packages being picked up from the OS (WIP)
    * cfr. https://github.com/hpcugent/easybuild-easyblocks/pull/786
* open Q&A

Suggestions for other topics are welcome, as usual.

Please let me know in one way or another if you're planning to attend.

More details on the EasyBuild conf calls are available at 
https://github.com/hpcugent/easybuild/wiki/Conference-calls .



regards,

Kenneth



--
Dr. Alan O'Cais
Application Support
Juelich Supercomputing Centre
Forschungszentrum Juelich GmbH
52425 Juelich, Germany

Phone: +49 2461 61 5213
Fax: +49 2461 61 6656
E-mail: [email protected]<mailto:[email protected]>
WWW:    http://www.fz-juelich.de/ias/jsc/EN


------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
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
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------

Reply via email to