Skip to content

Commit ebc7970

Browse files
committed
Don't allow duplicates, just give direct dependencies higher priority for headers
1 parent 2920a70 commit ebc7970

2 files changed

Lines changed: 12 additions & 4 deletions

File tree

easybuild/tools/toolchain/toolchain.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1206,7 +1206,7 @@ def _add_dependency_variables(self, names=None, cpp=None, ld=None):
12061206
# and only use the configured option
12071207
# (our RPATH wrappers rely on LIBRARY_PATH so we need an exception for that)
12081208
if env_var != 'LIBRARY_PATH':
1209-
self.variables.append(env_var, '')
1209+
self.variables.setdefault(env_var, append_empty=True)
12101210
for var in SEARCH_PATH[search_path_var][self.search_path[search_path_var]]:
12111211
self.variables.append_subdirs(var, '', subdirs=paths_list)
12121212

@@ -1240,6 +1240,14 @@ def _add_dependency_cpp_headers(self, dep_root, extra_dirs=None):
12401240
header_dirs = unique_ordered_extend(header_dirs, extra_dirs)
12411241

12421242
self.log.info(f"Adding header paths to toolchain variable '{env_var}': {dep_root} (subdirs: {header_dirs})")
1243+
# it may already exist, in which case we remove it to add it back with higher priority
1244+
for header_dir in header_dirs:
1245+
self.log.debug(f"Existing variables are {self.variables.keys()}")
1246+
if env_var in self.variables.keys():
1247+
header_path = os.path.join(dep_root, header_dir)
1248+
self.log.debug(f"Attempting to remove any previous instance of {header_path} from {env_var} list: {self.variables[env_var]}")
1249+
self.variables[env_var].try_remove([header_path])
1250+
self.log.debug(f"New value of {env_var} list: {self.variables[env_var]}")
12431251
self.variables.append_subdirs(env_var, dep_root, subdirs=header_dirs)
12441252

12451253
def _add_dependency_linker_paths(self, dep_root, extra_dirs=None):

test/framework/easyblock.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3797,12 +3797,12 @@ def test_exts_deps_build_env(self):
37973797
f'software/zlib/{zlib_fn}/include',
37983798
]
37993799
if env_var.endswith('PATH'):
3800-
regex = re.compile(f'^{env_var}=' + ':'.join('[^ ]+/' + p for p in paths), re.M)
3800+
regex = re.compile(f'^{env_var}=' + ':'.join('[^ ]+/' + p for p in paths) + '$', re.M)
38013801
elif env_var == 'CPPFLAGS':
3802-
regex = re.compile(f'^{env_var}=' + ' '.join('-I/[^ ]+/' + p for p in paths), re.M)
3802+
regex = re.compile(f'^{env_var}=' + ' '.join('-I/[^ ]+/' + p for p in paths) + '$', re.M)
38033803
else:
38043804
self.fail(f"Unknown type of environment variable: ${env_var}")
3805-
self.assertTrue(regex.search(log_txt), f"Pattern '{regex.pattern}' not found in log output")
3805+
self.assertTrue(regex.search(log_txt), f"Pattern '{regex.pattern}' not found in log output \n{log_txt}")
38063806

38073807
# verify fix made in https://github.com/easybuilders/easybuild-framework/pull/5048
38083808
test_ec_txt = read_file(toy_ec)

0 commit comments

Comments
 (0)