diff --git a/easybuild/tools/config.py b/easybuild/tools/config.py index ab2ddbe141..b63e864c59 100644 --- a/easybuild/tools/config.py +++ b/easybuild/tools/config.py @@ -174,9 +174,9 @@ OUTPUT_STYLE_RICH = 'rich' OUTPUT_STYLES = (OUTPUT_STYLE_AUTO, OUTPUT_STYLE_BASIC, OUTPUT_STYLE_NO_COLOR, OUTPUT_STYLE_RICH) -SEARCH_PATH_BIN_DIRS = ["bin"] -SEARCH_PATH_HEADER_DIRS = ["include"] -SEARCH_PATH_LIB_DIRS = ["lib", "lib64"] +SEARCH_PATH_BIN_DIRS = ['bin'] +SEARCH_PATH_HEADER_DIRS = ['include'] +SEARCH_PATH_LIB_DIRS = ['lib', 'lib64'] PYTHONPATH = 'PYTHONPATH' EBPYTHONPREFIXES = 'EBPYTHONPREFIXES' diff --git a/easybuild/tools/modules.py b/easybuild/tools/modules.py index fd62f2ebe5..cc8f4fdf3c 100644 --- a/easybuild/tools/modules.py +++ b/easybuild/tools/modules.py @@ -45,10 +45,9 @@ from easybuild.base import fancylogger from easybuild.tools import LooseVersion from easybuild.tools.build_log import EasyBuildError, EasyBuildExit, print_warning -from easybuild.tools.config import ERROR, IGNORE, PURGE, UNLOAD, UNSET -from easybuild.tools.config import EBROOT_ENV_VAR_ACTIONS, LOADED_MODULES_ACTIONS +from easybuild.tools.config import ERROR, EBROOT_ENV_VAR_ACTIONS, IGNORE, LOADED_MODULES_ACTIONS, PURGE +from easybuild.tools.config import SEARCH_PATH_BIN_DIRS, SEARCH_PATH_HEADER_DIRS, SEARCH_PATH_LIB_DIRS, UNLOAD, UNSET from easybuild.tools.config import build_option, get_modules_tool, install_path -from easybuild.tools.config import SEARCH_PATH_BIN_DIRS, SEARCH_PATH_HEADER_DIRS, SEARCH_PATH_LIB_DIRS from easybuild.tools.environment import ORIG_OS_ENVIRON, restore_env, setvar, unset_env_vars from easybuild.tools.filetools import convert_name, mkdir, normalize_path, path_matches, read_file, which, write_file from easybuild.tools.module_naming_scheme.mns import DEVEL_MODULE_SUFFIX @@ -209,19 +208,19 @@ def __init__(self): Initialize default environment definition Paths are relative to root of installation directory """ - self.PATH = SEARCH_PATH_BIN_DIRS + ['sbin'] + self.ACLOCAL_PATH = [os.path.join('share', 'aclocal')] + self.CLASSPATH = ['*.jar'] + # only needed for installations whith standalone lib64 + self.CMAKE_LIBRARY_PATH = ['lib64'] + self.CMAKE_PREFIX_PATH = [''] + self.CPATH = SEARCH_PATH_HEADER_DIRS + self.GI_TYPELIB_PATH = [os.path.join(x, 'girepository-*') for x in SEARCH_PATH_LIB_DIRS] self.LD_LIBRARY_PATH = SEARCH_PATH_LIB_DIRS self.LIBRARY_PATH = SEARCH_PATH_LIB_DIRS - self.CPATH = SEARCH_PATH_HEADER_DIRS self.MANPATH = ['man', os.path.join('share', 'man')] + self.PATH = SEARCH_PATH_BIN_DIRS + ['sbin'] self.PKG_CONFIG_PATH = [os.path.join(x, 'pkgconfig') for x in SEARCH_PATH_LIB_DIRS + ['share']] - self.ACLOCAL_PATH = [os.path.join('share', 'aclocal')] - self.CLASSPATH = ['*.jar'] self.XDG_DATA_DIRS = ['share'] - self.GI_TYPELIB_PATH = [os.path.join(x, 'girepository-*') for x in SEARCH_PATH_LIB_DIRS] - self.CMAKE_PREFIX_PATH = [''] - # only needed for installations whith standalone lib64 - self.CMAKE_LIBRARY_PATH = ['lib64'] def __setattr__(self, name, value): """ @@ -238,7 +237,7 @@ def __setattr__(self, name, value): contents, kwargs = value, {} # special variables that files to be present in the specified paths - if name in ['PATH', 'LD_LIBRARY_PATH']: + if name in ('LD_LIBRARY_PATH', 'PATH'): kwargs.update({'requires_files': True}) return super().__setattr__(name.upper(), ModuleEnvironmentVariable(contents, **kwargs)) @@ -260,7 +259,6 @@ def items(self): def environ(self): """ Return dict with mapping of ModuleEnvironmentVariables names with their contents - Equivalent in shape to os.environ """ mapping = {} for envar_name, envar_contents in self.items(): diff --git a/test/framework/easyblock.py b/test/framework/easyblock.py index 70c95b1809..ebd2e25ceb 100644 --- a/test/framework/easyblock.py +++ b/test/framework/easyblock.py @@ -524,8 +524,8 @@ def test_make_module_req(self): # nuke default module load environment default_mod_load_vars = [ - "PATH", "LD_LIBRARY_PATH", "LIBRARY_PATH", "CPATH", "MANPATH", "PKG_CONFIG_PATH", "ACLOCAL_PATH", - "CLASSPATH", "XDG_DATA_DIRS", "GI_TYPELIB_PATH", "CMAKE_PREFIX_PATH", "CMAKE_LIBRARY_PATH", + 'ACLOCAL_PATH', 'CLASSPATH', 'CMAKE_PREFIX_PATH', 'CMAKE_LIBRARY_PATH', 'CPATH', 'GI_TYPELIB_PATH', + 'LD_LIBRARY_PATH', 'LIBRARY_PATH', 'MANPATH', 'PATH', 'PKG_CONFIG_PATH', 'XDG_DATA_DIRS', ] for env_var in default_mod_load_vars: delattr(eb.module_load_environment, env_var) diff --git a/test/framework/modules.py b/test/framework/modules.py index 31222e40d5..6aaafeb480 100644 --- a/test/framework/modules.py +++ b/test/framework/modules.py @@ -1592,61 +1592,61 @@ def test_module_environment_variable(self): """Test for ModuleEnvironmentVariable object""" test_paths = ['lib', 'lib64'] mod_envar = mod.ModuleEnvironmentVariable(test_paths) - self.assertTrue(hasattr(mod_envar, "contents")) - self.assertTrue(hasattr(mod_envar, "top_level_file")) - self.assertTrue(hasattr(mod_envar, "delim")) + self.assertTrue(hasattr(mod_envar, 'contents')) + self.assertTrue(hasattr(mod_envar, 'requires_files')) + self.assertTrue(hasattr(mod_envar, 'delim')) self.assertEqual(mod_envar.contents, test_paths) self.assertEqual(repr(mod_envar), repr(test_paths)) - self.assertEqual(str(mod_envar), "lib:lib64") + self.assertEqual(str(mod_envar), 'lib:lib64') - mod_envar_custom_delim = mod.ModuleEnvironmentVariable(test_paths, delim="|") + mod_envar_custom_delim = mod.ModuleEnvironmentVariable(test_paths, delim='|') self.assertEqual(mod_envar_custom_delim.contents, test_paths) self.assertEqual(repr(mod_envar_custom_delim), repr(test_paths)) - self.assertEqual(str(mod_envar_custom_delim), "lib|lib64") + self.assertEqual(str(mod_envar_custom_delim), 'lib|lib64') mod_envar.contents = [] self.assertEqual(mod_envar.contents, []) - self.assertRaises(TypeError, setattr, mod_envar, "contents", None) + self.assertRaises(TypeError, setattr, mod_envar, 'contents', None) mod_envar.contents = (1, 3, 2, 3) - self.assertEqual(mod_envar.contents, ["1", "3", "2"]) - mod_envar.contents = "include" - self.assertEqual(mod_envar.contents, ["include"]) + self.assertEqual(mod_envar.contents, ['1', '3', '2']) + mod_envar.contents = 'include' + self.assertEqual(mod_envar.contents, ['include']) - mod_envar.append("share") - self.assertEqual(mod_envar.contents, ["include", "share"]) - mod_envar.append("share") - self.assertEqual(mod_envar.contents, ["include", "share"]) - self.assertRaises(TypeError, mod_envar.append, "arg1", "arg2") + mod_envar.append('share') + self.assertEqual(mod_envar.contents, ['include', 'share']) + mod_envar.append('share') + self.assertEqual(mod_envar.contents, ['include', 'share']) + self.assertRaises(TypeError, mod_envar.append, 'arg1', 'arg2') mod_envar.extend(test_paths) - self.assertEqual(mod_envar.contents, ["include", "share", "lib", "lib64"]) + self.assertEqual(mod_envar.contents, ['include', 'share', 'lib', 'lib64']) mod_envar.extend(test_paths) - self.assertEqual(mod_envar.contents, ["include", "share", "lib", "lib64"]) - mod_envar.extend(test_paths + ["lib128"]) - self.assertEqual(mod_envar.contents, ["include", "share", "lib", "lib64", "lib128"]) - self.assertRaises(TypeError, mod_envar.append, ["list1"], ["list2"]) - - mod_envar.remove("lib128") - self.assertEqual(mod_envar.contents, ["include", "share", "lib", "lib64"]) - mod_envar.remove("nonexistent") - self.assertEqual(mod_envar.contents, ["include", "share", "lib", "lib64"]) - self.assertRaises(TypeError, mod_envar.remove, "arg1", "arg2") - - mod_envar.prepend("bin") - self.assertEqual(mod_envar.contents, ["bin", "include", "share", "lib", "lib64"]) - - mod_envar.update("new_path") - self.assertEqual(mod_envar.contents, ["new_path"]) - mod_envar.update(["new_path_1", "new_path_2"]) - self.assertEqual(mod_envar.contents, ["new_path_1", "new_path_2"]) - self.assertRaises(TypeError, mod_envar.update, "arg1", "arg2") + self.assertEqual(mod_envar.contents, ['include', 'share', 'lib', 'lib64']) + mod_envar.extend(test_paths + ['lib128']) + self.assertEqual(mod_envar.contents, ['include', 'share', 'lib', 'lib64', 'lib128']) + self.assertRaises(TypeError, mod_envar.append, ['list1'], ['list2']) + + mod_envar.remove('lib128') + self.assertEqual(mod_envar.contents, ['include', 'share', 'lib', 'lib64']) + mod_envar.remove('nonexistent') + self.assertEqual(mod_envar.contents, ['include', 'share', 'lib', 'lib64']) + self.assertRaises(TypeError, mod_envar.remove, 'arg1', 'arg2') + + mod_envar.prepend('bin') + self.assertEqual(mod_envar.contents, ['bin', 'include', 'share', 'lib', 'lib64']) + + mod_envar.update('new_path') + self.assertEqual(mod_envar.contents, ['new_path']) + mod_envar.update(['new_path_1', 'new_path_2']) + self.assertEqual(mod_envar.contents, ['new_path_1', 'new_path_2']) + self.assertRaises(TypeError, mod_envar.update, 'arg1', 'arg2') def test_module_load_environment(self): """Test for ModuleLoadEnvironment object""" test_contents = ['lib', 'lib64'] mod_load_env = mod.ModuleLoadEnvironment() mod_load_env.TEST_VAR = test_contents - self.assertTrue(hasattr(mod_load_env, "TEST_VAR")) + self.assertTrue(hasattr(mod_load_env, 'TEST_VAR')) self.assertEqual(mod_load_env.TEST_VAR.contents, test_contents) ref_load_env = mod_load_env.__dict__.copy() @@ -1657,16 +1657,16 @@ def test_module_load_environment(self): self.assertDictEqual(mod_load_env.environ, ref_load_env_environ) mod_load_env.test_lower = test_contents - self.assertTrue(hasattr(mod_load_env, "TEST_LOWER")) + self.assertTrue(hasattr(mod_load_env, 'TEST_LOWER')) self.assertEqual(mod_load_env.TEST_LOWER.contents, test_contents) - mod_load_env.TEST_STR = "some/path" - self.assertTrue(hasattr(mod_load_env, "TEST_STR")) - self.assertEqual(mod_load_env.TEST_STR.contents, ["some/path"]) - mod_load_env.TEST_EXTRA = (test_contents, {"top_level_file": True}) - self.assertTrue(hasattr(mod_load_env, "TEST_EXTRA")) + mod_load_env.TEST_STR = 'some/path' + self.assertTrue(hasattr(mod_load_env, 'TEST_STR')) + self.assertEqual(mod_load_env.TEST_STR.contents, ['some/path']) + mod_load_env.TEST_EXTRA = (test_contents, {'requires_files': True}) + self.assertTrue(hasattr(mod_load_env, 'TEST_EXTRA')) self.assertEqual(mod_load_env.TEST_EXTRA.contents, test_contents) - self.assertEqual(mod_load_env.TEST_EXTRA.top_level_file, True) - self.assertRaises(TypeError, setattr, mod_load_env, "TEST_UNKNONW", (test_contents, {"unkown_param": True})) + self.assertEqual(mod_load_env.TEST_EXTRA.requires_files, True) + self.assertRaises(TypeError, setattr, mod_load_env, 'TEST_UNKNONW', (test_contents, {'unkown_param': True})) def suite():