[lldb] build failure for LLDB_PYTHON_EXE_RELATIVE_PATH on greendragon
authorLawrence D'Anna <lawrence_danna@apple.com>
Wed, 17 Nov 2021 17:16:50 +0000 (09:16 -0800)
committerLawrence D'Anna <lawrence_danna@apple.com>
Wed, 17 Nov 2021 17:26:24 +0000 (09:26 -0800)
see: https://green.lab.llvm.org/green/view/LLDB/job/lldb-cmake/38387/console

```
Could not find a relative path to sys.executable under sys.prefix
tried: /usr/local/opt/python/bin/python3.7
tried: /usr/local/opt/python/bin/../Frameworks/Python.framework/Versions/3.7/bin/python3.7
sys.prefix: /usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7
```

It was unable to find LLDB_PYTHON_EXE_RELATIVE_PATH because it was not resolving
the real path of sys.prefix.

caused by: https://reviews.llvm.org/D113650

lldb/bindings/python/get-python-config.py

index 507a8aa..978dc07 100755 (executable)
@@ -24,19 +24,21 @@ def main():
     elif args.variable_name == "LLDB_PYTHON_EXE_RELATIVE_PATH":
         tried = list()
         exe = sys.executable
+        prefix = os.path.realpath(sys.prefix)
         while True:
             try:
-                print(relpath_nodots(exe, sys.prefix))
+                print(relpath_nodots(exe, prefix))
                 break
             except ValueError:
                 tried.append(exe)
                 if os.path.islink(exe):
-                    exe = os.path.join(os.path.dirname(exe), os.readlink(exe))
+                    exe = os.path.join(os.path.realpath(os.path.dirname(exe)), os.readlink(exe))
                     continue
                 else:
                     print("Could not find a relative path to sys.executable under sys.prefix", file=sys.stderr)
                     for e in tried:
                         print("tried:", e, file=sys.stderr)
+                    print("realpath(sys.prefix):", prefix, file=sys.stderr)
                     print("sys.prefix:", sys.prefix, file=sys.stderr)
                     sys.exit(1)
     elif args.variable_name == "LLDB_PYTHON_EXT_SUFFIX":