EasyBuild
License information
EasyBuild is made available under the GNU General Public License version 2.
User documentation
What is EasyBuild?
EasyBuild is a software build and installation framework written in Python that allows you to install software in a structured, repeatable and robust way.
There is a web-based manual for EasyBuild. Tutorials are also available on the web, including a tutorial specifically for LUMI in our training archive web site.
Using EasyBuild on LUMI
Loading the EasyBuild module only gives you a standard configuration of EasyBuild that will install in your already space-limited home directory, not recognise the already installed software in the LUMI software stack, and in fact use build recipes that are not all compatible with LUMI.
To install software building upon the centrally installed LUMI software stacks (as provided by the LUMI/xx.yy modules), users should load the EasyBuild-user module instead as discussed in the EasyBuild section of the main LUMI documentation.
Pre-installed modules (and EasyConfigs)
To access module help and find out for which stacks and partitions the module is
installed, use module spider EasyBuild/<version>
.
EasyConfig:
-
EasyBuild/4.6.0 (EasyConfig: EasyBuild-4.6.0.eb)
This is the version of EasyBuild used for the 22.06 and 22.08 software stacks.
-
EasyBuild/4.7.1 (EasyConfig: EasyBuild-4.7.1.eb)
This is the version of EasyBuild used for the 22.12 and 23.03 software stacks.
Technical documentation
EasyBuild
Version 4.4.2 for LUMI/21.08
- Started from the default EasyConfig but added additional help information to the module file.
Version 4.5.3 for LUMI/21.12
- We activated the new feature to show a progress bar and also added support
for
archspec
. This is done by adding additional packages via extensions in the EasyConfig. It is a very fragile combination though, only very specific combinations of version worked.
Version 4.6.0 for LUMI/22.06 and LUMI/22.08
- The additional packages that are used to activate
archspec
in EasyBuild and to provide the progress bar are a very fragile mix. Updating any of them to newer versions didn't work, maybe due to the lack ofpip
and the very old version ofpython
as the system Python.
Version 4.7.1 for LUMI/22.12 and LUMI/23.03
- Trivial port of the 4.6.0 EasyConfig.
Version 4.8.2 for LUMI/23.09
-
Trivial port of the 4.7.1 EasyConfig.
-
In a later update we added support for loading
EasyBuild-tools
if available.
Version 4.9.2 for LUMI/23.12 and 24.03
-
Started as a trivial port of the 4.8.2 EasyConfig
-
At first removed support for loading
EasyBuild-tools
as the reason for it is
no longer there (MATLAB installation done differently). -
Added
PyYAML
to the list of extra Python packages as we also wanted to use EasyBuild with EasyStack files in a container that did not havePyYAMSL
in its system Python installation.The problem with this package is that it installs its egg in
lib64
instead of inlib
so that two directories need to be added toPYTHONPATH
. -
Needed to modify
libsci.py
intoolchains/linalg
in the framework as it should now checkCRAY_PE_LIBSCI_PREFIX_DIR
instead ofCRAY_LIBSCI_PREFIX_DIR
. For now we check for both so that the same EasyConfig can also be used to install EasyBuild for older versions of the Cray PE. -
Wanted to use
postinstallcmds
to robustify a number of scripts, but that was
not supported by the EasyBlock so that one needed to be changed also.-
Robustify the
eb
command:-
PYTHONPATH
is hard-coded in theeb
shell script and overwrites anything from the environment. -
In the loop that searches for a suitable Python command, we added the system Python with full path and version at the front of the list. Hence strictly speaking
EB_PYTHON
is no longer needed.
-
-
Robustifying the
archspec
,cmark
andpuygmentize
scripts put in thebin
directory when installing their respective additional packages:-
Shebang line changed to explicitly call
python3.6
, and added the-E
option to avoid using the value ofPYTHONPATH
-
We then used
sys.path.append
to add thelib
subdirectory to the Python search path. Thelib64
subdirectory was not added asPyYAML
is not needed by those commands.
-
-
-
And added sanity checks that explicitly unset
PYTHONPATH
to verify that these commands indeed work withoutPYTHONPATH
. -
The module however still sets
PYTHONPATH
as (1) this is difficult to turn off, it is one of those variables generated automatically by EasyBuild if it finds a certain directory, and (2) it is still needed when using EasyBuild as a library.
Archived EasyConfigs
The EasyConfigs below are additonal easyconfigs that are not directly available on the system for installation. Users are advised to use the newer ones and these archived ones are unsupported. They are still provided as a source of information should you need this, e.g., to understand the configuration that was used for earlier work on the system.
-
Archived EasyConfigs from LUMI-SoftwareStack - previously centrally installed software
-
EasyConfig EasyBuild-4.4.2.eb, with module EasyBuild/4.4.2
This is the version of EasyBuild used for the 21.08 software stack.
-
EasyConfig EasyBuild-4.5.3-bare.eb, with module EasyBuild/4.5.3-bare
-
EasyConfig EasyBuild-4.5.3.eb, with module EasyBuild/4.5.3
This is the version of EasyBuild used for the 21.12 software stack.