On 07/08/15 09:16, Christopher Samuel wrote:
On 07/08/15 16:53, Kenneth Hoste wrote:

Hi Chris,
Hiya Kenneth,

You'd need to include this, rather than what you mentioned (that would
only work in easyconfig files):

     self.cfg.update('configopts', '--with-arch=native')
Odd, I just copied how the existing code in the gcc.py file did things
and it worked as expected (it now builds with that option):

[samuel@qan02 ~]$ gcc -v
[...]
Configured with: ../configure [...] --with-arch=native [...]

Yeah, my bad, it turns out that the gcc.py easyblock does indeed have a configopts variable that is being updated, rather than updating self.cfg['configopts'] via update() (which is the more general approach).

However, this change will be lost as soon as you reinstall/update
EasyBuild, so you'd need to remember to reapply this patch.
Agreed, but it's easier to do that than to patch/merge all the
easyconfigs each time.
Sure, but you don't need to patch all easyconfigs all the time, see my suggestion below.

I do agree neither solution is ideal though.

For now, it may suffice as a temporary solution, but we need a better
solution in place for sure to support these kind of site customizations.
What did you think of my idea of a config file in the appropriate
easyconfig directory?

Be nice if it could be found via robot_path in an otherwise empty tree
so it could be held separately under git.

I was going to reply to your original mail on that, but didn't get to it yet.

There are several options for this sort of thing (like .ebp patch files for easyconfigs, or a single file specifying site customizations per software name, optionally also specifying toolchain/version), I'm not decided yet on which approach may be best.


regards,

Kenneth

We've already set __INTEL_PRE_CFLAGS and __INTEL_PRE_FFLAGS so
that's the Intel compilers covered.
Hah, I didn't know about these, interesting.
Yeah, that was my discovery this week (before now we relied on setting
OMPI_CFLAGS etc to pass those in but that doesn't help people building
non-MPI code).

There's no easyblock for OpenMPI, since OpenMPI is installed using the
generic ConfigureMake easyblock, so you can't just go and patch
openmpi.py like you did for gcc.py.
Yup, I've just found that out. :-)

If you really want to fix it in one place, you could modify your
configuremake.py with something like:

if self.name == 'OpenMPI':
     self.cfg.update('configopts', '--with-slurm')

I don't recommend this though; same argument as for gcc.py, it's an ugly
hack that is bound to bite you in the ass at some point.
If there was some way to map all versions of MPI to a single blessed
OpenMPI version per compiler (GCC/Intel) then I would be very happy to
just have our own Easyconfig file for that version that was found via
robot_path instead.

For now, if you need to enhance easyconfigs with site customizations,
you should copy and edit the easyconfig files, and put them in a directory.
That's what I started off trying to do.  But with 29 of them it becomes
painful when you upgrade and have to redo them all again.

[...]
That does mean you need to be careful that new easyconfigs that are
added when you update your EasyBuild installation also get a customized
version.
Yeah, I copied the newly arrived versions over and updated them.

I know it's not a satisfactory solution for simple modifications that
are version-agnostic, but it's the best we have in place for now.
Understood, and please don't take my blundering around with this as
feeling bad about it, I think it's a great idea, just trying to work out
how to make it do what we need. :-)

All the best,
Chris (about to knock off for the weekend)

Reply via email to