System toolchain

In EasyBuild v4.0, the infamous dummy toolchain has been deprecated, and replaced with the system toolchain.

This page provides more information about this change, and how to deal with the transition.

Note

To ease the transition from dummy to system, EasyBuild v3.9.4 already supports using the system toolchain as an alias for the dummy toolchain.

Use case for the system toolchain

The System toolchain is intended for the same use case as the dummy toolchain was: it should (only) be used for software installations where the compiler & libraries provided by the operating system are assumed to be sufficient.

This includes installing binary software (for which no compiler is used at all), installations that boil down to only unpacking a source tarball, and building and installing a (base) toolchain compiler like GCC(core).

For all intents and purposes, the system toolchain can be considered as a drop-in replacement for the (deprecated) dummy toolchain (see also Impact of deprecating dummy toolchain).

Using the system compiler

To use the system toolchain in an easyconfig file, simply use 'system' as toolchain name:

toolchain = {'name': 'system', 'version': ''}

Note

The toolchain version you specify is totally irrelevant when using the system compiler, it could be 'system', '' or any other (string) value.

EasyBuild does not interpret the version of the system toolchain in any way (as opposed to the dummy toolchain in EasyBuild versions prior to version 4.0, see Impact of version of dummy toolchain w.r.t. dependencies).

SYSTEM constant

For convenience, a SYSTEM constant is available to easily specify the use of the system toolchain (and to make it stand out against using a regular toolchain):

toolchain = SYSTEM

We strongly recommend using the SYSTEM constant to specify the use of the system toolchain.

Impact of deprecating dummy toolchain

The only impact of deprecating the dummy toolchain is that a warning will be printed whenever an easyconfig file that still uses the dummy toolchain is parsed:

WARNING: Deprecated functionality, will no longer work in v5.0:
Use of 'dummy' toolchain is deprecated, use 'system' toolchain instead;
see http://easybuild.readthedocs.org/en/latest/Deprecated-functionality.html for more information

Other than this warning, there is no impact on the EasyBuild functionality whatsoever.

Use of the dummy toolchain has been deprecated, but is still supported in EasyBuild v4.x; it is simply an alias for the system toolchain which replaces it.

Hence, software installations for easyconfig files that are still using the dummy toolchain will proceed as before, and the contents of the easyconfig files will be interpreted exactly as before, with one exception: the (build) dependencies specified in the easyconfig files will always be loaded in the build environment, regardless of the toolchain version (see also Impact of version of dummy toolchain w.r.t. dependencies).

Since the dummy toolchain has been deprecated, so has the --add-dummy-to-minimal-toolchains configuration option. It has been replaced with the --add-system-to-minimal-toolchains configuration option (see also Considering system as minimal toolchain).

Updating easyconfig files that use the dummy toolchain

To update easyconfig files that still use the dummy toolchain, you should simply change the definition of the toolchain parameter to use 'system' as a toolchain name (see also Using the system compiler).

We recommend using the SYSTEM constant for this, see SYSTEM constant.

To automatically update easyconfig files still using the dummy toolchain, you can also use eb --fix-deprecated-easyconfigs. Do take into account that this option could also result in additional changes being made to the easyconfig files, see Renaming local variables to match the recommended naming scheme using eb --fix-deprecated-easyconfigs.

Motivation for deprecating the dummy toolchain

Deprecating the dummy toolchain was done for a number of reasons:

dummy toolchain name

The dummy name may be rather confusing, especially if you are new to EasyBuild. Just based on the name, it is unclear how the dummy toolchain is different from a regular toolchain.

Hopefully, the name of the system toolchain does speak more for itself: when using it, you are relying on the compiler & libraries provided by the operating system (as opposed to compilers & libraries that are a part of a regular toolchain).

Impact of version of dummy toolchain w.r.t. dependencies

The version that was being used for a dummy toolchain was interpreted by EasyBuild in a rather surprising way.

If 'dummy' was specified as a toolchain version, then the (build) dependencies that were specified in the easyconfig file were not loaded in the build environment. module load statements for the (non-build) dependencies were included in the generated module file, however…

Using any version other than 'dummy' resulted in the usual behaviour of loading the dependencies in the build environment.

Why this mechanism was in place has been lost to the sands of time…

This often led to outright confusing installation problems, and hence it was the main motivator for deprecating the dummy toolchain. Rather than just changing the semantics of the dummy toolchain, we saw this as an opportunity to also fix the name.