Hi Andy,

On 31/05/16 17:07, Andy Turner wrote:
Hi Kenneth,

On 31/05/2016 15:54, Kenneth Hoste wrote:
Hi Andy,

On 31/05/16 16:43, Andy Turner wrote:
Hi All,

This is probably a silly question but I could not determine the answer
from reading the docs or by examining the easyblock files themselves.

I want to write an easyblock for building VASP and am not sure which
generic block to start from (or even if I need to add a new one). The
basic build procedure consists of:

1) Unpack the source from a tarball located on the local file system
2) Write a "makefile.include" file with the correct options in the top
level of the unpacked source
3) Issue "make veryclean"
4) Issue "make all"

I looked at "makecp.py" and various other generic easyblocks but none
of them, as far as I can see, have a configure step that just consists
of writing a file.

Any help much appreciated

There's an easyconfig file for VASP included in EasyBuild v2.8.x, which
indeed uses the MakeCp easyblock,
see [1] (or "eb -S VASP" if you have EasyBuild v2.8.0 or more recent
installed).

It slightly goes beyond what is generally done in an easyconfig file
(copying makefile.include & patching it with sed), but it does allow to
avoid producing a custom easyblock...

Does that help?


regards,

Kenneth

[1]
https://github.com/hpcugent/easybuild-easyconfigs/blob/master/easybuild/easyconfigs/v/VASP/VASP-5.4.1-intel-2016.02-GCC-4.9.eb



Ah! I was looking for a block rather than just a config so missed this. I see what it does now.

Actually, the "makefile.include" I want to use does not correspond to any of the default supplied ones with VASP so simply copying across from the source is not an option.

I could just put the file somewhere local and copy it across as in your example but I really wanted to be able to capture the full build logic in the framework (so it would be of use to other sites that do not have access to our makefile.include on our local disk).

Is there a simple way to have a step that writes the makefile.include before building so that I can encode all the settings or will I have to write a new generic easyblock for this (e.g. WriteMake.py)? I guess the other option is simply to use the MakeCp.py block and encode writing makefile.include into the make step before I call the make command but this seems to be breaking the spirit of the tool...

There is, you can include your custom makefile.include via the 'patches' easyconfig parameter. Next to actual patch files, you can also specify additional files that should be copied into place somewhere; this seems like a perfect match...

Add something like this in your easyconfig file:

    # copy my-makefile.include to makefile.include in build directory
    patches = [('my-makefile.include', 'makefile.include')]


You can place my-makefile.include in either the same directory as the easyconfig file, or where the VASP sources are picked up by EB.

Do let us know if this suffices or not.


regards,

Kenneth

Reply via email to