modules : restored previous logic for path inspection

This commit is contained in:
alalazo 2016-03-17 14:14:18 +01:00
parent ac762e95a6
commit 9cdd79e33f

View file

@ -74,29 +74,37 @@ def print_help():
"")
def inspect_path(path):
class PathInspector(object):
dirname2varname = {
def inspect_path(prefix):
"""
Inspects the prefix of an installation to search for common layouts. Issues a request to modify the environment
accordingly when an item is found.
Args:
prefix: prefix of the installation
Returns:
instance of EnvironmentModifications containing the requested modifications
"""
env = EnvironmentModifications()
# Inspect the prefix to check for the existence of common directories
prefix_inspections = {
'bin': ('PATH',),
'man': ('MANPATH',),
'lib': ('LIBRARY_PATH', 'LD_LIBRARY_PATH'),
'lib64': ('LIBRARY_PATH', 'LD_LIBRARY_PATH'),
'include': ('CPATH',),
'pkgconfig': ('PKG_CONFIG_PATH',)
'include': ('CPATH',)
}
def __call__(self, env, directory, names):
for name in names:
variables = PathInspector.dirname2varname.get(name, None)
if variables is None:
continue
absolute_path = join_path(os.path.abspath(directory), name)
for attribute, variables in prefix_inspections.items():
expected = getattr(prefix, attribute)
if os.path.isdir(expected):
for variable in variables:
env.prepend_path(variable, absolute_path)
env, inspector = EnvironmentModifications(), PathInspector()
os.path.walk(path, inspector, env)
env.prepend_path('CMAKE_PREFIX_PATH', path)
env.prepend_path(variable, expected)
# PKGCONFIG
for expected in (join_path(prefix.lib, 'pkgconfig'), join_path(prefix.lib64, 'pkgconfig')):
if os.path.isdir(expected):
env.prepend_path('PKG_CONFIG_PATH', expected)
# CMake related variables
env.prepend_path('CMAKE_PREFIX_PATH', prefix)
return env