Hi Ken, Nils et al,

I arbitrarily cc the m-list to keep some more folks informed
(and for this reason leave the context long and, untrimmed)

On Jun 10, 2013, at 9:58 AM, Kenneth Hoste wrote:

> 
> On 08 Jun 2013, at 10:45, Nils Christian wrote:
> 
>> Hi Fotis and Ken,
>> 
>> On Fri, Jun 07 at 19:16 Fotis GEORGATOS wrote:
>>> thanks for the feedback; need to dive into it
>>> in order to understand who makes the -lpthread the default
>>> (which well has its own merit under the context of easybuild).
>> 
>>> But, can you place the new easyconfig for libsbml on the experimental repo,
>>> along with the patch, so that Ken (cc'd) has a chance to glimpse on it?
>> 
>> The pthread issue was not related to libsbml. This I discovered when
>> running 'make check' for HMMER 3.1b1 (should also apply for earlier
>> versions, but there was no runtest defined), which worked fine when
>> compiling 'by hand', but not with easybuild. It turned out that the
>> Makefile was not properly linking LIBS for the unit tests, which was
>> only problematic when easybuilding. I provided a patch, both upstream
>> and in the easyconfig recipy (for which I generated I pull request
>> yesterday evening).
>> 
>> In summary, HMMER 3.1b1 now builds fine including the tests, I only
>> wondered why LIBS was set to include '-lpthread', which triggered the
>> problem.
> 
> EasyBuild sets it by default, because it's commonly needed. In some cases, it 
> may not be needed or even breaks things, that's true.
> I've seen other builds break too just because $LIBS is set (to something, 
> doesn't matter what). 

I haven't looked at the details of -lpthread being enabled by default,
but if it remains so it makes me think that libpthreads-stubs should be at least
a default builddep, no? (need myself to dive deeper in the pthread API business)

fyi. we were looking earlier at the following (and, off-topic, 
HPL-2004-209.pdf):
http://stackoverflow.com/questions/2127797/gcc-significance-of-pthread-flag-when-compiling
and the initial request for this thread is visible at the very end here.

> I haven't looked at the PR yet, maybe later this week.
> 
> 
>> 
>>> Ken, there is also question for the framework that arises out of this,
>>> when a given software piece is extension of two things at the same time
>>> (Perl, Python etc). Nothing of a hurry, just to swap info.
>> 
>> I just uploaded the libsbml recipy to experimental
>> (users/xaver42/libsbml-5.8.0-with-experimental-goolf-1.4.10.eb). Ken,
>> the "problem" here is that this recipy should set all the "PATH"s for
>> the different language bindings (PERL5LIB, PYTHONPATH, ...), similar to
>> PerlModule's, PythonPackage's ... make_module_extra.
>> 
>> This opens up two questions:
>> 
>> 1. should one be able to set language specific environment variables
>> from the easyconfig directly (without the need to provide an easyblock)?
>> To me this seems to be a rather generic problem, which could be solved
>> with something similar to modextravars, only that it should append to
>> these.
> 
> modextravars is actually sufficient for this, no? Do you want a dedicated 
> easyconfig parameter for this? And if so, why in particular?

I thought modextravars can only do setenv, can it also do prepend-path etc?

>> 2. should all the language bindings go into one modulefile? Or would it
>> be better to split those up? In the latter case it would still make
>> sense to only build the package once and then generate a modulefile for
>> each language. For this I see two possibilities:
>> - one easyconfig provides more than one modulefile
>> - "empty" easyconfig: the easyconfig does not need any source, but only
>> depends on the primary package and sets the appropriate variables
> 
> I don't see the problem with making multiple language bindings go to the same 
> module file.
> Well, expect that the languages they depend on should be listed as 
> dependencies, and since we traditionally mention the language+version in the 
> versionsuffix, you'd get something like:
> libsml-1.2.3-goolf-1.4.10-Python-2.7.5-Perl-5.16.3
> 
> Not sure how big of an issue that is (I'm fine with it).

We will have an elegant solution to this, thanks to:
https://github.com/hpcugent/easybuild-easyconfigs/issues/274
biodeps default builddep versions would imply the other versions, too
(akin to goolf/goalf and toolchains in general).

> One easyconfig that provides more than one module is... new. And potentially 
> confusing (although we already have an easyconfig that doesn't provide a 
> module after a successful 'build').

That is very likely a need for either distinct easyconfigs or a hackathon 
discussion.

regards,
Fotis

>> One last feature request: libsbml does not allow to run cmake from
>> within the source directory. To create a separate build directory, Fotis
>> helped me with some hacks (see sources, start_dir and the very last
>> configopts addition). Since out-of-tree builds are a feature of cmake I
>> think this should be supported by the generic CMakeMake block.
> 
> That's a very good one, maybe it should even be the default...
> 
> Can you open an issue for this (or even better, a PR)?
> 
> 
> regards,
> 
> Kenneth
> 
>> 
>> Have a nice weekend
>> Nils
>> 
>> 
>>> On Jun 7, 2013, at 5:02 PM, Nils Christian wrote:
>>>> here a short summary of my findings so we don't forget about it:
>> 
>>>> For some reason the environment variable LIBS contains '-lpthread' in
>>>> the goolf and ictce toolchains. Therefore, a configure script created
>>>> with ACX_PTHREAD in configure.ac will conclude
>> 
>>>> "checking whether pthreads work without any flags": "yes"
>> 
>>>> and stop checking. If LIBS would not contain the flag, configure would
>>>> go on checking and finally set PTHREAD_CFLAGS="-pthread" (note the
>>>> missing 'l'), which is usually merged with CFLAGS in Makefiles.
>> 
>>>> At least in gcc this flags is different from the pure LIBS flag, as it
>>>> also sets some preprocessor flags that influence how libraries are
>>>> built. Why this may be important, see here:
>>>> http://stackoverflow.com/questions/2127797/gcc-significance-of-pthread-flag-when-compiling
>> 
>> -- 
>> Nils Christian
>> Luxembourg Centre for Systems Biomedicine (LCSB)
>> 
>> University Luxembourg
>> Campus Belval
>> 7, avenue des Hauts-Fourneaux
>> L-4362 Esch-sur-Alzette
>> 
>> email: [email protected]
>> phone: +352 466644 6345
> 

-- 
Drs./Eng. Fotis Georgatos <[email protected]>
HPC Systems Engineer, LCSB (University of Luxembourg)
L-4362 Esch-sur-Alzette, Campus Belval, avenue des Hauts-Fourneaux 7
Phone:  +352 466644 5609

Reply via email to