[lldb-dev] Where is lldb.py?

Zachary Turner zturner at google.com
Wed Jul 2 13:19:18 PDT 2014


So it seems something is still wrong.  I'm generating the build files with
this command:

cmake -G Ninja -DLLDB_DISABLE_PYTHON=0
-DPYTHON_INCLUDE_DIR=c:\Python27\include
-DPYTHON_LIBRARY=C:\Python27\libs\python27.lib ..\..

(I have the patch I posted in the other thread applied, so
LLDB_DISABLE_PYTHON=0
implies LLDB_ENABLE_PYTHON_SCRIPTS_SWIG_API_GENERATION=1)

I successfully run a build, and after the build I observe the following:

1) LLDBWrapPython.cpp and lldb.py are in llvm/build/ninja/tools/lldb/scripts

2) There is no _lldb.pyd anywhere.

3) My Python is installed in C:\Python27, and C:\Python27\Lib\site-packages
is empty.

#2 and #3 seem like an error, am I doing something wrong in my build?


On Wed, Jul 2, 2014 at 12:27 PM, Deepak Panickal <deepak at codeplay.com>
wrote:

>  That problem is due to PYTHONPATH not being exported to the location
> where the python packages are built.
> Similar to Linux, you have to export PYTHONPATH to
> build_dir/lib/site-packages/python.
> The _lldb.pyd file symlinks to liblldb.dll on Windows.
>
> Regardles, you would still get an error on the command-line due to the
> missing python termios module on Windows.
> In ScriptInterpreterPython.cpp:2628, the termios module is imported, which
> would fail immediately.
>   PyRun_SimpleString ("sys.dont_write_bytecode = 1; import
> lldb.embedded_interpreter; from lldb.embedded_interpreter import
> run_python_interpreter; from lldb.embedded_interpreter import run_one_line;
> from termios import *");
> We have yet to solve this dependency on Windows.
> However, we can use the API directly for now.
>
> AFAIK, these modules are only used for the command-line interpreter, so
> does not affect using the API directly.
> If we comment out these out, we can run the examples in
> lldb/examples/python/, such as globals.py to load an ELF file and dump the
> globals using the Python API on Windows.
>
> Thanks,
> Deepak
>
>
> On 02/07/2014 19:48, Zachary Turner wrote:
>
> One more problem.  Compiled successfully, and ran LLDB.  Upon startup I
> get this warning:
>
>  Traceback (most recent call last):
>   File "<string>", line 1, in <module>
> ImportError: No module named lldb.embedded_interpreter
> (lldb)
>
>  So something is wrong there.  Typing "script" with no arguments gives
> this:
>
>   Traceback (most recent call last):
>   File "<string>", line 1, in <module>
> NameError: name 'run_one_line' is not defined
> Traceback (most recent call last):
>    File "<string>", line 1, in <module>
> NameError: name 'run_one_line' is not defined
> Traceback (most recent call last):
>   File "<string>", line 1, in <module>
> NameError: name 'run_one_line' is not defined
> Traceback (most recent call last):
>   File "<string>", line 1, in <module>
> NameError: name 'run_one_line' is not defined
> Traceback (most recent call last):
>   File "<string>", line 1, in <module>
> NameError: name 'run_one_line' is not defined
>
>  Just curious, what has been your use case for this so far?  Do you have
> it working on your end?  If so, what kind of things can you successfully do
> with it?
>
>
> On Tue, Jul 1, 2014 at 4:52 PM, Deepak Panickal <deepak at codeplay.com>
> wrote:
>
>>  Thanks, I'll look into the CMake warning.
>>
>> For now, you have to enable the variable
>> LLDB_ENABLE_PYTHON_SCRIPTS_SWIG_API_GENERATION specifically to use the new
>> python scripts, when LLDB_DISABLE_PYTHON is disabled.
>> Which is why not using the variable would break the build on Windows. On
>> Linux, it would work both ways.
>>
>> I added this variable so that the new scripts can be tested without
>> affecting normal builds on other platforms.
>> Could you please try,
>> cmake* -DLLDB_ENABLE_PYTHON_SCRIPTS_SWIG_API_GENERATION=1*
>> -DLLDB_DISABLE_PYTHON=0 -DPYTHON_INCLUDE_DIR=c:\python27\include
>> -DPYTHON_LIBRARY=C:\Python27\libs\python27.lib ..\..
>>
>> Thanks,
>> Deepak
>>
>>
>> On 01/07/2014 23:56, Zachary Turner wrote:
>>
>> Also getting the following error:
>>
>>  For reference, I ran cmake as
>>
>>  cmake -DLLDB_DISABLE_PYTHON=0 -DPYTHON_INCLUDE_DIR=c:\python27\include
>> -DPYTHON_LIBRARY=C:\Python27\libs\python27.lib ..\..
>>
>>  D:\src\llvm\build\ninja>ninja lldb
>> [88/433] Building lldb python wrapper
>> FAILED: cmd.exe /c cd /D D:\src\llvm\build\ninja\tools\lldb\scripts &&
>> env PYTHON_EXECUTABLE=C:/Python27/python.exe
>> D:/src/llvm/tools/lldb/scripts/build-swig-wrapper-classes.sh
>> D:/src/llvm/tools/lldb D:/src/llvm/build/ninja/tools/lldb/scripts
>> D:/src/llvm/build/ninja/tools/lldb/scripts D:/src/llvm/bu
>> ild/ninja -m && env PYTHON_EXECUTABLE=C:/Python27/python.exe
>> D:/src/llvm/tools/lldb/scripts/finish-swig-wrapper-classes.sh
>> D:/src/llvm/tools/lldb D:/src/llvm/build/ninja/tools/lldb/scripts
>> D:/src/llvm/build/ninja/tools/lldb/scripts D:/src/llvm/build/ninja -m
>> env: D:/src/llvm/tools/lldb/scripts/build-swig-wrapper-classes.sh: Exec
>> format error
>> [88/433] Building CXX object
>> tools\lldb\source\Plugins\Process\mach-core\CMakeFiles\lldbPluginProcessMachCore.dir\ProcessMachCore.cpp.obj
>> ninja: build stopped: subcommand failed.
>>
>>
>>
>> On Tue, Jul 1, 2014 at 3:41 PM, Zachary Turner <zturner at google.com>
>> wrote:
>>
>>> I get the following warning when running cmake with no special options
>>> passed via -D
>>>
>>>  CMake Warning (dev) at tools/lldb/CMakeLists.txt:234
>>> (target_link_libraries):
>>>   Policy CMP0023 is not set: Plain and keyword target_link_libraries
>>>   signatures cannot be mixed.  Run "cmake --help-policy CMP0023" for
>>> policy
>>>   details.  Use the cmake_policy command to set the policy and suppress
>>> this
>>>   warning.
>>>
>>>    The keyword signature for target_link_libraries has already been
>>> used with
>>>   the target "liblldb".  All uses of target_link_libraries with a target
>>>   should be either all-keyword or all-plain.
>>>
>>>    The uses of the keyword signature are here:
>>>
>>>     * cmake/modules/AddLLVM.cmake:331 (target_link_libraries)
>>>
>>>  Call Stack (most recent call first):
>>>    tools/lldb/source/CMakeLists.txt:214 (add_lldb_library)
>>> This warning is for project developers.  Use -Wno-dev to suppress it.
>>>
>>>
>>> On Tue, Jul 1, 2014 at 10:54 AM, Deepak Panickal <deepak at codeplay.com>
>>> wrote:
>>>
>>>>  Hi,
>>>>
>>>> I'm planning to upstream the Windows Python API changes now.
>>>>
>>>> This has been done by completely rewriting the shell scripts used for
>>>> the API generation in Python so that it's portable across different
>>>> platforms. We have tested it on both Windows and Linux successfully.
>>>>
>>>> I have added a new CMake variable
>>>> "LLDB_ENABLE_PYTHON_SCRIPTS_SWIG_API_GENERATION", to control if the new
>>>> Python scripts for managing SWIG generating the API are enabled or not.
>>>> This is disabled by default to not impact other platforms. This variable
>>>> can be removed once we move all the platforms to the Python scripts from
>>>> the shell scripts. There's some cleanup to be done, which I'll be working
>>>> on.
>>>>
>>>> Please let me know if there are any issues or comments.
>>>>
>>>> Thanks,
>>>> Deepak
>>>>
>>>>
>>>> On 24/06/14 12:23, Deepak Panickal wrote:
>>>>
>>>> Yes, it was compiling with MSVC 2013. It hasn't been updated though
>>>> since the review was submitted.
>>>> We're working on it now, so should be fixed to current tip and
>>>> upstreamed soon.
>>>>
>>>> Thanks,
>>>> Deepak
>>>>
>>>> On 24/06/14 01:24, Zachary Turner wrote:
>>>>
>>>> By the way, does this compile with MSVC 2013?  Many of the changes I
>>>> had to make to get things compiling don't seem to be present in this patch.
>>>>
>>>>
>>>>  On Mon, Jun 23, 2014 at 5:16 PM, Zachary Turner <zturner at google.com>
>>>> wrote:
>>>>
>>>>> Interesting.  I had already made some progress towards this in my own
>>>>> branch, so I'll have a look.
>>>>>
>>>>>  BTW, I'm not sure what your solution was regarding the missing
>>>>> python modules, but the pexpect one in particualr is pretty trivial to fix.
>>>>>  Just change it to subprocess.run() and remove the import of pexpect.
>>>>>
>>>>>
>>>>> On Mon, Jun 23, 2014 at 5:09 PM, Deepak Panickal <deepak at codeplay.com>
>>>>> wrote:
>>>>>
>>>>>>  We have already ported the lldb.py generating scripts to Python for
>>>>>> portability and got the API working in Windows and Linux.
>>>>>> We can load an ELF file, dump symbols, do remote debugging etc.
>>>>>> This work has been put into review sometime ago, so might need some
>>>>>> updation.
>>>>>>
>>>>>> http://reviews.llvm.org/D2980
>>>>>> <http://llvm-reviews.chandlerc.com/D2980>
>>>>>>
>>>>>> We're planning to fix it up quite soon to match with the current tip.
>>>>>>
>>>>>> Thanks,
>>>>>> Deepak
>>>>>>
>>>>>>
>>>>>> On 23/06/2014 22:09, Zachary Turner wrote:
>>>>>>
>>>>>> I'm already volunteering, just want to make sure it's ok before I do
>>>>>> the work :)
>>>>>>
>>>>>>  That being said, Greg mentions in an earlier message that it might
>>>>>> not be possible because we wish to support a Python-less build.   Who uses
>>>>>> this out of curiosity?  I don't think any Windows developers mind
>>>>>> installing Python as a requirement.  It's also mentioned on the Building
>>>>>> LLDB page (http://lldb.llvm.org/build.html) that Python is a
>>>>>> dependency
>>>>>>
>>>>>>
>>>>>> On Mon, Jun 23, 2014 at 2:07 PM, Todd Fiala <tfiala at google.com>
>>>>>> wrote:
>>>>>>
>>>>>>> You can volunteer to write it more portably ;-)
>>>>>>>
>>>>>>>
>>>>>>> On Mon, Jun 23, 2014 at 1:55 PM, Zachary Turner <zturner at google.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Hmm, a shell script.  kind of a non-starter for Windows.  Any
>>>>>>>> reason this can't be a python script?
>>>>>>>>
>>>>>>>>
>>>>>>>> On Mon, Jun 23, 2014 at 1:52 PM, Greg Clayton <gclayton at apple.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> It is generated by running swig with many options. See:
>>>>>>>>>
>>>>>>>>> lldb/scripts/build-swig-wrapper-classes.sh
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> > On Jun 23, 2014, at 1:41 PM, Zachary Turner <zturner at google.com>
>>>>>>>>> wrote:
>>>>>>>>> >
>>>>>>>>> > I'm trying to get the test suite into a working state on
>>>>>>>>> windows, or at the very least get it to the point where it fails by saying
>>>>>>>>> that none of the tests are supported on this platform.  I seem to be
>>>>>>>>> missing this file lldb.py though.  Is it supposed to be in the tree, or is
>>>>>>>>> it generated somehow?
>>>>>>>>>  > _______________________________________________
>>>>>>>>> > lldb-dev mailing list
>>>>>>>>> > lldb-dev at cs.uiuc.edu
>>>>>>>>> > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> lldb-dev mailing list
>>>>>>>> lldb-dev at cs.uiuc.edu
>>>>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>   --
>>>>>>>   Todd Fiala |  Software Engineer |  tfiala at google.com |
>>>>>>> 650-943-3180
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> lldb-dev mailing listlldb-dev at cs.uiuc.eduhttp://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> lldb-dev mailing list
>>>>>> lldb-dev at cs.uiuc.edu
>>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> lldb-dev mailing listlldb-dev at cs.uiuc.eduhttp://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
>>>>
>>>>
>>>>
>>>
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20140702/a07c3af6/attachment.html>


More information about the lldb-dev mailing list