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): def inspect_path(prefix):
class PathInspector(object): """
dirname2varname = { 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',), 'bin': ('PATH',),
'man': ('MANPATH',), 'man': ('MANPATH',),
'lib': ('LIBRARY_PATH', 'LD_LIBRARY_PATH'), 'lib': ('LIBRARY_PATH', 'LD_LIBRARY_PATH'),
'lib64': ('LIBRARY_PATH', 'LD_LIBRARY_PATH'), 'lib64': ('LIBRARY_PATH', 'LD_LIBRARY_PATH'),
'include': ('CPATH',), 'include': ('CPATH',)
'pkgconfig': ('PKG_CONFIG_PATH',)
} }
for attribute, variables in prefix_inspections.items():
def __call__(self, env, directory, names): expected = getattr(prefix, attribute)
for name in names: if os.path.isdir(expected):
variables = PathInspector.dirname2varname.get(name, None)
if variables is None:
continue
absolute_path = join_path(os.path.abspath(directory), name)
for variable in variables: for variable in variables:
env.prepend_path(variable, absolute_path) env.prepend_path(variable, expected)
# PKGCONFIG
env, inspector = EnvironmentModifications(), PathInspector() for expected in (join_path(prefix.lib, 'pkgconfig'), join_path(prefix.lib64, 'pkgconfig')):
os.path.walk(path, inspector, env) if os.path.isdir(expected):
env.prepend_path('CMAKE_PREFIX_PATH', path) env.prepend_path('PKG_CONFIG_PATH', expected)
# CMake related variables
env.prepend_path('CMAKE_PREFIX_PATH', prefix)
return env return env