Commit 8fbc5424 authored by Jan Siwiec's avatar Jan Siwiec

Update easybuild.md

parent ea952f8d
Pipeline #11303 passed with stages
in 23 minutes and 33 seconds
# 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 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 a software that is supported by EasyBuild. Then, 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.
The benefit of using EasyBuild for your builds is that it allows automated and reproducible 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.
## Short Introduction
EasyBuild is a tool that allows to perform automated and reproducible compilation and installation of software.
EasyBuild is a tool that allows performing automated and reproducible software compilation and installation.
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.
All builds and installations are performed at user level, so you do not 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
EasyBuild relies on two main concepts:
* Toolchains
* EasyConfig file (our easyconfigs is [here][a])
Detailed documentations is available [here][b].
A detailed documentation is available [here][b].
## 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**.
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.).
Additional details are available on [here][c].
Additional details are available [here][c].
## EasyConfig File
An EasyConfig file is a simple text file that describes the build process of a software. For most software that uses standard procedure (like configure, make and make install), this file is very simple. Many EasyConfig files are already provided with EasyBuild.
The EasyConfig file is a simple text file that describes the build process of a software. For most software that uses standard procedure (like configure, make, and make install), this file is very simple. Many EasyConfig files are already provided with EasyBuild.
By default, EasyConfig files and generated modules are named using the following convention
By default, EasyConfig files and generated modules are named using the following convention:
`software-name-software-version-toolchain-name-toolchain-version(-suffix).eb`
Additional details are available on [here][d].
Additional details are available [here][d].
## EasyBuild on IT4Innovations Clusters
......@@ -140,7 +140,7 @@ CFGS=/apps/easybuild/easyconfigs/easybuild/easyconfigs
### Compile and Install Module
If we try to build *git-2.8.0.eb*, nothing will be done as it is already installed on the cluster. To enable dependency resolution, use the **--robot** command line option (or **-r** for short):
If we try to build *git-2.8.0.eb*, nothing will happen as it is already installed on the cluster. To enable dependency resolution, use the **--robot** command line option (or **-r** for short):
```console
$ eb git-2.8.0.eb -r
......@@ -213,7 +213,7 @@ If we try to build *git-2.11.0.eb*:
== Temporary directory /tmp/eb-JS_Fb5 has been removed.
```
If we try to build *git-2.11.1*, but we used easyconfig *git-2.11.0.eb* - change version command **--try-software-version=2.11.1**:
If we try to build *git-2.11.1*, but we used easyconfig *git-2.11.0.eb* - change the version command **--try-software-version=2.11.1**:
```console
$ eb git-2.11.0.eb -r --try-software-version=2.11.1
......@@ -277,7 +277,7 @@ $ eb git-2.11.0.eb -r --try-toolchain=intel,2017a
### MODULEPATH
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/
......@@ -305,7 +305,7 @@ export PATH
## Build Software Using Your Own EasyConfig File
For this example, we create an EasyConfig file to build Git 2.11.1 with *foss* toolchain. Open your favorite editor and create a file named *git-2.11.1-foss-2017a.eb* with the following content:
For this example, we create an EasyConfig file to build Git 2.11.1 with the *foss* toolchain. Open your favorite editor and create a file named *git-2.11.1-foss-2017a.eb* with the following content:
```console
$ vim git-2.11.1-foss-2017a.eb
......@@ -349,9 +349,9 @@ sanity_check_paths = {
moduleclass = 'tools'
```
This is a simple EasyConfig. Most of the fields are self-descriptive. No build method is explicitely defined, so it uses by default the standard configure/make/make install approach.
This is a simple EasyConfig. Most of the fields are self-descriptive. No build method is explicitly defined, so it uses by default the standard configure/make/make install approach.
Let's build Git with this EasyConfig file:
Let us build Git with this EasyConfig file:
```console
$ eb ./git-2.11.1-foss-2017a.eb -r
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment