45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
import distutils.sysconfig
 | 
						|
import os
 | 
						|
import platform
 | 
						|
import re
 | 
						|
import sys
 | 
						|
 | 
						|
 | 
						|
def get_python_relative_libdir():
 | 
						|
    """Returns the appropropriate python libdir relative to the build directory.
 | 
						|
 | 
						|
    @param exe_path the path to the lldb executable
 | 
						|
 | 
						|
    @return the python path that needs to be added to sys.path (PYTHONPATH)
 | 
						|
    in order to find the lldb python module.
 | 
						|
    """
 | 
						|
    if platform.system() != 'Linux':
 | 
						|
        return None
 | 
						|
 | 
						|
    # We currently have a bug in lldb -P that does not account for
 | 
						|
    # architecture variants in python paths for
 | 
						|
    # architecture-specific modules.  Handle the lookup here.
 | 
						|
    # When that bug is fixed, we should just ask lldb for the
 | 
						|
    # right answer always.
 | 
						|
    arch_specific_libdir = distutils.sysconfig.get_python_lib(True, False)
 | 
						|
    split_libdir = arch_specific_libdir.split(os.sep)
 | 
						|
    lib_re = re.compile(r"^lib.+$")
 | 
						|
 | 
						|
    for i in range(len(split_libdir)):
 | 
						|
        match = lib_re.match(split_libdir[i])
 | 
						|
        if match is not None:
 | 
						|
            # We'll call this the relative root of the lib dir.
 | 
						|
            # Things like RHEL will have an arch-specific python
 | 
						|
            # lib dir, which isn't 'lib' on x86_64.
 | 
						|
            return os.sep.join(split_libdir[i:])
 | 
						|
    # Didn't resolve it.
 | 
						|
    return None
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    lib_dir = get_python_relative_libdir()
 | 
						|
    if lib_dir is not None:
 | 
						|
        sys.stdout.write(lib_dir)
 | 
						|
        sys.exit(0)
 | 
						|
    else:
 | 
						|
        sys.exit(1)
 |