[Lldb-commits] [lldb] [lldb] Recommend Python 3.8 as the minimum Python version for LLDB (PR #114807)
David Spickett via lldb-commits
lldb-commits at lists.llvm.org
Mon Nov 4 06:52:43 PST 2024
https://github.com/DavidSpickett created https://github.com/llvm/llvm-project/pull/114807
See https://discourse.llvm.org/t/rfc-lets-document-and-enforce-a-minimum-python-version-for-lldb/82731 for discussions.
This matches LLVM's requirement to run tests. For LLDB 20 there will be a CMake warning telling builders that from LLDB 21 this will be a hard requirement. From LLDB 21, it will be an error to try to build with anything <= 3.8.
So there are no code changes in this commit. Once the llvm 20 branch is created we can remove some < 3.8 support code.
As always, if you disable Python support you will not get any new warnings or errors from this change.
>From 12672234d81cc12625d8832fed4937221d37546e Mon Sep 17 00:00:00 2001
From: David Spickett <david.spickett at linaro.org>
Date: Mon, 4 Nov 2024 14:41:19 +0000
Subject: [PATCH] [lldb] Recommend Python 3.8 as the minimum Python version for
LLDB
See https://discourse.llvm.org/t/rfc-lets-document-and-enforce-a-minimum-python-version-for-lldb/82731
for discussions.
This matches LLVM's requirement to run tests. For LLDB 20 there will
be a CMake warning telling builders that from LLDB 21 this will be
a hard requirement. From LLDB 21, it will be an error to try to build
with anything <= 3.8.
So there are no code changes in this commit. Once the llvm 20 branch
is created we can remove some < 3.8 support code.
As always, if you disable Python support you will not get any new
warnings or errors from this change.
---
lldb/cmake/modules/FindPythonAndSwig.cmake | 7 +++++
lldb/docs/resources/build.rst | 32 +++++++++++-----------
2 files changed, 23 insertions(+), 16 deletions(-)
diff --git a/lldb/cmake/modules/FindPythonAndSwig.cmake b/lldb/cmake/modules/FindPythonAndSwig.cmake
index d62cced0d095e9..2cdd2204ae43cc 100644
--- a/lldb/cmake/modules/FindPythonAndSwig.cmake
+++ b/lldb/cmake/modules/FindPythonAndSwig.cmake
@@ -64,3 +64,10 @@ else()
Python3_EXECUTABLE
LLDB_ENABLE_SWIG)
endif()
+
+set(LLDB_RECOMMENDED_PYTHON "3.8")
+if(Python3_LIBRARIES AND Python3_INCLUDE_DIRS AND Python3_EXECUTABLE AND LLDB_ENABLE_SWIG
+ AND "${Python3_VERSION}" VERSION_LESS "${LLDB_RECOMMENDED_PYTHON}")
+ message(WARNING "Using Python ${Python3_VERSION}. ${LLDB_RECOMMENDED_PYTHON} "
+ "is recommended and will be required from LLDB 21.")
+endif()
\ No newline at end of file
diff --git a/lldb/docs/resources/build.rst b/lldb/docs/resources/build.rst
index 33b6a6f79def4b..0ff0a0d7d049e1 100644
--- a/lldb/docs/resources/build.rst
+++ b/lldb/docs/resources/build.rst
@@ -51,21 +51,21 @@ CMake flag to ``On`` or ``Off`` to force the dependency to be enabled or
disabled. When a dependency is set to ``On`` and can't be found it will cause a
CMake configuration error.
-+-------------------+------------------------------------------------------+--------------------------+
-| Feature | Description | CMake Flag |
-+===================+======================================================+==========================+
-| Editline | Generic line editing, history, Emacs and Vi bindings | ``LLDB_ENABLE_LIBEDIT`` |
-+-------------------+------------------------------------------------------+--------------------------+
-| Curses | Text user interface | ``LLDB_ENABLE_CURSES`` |
-+-------------------+------------------------------------------------------+--------------------------+
-| LZMA | Lossless data compression | ``LLDB_ENABLE_LZMA`` |
-+-------------------+------------------------------------------------------+--------------------------+
-| Libxml2 | XML | ``LLDB_ENABLE_LIBXML2`` |
-+-------------------+------------------------------------------------------+--------------------------+
-| Python | Python scripting | ``LLDB_ENABLE_PYTHON`` |
-+-------------------+------------------------------------------------------+--------------------------+
-| Lua | Lua scripting | ``LLDB_ENABLE_LUA`` |
-+-------------------+------------------------------------------------------+--------------------------+
++-------------------+--------------------------------------------------------------+--------------------------+
+| Feature | Description | CMake Flag |
++===================+==============================================================+==========================+
+| Editline | Generic line editing, history, Emacs and Vi bindings | ``LLDB_ENABLE_LIBEDIT`` |
++-------------------+--------------------------------------------------------------+--------------------------+
+| Curses | Text user interface | ``LLDB_ENABLE_CURSES`` |
++-------------------+--------------------------------------------------------------+--------------------------+
+| LZMA | Lossless data compression | ``LLDB_ENABLE_LZMA`` |
++-------------------+--------------------------------------------------------------+--------------------------+
+| Libxml2 | XML | ``LLDB_ENABLE_LIBXML2`` |
++-------------------+--------------------------------------------------------------+--------------------------+
+| Python | Python scripting. >= 3.0 is required, >= 3.8 is recommended. | ``LLDB_ENABLE_PYTHON`` |
++-------------------+--------------------------------------------------------------+--------------------------+
+| Lua | Lua scripting | ``LLDB_ENABLE_LUA`` |
++-------------------+--------------------------------------------------------------+--------------------------+
Depending on your platform and package manager, one might run any of the
commands below.
@@ -75,7 +75,7 @@ commands below.
$ yum install libedit-devel libxml2-devel ncurses-devel python-devel swig
$ sudo apt-get install build-essential swig python3-dev libedit-dev libncurses5-dev libxml2-dev
$ pkg install swig python libxml2
- $ pkgin install swig python36 cmake ninja-build
+ $ pkgin install swig python38 cmake ninja-build
$ brew install swig cmake ninja
.. note::
More information about the lldb-commits
mailing list