Hi there, sorry for the rant in these couple of days, it won't happen again :-) It just happens that we are in a burst of experimentation with the tool and we identify all sorts of hick-ups, that occur in our situation.
Here is the last handful of comments/suggestions. On 25/07/2012 17:30, Fotis Georgatos wrote: > In that light, and for simplicity, I suggest the applications' namespace > should be case-sensitive (ie. both packages R and r should be allowed :-) 1) class namespace And, in less that 24 hours I can provide an interesting example: So, what if I need a module for both "easybuild" and "EasyBuild"? https://github.com/fengy-research/easybuild ;-) In the current setup, that just misses closely a collision in class namespace: # class_name = name[0].upper() + name[1:].replace('-','_') I am suggesting to rename that, for generality, to: # class_name = "eb_" + name.replace('-','_') # or, perhaps, "EasyBuild_" (1) 2) fall-out from the above Then the following logical consequences exist, as regards easyblocks: * classnames no longer start with a-z letters (they are *one* set after all) * placing them in distinct directories a-z is no longer too relevant :-( BUT: Is that really a problem? IMHO *NOT*, since easyblocks are not many * A motivation exists to actually embed easyblocks class/functions inside *easyconfigs*; that is actually good: eg. if/when the "boost" developers eventually decide to pick the more decent configure default mechanism, it will actually be *possible* to have both v1.50/v1.5X-with-configure modules. Currently, I think that's not doable or, am I missing something? 3) reduce simple cases to minimal configuration * Finally, it would be convenient to minimize the number of lines of code needed for simple things like the following (can it become 1 line really?): ** Boost::make(self): cmd = "./b2 %s" % (self.getcfg('makeopts')) ** Pandaseq::configure(self): cmd = os.path.join(self.getcfg('startfrom'), "autogen.sh") * Allow to skip certain steps easily (we notice it is often required): ** skip_configure=true ** skip_make=true ** skip_make_installdir=true That reduces LOC (lines of code) and hence human error. It's more easy, too. 4) Proposal for small easybuild language extension And, interestingly, there is a pattern in the following construct: (an empty configure and then copy files to destination, before finishing) === CUT HERE === class SOAPdenovo(Application): def configure(self): """Skip the configure as not part of this build process""" def make_install(self): """Install by copying files to install dir""" srcdir = self.getcfg('startfrom') destdir = os.path.join(self.installdir, 'bin') srcfile = None try: os.makedirs(destdir) for filename in ["SOAPdenovo-127mer", "SOAPdenovo-31mer", "SOAPdenovo-63mer"]: srcfile = os.path.join(srcdir, "bin", filename) shutil.copy2(srcfile, destdir) except OSError, err: self.log.exception("Copying %s to installation dir %s failed: %s" % (srcfile, destdir, err)) === CUT HERE === The interesting part is the for line which does the copy; it'd better look: # for filename in sanityCheckPaths['files']: In that case, we have a pattern that is *very* common across many packages, which depend rather on 1 plain Makefile instead of configure. Can this be reduced to a single easyconfig line? I think yes. *I believe this is worthy of support inside the configuration language.* 5) Support for git-supplied software; does anybody else have the need? Some developers have chosen to use git as their distribution mechanism :-) That's fine but it does make the package download a tricky step, if you wish to have it automated. How about a git url and commit version put together? ie. I'm suggesting a download function like: $ git clone https://github.com/fgeorgatos/easybuild.git $ cd easybuild $ git checkout f43c755 That should eventually build the following modulefile: EasyBuild/f43c755 The idea is quite expandable, because it allows to be generalized with tags, branches etc, whatever git provides for. I have a use-case of RAxML. OK, that's it, I stop it for today :-) cheerio, Fotis (1) There is more discussion to be done here as regards python namespaces but, fact is we need to check options ourselves, to make any good recommendations: http://bytebaker.com/2008/07/30/python-namespaces/ -- echo "sysadmin know better bash than english" | sed s/min/mins/ \ | sed 's/better bash/bash better/' # Yelling in a CERN forum

