<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>It’s not just a Windows issue, the issue crops up on Linux if you’re not running LLDB on the OS/Version it was built on.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>We build on Win 7 64, with Python 2.7.8 that I built using VS 2013, without any of the extras like SSH. We also build on SLES 11 Linux using clang 3.4 and Python 2.7.6 that I built (because of a crasher that Todd Fiala fixed on python.org, but the fix hasn’t made it into python yet). We test on Win 7 and SLES 11, Ubuntu 10 and Ubuntu 12.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>The big question is “which version of Python am I running with?” I found that I can’t rely on the system Python on Linux, because different versions of Python don’t play well with each other. I don’t just mean the shared libraries; the modules cause big problems, even when you’re only loading modules written in Python, not .pyd libraries. LLDB built with 2.7.6 (with libpython2.7.so in ../lib) seems to be OK with Ubuntu 10’s Python 2.6 modules, but with SLES’s modules it throws lots of warnings, and with Ubuntu 12’s modules (2.7.3) it crashes. Never mind the Ubuntu 10/12 OpenSSH split (1.0 -> 1.1) which means I can’t load hashlib (loaded by default) because it loads SSL, which will fail on the wrong side of the OpenSSL divide.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>My solution – ship a partial Python install with LLDB, and set PYTHONHOME/PYTHONPATH to point to the right place. So on Windows I ship 2.7.8 modules and on Linux I ship 2.7.6 modules with LLDB. This way I don’t care what system LLDB is run on; it just works.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Saying you can’t build Python with VS2013 isn’t true. I did. I’m having issues with some of the bindings (specifically “print lldb.debugger” gives “No value”, even though it’s there), but for the most part it works.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Also, you don’t always need to build 3<sup>rd</sup> party modules. Many of them are only implemented in Python, and don’t load a DLL (.pyd), so you don’t have to rebuild them.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>--<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Qualcomm Innovation Center, Inc.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><b><span style='font-size:11.0pt;font-family:"Calibri",sans-serif'>From:</span></b><span style='font-size:11.0pt;font-family:"Calibri",sans-serif'> lldb-dev-bounces@cs.uiuc.edu [mailto:lldb-dev-bounces@cs.uiuc.edu] <b>On Behalf Of </b>Reid Kleckner<br><b>Sent:</b> Wednesday, February 25, 2015 10:59 AM<br><b>To:</b> Vince Harron<br><b>Cc:</b> lldb-dev@cs.uiuc.edu<br><b>Subject:</b> Re: [lldb-dev] RFC: Separation of embedded Python from the rest of LLDB.<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><div><div><div><p class=MsoNormal>On Wed, Feb 25, 2015 at 5:58 AM, Vince Harron <<a href="mailto:vharron@google.com" target="_blank">vharron@google.com</a>> wrote:<o:p></o:p></p><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><div><p class=MsoNormal>This seems like a lot of work to support Windows users who might want to use pre-compiled python modules.<o:p></o:p></p></div></div></blockquote><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>To me, the primary benefit is that you can build LLDB with Python support without building Python from source. More onerous, once you build Python from source, you have to maintain two separate environments: your normal development environment with normal Python on PATH, and one with LLDB's version of Python on PATH and PYTHONPATH.<o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><div><p class=MsoNormal>I think we should distribute a VS2015 based version of Python 2.7 binaries and call it a day.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>We can worry about 2020 problems in 2020.  =)<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Reasonable people may disagree.<o:p></o:p></p></div></div></blockquote><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>I disagree. I guess that makes me reasonable. ;)<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>The main thing for me is that once we put together a pre-built Python, the instructions to rebuild it will immediately rot. In a matter of months, some user will arrive needing LLDB and Python to be built with a different VS version, and I give it 50/50 odds that the instructions will work.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Personally, I think the lowest impact change for everyone not affected by this is to split the Python API code out into a shared library. LLDB has more Python source than C++ source interacting with Python. Maintaining Python source compat with 2.7 and 3.5 will be fragile and will require testing more configurations. Reducing the number of obscure ways that non-Windows developers can break the Windows build is good.<o:p></o:p></p></div></div></div></div></div></body></html>