Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[lldb] Recommend Python 3.8 as the minimum Python version for LLDB #114807

Merged
merged 2 commits into from
Nov 12, 2024

Conversation

DavidSpickett
Copy link
Collaborator

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.

@DavidSpickett DavidSpickett marked this pull request as ready for review November 4, 2024 14:52
@llvmbot llvmbot added the lldb label Nov 4, 2024
@llvmbot
Copy link
Member

llvmbot commented Nov 4, 2024

@llvm/pr-subscribers-lldb

Author: David Spickett (DavidSpickett)

Changes

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.


Full diff: https://github.com/llvm/llvm-project/pull/114807.diff

2 Files Affected:

  • (modified) lldb/cmake/modules/FindPythonAndSwig.cmake (+7)
  • (modified) lldb/docs/resources/build.rst (+16-16)
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::

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.
@DavidSpickett DavidSpickett merged commit 3ce0dbb into llvm:main Nov 12, 2024
6 of 7 checks passed
@DavidSpickett DavidSpickett deleted the lldb-python branch November 12, 2024 10:49
Groverkss pushed a commit to iree-org/llvm-project that referenced this pull request Nov 15, 2024
…lvm#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.
jhpratt added a commit to jhpratt/rust that referenced this pull request Dec 31, 2024
Use python built in type annotations in LLDB visualizer scripts

Replaces type annotation comments with python's built-in type annotations.

Built-in type annotations were added in python 3.5. LLDB [currently recommends (and as of LLVM 21, will enforce)](llvm/llvm-project#114807) a minimum python version of 3.8. Rust's test suite also requires python 3.10.
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Dec 31, 2024
Rollup merge of rust-lang#134291 - Walnut356:type_annots, r=tgross35

Use python built in type annotations in LLDB visualizer scripts

Replaces type annotation comments with python's built-in type annotations.

Built-in type annotations were added in python 3.5. LLDB [currently recommends (and as of LLVM 21, will enforce)](llvm/llvm-project#114807) a minimum python version of 3.8. Rust's test suite also requires python 3.10.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants