This file contains a description of the major changes to EasyBuild.
For more detailed information, please see the git log.

v1.1.0 (January 27th 2013)
--------------------------

feature + bugfix release
- improvements w.r.t. support for software extensions (tested on Python and R, see easyblocks package)
    - cleaned up support for building/installing extensions
    - define ExtensionEasyblock class that implements support for installing extensions as stand-alone module as well
    - return to build dir before building/installing each extension
    - define EBEXTSLIST<NAME> environment variable in module if exts_list was defined
    - make sure sanity check for extensions results in an error if it fails
- various enhancements, including:
    - log both framework and easyblocks versions
    - add support for gimkl, gmacml, iccifort, iomkl, and ismkl toolchains
    - define *_SEQ compiler variables for sequential compilers
    - add --list-toolchains command line option for listing supported toolchains
    - add support for customizing software and modules install path suffixes
    - support both setuptools and distutils installation methods for finding installed easyconfigs
    - also consider robot path in list of paths searched for patch files
    - allow skipping of default extension sanity check (by setting 'modulename' to False in options)
- various bug fixes, including:
    - typos in toolchain Python modules w.r.t. imkl support, handling of i8/optarch/unroll options
    - purge before loading 'fake' module, unload 'fake' module before removing it, use original MODULEPATH
    - restore environment after unloading fake module, set variables that were incorrectly unset, i.e., that were defined before as well
    - unset TMPDIR for builds submitted as jobs (required by IntelBase easyblock)
    - correctly track easyconfig parse error
    - always run all jobs in regtest, also if dependency jobs failed
    - cosmetic adjustments to default EasyBuild configuration file to avoid confusion between e.g. build_dir and build_path (only latter matters)
    - fix SuSe hack, only prefix command with sourcing of /etc/profile.d/modules.sh if it is there
    - leave build directory before it is removed during cleanup step
    - load generated module file before running test cases

v1.0.2 (December 8th 2012)
--------------------------

bugfix release
- properly catch failing sanity check commands
- fix bug in toolchain support which cause linking environment variables set by toolchain to include too many libraries
    - elements in toolchain variables were being passed by reference instead of by value
- fix selecting a compiler toolchain for a specified software package (--software-name) if only a template is a viable option
- fix passing command line parameters with --job
- fix list of valid stops (-s/--stop)
- fix minor issues in help messages (-h/--help)

v1.0.1 (November 24th 2012)
---------------------------

bugfix release
- fix support for installing easybuild-framework with distutils (broken import in setup.py)
- fix support for ACML as a toolchain element (toolchains/linalg/acml.py)
- add name to aggregated regtest XML so that is parsed correctly by Jenkins
- reorder code in main.py so that regtest also works with incomplete easyconfig paths
- add bash script for running regression test and sending a trigger to Jenkins to pull in the XML with results
- get rid of assumption that loaded modules should have name like 'foo/bar', make it more flexible
- retry failed builds in regtest twice to ignore fluke errors
- report leaf nodes in dependency graph when regtest is submitted
    - this is required for setting job dependencies in the regtest script for the Jenkins trigger job
- implement and use rmtree2 as more (NFS) robust replacement for shutil.rmtree
- bump max hit count for run_cmd_qa from 20 to 50, to make false positives of unasnwered questions less likely

v1.0 (November 13th 2012)
-------------------------

- split up EasyBuild across three repositories: framework, easyblocks and easyconfigs
- packaged EasyBuild, different parts can now be installed easily using easy_install
- various changes to both internal and external API:
    - renamed main script to main.py (from build.py)
    - file and directory organisation
    - module, class, function and function argument renaming and reorganisation
    - split up Application into EasyBlock and ConfigureMake (see easybuild-easyblocks for the latter)
    - created EasyConfig class for handling easyconfig files
    - renaming of EasyBuild configuration parameters (non-camelCase)
    - renaming of various easyconfig parameters (non-camelCase)
    - rename SOFTROOT and SOFTVERSION environment variables set in generated module files to EBROOT and EBVERSION
    - use 'extension' as generic terminology for Python packages, R libraries, Perl modules, ...
- added support for building software packages in parallel via PBS jobs
- added unit testing framework and initial set of unit tests for basic functionality
    - and run them in Jenkins continuous integration service, see https://jenkins1.ugent.be/view/EasyBuild/
- implement single-command regression test (e.g. to test building all supported software)
    - eb --regtest --robot
- switch to new style Python classes
- replaced toolkit module with toolchain package (total rewrite), providing modular support for toolchains
- adjust default EasyBuild configuration to only use $HOME/.local/easybuild by default
- added support for running EasyBuild without supplying an easyconfig file
    - make EasyBuild search for a matching easyconfig file
    - support automatic rewriting of an existing partially-matching easyconfig file (use this with care!)
    - support for automatically generating an easyconfig file according to given specifications (best effort!)
- add support for looking for easyconfig file in Python search path if it can't be found on specified (relative) path
    (that way, easyconfig files available in the easybuild-easyconfigs package can be used easily)
- various other enhancements and bug fixes, e.g.:
    - extended sanity check capabilities
    - cleaned up logging
    - creating of devel module which allows to mimic environment that was used by EasyBuild to build the software
    - support for creating dependency graphs for a set of easyconfig files
    - grouped options in help output and categorised available easyconfig parameters
    - more consistent code style

v0.8 (June 29th 2012)
---------------------

- added support for building/installing 17 additional software packages:
    - BEAGLE, Doxygen, g2clib, g2lib, HDF, HDF5, JasPer, libpng, Maple, 
      MrBayes, NCL, netCDF, netCDF-Fortran, Szip, WPS, WRF, zlib
- the build procedure for WRF and WPS includes running the tests available for these packages
- various bug fixes and enhancements:
    - made support for interactive installers (run_cmd_qa) more robust
    - fixed Python git package check
    - implemented toolkit functions for determine compiler family, MPI type, MPI run command, ...

v0.7 (June 18th 2012)
---------------------

- fixed BLACS build
    - diagnostic tools to determine INTERFACE and TRANSCOMM values are now used
- added support for building Bison, CP2K, flex
    - with regression test enabled for CP2K as part of build process
    - note: BLACS built with EasyBuild prior to v0.7 needs to be rebuilt for CP2K to work correctly
- added --enable-mpi-threads to OpenMPI example easyconfigs
    - required for correct CP2K psmp build
- adjusted libsmm example easyconfig for lower build time
    - to make the full regression test finish in a reasonable amount of time
- added script to make porting of easyblocks from old to new EasyBuild codebase easier
    - takes care of refactoring, checks for PyLint warnings/errors, ...
- fixed several small bugs
- prefixed EasyBuild messages with "=="
- full regression test passed (58 easyconfigs tested)

v0.6 (May 11th 2012)
---------------------

- added support for Intel compiler toolkit (ictce)
    - which included the Intel compilers, Intel Math Kernel Library (imkl) and Intel MPI library (impi)
- added support for building Python with nose/numpy/scipy packages
- added simple regression test
- this version is able to build all supplied example easyconfigs

v0.5 (April 6th 2012)
----------------------

- first public release of EasyBuild
    - after a thorough cleanup of the EasyBuild framework of the in-house version
- supports building HPL with goalf compiler toolkit
    - the goalf toolkit consists of the GCC compilers, and the OpenMPI, ATLAS, LAPACK, FFTW and ScaLAPACK libraries
- also support build and installation of MVAPICH2
