hpcugent/easybuild — pull request #227 by boegel (2012-08-30 20:54:57+00:00)
Title: implement support for running EasyBuild without easyconfig file, and overriding easyconfig parameters on the command line

(refs #137)

This branch adds supports for running EasyBuild without having to supply an easyconfig file, and make EasyBuild look for a matching easyconfig file or even try to generate one that matches the specifications given.
It also allows to override easyconfig parameters from the command line.

For example:

```eb --software-name=tar --toolkit goalf,1.1.0-no-OFED --software-version 1.26 -r easybuild/easyconfigs --amend=sourceURLs=http://ftpmirror.gnu.org/tar,```

does what you expect: it tries to build the `tar` tool v1.26, after downloading the sources from the specified URL. In this particular case the build fails, but only because the default sanity check doesn't work.

EasyBuild creates an easyconfig file `tar-1.26-goalf-1.1.0-no-OFED.eb` that the user can then further tweak to get a working build.

Similarly,

```./eb bzip2-1.0.6-goalf-1.1.0-no-OFED.eb --software-version=1.0.4 --amend versionsuffix=-old-and-buggy
```

does what you expect: it uses the supplied easyconfig file `bzip2-1.0.6-goalf-1.1.0-no-OFED.eb` but changes the version to be installed to v1.0.4 and adds a version suffix `-old-and-buggy` .
EasyBuild first generates an easyconfig file in `/tmp` that implements these changes, and then also builds it.

Also included unit tests that test the `easyconfig.obtain_ec_for` and `easyconfig.tweak` functions that implement this.

Also implemented in this branch:
* added a template easyconfig file `easybuild/easyconfigs/TEMPLATE.eb`, that EasyBuild can use for generating easyconfigs for totally new software (e.g. the `tar` example)
* grouping of EasyBuild command line options, for a cleaner output of `-h`/`--help`
* fixed a bug in `make_module_req_guess` in wrf.py
* added a function `dump` to dump an EasyConfig instance to file, in which the order of easyconfig parameters and grouping is taken into account
* added `ec_filename_for` and `det_installversion` in the `easyconfig` module that determine the sensible easyconfig file name for a given file, and install version for a given set of parameters, respectively