From 2052c4d0aa899964c9980c890b32162f04134d9d Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Thu, 4 Oct 2018 02:12:37 +0000 Subject: [PATCH] Build python module for python3 --- ...mbolication.py-to-python3-using-2to3.patch | 165 ++++++++++++++++++ lldb.spec | 37 ++-- 2 files changed, 185 insertions(+), 17 deletions(-) create mode 100644 0001-Convert-symbolication.py-to-python3-using-2to3.patch diff --git a/0001-Convert-symbolication.py-to-python3-using-2to3.patch b/0001-Convert-symbolication.py-to-python3-using-2to3.patch new file mode 100644 index 0000000..de930d3 --- /dev/null +++ b/0001-Convert-symbolication.py-to-python3-using-2to3.patch @@ -0,0 +1,165 @@ +From 660490d17fa1c649a7ad86da4a197c91090ce97a Mon Sep 17 00:00:00 2001 +From: Tom Stellard +Date: Wed, 3 Oct 2018 15:44:30 -0700 +Subject: [PATCH] Convert symbolication.py to python3 using 2to3 + +--- + examples/python/symbolication.py | 70 ++++++++++++++++++++-------------------- + 1 file changed, 35 insertions(+), 35 deletions(-) + +diff --git a/examples/python/symbolication.py b/examples/python/symbolication.py +index b655ad0..313d724 100755 +--- a/examples/python/symbolication.py ++++ b/examples/python/symbolication.py +@@ -27,7 +27,7 @@ + #---------------------------------------------------------------------- + + import lldb +-import commands ++import subprocess + import optparse + import os + import plistlib +@@ -203,13 +203,13 @@ class Section: + if op == '+': + self.end_addr += self.start_addr + return True +- print 'error: invalid section info string "%s"' % s +- print 'Valid section info formats are:' +- print 'Format Example Description' +- print '--------------------- -----------------------------------------------' +- print '= __TEXT=0x123000 Section from base address only' +- print '=- __TEXT=0x123000-0x124000 Section from base address and end address' +- print '=+ __TEXT=0x123000+0x1000 Section from base address and size' ++ print('error: invalid section info string "%s"' % s) ++ print('Valid section info formats are:') ++ print('Format Example Description') ++ print('--------------------- -----------------------------------------------') ++ print('= __TEXT=0x123000 Section from base address only') ++ print('=- __TEXT=0x123000-0x124000 Section from base address and end address') ++ print('=+ __TEXT=0x123000+0x1000 Section from base address and size') + return False + + def __str__(self): +@@ -261,21 +261,21 @@ class Image: + return obj + + def dump(self, prefix): +- print "%s%s" % (prefix, self) ++ print("%s%s" % (prefix, self)) + + def debug_dump(self): +- print 'path = "%s"' % (self.path) +- print 'resolved_path = "%s"' % (self.resolved_path) +- print 'resolved = %i' % (self.resolved) +- print 'unavailable = %i' % (self.unavailable) +- print 'uuid = %s' % (self.uuid) +- print 'section_infos = %s' % (self.section_infos) +- print 'identifier = "%s"' % (self.identifier) +- print 'version = %s' % (self.version) +- print 'arch = %s' % (self.arch) +- print 'module = %s' % (self.module) +- print 'symfile = "%s"' % (self.symfile) +- print 'slide = %i (0x%x)' % (self.slide, self.slide) ++ print('path = "%s"' % (self.path)) ++ print('resolved_path = "%s"' % (self.resolved_path)) ++ print('resolved = %i' % (self.resolved)) ++ print('unavailable = %i' % (self.unavailable)) ++ print('uuid = %s' % (self.uuid)) ++ print('section_infos = %s' % (self.section_infos)) ++ print('identifier = "%s"' % (self.identifier)) ++ print('version = %s' % (self.version)) ++ print('arch = %s' % (self.arch)) ++ print('module = %s' % (self.module)) ++ print('symfile = "%s"' % (self.symfile)) ++ print('slide = %i (0x%x)' % (self.slide, self.slide)) + + def __str__(self): + s = '' +@@ -428,12 +428,12 @@ class Image: + if self.has_section_load_info(): + err = self.load_module(target) + if err: +- print 'ERROR: ', err ++ print('ERROR: ', err) + return target + else: +- print 'error: unable to create a valid target for (%s) "%s"' % (self.arch, self.path) ++ print('error: unable to create a valid target for (%s) "%s"' % (self.arch, self.path)) + else: +- print 'error: unable to locate main executable (%s) "%s"' % (self.arch, self.path) ++ print('error: unable to locate main executable (%s) "%s"' % (self.arch, self.path)) + return None + + +@@ -554,7 +554,7 @@ class Symbolicator: + if symbolicated_addresses: + return symbolicated_addresses + else: +- print 'error: no target in Symbolicator' ++ print('error: no target in Symbolicator') + return None + + +@@ -602,22 +602,22 @@ def disassemble_instructions( + end_idx = inst_idx + for i in range(start_idx, end_idx + 1): + if i == pc_index: +- print ' -> ', lines[i] ++ print(' -> ', lines[i]) + else: +- print ' ', lines[i] ++ print(' ', lines[i]) + + + def print_module_section_data(section): +- print section ++ print(section) + section_data = section.GetSectionData() + if section_data: + ostream = lldb.SBStream() + section_data.GetDescription(ostream, section.GetFileAddress()) +- print ostream.GetData() ++ print(ostream.GetData()) + + + def print_module_section(section, depth): +- print section ++ print(section) + if depth > 0: + num_sub_sections = section.GetNumSubSections() + for sect_idx in range(num_sub_sections): +@@ -632,7 +632,7 @@ def print_module_sections(module, depth): + + def print_module_symbols(module): + for sym in module: +- print sym ++ print(sym) + + + def Symbolicate(command_args): +@@ -709,17 +709,17 @@ def Symbolicate(command_args): + + target = symbolicator.create_target() + if options.verbose: +- print symbolicator ++ print(symbolicator) + if target: + for addr_str in args: + addr = int(addr_str, 0) + symbolicated_addrs = symbolicator.symbolicate( + addr, options.verbose) + for symbolicated_addr in symbolicated_addrs: +- print symbolicated_addr +- print ++ print(symbolicated_addr) ++ print() + else: +- print 'error: no target for %s' % (symbolicator) ++ print('error: no target for %s' % (symbolicator)) + + if __name__ == '__main__': + # Create a new debugger instance +-- +1.8.3.1 + diff --git a/lldb.spec b/lldb.spec index e34b951..ac096f9 100644 --- a/lldb.spec +++ b/lldb.spec @@ -1,12 +1,14 @@ Name: lldb Version: 7.0.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Next generation high-performance debugger License: NCSA URL: http://lldb.llvm.org/ Source0: http://%{?rc_ver:pre}releases.llvm.org/%{version}/%{?rc_ver:rc%{rc_ver}}/%{name}-%{version}%{?rc_ver:rc%{rc_ver}}.src.tar.xz +Patch0: 0001-Convert-symbolication.py-to-python3-using-2to3.patch + BuildRequires: cmake BuildRequires: llvm-devel = %{version} BuildRequires: clang-devel = %{version} @@ -18,7 +20,7 @@ BuildRequires: zlib-devel BuildRequires: libxml2-devel BuildRequires: libedit-devel -Requires: python2-lldb +Requires: python3-lldb %description LLDB is a next generation, high-performance debugger. It is built as a set @@ -33,21 +35,21 @@ Requires: %{name}%{?_isa} = %{version}-%{release} %description devel The package contains header files for the LLDB debugger. -%package -n python2-lldb -%{?python_provide:%python_provide python2-lldb} +%package -n python3-lldb +%{?python_provide:%python_provide python3-lldb} Summary: Python module for LLDB -BuildRequires: python2-devel -Requires: python2-six +BuildRequires: python3-devel +Requires: python3-six -%description -n python2-lldb +%description -n python3-lldb The package contains the LLDB Python module. %prep -%setup -q -n %{name}-%{version}%{?rc_ver:rc%{rc_ver}}.src +%autosetup -n %{name}-%{version}%{?rc_ver:rc%{rc_ver}}.src -p1 # HACK so that lldb can find its custom readline.so, because we move it # after install. -sed -i -e "s~import sys~import sys\nsys.path.insert\(1, '%{python2_sitearch}/lldb'\)~g" source/Interpreter/embedded_interpreter.py +sed -i -e "s~import sys~import sys\nsys.path.insert\(1, '%{python3_sitearch}/lldb'\)~g" source/Interpreter/embedded_interpreter.py %build @@ -78,9 +80,7 @@ CXXFLAGS="%{optflags} -Wno-error=format-security" -DLLVM_LIBDIR_SUFFIX= \ %endif \ - -DPYTHON_EXECUTABLE:STRING=%{__python2} \ - -DPYTHON_VERSION_MAJOR:STRING=$(%{__python2} -c "import sys; print sys.version_info.major") \ - -DPYTHON_VERSION_MINOR:STRING=$(%{__python2} -c "import sys; print sys.version_info.minor") + -DPYTHON_EXECUTABLE:STRING=%{__python3} make %{?_smp_mflags} @@ -93,11 +93,11 @@ rm -fv %{buildroot}%{_libdir}/*.a # python: fix binary libraries location liblldb=$(basename $(readlink -e %{buildroot}%{_libdir}/liblldb.so)) -ln -vsf "../../../${liblldb}" %{buildroot}%{python2_sitearch}/lldb/_lldb.so -mv -v %{buildroot}%{python2_sitearch}/readline.so %{buildroot}%{python2_sitearch}/lldb/readline.so +ln -vsf "../../../${liblldb}" %{buildroot}%{python3_sitearch}/lldb/_lldb.so +mv -v %{buildroot}%{python3_sitearch}/readline.so %{buildroot}%{python3_sitearch}/lldb/readline.so # remove bundled six.py -rm -f %{buildroot}%{python2_sitearch}/six.* +rm -f %{buildroot}%{python3_sitearch}/six.* %post -p /sbin/ldconfig %postun -p /sbin/ldconfig @@ -111,10 +111,13 @@ rm -f %{buildroot}%{python2_sitearch}/six.* %{_includedir}/lldb %{_libdir}/*.so -%files -n python2-lldb -%{python2_sitearch}/lldb +%files -n python3-lldb +%{python3_sitearch}/lldb %changelog +* Wed Oct 03 2018 Tom Stellard - 7.0.0-2 +- Build python module for python3 + * Tue Sep 25 2018 Tom Stellard - 7.0.0-1 - 7.0.0 Release