<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    First off thanks for opening that up to the mailing list, it will be
    good if discussion of this is useful to others.<br>
    <br>
    From the python 3.5 case:<br>
    I'm not using ninja.build, but instead just compiling from the
    visual studio ide.  However, the custom build step I think you were
    referring to for finish_swig seems to be:<br>
    <br>
    setlocal<br>
    "C:\Program Files (x86)\CMake\bin\cmake.exe" -E copy
    C:\Python35\python35.dll
    D:\rs_project\rs_llvm_build\$(Configuration)\bin<br>
    if %errorlevel% neq 0 goto :cmEnd<br>
    :cmEnd<br>
    endlocal &amp; call :cmErrorLevel %errorlevel% &amp; goto
    :cmDone<br>
    :cmErrorLevel<br>
    exit /b %1<br>
    :cmDone<br>
    if %errorlevel% neq 0 goto :VCEnd<br>
    <br>
    <br>
    The exact error message for building finish_swig was the following:<br>
    <br>
    ------ Build started: Project: finish_swig, Configuration: Debug x64
    ------<br>
    Build started 20/11/2015 17:27:07.<br>
    InitializeBuildStatus:<br>
      Touching
    "x64\Debug\finish_swig\finish_swig.tlog\unsuccessfulbuild".<br>
    CustomBuild:<br>
      Python script sym-linking LLDB Python API<br>
      Traceback (most recent call last):<br>
        File
    "D:/rs_project/rs_llvm/tools/lldb/scripts/finishSwigWrapperClasses.py",
    line 383, in <module><br>
          main(sys.argv[1:])<br>
        File
    "D:/rs_project/rs_llvm/tools/lldb/scripts/finishSwigWrapperClasses.py",
    line 326, in main<br>
          nResult, strMsg =
    run_post_process_for_each_script_supported(dictArgs)<br>
        File
    "D:/rs_project/rs_llvm/tools/lldb/scripts/finishSwigWrapperClasses.py",
    line 281, in run_post_process_for_each_script_supported<br>
          vDictArgs)<br>
        File
    "D:/rs_project/rs_llvm/tools/lldb/scripts/finishSwigWrapperClasses.py",
    line 223, in run_post_process<br>
          module = __import__(strModuleName)<br>
        File
    "d:\rs_project\rs_llvm\tools\lldb\scripts\python\finishSwigPythonLLDB.py",
    line 42, in <module><br>
          import ctypes       # Invoke Windows API for creating symlinks<br>
        File "C:\Python35\lib\ctypes\__init__.py", line 7, in
    <module><br>
          from _ctypes import Union, Structure, Array<br>
      ImportError: No module named '_ctypes'<br>
    <br>
    <br>
    For the python 2.7 case:<br>
    <br>
    The error I see in CMake is the following:<br>
    <br>
    <span style=" color:#ff0000;">-- Found Python version 2.7.10+</span>
    <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
      margin-right:0px; -qt-block-indent:0; text-indent:0px;">Unable to
      find C:/Python27/libs/python27+_d.lib</p>
    <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
      margin-right:0px; -qt-block-indent:0; text-indent:0px;">Unable to
      find C:/Python27/libs/python27+.lib</p>
    <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
      margin-right:0px; -qt-block-indent:0; text-indent:0px;">Unable to
      find C:/Python27/python27+_d.dll</p>
    <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
      margin-right:0px; -qt-block-indent:0; text-indent:0px;">Unable to
      find C:/Python27/python27+.dll</p>
    <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px;
      margin-right:0px; -qt-block-indent:0; text-indent:0px;">Python
      installation is corrupt. Python support will be disabled for this
      build.</p>
    <br>
    I'm not sure where the + comes from however...<br>
    <br>
    Aidan@AIDAN-PC /c/Python27<br>
    $ python --version<br>
    Python 2.7.10<br>
    <br>
    Aidan@AIDAN-PC /c/Python27<br>
    $ python_d --version<br>
    Python 2.7.10<br>
    <br>
    As for the CMake options its again complicated because I'm using
    cmake-gui.<br>
    Hopefully the relevant params are:<br>
    <br>
    PYTHON_EXCUTABLE = c:/python27/python_d.exe<br>
    PYTHON_HOME = c:/python27<br>
    LLDB_DISABLE_PYTHON = False<br>
    LLDB_RELOCATABLE_PYTHON = False<br>
    SWIG_DIR = d:/swig/lib<br>
    SWIG_EXECUTABLE = d:/swig/swig.exe<br>
    SWIG_VERSION = 3.0.5<br>
    <br>
    <br>
    I am using Visual Studio 2013 and doing an x86_64 build.<br>
    I compiled the python interpreter with the same version also.<br>
    <br>
    Its not a requirement for me to custom python for any reason, I just
    remember there being issues with using the release package.<br>
    <br>
    Thanks,<br>
    Aidan<br>
    <br>
    <div class="moz-cite-prefix">On 19/11/2015 18:01, Zachary Turner
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAAErz9hL-bQ74hzvvP+hL5-Dqk0=Fxk_YggrWZzSBaOAUO0NmA@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>+lldb-dev since this could be useful to other people.<br>
        </div>
        <div><br>
        </div>
        I'm actively working on getting Python 3.5 support working.  If
        you want to go this route, it will make your life much easier. 
        But I don't have a fully passing test suite yet, there are still
        about 30 failing tests.  So consider Python 3.5 experimental,
        and at your own risk.  (Patches welcome!)
        <div><br>
        </div>
        <div>If you want to go with Python 2.7 then the test suite
          should pass fully, but there are 1-2 flaky timeouts that
          happen occasionally.  But it is a lot more work to set up and
          nobody ever gets it right because it's so complicated.</div>
        <div><br>
        </div>
        <div>So, <b>for Python 3.5:</b><br>
        </div>
        <div>1) You must use Visual Studio 2015.  2013 or earlier will
          not work.</div>
        <div>2) Install Python 3.5 from <a moz-do-not-send="true"
            href="http://python.org">python.org</a></div>
        <div>3) Run CMake with -DPYTHON_HOME=C:\Python35</div>
        <div>4) That's it.  You're done.</div>
        <div><br>
        </div>
        <div>You don't need to build your own Python 3.5, which it
          sounds like what you're doing.  If you're not trying to build
          your own Python 3.5, then check to make sure your PYTHONPATH
          is not set to anything.  Mixed environments could be a
          problem.  If that doesn't fix it, then debugging into it a
          little bit could help.  For example, try running
          C:\Python35\python_d.exe and then typing "import _ctypes".  It
          should work.  If you're doing a release build then try making
          sure that finish_swig is running python.exe, and if you're
          doing a debug build then try making sure that finish_swig is
          running python_d.exe.  </div>
        <div><br>
        </div>
        <div><b>For Python 2.7</b></div>
        <div>1) You must <b>not </b>be using Visual Studio 2015.  Only
          2013 will work</div>
        <div>2) Can you tell me what command line you're invoking CMake
          with? </div>
        <div>3) Can you open up build.ninja and search for this line:</div>
        <div><br>
        </div>
        <div><i>Custom command for tools\lldb\CMakeFiles\finish_swig</i><br>
        </div>
        <div><i><br>
          </i></div>
        <div>And then paste the line under it back into this email?</div>
        <br>
        <div class="gmail_quote">
          <div dir="ltr">On Thu, Nov 19, 2015 at 8:55 AM Aidan Dodds
            <<a moz-do-not-send="true"
              href="mailto:aidan@codeplay.com">aidan@codeplay.com</a>>
            wrote:<br>
          </div>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi
            Zachary,<br>
            <br>
            I am currently trying to produce a windows build of LLDB
            that has python<br>
            bindings.<br>
            There seems to be a lot of discussion on the mailing list
            regarding<br>
            python at the moment.<br>
            <br>
            I couldn't see any documentation or instructions anywhere
            about how to<br>
            produce them.<br>
            <br>
            I have tried with python2.7 and 3.5 varying degrees of
            success.<br>
            While I was able to produce a debug version of the 2.7
            interpreter,<br>
            CMake seems to be looking for<br>
            python27_d+.lib, and I am not sure why the + has been
            appended.<br>
            My build using python 3.5 fails on finish_swig, with:
            ImportError: No<br>
            module named '_ctypes'.<br>
            <br>
            It would be very much appreciated if you could point me to a
            reference<br>
            for building the bindings<br>
            on windows or even just give me some direction to the
            simplest way to<br>
            produce them.<br>
            <br>
            Also out of interest what is that state of the lldb test
            suite on windows?<br>
            <br>
            Thanks,<br>
            Aidan<br>
          </blockquote>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>