From b25d6022fc8d6ae3880fa2f5bc5a3cc83f921df3 Mon Sep 17 00:00:00 2001 From: dmalcolm Date: Sat, 6 Feb 2010 00:37:39 +0000 Subject: [PATCH] - add gdb hooks for easier debugging --- ...7ef7848cbd0b3dcc7371f32e47ac4c87eba.tar.gz | Bin 0 -> 5990 bytes python.spec | 56 +++++++++++++++++- 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 libpython-36a517ef7848cbd0b3dcc7371f32e47ac4c87eba.tar.gz diff --git a/libpython-36a517ef7848cbd0b3dcc7371f32e47ac4c87eba.tar.gz b/libpython-36a517ef7848cbd0b3dcc7371f32e47ac4c87eba.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..3e0959e467287f637659ce2ba919708b533ad6f4 GIT binary patch literal 5990 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 L*0cop0|5UAoFjf= literal 0 HcmV?d00001 diff --git a/python.spec b/python.spec index 7683e7c..058e099 100644 --- a/python.spec +++ b/python.spec @@ -22,16 +22,40 @@ %global dynload_dir %{pylibdir}/lib-dynload %global site_packages %{pylibdir}/site-packages +%global with_gdb_hooks 1 + Summary: An interpreted, interactive, object-oriented programming language Name: %{python} Version: 2.6.4 -Release: 13%{?dist} +Release: 14%{?dist} License: Python Group: Development/Languages Provides: python-abi = %{pybasever} Provides: python(abi) = %{pybasever} Source: http://www.python.org/ftp/python/%{version}/Python-%{version}.tar.bz2 + +# We install a collection of hooks for gdb that make it easier to debug +# executables linked against libpython (such as /usr/lib/python itself) +# +# These hooks are implemented in Python itself +# +# We'll install them into the same path as the library, with a -gdb.py suffix +# e.g. +# /usr/lib/libpython2.6.so.1.0-gdb.py +# +# It would be better to put them in the -debuginfo subpackage e.g. here: +# /usr/lib/debug/usr/lib/libpython2.6.so.1.0.debug-gdb.py +# but unfortunately it's hard to add custom content to a debuginfo subpackage +# +# See https://fedoraproject.org/wiki/Features/EasierPythonDebugging for more +# information +# +# Downloaded from: +# http://fedorapeople.org/gitweb?p=dmalcolm/public_git/libpython.git;a=snapshot;h=36a517ef7848cbd0b3dcc7371f32e47ac4c87eba;sf=tgz +Source1: libpython-36a517ef7848cbd0b3dcc7371f32e47ac4c87eba.tar.gz + + # Modules/Setup.dist is ultimately used by the "makesetup" script to construct # the Makefile and config.c # @@ -349,6 +373,12 @@ code that uses more than just unittest and/or test_support.py. %prep %setup -q -n Python-%{version} +# Unpack source archive 1 into this same dir without deleting (-D; -T suppress +# trying to unpack source 0 again): +%if 0%{?with_gdb_hooks} +%setup -q -n Python-%{version} -T -D -a 1 +%endif # with_gdb_hooks + # Ensure that we're using the system copy of various libraries, rather than # copies shipped by upstream in the tarball: # Remove embedded copy of expat: @@ -587,6 +617,23 @@ ldd %{buildroot}/%{dynload_dir}/_curses*.so \ | grep curses \ | grep libncurses.so && (echo "_curses.so linked against libncurses.so" ; exit 1) + +# Copy up the gdb hooks into place; the python file will be autoloaded by gdb +# when visiting libpython.so, provided that the python file is installed to the +# same path as the library (or its .debug file) plus a "-gdb.py" suffix, e.g: +# /usr/lib/libpython2.6.so.1.0-gdb.py +# +# Long term, this should probably go in the debuginfo subpackage, e.g: +# /usr/lib/debug/usr/lib/libpython2.6.so.1.0.debug-gdb.py +# +# We use a for loop here to avoid having the RHS of the cp command be quoted, +# leading to a filename with a "*" character embedded in it +%if 0%{?with_gdb_hooks} +for lib in %{buildroot}%{_libdir}/libpython%{pybasever}.so.* ; do + cp libpython/libpython.py ${lib}-gdb.py +done +%endif # with_gdb_hooks + %clean rm -fr %{buildroot} @@ -733,6 +780,10 @@ rm -fr %{buildroot} %defattr(-,root,root,-) %doc LICENSE README %{_libdir}/libpython%{pybasever}.so.* +%if 0%{?with_gdb_hooks} +%{_libdir}/libpython%{pybasever}.so.*-gdb.py* +%endif # with_gdb_hooks + %files devel %defattr(-,root,root,-) @@ -781,6 +832,9 @@ rm -fr %{buildroot} %{dynload_dir}/_testcapimodule.so %changelog +* Fri Feb 5 2010 David Malcolm - 2.6.4-14 +- add gdb hooks for easier debugging + * Fri Jan 29 2010 David Malcolm - 2.6.4-13 - document all patches, and remove the commented-out ones