find_libraries searches lib and lib64 before prefix (#11958)
The default library search for a package checks the lib/ and lib64/ directories for libraries before the root prefix, in order to save time when searching for libraries provided by externals (which e.g. may have '/usr/' as their root). This moves that logic into the "find_libraries" utility method so packages implementing their own custom library search logic can benefit from it. This also updates packages which appear to be replicating this logic exactly, replacing it with a single call to "find_libraries".
This commit is contained in:

committed by
Peter Scheibel

parent
f1ce1dd163
commit
5bc15b2d9a
@@ -63,14 +63,8 @@ def install(self, spec, prefix):
|
||||
|
||||
@property
|
||||
def libs(self):
|
||||
prefix = self.prefix
|
||||
search_paths = [(prefix.lib, False), (prefix.lib64, False),
|
||||
(prefix, True)]
|
||||
for search_root, recursive in search_paths:
|
||||
libs = find_libraries(
|
||||
'libcuda', root=search_root, shared=True, recursive=recursive)
|
||||
if libs:
|
||||
break
|
||||
libs = find_libraries('libcuda', root=self.prefix, shared=True,
|
||||
recursive=True)
|
||||
|
||||
filtered_libs = []
|
||||
# CUDA 10.0 provides Compatability libraries for running newer versions
|
||||
|
@@ -150,12 +150,7 @@ def libs(self):
|
||||
"""Export the hypre library.
|
||||
Sample usage: spec['hypre'].libs.ld_flags
|
||||
"""
|
||||
search_paths = [[self.prefix.lib, False], [self.prefix.lib64, False],
|
||||
[self.prefix, True]]
|
||||
is_shared = '+shared' in self.spec
|
||||
for path, recursive in search_paths:
|
||||
libs = find_libraries('libHYPRE', root=path,
|
||||
shared=is_shared, recursive=recursive)
|
||||
if libs:
|
||||
return libs
|
||||
return None
|
||||
libs = find_libraries('libHYPRE', root=self.prefix, shared=is_shared,
|
||||
recursive=True)
|
||||
return libs or None
|
||||
|
@@ -500,12 +500,9 @@ def libs(self):
|
||||
# Q: should the result be ordered by dependency?
|
||||
else:
|
||||
sun_libs = ['libsundials_' + p for p in query_parameters]
|
||||
search_paths = [[self.prefix.lib, False], [self.prefix.lib64, False],
|
||||
[self.prefix, True]]
|
||||
is_shared = '+shared' in self.spec
|
||||
for path, recursive in search_paths:
|
||||
libs = find_libraries(sun_libs, root=path, shared=is_shared,
|
||||
recursive=recursive)
|
||||
if libs:
|
||||
return libs
|
||||
return None # Raise an error
|
||||
|
||||
libs = find_libraries(sun_libs, root=self.prefix, shared=is_shared,
|
||||
recursive=True)
|
||||
|
||||
return libs or None # Raise an error if no libs are found
|
||||
|
Reference in New Issue
Block a user