Partial installations¶
Several ways of performing partial installations are supported. These may be useful when debugging a particular issue with the installation procedure being performed by EasyBuild, updating existing software installations or module files, or after changing the EasyBuild configuration (e.g., switching to module files in Lua syntax or a different module naming scheme).
Stopping the installation procedure after a step using -s
/--stop
¶
To stop the installation procedure after a specific step in the installation procedure, the -s
/--stop
command line option can be used; the name of the step must be supplied as an argument.
The following step names are recognized (listed in execution order): fetch
, ready
, source
, patch
,
prepare
, configure
, build
, test
, install
, extensions
, package
, postproc
,
sanitycheck
, cleanup
, module
, testcases
.
Example usage:
$ eb GCC-11.3.0.eb --stop configure
== temporary log file in case of crash /tmp/eb-X2Z0b7/easybuild-mGxmNb.log
== processing EasyBuild easyconfig /home/example/GCC-11.3.0.eb
== building and installing GCC/11.3.0...
== fetching files...
== creating build dir, resetting environment...
== unpacking...
== patching...
== preparing...
== configuring...
== COMPLETED: Installation STOPPED successfully
== Results of the build can be found in the log file /dev/shm/example/GCC/11.3.0/dummy-dummy/easybuild/easybuild-GCC-11.3.0-20230613.091644.log
== Build succeeded for 1 out of 1
== temporary log file(s) /tmp/eb-X2Z0b7/easybuild-mGxmNb.log* have been removed.
== temporary directory /tmp/eb-X2Z0b7 has been removed.
Fetching sources with --fetch
¶
It may be useful to be able to batch-download sources on a machine where no modules tool is installed. The
--fetch
option, which is equivalent with --stop fetch --ignore-osdeps
, addresses this requirement.
Example usage:
$ eb GCCcore-6.2.0.eb --fetch
== Temporary log file in case of crash /tmp/eb-23iu2fpm/easybuild-ss0wcidi.log
== processing EasyBuild easyconfig /home/example/GCCcore-11.3.0.eb
== building and installing GCCcore/11.3.0...
== fetching files...
== COMPLETED: Installation STOPPED successfully (took 1 secs)
== Results of the build can be found in the log file(s) /tmp/example/easybuild/build/GCCcore/11.3.0/system-system/easybuild/easybuild-GCCcore-11.3.0-20230613.090338.log
== Build succeeded for 1 out of 1
== Temporary log file(s) /tmp/example/eb-23iu2fpm/easybuild-ss0wcidi.log* have been removed.
== Temporary directory /tmp/example/eb-23iu2fpm has been removed.
Note
--fetch
can be used in conjunction with the --robot
and --robot-path
options to download sources of
the whole dependency tree of an easyconfig (see Enabling dependency resolution, --robot
/ -r
and --robot-paths
).
Note
Sources will be downloaded in the default location (see Source path (--sourcepath
)),
unless EasyBuild is configured via the --sourcepath
option.
Installing additional extensions using -k
/-skip
¶
For software applications that may include Extensions, it is often required to install one or more additional
extensions without having to reinstall the software package (and all extensions) from scratch.
For this purpose, the -k
/--skip
command line option is available.
To actually skip an existing software installation and all installed extensions, a corresponding module must be
available already; if not, the installation procedure will be performed from scratch.
To trigger the installation of missing extensions, --rebuild
( or --force
, see Forced reinstallation) must be used as well; without it, the installation
procedure will be skipped as a whole (since the module is already available).
When --skip
is combined with --rebuild
, EasyBuild will:
i) ensure that all (extension) sources are available (and try to fetch them if needed); ii) prepare the build environment; iii) check which extensions have not been installed yet; iv) install the missing extensions; v) run the sanity check (which includes checking that all extensions are available) vi) regenerate the module file (since it contains a list of installed extensions)
Example usage:
$ eb Python-3.10.4-GCCcore-11.3.0.eb --skip
...
== Python/3.10.4-GCCcore-11.3.0 is already installed (module found), skipping
== No easyconfigs left to be built.
== Build succeeded for 0 out of 0
$ eb Python-3.10.4-GCCcore-11.3.0.eb --skip --rebuild
...
== building and installing Python/3.10.4-GCCcore-11.3.0...
...
== configuring [skipped]
== building [skipped]
== testing [skipped]
== installing [skipped]
== taking care of extensions...
...
== sanity checking...
== cleaning up...
== creating module...
== COMPLETED: Installation ended successfully
Note
Upgrading of extensions to a newer version does not work (yet) using --skip
, because the way in which extensions
are checked for availability, i.e. the extensions filter, is (usually) version-agnogstic.
Note
The 'skipsteps
' easyconfig parameter has a different purpose, i.e. to specify which installation steps should
always be skipped when the installation of a particular software package is performed, no matter whether the
software or corresponding module is already available or not.
Note
When --skip
is used, a backup is created for all existing module files that are regenerated.
To disable backing up of module files, use --disable-backup-modules
(see also Backing up of existing modules (--backup-modules
)).
Only (re)generating (additional) module files using --module-only¶
Since EasyBuild v2.1, it is possible to only (re)generate the module file that matches the specifications in the
easyconfig file, using --module-only
. Depending on the use case, additional options should be supplied.
Usually --rebuild
is also required, either to ignore the existing module file (if the module is available under the
same name as the one being (re)generated), or to skip the sanity check that verifies the software installation (if no
software installation is available).
Combining --module-only
with --installpath-modules
is also a common use case, to generate the module file in
a (test) location other than the software installation prefix (see Software and modules install path (--installpath, --installpath-software, --installpath-modules)).
Note
Although --module-only
was already supported in EasyBuild v2.1.0, we strongly recommend to use EasyBuild
v2.1.1 or a more recent version, because of some critical bug fixes with respect to --module-only
.
Use cases:
Note
When --module-only
is used, a backup is created for all existing module files that are regenerated.
To disable backing up of module files, use --disable-backup-modules
(see also Backing up of existing modules (--backup-modules
)).
Only (re)generating (existing) module file¶
To only generate a module file (i.e., skip actually building and installing the software), or to regenerate an
existing module file, --module-only
can be used.
In the former case, enabling --rebuild
is required because the sanity check step that verifies whether the
installation produced the expected files and/or directories is not skipped unless forced.
In the latter case, --rebuild
must be used to make EasyBuild ignore that the module is already available
according to the modules tool.
Example usage:
-
only generate module file:
$ module avail GCC ---------------------------- /home/example/.local/modules/all ---------------------------- GCC/11.2.0 $ eb GCC-11.3.0.eb --module-only --rebuild ... == building and installing GCC/11.3.0... == fetching files [skipped] ... == configuring [skipped] == building [skipped] == testing [skipped] == installing [skipped] ... == sanity checking [skipped] == cleaning up [skipped] == creating module... == COMPLETED: Installation ended successfully ... $ module avail GCC ---------------------------- /home/example/.local/modules/all ---------------------------- GCC/11.2.0 GCC/11.3.0
-
regenerate existing module file:
$ module avail GCC/11.3.0 ---------------------------- /home/example/.local/modules/all ---------------------------- GCC/11.3.0 $ ls -l /home/example/.local/modules/all/GCC/11.3.0 -rw-rw-r-- 1 example example 1002 Jun 13 08:35 /home/example/.local/modules/all/GCC/11.3.0 $ eb GCC-11.3.0.eb --module-only --rebuild ... == building and installing GCC/11.3.0... ... == sanity checking [skipped] == creating module... == COMPLETED: Installation ended successfully ... $ ls -l /home/example/.local/modules/all/GCC/11.3.0 -rw-rw-r-- 1 example example 1064 Jun 13 10:54 /home/example/.local/modules/all/GCC/11.3.0
Generating additional module files¶
Generating an additional module file, next to the one(s) already available, is also supported. This can achieved by
combining --module-only
with additional configuration options that apply to the module generation.
Examples:
-
to generate a module file in Lua syntax, next to an already existing module file in Tcl syntax,
--module-only --module-syntax=Lua
can be used:$ module avail GCC/11.3.0 ---------------------------- /home/example/.local/modules/all ---------------------------- GCC/11.3.0 $ ls -l /home/example/.local/modules/all/GCC/11.3.0* -rw-rw-r-- 1 example example 1064 Jun 13 08:54 /home/example/.local/modules/all/GCC/11.3.0 $ eb GCC-11.3.0.eb --modules-tool=Lmod --module-only --module-syntax=Lua --rebuild ... == building and installing GCC/11.3.0... ... == sanity checking [skipped] == creating module... == COMPLETED: Installation ended successfully ... $ ls -l /home/example/.local/modules/all/GCC/11.3.0* -rw-rw-r-- 1 example example 1064 Jun 13 08:54 /home/example/.local/modules/all/GCC/11.3.0 -rw-rw-r-- 1 example example 1249 Jun 13 08:56 /home/example/.local/modules/all/GCC/11.3.0.lua
Note
Since only Lmod can consume module files in Lua syntax, it must be used as a modules tool; see also Module files syntax (
--module-syntax
).Only changing the syntax of the module file does not affect the module name, so Lmod will report the module as being available. Hence,
--rebuild
must be used here as well. -
to generate a module file using a different naming scheme,
--module-only
can be combined with--module-naming-scheme
:$ eb --installpath-modules=$HOME/test/modules --module-only --module-naming-scheme=HierarchicalMNS --rebuild ... == building and installing Core/GCC/11.3.0... ... == sanity checking [skipped] == creating module... == COMPLETED: Installation ended successfully $ module unuse $HOME/.local/modules/all $ module use $HOME/test/modules/all $ module avail ---------------------------- /home/example/test/modules/all ---------------------------- Core/GCC/11.3.0
Note
Modules that are generated used different module naming schemes should never be mixed, hence the use of
--installpath-modules
, see also Direct options:--installpath-software
and--installpath-modules
.Note
The modules files generated using the specified module naming scheme will most likely not be tied to an existing software installation in this case (unless the software installation was already there somehow), since the name of the subdirectory of the software installation prefix is also governed by the active module naming scheme. This is also why
--rebuild
must be used in the example above (to skip the sanity check that verifies the software installation).Thus, this is only useful to assess how the module tree would look like under a particular module naming scheme; the modules themselves are useless since they point to empty installation directories.
To tie a module file generated using to an existing software installation that was performed under a different module naming scheme, a simple module naming scheme can be implemented that mixes two modules naming schemes, by providing the name of the software installation subdirectory using one scheme, and the module names (and other metadata for module files) with the other.
An example of such a module naming scheme is
MigrateFromEBToHMNS
, which allows to generate module files using the hierarchical module naming scheme implemented byHierarchicalMNS
for the software installed in subdirectories following the default EasyBuild module naming schemeEasyBuildMNS
. TheMigrateFromEBToHMNS
module naming scheme is available since EasyBuild v2.2.0.