Skip to content

Add easyblock for libint2#236

Merged
boegel merged 2 commits intoeasybuilders:developfrom
tovrstra:libint2
Aug 29, 2013
Merged

Add easyblock for libint2#236
boegel merged 2 commits intoeasybuilders:developfrom
tovrstra:libint2

Conversation

@tovrstra
Copy link
Copy Markdown
Contributor

@tovrstra tovrstra commented Aug 7, 2013

Second attempt ...

Original PR (which targeted master in error), was #235.

This is a tiny easyblock. I've tested it on several occasions. A corresponding pull request for the easyconfigs was just created.

It seems a bit silly to make an easyblock for something minor like this. Would it not be better to allow for a bit extra functionality in the easyconfigs, such that this can be take care of with a more local solution? For example, I've wondered from the beginning why easyconfigs are not implemented as subclasses of easyblocks. That would (intentionally) blur the lines between what is an easyblock and what is an easyconfig.

@boegel boegel mentioned this pull request Aug 7, 2013
@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 7, 2013

I just took a look at the easyblock, and it does seem a bit of overkill, although one could argue about that.

Easyblocks are there to implement aspects of build procedures in code once, and then forget about it. If you need to remember to add some lines in an easyconfig file because otherwise the build doesn't work, then put it in an easyblock instead (however small the module ends up to be).

This is kind of a corner case, since the Libint2 build itself works fine without this easyblock, and the problem only pops up when Libint2 is a dependency to something else.

So for now, I'd agree with you this is overkill. The alternative is to add the following line to all Libint2 easyconfig files:

modextrapaths = {'CPATH': "include/libint2"}

Downside of this: if it's forgotten in one libint2 easyconfig that is used as a dep for something that really requires this, the build won't work, and you might be left wondering why and refiguring things out all over again.

With an easyblock in place that only has this today, you can simply forget about this, as EasyBuild will make sure the job is always done (even if the line is missing in the easyconfig file).

And also, who knows, maybe more stuff will be added in the EB_Libint2 easyblock later on?
You can add the custom sanity check in the easyblock, and thus get rid of it in the easyconfig file, and maybe also the custom configopts that are used in the libint2 easyconfigs in easybuilders/easybuild-easyconfigs#381. Once you have an easyblock, you might as well put it to good use.

That being said: up to you.

@tovrstra
Copy link
Copy Markdown
Contributor Author

tovrstra commented Aug 7, 2013

Good. I'll try to add in some extra's.

This may in the long run become a heavier easyblock because the libint2 library source code is generated by the libint2 program. Hence there are many different libint2 flavors with a rather non-standard build process. For now, I just picked the flavor I need, which can also be downloaded from sourceforge (instead of having to generate it).

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 7, 2013

OK, sounds great. Do post another remark when you feel you're done (we don't get notifications for additional commits that are added).

@tovrstra
Copy link
Copy Markdown
Contributor Author

This should be fine now, unless there are other comments.

@boegel
Copy link
Copy Markdown
Member

boegel commented Aug 29, 2013

It is fine now, tested in the process of testing all easyconfigs touched in easybuilders/easybuild-easyconfigs#385, so good to merge in!

Thanks @tovrstra, great job. 👍

boegel added a commit that referenced this pull request Aug 29, 2013
Add easyblock for libint2
@boegel boegel merged commit 83c66bf into easybuilders:develop Aug 29, 2013
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.

2 participants