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 v4.0¶
In EasyBuild v4.0, some intrusive changes were made that break backward compatibility with earlier versions.
Note
In addition, please take into account the additional changes in EasyBuild v4.0, which are documented here.
For authors of easyconfig files:
- use_fma custom easyconfig parameter for FFTW
- Specifying source files as 2-element tuples to provide a custom extraction command
- use_easy_install and use_setup_py_develop custom easyconfig parameters for PythonPackage easyblock
For developers of easyblocks:
For EasyBuild framework developers:
use_fma
custom easyconfig parameter for FFTW¶
- deprecated since: EasyBuild v3.2.0 (May 5th 2017)
- removed in: EasyBuild v4.0
- alternatives: use
use_fma4
easyconfig parameter instead
The use_fma
easyconfig parameter is no longer supported,
and was replaced by the equivalent easyconfig parameter use_fma4
.
use_fma
was introduced in EasyBuild v3.1.0 allow configuring FFTW with --enable-avx-128-fma
.
Since it is only supported on systems with AMD processors that have the FMA4
feature, it was replaced by
the more fittingly named use_fma4
parameter in EasyBuild v3.2.0.
Specifying source files as 2-element tuples to provide a custom extraction command¶
- deprecated since: EasyBuild v3.3.0 (June 22nd 2017)
- removed in: EasyBuild v4.0
- alternatives: use
extract_cmd
key in Python dictionary format instead
Specyfing a custom extraction command for a particular source file by using a 2-element tuple in sources
is no longer supported.
Instead, a Python dictionary containing the filename
and extract_cmd
keys should be used instead,
see Alternative formats for sources.
So, this:
# source file is actually a gzipped tarball (filename should be .tar.gz)
# DEPRECATED FORMAT, don't use this anymore!
sources = [('example.gz', "tar xfvz %s")]
should be replaced with:
sources = [{
'filename': 'example-%(version)s.gz',
'extract_cmd': "tar xfvz %s", # source file is actually a gzipped tarball (filename should be .tar.gz)
}]
use_easy_install
and use_setup_py_develop
custom easyconfig parameters for PythonPackage
easyblock¶
- deprecated since: EasyBuild v3.5.1 (Jan 17th 2018)
- removed in: EasyBuild v4.0
- alternatives: use
install_target
easyconfig parameter instead
The custom easyconfig parameters use_easy_install
and use_setup_py_develop
for the PythonPackage
easyblock are no longer supported. They are obsolete since the install_target
custom easyconfig parameter was
added in https://github.com/easybuilders/easybuild-easyblocks/pull/1341.
Rather than using use_easy_install = True
, you should now use install_target = 'easy_install'
instead.
Rather than using use_setup_py_develop = True
, you should now use install_target = 'develop'
instead.
copytree
function¶
- deprecated since: EasyBuild v3.2.0 (May 5th 2017)
- removed in: EasyBuild v4.0
- alternatives: use
copy_dir
instead
The copytree
function, which was a copy of the shutil.copytree
function (introduced when Python 2.4 was still
supported) is no longer supported.
It has been replaced by the superior copy_dir
function in the easybuild.tools.filetools
module.
copy_dir
graciously handles any exceptions that occur, and is aware of the EasyBuild dry run mode.
skip_symlinks
named argument for adjust_permissions
¶
- deprecated since: EasyBuild v3.8.0 (Nov 2018)
- removed in: EasyBuild v4.0
- alternatives: (none required)
The skip_symlinks
argument for the adjust_permissions
function is no longer supported
since adjust_permissions
has been changed to always skip symbolic links (this was already the default behaviour);
see also https://github.com/easybuilders/easybuild-framework/pull/2644 .
default_fallback
named argument for get_easyblock_class
¶
- deprecated since: EasyBuild v3.2.0 (May 5th 2017)
- removed in: EasyBuild v4.0
- alternatives: use
error_on_missing_easyblock
named parameter instead
The get_easyblock_class
implementation was cleaned up to remove the support for falling back to the
generic ConfigureMake
easyblock in EasyBuild v3.2.0 (see https://github.com/easybuilders/easybuild-framework/pull/2178),
following the disabling of the Automagic fallback to ConfigureMake in EasyBuild v2.0.
The default_fallback
named argument for get_easyblock_class
was replaced by error_on_missing_easyblock
,
to retain support for ignoring a missing matching easyblock rather than raising an error.
add_dependencies
method in Toolchain
class¶
- deprecated since: EasyBuild v3.8.0
- removed in: EasyBuild v4.0
- alternatives: pass list of dependencies to
deps
named argument ofprepare
method instead
The add_dependencies
method in the Toolchain
class is no longer supported, to provide more flexibility in the
EasyBuild framework w.r.t. handling of dependencies (see https://github.com/easybuilders/easybuild-framework/pull/2674).
Instead, the list of dependencies should be passed to the Toolchain.prepare
method, via the deps
named argument.
Overview of removed functionality since EasyBuild v3.0¶
In EasyBuild v3.0, some intrusive changes were made that break backward compatibility with earlier versions.
For EasyBuild users & authors of easyconfig files:
For developers of easyblocks:
- error and exception log methods no longer raise an exception
- get_blas_lib function provided by LAPACK easyblock has been removed
- get_netcdf_module_set_cmds function provided by netCDF easyblock was removed
For EasyBuild framework developers:
error
and exception
log methods no longer raise an exception¶
- deprecated since: EasyBuild v2.1.0 (April’15)
- removed in: EasyBuild v3.0
- alternative(s): use
raise EasyBuildError(...)
instead
The error()
and exception()
log methods defined by EasyBuild (in the easybuild.tools.build_log
module)
did not match the semantics of the standard Python log methods, in the sense that they used to also raise an
exception next to logging messages.
This caused problems when 3rd party libraries (e.g., gc3pie) were being used by EasyBuild, since they may be using these log methods without expecting an exception being raised.
The custom definitions for the error()
and exception()
log methods was removed in EasyBuild v3.0.
Hence, these log methods should no longer be used to report errors since they will not raise an exception anymore once. Note that this applies both to the EasyBuild framework and to (custom) easyblocks.
To report errors, an EasyBuildError
should be raised instead. For example:
# make sure config.sh script is there
if not os.path.exists(os.path.join(self.builddir, 'config.sh')):
raise EasyBuildError("config.sh script is missing in %s", self.builddir)
get_blas_lib
function provided by LAPACK
easyblock has been removed¶
- deprecated since: EasyBuild v1.3.0 (April’13); see https://github.com/easybuilders/easybuild-easyblocks/pull/150
- removed in: EasyBuild v3.0
- alternative(s): leverage modules from
easybuild.toolchain.linalg
The get_blas_lib
function provided by the LAPACK
easyblock was removed,
mainly because it included a hardcoded list of BLAS libraries.
It was replaced by ‘inlining’ similar code into the easyblocks that rely on it (e.g. ScaLAPACK, cfr. https://github.com/easybuilders/easybuild-easyblocks/pull/1014), which only refers to the BLAS libraries that are relevant in that context.
get_netcdf_module_set_cmds
function provided by netCDF
easyblock was removed¶
- deprecated since: EasyBuild v2.1.0 (April’15); see https://github.com/easybuilders/easybuild-easyblocks/pull/590
- removed in: EasyBuild v3.0
- alternative(s): rely on
set_netcdf_env_vars
and useself.module_generator.set_environment
The get_netcdf_module_set_cmds
function provided by the netCDF
easyblock was removed, because it
returned setenv
statements to be included in module files that are only compatible with module files in Tcl syntax;
i.e. it did not take into account the --module-syntax
configuration option.
The use of get_netcdf_module_set_cmds
should be replaced by using set_netcdf_env_vars
to define the NETCDF*
environment variables, in combination with self.module_generator.set_environment
to obtain setenv
statements that are compatible with the module syntax (Tcl
or Lua
) being used.
See for example the changes made to the WRF
and WPS
easyblocks in https://github.com/easybuilders/easybuild-easyblocks/commit/7a05cbd823769e343b951002b4735dc7632e19c0.
Overview of removed functionality since EasyBuild v2.0¶
In EasyBuild v2.0, some intrusive changes were made that break backward compatibility with earlier versions.
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.6 is removed.
- deprecated since: EasyBuild v4.1.0 (Nov’19)
- removed in: EasyBuild v4.4.0
- alternative(s): upgrade to Python v2.7.x or v3.5+
Support for running EasyBuild on top of Python 2.6 was removed in EasyBuild version 4.4.0.
You should upgrade to a newer version of Python (see also Compatibility with Python 2 and Python 3).
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)
Explicitly 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 are 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.