<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/108729>108729</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [lldb][rfc] rebuilding `_lldb`/`liblldb.so` for different Python versions quickly
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          arcivanov
      </td>
    </tr>
</table>

<pre>
    The LLDB's Python package is (generally) as follows:

```bash
$ pwd
/usr/lib64/python3.12/site-packages/lldb
$ tree -I __pycache__
.
├── embedded_interpreter.py
├── formatters
│   ├── attrib_fromdict.py
│   ├── cache.py
│   ├── cpp
│   │   ├── gnu_libstdcpp.py
│   │   ├── __init__.py
│   │   └── libcxx.py
│   ├── __init__.py
│   ├── Logger.py
│   ├── metrics.py
│   └── synth.py
├── __init__.py
├── lldb-argdumper -> ../../../../bin/lldb-argdumper
├── _lldb.cpython-312-x86_64-linux-gnu.so -> ../../../liblldb.so <**************
├── _lldb.so -> ../../../liblldb.so.18.1.8
├── plugins
│   ├── __init__.py
│   ├── operating_system.py
│   ├── scripted_platform.py
│   └── scripted_process.py
└── utils
    ├── in_call_stack.py
    ├── __init__.py
    └── symbolication.py

5 directories, 21 files
```

Out of all, the `_lldb` is the only native extension and it is actually the `liblldb.so`. 
Which Python is used is determined by setting `PYTHON_HOME` during the initial `cmake` run.

I'd like rebuild that extension, i.e. `liblldb.so`, quickly for different versions of Python, since if I just reconfigure `cmake` with a different version of Python it'll make me rebuild the whole clang and lldb too and it will take hours and even worse if I have a 2-stage build (then it'll take days).



</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVltv2zgT_TX0y8CCRPkiP_ihTWq0QL8vfSiw2CeBIkfSNBSpJSk7_vcLynaci7dxNosYlCLOOXPRoWaE99QYxDWbf2bz24kYQmvdWjhJW2HsdlJZtV__bBG-f7_9zPjSw499aK2BXsh70SCQB8aLBg06ofWe8RUID7XV2u48yz-x9Jalp3WRHn6V8O3xEZ9Bv1OnfzaDd4xvNFWLGeObfvSVJxlnfOMp4PTo1kcjraozSXCIMP0GZdnvpZAtluVhMznafOFsNWOrm-NNkT7eAHYVKoWqJBPQ9Q4DuqTfvw2sretECOj8M9uCsxvOPqWHFX7HIEJwVJW1s50iGV56fQfTmPRH8H1_BfQdhI0ZSk2VD0r2_XWBvYO9LMlQKMsPEc8uEGuq5MPDBwr5vsguUny3TfNagu8g6DA4kv5Khktl8HsT2qsOwT_le9E4HtqpcI0auh4dTFn-BZKE8c2LpSJzPOJn6ytCiYBEHj4b0zzj04diUS5mU01meJg2Zki8vehUUzVivQWW3zD-6drflTG96TbJiiRLirf5ej00ZP71B-c_UKft0YlApin93gfsPkDlpaM-oCp7LUL8mn5EsY9czkr0r8R_ETQE0sdaAsBvYyVTSqF16YOQ94_kb6Fe1fsp4PLB6yqrSYpA1pxzGNc5KHIog3UUW-AN8Axq0uhf9NenmLshgK1BaB0BoUVgi3QUJVuksX3HR9boPRgRaIuADwGNJ2tAGAUUoo2QYYjt_YQ_65Yt0gQOnv5oSban-YA8DB5VvKrYTzsyqKDag8cQtRNZfvz58-vd_8uvd__7EmNRg4sb0UWsGQkdjWQn7jFuu8EkTxP7xvhSgaZ7BIfVQFpBaEU4xx_zpQSTVwHHjb8Gkvd6H1s4KKprdGgCbNFFpI8VOyQSbT0ZiUA1fINfgw_gUFpTUzM4fBbhjkIL4jXdmQ0oML7UGiIEuqeRI-xaqxGkFqYZSx8DhmDt6T3sSGsIEdjawfnxMW7RwM46f4yvFVsEAXzqQ5zODuSMF6HFs_ORQ4m9Z3z1rKSHdaLWuVrlKzHBdbbki3yZpuly0q6zIv5Vq3qRrVRVF1UuFnmhhEpzWctMTGjNUz5LV9k8zbOcL5O8mq9EtSqWtcwzUczZLMVOkE603naJdc2EvB9wnaXFkq8mWlSo_TiMcm5wB-Mu4zzOpm4dQdNqaDybpZp88GeaQEGPU-wo7Pktm392tWTz21OFj5I7CZ_xzUtVvJDC8YU9KuIomMng9LoNoR-HW75hfNNQaIcqkbYbW9b2dJn2zv5CGRjfjHnEofWY6HbN_w4AAP__LBIbww">