Howdy all,
OK, thanks to a lot of help from others at the EB hackathon
two weeks ago, I'm redeploying/rebuilding my XL toolchains
in order to clean them up (the early ones were quite ugly).
I've modified systemcompiler.py for xlc/xlf (PR forthcoming once
I review my .bash_history from the hackathon again [I save a copy :) ]).
Now then, the base xlc and xlf modules depend upon xlsmp and xlmass
libraries (RPMs) that are also installed. All I really need to do for
them is to
add some paths to the module. Unfortunately, as much as I've cleaned it
up it is still a bit inelegant.
Here's what I have for xlsmp at the moment:
# Author:: Jack Perdue <[email protected]> - TAMU HPRC - http://sc.tamu.edu
easyblock = "Bundle"
name = 'xlsmp'
version = '4.1.0'
xlroot = '/opt/ibm/%(name)s/%(version)s'
homepage = 'http://www.ibm.com/us/en/'
description = """IBM SMP support packages (SLES10)"""
toolchain = {'name': 'dummy', 'version': 'dummy'}
modextrapaths = {
'CPATH': '.:%s/include' % xlroot,
'LIBRARY_PATH': '.:%s/lib64:%s/lib'
% (xlroot, xlroot),
'LD_LIBRARY_PATH': '.:/opt/ibmcmp/lib64:/opt/ibmcmp/lib',
}
# EOF
As you can see, this adds some extraneous (empty) paths of
the form "$EBROOTXLSMP/." to the paths and I trick EB by
including a colon and appending the real paths (xlroot) needed.
I have a similar build for xlmass except it doesn't have the
LD_LIBRARY_PATH with non-xlroot directories so is a bit cleaner
(don't ask me to explain IBMs logic when it comes to packaging).
Is there a way to accomplish the above without the
extraneous "$EBROOTwhatver/.:" being added?
i.e. if there was an easyblock i could say "THIS IS EBROOT!" and
then use modextrapaths the normal way it would be cleaner
(even if not entirely satisfactory for xlsmp's LD_LIBRARY_PATH issue).
Is there such a creature on the horizon?
--
Jack Perdue
Lead Systems Administrator
High Performance Research Computing
TAMU Division of Research
[email protected] http://sc.tamu.edu
SC Helpdesk: [email protected]