| 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) |