[lldb-dev] Python3 compatibility for the API

Ted Woodward via lldb-dev lldb-dev at lists.llvm.org
Tue Sep 13 13:55:32 PDT 2016

I just built lldb on Ubuntu 12 with Python 3.5.1. I needed to set python includes, python library and python executable in cmake.

I found a problem with the tests - most ran fine, but I got errors with tests that tried to use pexpect, like TestConvenienceVariables.py.
  File "/local/scratch/ted/8.1/llvm/tools/lldb/third_party/Python/module/pexpect-2.4/pexpect.py", line 82
    except ImportError, e:
SyntaxError: invalid syntax

If we want to run the tests with Python3 we'll need to update pexpect.

Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project

-----Original Message-----
From: lldb-dev [mailto:lldb-dev-bounces at lists.llvm.org] On Behalf Of Luke Drummond via lldb-dev
Sent: Tuesday, August 30, 2016 7:01 AM
To: lldb-dev at lists.llvm.org
Subject: Re: [lldb-dev] Python3 compatibility for the API

Hi Zachary, Peter

On 30/08/16 00:14, Zachary Turner via lldb-dev wrote:
> Right, the existing version that is built and what you are using links 
> directly against a 2.7 libpython at compile time.  So you would 
> probably need to build LLDB from source and tweak the build system to 
> make it possible to link against your 3.x version of python.  There's 
> some build instructions on the website 
> <http://lldb.llvm.org/build.html>.  I know there's a few linux 
> developers around here, so it's possible someone else would be 
> interested in making this work as well, but I don't know that it's on anyone's immediate timeline.

We build lldb against python3 regularly, because - as Zachary said - this is the only way to get scripting support on windows. To link against python3 on Linux you *should* just need the correct headers installed, and invoke CMake with the correct python path. For Ubuntu:

sudo apt install python3-dev

*should* give you everything you need. However, you may see that cmake picks up the python3 interpreter correctly, but tries to link against the python2.7 library.

-- Found PythonInterp: /usr/bin/python3 (found version "3.5.2") [...]
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython2.7.so (found version "2.7.12")

This appears to be due to a problem in LLVM's CMakeLists.txt specifying support for 2.7 only. I have a patch to fix the issue awaiting review
[here](https://reviews.llvm.org/D20825) which should fix the issue on Linux when multiple pythons are installed. It may be worth applying this patch locally and see how you get on.

Hope that helps


lldb-dev mailing list
lldb-dev at lists.llvm.org

More information about the lldb-dev mailing list