diff --git a/.gitignore b/.gitignore index b6fa5b9..fe259e7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -SOURCES/lldb-16.0.6.src.tar.xz -SOURCES/lldb-16.0.6.src.tar.xz.sig +SOURCES/lldb-17.0.6.src.tar.xz +SOURCES/lldb-17.0.6.src.tar.xz.sig diff --git a/.lldb.metadata b/.lldb.metadata index 8246395..4f79ddc 100644 --- a/.lldb.metadata +++ b/.lldb.metadata @@ -1,2 +1,2 @@ -42e67369cd63a992369a638f289cc3a787d09c8f SOURCES/lldb-16.0.6.src.tar.xz -bc87caa10c21c9e53a6afe4d191a299b4905495e SOURCES/lldb-16.0.6.src.tar.xz.sig +fc7260e1768ad2ee3b9d5a91d90d17e58e20df14 SOURCES/lldb-17.0.6.src.tar.xz +fe7372c59ada760ed06814ed92c24c47fb2a055d SOURCES/lldb-17.0.6.src.tar.xz.sig diff --git a/SOURCES/0001-lldb-Adapt-code-to-Python-3.13.patch b/SOURCES/0001-lldb-Adapt-code-to-Python-3.13.patch new file mode 100644 index 0000000..c18682f --- /dev/null +++ b/SOURCES/0001-lldb-Adapt-code-to-Python-3.13.patch @@ -0,0 +1,74 @@ +From ed87035da34be675df7ea78bdf5f7631d81ab2db Mon Sep 17 00:00:00 2001 +From: Tulio Magno Quites Machado Filho +Date: Wed, 25 Oct 2023 10:48:53 -0300 +Subject: [PATCH] [lldb] Adapt code to Python 3.13 + +1. Remove usage of PyEval_ThreadsInitialized and PyEval_InitThreads + +Both of these functions were removed in Python 3.13 [1] after being +deprecated since Python 3.9. + +According to "What's new in Python 3.13" document [1]: + + Since Python 3.7, Py_Initialize() always creates the GIL: calling + PyEval_InitThreads() did nothing and PyEval_ThreadsInitialized() + always returned non-zero. + +2. Replace _Py_IsFinalizing() with Py_IsFinalizing(). + +[1] https://docs.python.org/3.13/whatsnew/3.13.html +--- + .../ScriptInterpreter/Python/PythonDataObjects.cpp | 4 +++- + .../ScriptInterpreter/Python/ScriptInterpreterPython.cpp | 9 +++++++++ + 2 files changed, 12 insertions(+), 1 deletion(-) + +diff --git a/lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp b/lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp +index 9ac840a4a102..fe3438c42471 100644 +--- a/lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp ++++ b/lldb/source/Plugins/ScriptInterpreter/Python/PythonDataObjects.cpp +@@ -71,7 +71,9 @@ Expected python::As(Expected &&obj) { + } + + static bool python_is_finalizing() { +-#if PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION < 7 ++#if (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 13) || (PY_MAJOR_VERSION > 3) ++ return Py_IsFinalizing(); ++#elif PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION < 7 + return _Py_Finalizing != nullptr; + #else + return _Py_IsFinalizing(); +diff --git a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp +index a57c8e4984ad..968cc8ca0300 100644 +--- a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp ++++ b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp +@@ -179,18 +179,27 @@ private: + return; + #endif + ++// `PyEval_ThreadsInitialized` was deprecated in Python 3.9 and removed in ++// Python 3.13. It has been returning `true` always since Python 3.7. ++#if (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION < 9) || (PY_MAJOR_VERSION < 3) + if (PyEval_ThreadsInitialized()) { ++#endif + Log *log = GetLog(LLDBLog::Script); + + m_was_already_initialized = true; + m_gil_state = PyGILState_Ensure(); + LLDB_LOGV(log, "Ensured PyGILState. Previous state = {0}locked\n", + m_gil_state == PyGILState_UNLOCKED ? "un" : ""); ++ ++// `PyEval_InitThreads` was deprecated in Python 3.9 and removed in ++// Python 3.13. ++#if (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION < 9) || (PY_MAJOR_VERSION < 3) + return; + } + + // InitThreads acquires the GIL if it hasn't been called before. + PyEval_InitThreads(); ++#endif + } + + PyGILState_STATE m_gil_state = PyGILState_UNLOCKED; +-- +2.41.0 + diff --git a/SOURCES/0001-lldb-Change-LLVM_COMMON_CMAKE_UTILS-usage.patch b/SOURCES/0001-lldb-Change-LLVM_COMMON_CMAKE_UTILS-usage.patch deleted file mode 100644 index bebc548..0000000 --- a/SOURCES/0001-lldb-Change-LLVM_COMMON_CMAKE_UTILS-usage.patch +++ /dev/null @@ -1,30 +0,0 @@ -From fb389f0cd6b4e8996157fa7d7bc347fde7b43656 Mon Sep 17 00:00:00 2001 -From: Tulio Magno Quites Machado Filho -Date: Thu, 23 Mar 2023 16:06:10 -0300 -Subject: [PATCH] [lldb] Change LLVM_COMMON_CMAKE_UTILS usage - -Let LLVM_COMMON_CMAKE_UTILS store the directory where cmake modules are -available and stop assuming its directory structure. ---- - lldb/CMakeLists.txt | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/lldb/CMakeLists.txt b/lldb/CMakeLists.txt -index 20d584c48bad..7bad2a9928cd 100644 ---- a/lldb/CMakeLists.txt -+++ b/lldb/CMakeLists.txt -@@ -1,9 +1,9 @@ - cmake_minimum_required(VERSION 3.13.4) - - if(NOT DEFINED LLVM_COMMON_CMAKE_UTILS) -- set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake) -+ set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/Modules) - endif() --include(${LLVM_COMMON_CMAKE_UTILS}/Modules/CMakePolicy.cmake -+include(${LLVM_COMMON_CMAKE_UTILS}/CMakePolicy.cmake - NO_POLICY_SCOPE) - - # Add path for custom modules. --- -2.39.2 - diff --git a/SOURCES/0001-lldb-Replace-the-usage-of-module-imp-with-module-imp.patch b/SOURCES/0001-lldb-Replace-the-usage-of-module-imp-with-module-imp.patch new file mode 100644 index 0000000..cd1a70e --- /dev/null +++ b/SOURCES/0001-lldb-Replace-the-usage-of-module-imp-with-module-imp.patch @@ -0,0 +1,91 @@ +From 16fd09f102eff20825847e32f225715960d1c082 Mon Sep 17 00:00:00 2001 +From: Tulio Magno Quites Machado Filho +Date: Wed, 25 Oct 2023 10:48:53 -0300 +Subject: [PATCH] [lldb] Replace the usage of module imp with module importlib + +imp got removed in Python 3.12 [1] and the community recommends using +importlib in newer Python versions. + +[1] https://docs.python.org/3.12/whatsnew/3.12.html#imp +--- + lldb/scripts/use_lldb_suite.py | 30 ++++++++++++++++++++++-------- + lldb/test/API/use_lldb_suite.py | 29 +++++++++++++++++++++-------- + 2 files changed, 43 insertions(+), 16 deletions(-) + +diff --git a/lldb/scripts/use_lldb_suite.py b/lldb/scripts/use_lldb_suite.py +index 6388d87b181c..4cedfa532cf9 100644 +--- a/lldb/scripts/use_lldb_suite.py ++++ b/lldb/scripts/use_lldb_suite.py +@@ -17,10 +17,25 @@ def find_lldb_root(): + return lldb_root + + lldb_root = find_lldb_root() +-import imp +-fp, pathname, desc = imp.find_module("use_lldb_suite_root", [lldb_root]) +-try: +- imp.load_module("use_lldb_suite_root", fp, pathname, desc) +-finally: +- if fp: +- fp.close() ++ ++# Module imp got removed in Python 3.12. ++if ( ++ sys.version_info.major == 3 and sys.version_info.minor >= 12 ++) or sys.version_info.major > 3: ++ import importlib.machinery ++ import importlib.util ++ ++ path = os.path.join(lldb_root, "use_lldb_suite_root.py") ++ loader = importlib.machinery.SourceFileLoader("use_lldb_suite_root", path) ++ spec = importlib.util.spec_from_loader("use_lldb_suite_root", loader=loader) ++ module = importlib.util.module_from_spec(spec) ++ loader.exec_module(module) ++else: ++ import imp ++ ++ fp, pathname, desc = imp.find_module("use_lldb_suite_root", [lldb_root]) ++ try: ++ imp.load_module("use_lldb_suite_root", fp, pathname, desc) ++ finally: ++ if fp: ++ fp.close() +diff --git a/lldb/test/API/use_lldb_suite.py b/lldb/test/API/use_lldb_suite.py +index e237dd4b8a56..c9332d9921b4 100644 +--- a/lldb/test/API/use_lldb_suite.py ++++ b/lldb/test/API/use_lldb_suite.py +@@ -20,11 +20,24 @@ def find_lldb_root(): + + lldb_root = find_lldb_root() + +-import imp +- +-fp, pathname, desc = imp.find_module("use_lldb_suite_root", [lldb_root]) +-try: +- imp.load_module("use_lldb_suite_root", fp, pathname, desc) +-finally: +- if fp: +- fp.close() ++# Module imp got removed in Python 3.12. ++if ( ++ sys.version_info.major == 3 and sys.version_info.minor >= 12 ++) or sys.version_info.major > 3: ++ import importlib.machinery ++ import importlib.util ++ ++ path = os.path.join(lldb_root, "use_lldb_suite_root.py") ++ loader = importlib.machinery.SourceFileLoader("use_lldb_suite_root", path) ++ spec = importlib.util.spec_from_loader("use_lldb_suite_root", loader=loader) ++ module = importlib.util.module_from_spec(spec) ++ loader.exec_module(module) ++else: ++ import imp ++ ++ fp, pathname, desc = imp.find_module("use_lldb_suite_root", [lldb_root]) ++ try: ++ imp.load_module("use_lldb_suite_root", fp, pathname, desc) ++ finally: ++ if fp: ++ fp.close() +-- +2.41.0 + diff --git a/SPECS/lldb.spec b/SPECS/lldb.spec index 59f8b76..ae338ec 100644 --- a/SPECS/lldb.spec +++ b/SPECS/lldb.spec @@ -1,27 +1,32 @@ %global toolchain clang -%global lldb_version 16.0.6 -%global lldb_srcdir %{name}-%{lldb_version}.src %global gts_version 13 +%global lldb_version 17.0.6 +#global rc_ver 4 +%global lldb_srcdir %{name}-%{lldb_version}%{?rc_ver:rc%{rc_ver}}.src Name: lldb -Version: %{lldb_version} +Version: %{lldb_version}%{?rc_ver:~rc%{rc_ver}} Release: 1%{?dist} Summary: Next generation high-performance debugger License: Apache-2.0 WITH LLVM-exception OR NCSA URL: http://lldb.llvm.org/ -Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{lldb_version}/%{lldb_srcdir}.tar.xz -Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{lldb_version}/%{lldb_srcdir}.tar.xz.sig +Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{lldb_version}%{?rc_ver:-rc%{rc_ver}}/%{lldb_srcdir}.tar.xz +Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{lldb_version}%{?rc_ver:-rc%{rc_ver}}/%{lldb_srcdir}.tar.xz.sig Source2: release-keys.asc -Patch0: 0001-lldb-Change-LLVM_COMMON_CMAKE_UTILS-usage.patch +# Backport from https://github.com/llvm/llvm-project/pull/70443 +Patch: 0001-lldb-Replace-the-usage-of-module-imp-with-module-imp.patch +# Backport from https://github.com/llvm/llvm-project/pull/70445 +Patch: 0001-lldb-Adapt-code-to-Python-3.13.patch BuildRequires: clang BuildRequires: cmake BuildRequires: ninja-build BuildRequires: llvm-devel = %{version} BuildRequires: llvm-test = %{version} +BuildRequires: llvm-cmake-utils = %{version} BuildRequires: clang-devel = %{version} BuildRequires: ncurses-devel BuildRequires: swig @@ -68,6 +73,7 @@ The package contains the LLDB Python module. %autosetup -n %{lldb_srcdir} -p2 %build +%global _lto_cflags -flto=thin %ifarch %ix86 # Linking liblldb.so goes out of memory even with ThinLTO and a single link job. @@ -79,8 +85,7 @@ The package contains the LLDB Python module. -DCMAKE_SKIP_RPATH:BOOL=ON \ -DLLVM_LINK_LLVM_DYLIB:BOOL=ON \ -DLLVM_CONFIG:FILEPATH=/usr/bin/llvm-config-%{__isa_bits} \ - -DLLVM_COMMON_CMAKE_UTILS=%{_libdir}/cmake/llvm \ - \ + -DLLVM_COMMON_CMAKE_UTILS=%{_datadir}/llvm/cmake \ -DLLDB_DISABLE_CURSES:BOOL=OFF \ -DLLDB_DISABLE_LIBEDIT:BOOL=OFF \ -DLLDB_DISABLE_PYTHON:BOOL=OFF \ @@ -95,6 +100,7 @@ The package contains the LLDB Python module. -DPYTHON_VERSION_MINOR:STRING=$(%{__python3} -c "import sys; print(sys.version_info.minor)") \ -DLLVM_EXTERNAL_LIT=%{_bindir}/lit \ -DCLANG_LINK_CLANG_DYLIB=ON \ + -DCLANG_RESOURCE_DIR=$(realpath --relative-to=/usr/bin %{clang_resource_dir}) \ -DLLVM_LIT_ARGS="-sv \ --path %{_libdir}/llvm" \ @@ -140,6 +146,12 @@ rm -f %{buildroot}%{python3_sitearch}/six.* %{python3_sitearch}/lldb %changelog +* Mon Dec 11 2023 Timm Bäder - 17.0.6-1 +- Update to 17.0.6 + +* Wed Oct 04 2023 Timm Bäder - 17.0.1-1 +- Update to 17.0.1 + * Wed Jul 05 2023 Nikita Popov - 16.0.6-1 - Update to LLVM 16.0.6