diff --git a/eb_hooks.py b/eb_hooks.py index 54470ea4..7cf16f29 100644 --- a/eb_hooks.py +++ b/eb_hooks.py @@ -1054,6 +1054,35 @@ def pre_configure_hook_extrae(self, *args, **kwargs): else: raise EasyBuildError("Extrae-specific hook triggered for non-Extrae easyconfig?!") +def pre_configure_hook_graphviz(self, *args, **kwargs): + """Pre-configure hook for Graphviz: + - avoid undefined $EBROOTZLIB and $EBROOTLIBTOOL env vars during configure step + """ + if self.name == 'Graphviz': + eprefix = get_eessi_envvar('EPREFIX') + usr_dir = os.path.join(eprefix, 'usr') + + for software in ('zlib', 'libtool'): + var_name = get_software_root_env_var_name(software) + env.setvar(var_name, usr_dir) + + old_configopts = self.cfg['configopts'] + old_items = set(filter(None, old_configopts.split(' '))) + + # Replace --with-ltdl-lib and --with-zlibdir options defined in the EC to point to compat layer + lib_dir = os.path.join(usr_dir, 'lib64') + new_items = { + f'--with-ltdl-lib={lib_dir}', + f'--with-zlibdir={lib_dir}', + } + for item in old_items: + if item.startswith('--with-ltdl-lib') or item.startswith('-with-ltdl-lib'): + continue + new_items.add(item) + + self.cfg['configopts'] = ' '.join(new_items) + else: + raise EasyBuildError("Graphviz-specific hook triggered for non-Graphviz easyconfig?!") def pre_configure_hook_gobject_introspection(self, *args, **kwargs): """ @@ -1815,6 +1844,7 @@ def post_easyblock_hook(self, *args, **kwargs): 'CUDA-Samples': pre_configure_hook_CUDA_Samples_test_remove, 'GObject-Introspection': pre_configure_hook_gobject_introspection, 'Extrae': pre_configure_hook_extrae, + 'Graphviz': pre_configure_hook_graphviz, 'GRASS': pre_configure_hook_grass, 'libfabric': pre_configure_hook_libfabric_disable_psm3_x86_64_generic, 'LLVM': pre_configure_hook_llvm,