-
Notifications
You must be signed in to change notification settings - Fork 203
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
Introduce a notion of toolchain-neutral software #570
Comments
There are a couple of caveats here, mainly the compilers/libs used to build this toolchain-neutral (tc-n) software. To avoid problems when a certain toolchain is used in combination with the tc-n software, the latter has to be fully statically linked. The request seems valuable though... |
Or it can be built with rpath. |
fyi. xbesseron has been suggesting/promoting the idea to go into the direction of this issue, too. If we do so, I think I'd favor to promote static linking. Why? dynamic linking can be a complicated business in itself, even when using rpath: ie. my concern is that the dynamic aspect may become an annoyance... |
We are talking about linking against OS-provided versions of libraries. These libraries should have a stable ABI, so I don't see an issue here yet. |
imho toolchain-neutral software is only needed for build requirements of (sub)toolchains, nothing else. the big issue with those is that OS dependencies are a pain to define / determine, and regardless of the ABI, if the OS version is too old, you are screwed. |
+1 to latest stdweird's comment: I favor the "worry-free" "debugless" approach -in relation to persons' manhours-, |
what is valuable to keep promoting as part of this issue, is the notion that we don't really bother with providing, say, a2ps for 4 different toolchains; although I'm the guy creating all those, I'd be the first to admit that it is quite overkill. We may still have reasons to provide the different builds, but we should consolidate the easyconfigs, at least. |
this is just to confirm that there is good merit in this issue, and I expect it to pop up during the next hackathon, if debuggers & some performance tools are to be discussed. Namely, members of this bundle may be done otherwise: the reproducibility argument is still there, which could be something like a hash in a versionsuffix! Having said that, I am not very convinced for the purpose of commit As a proof of this, notice that DDT and TotalView are statically linked (and probably that is the true one objective). |
I really support the idea of providing at least the option to create toolchain-neutral software. There are certainly good reasons for going one or the other route, but in the end it should be the admin's choice... |
On 20/02/14 23:27, geimer wrote:
That is true if there is only one admin. Just my humble opinion,
Dr. Bart Verleye |
@Bart-CER: How about using a system-wide EasyBuild configuration file, and agreeing on the policy not to fiddle with the configuration otherwise (e.g. env vars or command line options to override the config file)? |
some more feedback after the julich hacakthon: in my opinion toolchain neutral software implies that static binaries are produced and no dependencies on anything external. the "no dependencies" can be loosened a bit (eg assume bash is available), but this becomes quickly another (arbitrary) distinction what and what not can be assumed to be present. toolchain neutral software however is not "software provided by the OS wrapped by easybuild" (the whole "why can't i use the gcc on my system instead forcing me to compile one from scratch" discussion). we should use proper terminology here (i'd call it system software). and a 3rd remark, easybuild should make an effort to specify minimal (sub)toolchain requirements in the easyconfigs. this effort could be part of moving to the new format2.0 (i don't think it's wise to modify the current format 1.0 files). eg if a software package is truly only dependent on GCC, the toolchain requirements should specifiy this; and easybuild should provide a way to either install it with the subtoolchain or figure out a matching toolchain and use that toolchain (as is done now). |
One (other) use case of this is PerfExpert (cfr. easybuilders/easybuild-easyconfigs#839). The installed PerfExpert module should be toolchain-neutral, in the sense that you should be able to use together with any other module, regardless of with which compiler toolchain it was built. Another aspect of this is that ideally, PerfExpert should be provided via a single module (not a module that loads a bunch of other modules as dependencies), to avoid problems with dependencies that are common for other applications (e.g. Boost). |
Hi Kenneth, all, fyi. the argumentation you made is exactly of the same type I have been For the same reason, I have never been really convinced about this commit on HPCBIOS_Debuggers: On Wed, May 7, 2014 at 3:30 PM, Kenneth Hoste notifications@gh.neting.ccwrote:
Of course, the reproducibility argument still applies, so nothing wrong with the concept To summarize:
There are quite a few of us (@xbesseron, @gribozavr, @geimer, @georgets, @fgeorgatos) |
Since every piece of software has to be built with SOME toolchain, I don't understand what marking an .eb as "toolchain-neutral" would mean. Maybe the right approach is to allow dependencies to allow a wildcard toolchain when specifying dependencies. For example, netCDF has a build dependency on CMake. It doesn't matter which toolchain was used to build CMake, as long as bin/cmake runs. One could then build these basic tools with some kind of "plain vanilla" toolchain. |
@citibob: marking something as 'toolchain-neutral' basically means that the end result doesn't depend on the toolchain at runtime in any way We already support the wildcard you suggest, in the sense that we have support for resolving dependencies with taken subtoolchains into account, cfr. http://easybuild.readthedocs.org/en/latest/Manipulating_dependencies.html#minimal-toolchains. The toolchain-neutral idea goes a bit further though, in some sense. If something is toolchain-neutral, you only need a single build of it, and then it can be used in a build with any (other) toolchain. |
An interesting feature, but not quite the same. Suppose I built CMake with
I think the core issue here is, WHO declares a property of a piece of I'm fearful that EasyBuild might be running down the path of an I would recommend the following:
I would suggest someone think through this and propose a system, after On Sun, Jan 3, 2016 at 11:22 AM, Kenneth Hoste notifications@github.com
|
It does not have a lot of sense to build many variants of tools that don't have a public ABI. For example: CMake, subversion, git, mercurial. These packages can be built once and used with any toolchain.
Currently there is a 'dummy-dummy' toolchain that allows to do this if no other package depends on such toolchain-neutral software. If there is a dependency, a special easyconfig should be created and built.
A simple solution is to allow easyconfigs to be marked toolchain-neutral, and to allow these packages to satisfy dependencies of software that is being built with a non-dummy toolchain.
The text was updated successfully, but these errors were encountered: