Removed functionality¶
Some of the functionality that was available in previous EasyBuild versions is now removed, after it was deprecated first in an earlier EasyBuild version (see Deprecation policy).
Overview of removed functionality since EasyBuild v2.0¶
In EasyBuild v2.0, some intrusive changes were made that break backward compatibility with EasyBuild v1.x.
For EasyBuild users:
- Python version compatibility
- EasyBuild configuration
- $SOFTX environment variables in generated module files
For authors of easyconfig files:
- Automagic fallback to ConfigureMake
- Easyconfig parameters
- BEAGLE dependency in MrBayes easyblock replaced by beagle-lib
For developers of easyblocks:
- Easyblocks API (EasyBlock class from easybuild.framework.easyblock)
- Renamed/relocated functions
- Changes in (generic) easyblocks
For EasyBuild framework developers:
Note
A script fix-broken-easyconfigs.py
is provided to fix easyconfig files that were broken by the
backward-incompatible changes documented at Automagic fallback to ConfigureMake and
Easyconfig parameters. See fix_broken_easyconfigs.py for more information.
Python version compatibility¶
Compatibility with Python 2.4 is removed.
- deprecated since: EasyBuild v1.14.0 (July‘14)
- removed in: EasyBuild v2.0
- alternative(s): upgrade to Python v2.6.x or v2.7.x
Ever since EasyBuild v1.0, the codebase has been Python 2.4 compatible. One reason for this is that EasyBuild was being used on a daily basis on Scientific Linux 5, in which the Python 2.4.x is the system default.
Starting with EasyBuild v2.0 support for Python 2.4 is removed, and only ensure compatibility with Python 2.6.x or a more recent Python 2.x.
This will enable us to gradually also make the codebase compatible with Python 3.x, which is difficult to do without removing support for Python 2.4.
EasyBuild configuration¶
Old-style EasyBuild configuration is removed.
- deprecated since: EasyBuild v1.3.0 (Apr‘13)
- removed in: EasyBuild v2.0
- alternatives: new-style configuration (see Configuring EasyBuild)
Early versions of EasyBuild v1.x provided support for configuring EasyBuild via a Python module that was automagically executed when available.
Since EasyBuild v1.3 a safer and more consistent way of configuring EasyBuild is supported, which aligns the EasyBuild
command line options, $EASYBUILD_X
environment variables and key-value style configuration files.
More information about the new(er) and recommended configuration style is available here.
For detailed information with respect to porting from the old to the new configuration style, see Configuration Legacy.
Location of default configuration file¶
The default configuration file location $HOME/.easybuild/config.cfg
is no longer considered.
- deprecated since: EasyBuild v1.11.0 (Feb‘14)
- removed in: EasyBuild v2.0
- alternatives:
$XDG_CONFIG_HOME/easybuild/config.cfg
(equivalent to$HOME/.config/easybuild/config.cfg
)
The default path for the new-style configuration path is $XDG_CONFIG_HOME/easybuild/config.cfg
(or
$HOME/.config/easybuild/config.cfg
if $XDG_CONFIG_HOME
is not set), see List of used configuration files.
The previous default path $HOME/.easybuild/config.cfg
that was in place since EasyBuild v1.3.0 is no longer
considered.
Automagic fallback to ConfigureMake
¶
The automagic fallback to the ConfigureMake
easyblock is removed.
- deprecated since: EasyBuild v1.16.0 (Dec‘14)
- removed in: EasyBuild v2.0
- alternative(s): specify
easyblock = 'ConfigureMake'
in easyconfig file
If the easyblock
easyconfig was not specified, EasyBuild tries to find a matching easyblock based on the software
name. In EasyBuild v1.x, the generic ConfigureMake
easyblock was used if no matching easyblock could be found.
This behavior is now removed; instead, easyconfigs that require using the ConfigureMake
easyblock must include
the following:
easyblock = 'ConfigureMake'
Easyconfig parameters¶
Some easyconfig parameters are removed.
Note
A script is available to fix easyconfig files that are broken because they still rely on this functionality, see fix_broken_easyconfigs.py.
Options for build command¶
The premakeopts
and makeopts
easyconfig parameters are removed.
- deprecated since: EasyBuild v1.13.0 (May‘14)
- removed in: EasyBuild v2.0
- alternative(s): use
prebuildopts
/buildopts
instead
For consistency in terminology, the premakeopts
and makeopts
generic easyconfig parameters are removed,
in favor of their alternative parameters, prebuildopts
and buildopts
, resp.
(see also Configure/build/install command options)
Note
Since EasyBuild v1.13.0, buildopts
is automatically defined with the value of makeopts
, unless
buildopts
was specified by itself. When both values are specified, buildopts
takes precedence of makeopts
(analogous for prebuildopts
/premakeopts
).
Software license¶
The license
easyconfig parameter is removed.
- deprecated since: EasyBuild v1.11.0 (Feb‘14)
- removed in: EasyBuild v2.0
- alternative(s): use
license_file
orsoftware_license
instead
The license
easyconfig parameter, which was specific to the IntelBase
generic easyblock and thus relevant
for Intel tools, is removed. The generic license_file
easyconfig parameter should be used instead, to specify
the location of the license file (or server).
This change was made to avoid confusion with the software_license
generic easyconfig parameter, which can be used
to specify the license under which the software was released (e.g., GPLv2, BSD, etc.). Here, the specified value must
be a known license type (see eb --avail-easyconfig-licenses
).
Note
The software_license easyconfig parameter will become mandatory at some point.
BEAGLE
dependency in MrBayes
easyblock replaced by beagle-lib
¶
The MrBayes
easyblock no longer considers BEAGLE
as a valid dependency.
- deprecated since: EasyBuild v1.6.0 (Jul‘14)
- removed in: EasyBuild v2.0
- alternative(s): use
beagle-lib
instead
Due to a misnomer in the easyconfig files for beagle-lib
(formerly named BEAGLE
), the custom easyblock for
MrBayes
now no longer considers BEAGLE
as a dependency.
The library required by MrBayes
must now be provided as a dependency named beagle-lib
.
EasyBuild API changes¶
Some changes in the EasyBuild API were made, which potentiallty affects easyblocks and the EasyBuild framework itself.
Easyblocks API (EasyBlock
class from easybuild.framework.easyblock
)¶
The API for easyblocks was modified slightly, to correct for a couple of historic mistakes.
Return type of extra_options
method¶
The list-of-tuples return type of the extra_options
method must now be a dict
instead.
- deprecated since: EasyBuild v1.12.0 (Apr‘14)
- removed in: EasyBuild v2.0
- alternative(s): ensure/assume
dict
return type
The return type of the extra_options
static method in the EasyBlock
class has been changed to a dictionary
(dict
), rather than a list of key-value tuples.
Custom easyconfig parameters should be added via a dict-typed value to the extra_options
function of parent
easyblock.
For example (taken from the generic easyblock Binary
):
@staticmethod
def extra_options(extra_vars=None):
"""Extra easyconfig parameters specific to Binary easyblock."""
extra_vars = EasyBlock.extra_options(extra_vars)
extra_vars.update({
'install_cmd': [None, "Install command to be used.", CUSTOM],
})
return extra_vars
Extension filter template¶
The name
and version
templates in exts_filter
are removed.
- deprecated since: EasyBuild v1.2.0 (Feb‘13)
- removed in: EasyBuild v2.0
- alternative(s): use
ext_name
andext_version
instead
Only the ext_name
, ext_version
and src
template strings can be used in the exts_filter
extension filter
easyconfig parameter; the name
and version
template strings are removed.
For example (default extension filter for Python packages):
exts_filter = ("python -c 'import %(ext_name)s'", "")
Module path of default class for extensions¶
Specifying the module path in exts_defaultclass
is no longer possible.
- deprecated since: EasyBuild v0.5 (Apr‘12)
- removed in: EasyBuild v2.0
- alternative(s): (none required, module path is derived from specified class name)
Explicitely specifying the module path for the default class to use for extensions (via exts_defaultclass
) is
no longer possible. Only the class name should be specified, the corresponding module path is derived from it.
Module path for easyblocks¶
Deriving the module path for easyblocks from the software name is removed.
- deprecated since: EasyBuild v1.4.0 (May‘13)
- removed in: EasyBuild v2.0
- alternative(s): use easyblock class name according to encoding scheme (e.g.,
EB_Foo
)
Determining the location of Python modules representing easyblocks based on the software name (name
) is removed.
EasyBuild must be able to determine the easyblock module path solely based on the name of the easyblock Python class.
Easyblocks with a class name that is already honoring the encoding scheme implemented by the encode_class_name
function will not be affected.
easybuild.tools.modules
Python module¶
The API of the easybuild.tools.modules
module has been updated, certain aspects of the old API are removed.
- deprecated since: EasyBuild v1.8.0 (Oct‘13) & v1.15.0 (Sept‘15)
- removed in: EasyBuild v2.0
- alternative(s): use equivalents available in new API (see below)
The API of the easybuild.tools.modules
Python module has been changed extensively when implementing support for
alternative module naming schemes:
- the
modules
class variable and theadd_module
/remove_module
methods are removed; modules should be (un)loaded using theload
andunload
methods instead - the
mod_paths
andmodulePath
named arguments for therun_module
method aare removed; the class instance should be created with a specific list of module paths instead - the
Modules
class to obtain a class instance representing a modules tool interface is removed; themodules_tool
function should be used instead
Additionally, the exists
method which only takes a single module name is removed; it is replaced by
the exist
method, which takes a list of module names (since EasyBuild v1.15.0 (Sept‘15)).
Easyblocks should not be using easybuild.tools.modules
directly, and hence should be unaffected.
$SOFTX
environment variables in generated module files¶
$SOFTX
environment variables set by module files generated with EasyBuild v0.x will no longer be taken into
account.
- deprecated since: EasyBuild v1.3.0 (Apr‘13)
- removed in: EasyBuild v2.0
- alternative(s): reinstall (ancient) module files which are only defining the
$SOFTX
environment variables
The get_software_root
and get_software_version
functions will only take $EBROOTFOO
and $EBVERSIONFOO
environment variables into account, as opposed to also considering the $SOFTROOTFOO
and $SOFTVERSIONFOO
environment variables (which were set in modules generated by EasyBuild v0.x).
Likewise, adhering to the $SOFTDEVELFOO
environment variables is removed.
This is only relevant to early adopters who are still using module files generated by EasyBuild v0.x.
Renamed/relocated functions¶
Some functions/methods have been renamed or relocated, their equivalents under a previous location/name are removed.
- deprecated since: (depends on function/method, see below)
- removed in: EasyBuild v2.0
- alternative(s): use new location/name
A number of functions and methods that are part of the EasyBuild framework API have been renamed, mainly for consistency reasons.
- the
moduleGenerator
handle to theModuleGenerator
object instance has been renamed tomodule_generator
; hence, easyblock should be usingself.module_generator
rather thanself.moduleGenerator
(since EasyBuild v1.16.0 (Dec‘14)) source_paths()
(ineasybuild.tools.config
) replaces the removedsource_path()
(since EasyBuild v1.8.0 (Oct‘13))get_avail_core_count()
(ineasybuild.tools.systemtools
) replaces the removedget_core_count()
(since EasyBuild v1.9.0 (Nov‘13))get_os_type()
(ineasybuild.tools.systemtools
) replaces the removedget_kernel_name
(since EasyBuild v1.3.0 (Apr‘13))- the
det_full_ec_version
function available fromeasybuild.tools.module_generator
replaces the removeddet_installversion
function that was available fromeasybuild.framework.easyconfig.*
(since EasyBuild v1.8.0 (Oct‘13))
Some functions have moved to a different location:
- the
read_environment
function is now provided by theeasybuild.tools.environment
module, rather than byeasybuild.tools.config
oreasybuild.tools.utilities
(since EasyBuild v1.7.0 (Sept‘13)) - the
modify_env
function is now provided by theeasybuild.tools.environment
module, rather than byeasybuild.tools.filetools
(since EasyBuild v1.7.0 (Sep‘13)) - the
run_cmd
,run_cmd_qa
andparse_log_for_error
functions are now provided by theeasybuild.tools.run
module, rather than byeasybuild.tools.filetools
(since EasyBuild v1.11.0 (Feb‘14))
The get_log
function provided by the easybuild.tools.build_log
module has been removed entirely,
no alternatives are provided (since none are needed). (since EasyBuild v1.3.0 (Apr‘13))
Changes in (generic) easyblocks¶
srcdir
replaces builddir
as named argument in CMakeMake.configure_step
¶
The named argument builddir
in the configure_step
method of the generic CMakeMake
easyblock
was replaced by srcdir
.
- deprecated since: EasyBuild v1.4.0 (May‘13)
- removed in: EasyBuild v2.0
- alternative(s): equivalent
srcdir
named argument
Since the builddir
named argument in the configure_step
method of the generic CMakeMake
easyblock was a
misnomer (it specifies the location of the source directory that should be provided to cmake
), it was replaced
with an equivalent named argument srcdir
.
VersionIndependentPythonPackage
replaces VersionIndependendPythonPackage
¶
The generic easyblock VersionIndependendPythonPackage
was replaced with the equivalent generic easyblock
VersionIndependentPythonPackage
.
- deprecated since: EasyBuild v1.11.0 (Feb‘14)
- removed in: EasyBuild v2.0
- alternative(s):
VersionIndependentPythonPackage
Because of to a typo in the name, the VersionIndependendPythonPackage
generic easyblock was replaced by the
equivalent VersionIndependentPythonPackage
generic easyblock.
get_sitearch_suffix
function in Perl
easyblock is removed¶
The get_sitearch_suffix
function in the Perl
easyblock was replaced in favor of the more generic
get_site_suffix
function.
- deprecated since: EasyBuild v1.7.0 (Sept‘13)
- removed in: EasyBuild v2.0
- alternative(s):
get_site_suffix('sitearch')
The get_sitearch_suffix
function provided by the Perl
easyblock, which can be (and is) imported in/used by other
easyblocks, has been replaced by the more generic get_site_suffix
function.
To obtain the same functionality as was provided by get_sitearch_suffix
, use get_site_suffix('sitearch')
instead.