diff --git a/easybuild/tools/toolchain/toolchain.py b/easybuild/tools/toolchain/toolchain.py index d89c10b71a..cfb908b684 100644 --- a/easybuild/tools/toolchain/toolchain.py +++ b/easybuild/tools/toolchain/toolchain.py @@ -247,6 +247,29 @@ def __init__(self, name=None, version=None, mns=None, class_constants=None, tcde self.mod_short_name = self.mns.det_short_module_name(tc_dict) self.init_modpaths = self.mns.det_init_modulepaths(tc_dict) + @property + def search_path_vars_headers(self): + """Return list of environment variables used as search paths for headers""" + return self._search_path_vars('cpp_headers') + + @property + def search_path_vars_linker(self): + """Return list of environment variables used as search paths by the linker""" + return self._search_path_vars('linker') + + def _search_path_vars(self, search_object): + """Return list of environment variables used as search paths for the given object""" + try: + search_path_opt = self.search_path[search_object] + except KeyError: + raise EasyBuildError("Failed to retrieve search path options for '%s'", search_object) + + # default 'flags' option does not use search paths in the build environment + if search_path_opt == 'flags': + return [] + + return SEARCH_PATH[search_object][search_path_opt] + def is_system_toolchain(self): """Return boolean to indicate whether this toolchain is a system toolchain.""" return is_system_toolchain(self.name) diff --git a/test/framework/toolchain.py b/test/framework/toolchain.py index 11f5b5b0e3..0b36039d42 100644 --- a/test/framework/toolchain.py +++ b/test/framework/toolchain.py @@ -974,6 +974,11 @@ def test_search_path_cpp_headers(self): "not found in toolchain environment" ) self.assertIn(env_var, tc.variables, assert_fail_msg) + # check return of tc.search_path_vars_headers + expected_search_path_vars = cpp_headers_mode[build_opt] + if build_opt == 'flags': + expected_search_path_vars = [] + self.assertCountEqual(tc.search_path_vars_headers, expected_search_path_vars) self.modtool.purge() # test with toolchain option for build_opt in cpp_headers_mode: @@ -989,6 +994,11 @@ def test_search_path_cpp_headers(self): "not found in toolchain environment" ) self.assertIn(env_var, tc.variables, assert_fail_msg) + # check return of tc.search_path_vars_headers + expected_search_path_vars = cpp_headers_mode[tc_opt] + if tc_opt == 'flags': + expected_search_path_vars = [] + self.assertCountEqual(tc.search_path_vars_headers, expected_search_path_vars) self.modtool.purge() # test wrong toolchain option tc = self.get_toolchain("foss", version="2018a") @@ -1016,6 +1026,11 @@ def test_search_path_linker(self): "not found in toolchain environment" ) self.assertIn(env_var, tc.variables, assert_fail_msg) + # check return of tc.search_path_vars_linker + expected_search_path_vars = linker_mode[build_opt] + if build_opt == 'flags': + expected_search_path_vars = [] + self.assertCountEqual(tc.search_path_vars_linker, expected_search_path_vars) self.modtool.purge() # test with toolchain option for build_opt in linker_mode: @@ -1031,6 +1046,11 @@ def test_search_path_linker(self): "not found in toolchain environment" ) self.assertIn(env_var, tc.variables, assert_fail_msg) + # check return of tc.search_path_vars_linker + expected_search_path_vars = linker_mode[tc_opt] + if tc_opt == 'flags': + expected_search_path_vars = [] + self.assertCountEqual(tc.search_path_vars_linker, expected_search_path_vars) self.modtool.purge() # test wrong toolchain option tc = self.get_toolchain("foss", version="2018a")