diff --git a/easybuild/framework/easyblock.py b/easybuild/framework/easyblock.py index 5f6661116e..d5e90b487c 100644 --- a/easybuild/framework/easyblock.py +++ b/easybuild/framework/easyblock.py @@ -1989,12 +1989,15 @@ def make_extension_string(self, name_version_sep='-', ext_sep=', ', sort=True): exts_list = sorted(exts_list, key=str.lower) return ext_sep.join(exts_list) - def make_extension_list(self): + def make_extension_list(self, formatted=True): """ Return a list of extension names and their versions included in this installation Each entry should be a (name, version) tuple or just (name, ) if no version exists. Custom EasyBlocks may override this to add extensions that cannot be found automatically. + + :param formatted: boolean indicating whether the extension name should be formatted. If True, format using + the function defined by the exts_formatter parameter. """ # Each extension in exts_list is either a string or a list/tuple with name, version as first entries # As name can be a templated value we must resolve templates @@ -2010,6 +2013,15 @@ def make_extension_list(self): else: exts_list.append((resolve_template(ext[0], self.cfg.template_values), resolve_template(ext[1], self.cfg.template_values))) + + if formatted: + formatter = self.cfg.get('exts_formatter') + if formatter: + if not callable(formatter): + raise EasyBuildError("Parameter exts_formatter should be a function that accepts the extension name" + "and returns the formatted name.") + exts_list = [(formatter(x), y) for (x, y) in exts_list] + return exts_list def prepare_for_extensions(self):