The objective of this tutorial is to show how EasyBuild can be used to ease, automate and script the build of software on the IT4Innovations clusters. Two use-cases are considered. First, we are going to build software that are supported by EasyBuild. In a second time, we will see through a simple example how to add support for a new software in EasyBuild.
The objective of this tutorial is to show how EasyBuild can be used to ease, automate and script the build of software on the IT4Innovations clusters. Two use-cases are considered. First, we are going to build software that is supported by EasyBuild. In a second time, we will see through a simple example how to add support for a new software in EasyBuild.
The benefit of using EasyBuild for your builds is that it allows automated and reproducable build of software. Once a build has been made, the build script (via the EasyConfig file) or the installed software (via the module file) can be shared with other users.
...
...
@@ -11,20 +11,21 @@ The benefit of using EasyBuild for your builds is that it allows automated and r
EasyBuild is a tool that allows to perform automated and reproducible compilation and installation of software.
All builds and installations are performed at user level, so you don't need the admin rights. The software are installed in your home directory (by default in `$HOME/.local/easybuild/software/`) and a module file is generated (by default in `$HOME/.local/easybuild/modules/`) to use the software.
All builds and installations are performed at user level, so you don't need the admin rights. The software is installed in your home directory (by default in `$HOME/.local/easybuild/software/`) and a module file is generated (by default in `$HOME/.local/easybuild/modules/`) to use the software.
EasyBuild relies on two main concepts
\* Toolchains
\* EasyConfig file
Detailed documentations is available [here](http://easybuild.readthedocs.io].
* Toolchains
* EasyConfig file
Detailed documentations is available [here](http://easybuild.readthedocs.io).
## Toolchains
A toolchain corresponds to a compiler and a set of libraries which are commonly used to build a software. The two main toolchains frequently used on the IT4Innovations clusters are the **foss** and **intel**.
\***foss** is based on the GCC compiler and on open-source libraries (OpenMPI, OpenBLAS, etc.).
\***intel** is based on the Intel compiler and on Intel libraries (Intel MPI, Intel Math Kernel Library, etc.).
***foss** is based on the GCC compiler and on open-source libraries (OpenMPI, OpenBLAS, etc.).
***intel** is based on the Intel compiler and on Intel libraries (Intel MPI, Intel Math Kernel Library, etc.).
Additional details are available on [here](https://github.com/hpcugent/easybuild/wiki/Compiler-toolchains).
...
...
@@ -45,8 +46,8 @@ To use EasyBuild on a compute node, load the EasyBuild module:
S: Module is Sticky, requires --force to unload or purge
...
...
@@ -55,7 +56,7 @@ $ ml av EasyBuild
$ml EasyBuild
```
The EasyBuild command is eb. Check the version you have loaded
The EasyBuild command is eb. Check the version you have loaded:
```console
$eb --version
...
...
@@ -87,7 +88,7 @@ Options:
### Search For Available Easyconfig
Searching for available easyconfig files can be done using the **--search** (long output) and **-S** (short output) command line options. All easyconfig files available in the robot search path are considered (see Searching for easyconfigs: the robot search path), and searching is done case-insensitive.
Searching for available easyconfig files can be done using the **--search** (long output) and **-S** (short output) command line options. All easyconfig files available in the robot search path are considered and searching is done case-insensitive.
== Temporary directory /tmp/eb-oisi0q has been removed.
```
and try to build *git-2.11.1-intel-2017a*, but we used easyconfig *git-2.11.0.eb* - change toolchains **--try-toolchain-name=intel --try-toolchain-version=2017a** or **--try-toolchain=intel,2017a**
and try to build *git-2.11.1-intel-2017a*, but we used easyconfig *git-2.11.0.eb* - change toolchains **--try-toolchain-name=intel --try-toolchain-version=2017a** or **--try-toolchain=intel,2017a**:
To see the newly installed modules, you need to add the path where they were installed to the MODULEPATH. On the cluster you have to use the module use command:
To see the newly installed modules, you need to add the path where they were installed to the MODULEPATH. On the cluster you have to use the `module use` command:
```console
$module use $HOME/.local/easybuild/modules/all/
```
or modify your .bash_profile
or modify your `.bash_profile`:
```console
$cat ~/.bash_profile
...
...
@@ -401,7 +402,7 @@ $ ml av git
If you need software that is not listed, request it at support@it4i.cz.
```
## Submitting Build Jobs (experimental)
## Submitting Build Jobs (Experimental)
Using the **--job** command line option, you can instruct EasyBuild to submit jobs for the installations that should be performed, rather than performing the installations locally on the system you are on.