2.7.3-6: try again to fix test_gdb.py (patch 156; rhbz#817072)

* Mon Apr 30 2012 David Malcolm <dmalcolm@redhat.com> - 2.7.3-6
- try again to fix test_gdb.py (patch 156; rhbz#817072)
This commit is contained in:
David Malcolm 2012-04-30 16:20:26 -04:00
parent 9261681cd0
commit 1fa9c84f23
2 changed files with 52 additions and 13 deletions

View File

@ -1,16 +1,52 @@
diff -up Python-2.7.3/Lib/test/test_gdb.py.gdb-autoload-safepath Python-2.7.3/Lib/test/test_gdb.py
--- Python-2.7.3/Lib/test/test_gdb.py.gdb-autoload-safepath 2012-04-30 12:55:43.372351709 -0400
+++ Python-2.7.3/Lib/test/test_gdb.py 2012-04-30 12:58:24.355339144 -0400
@@ -111,6 +111,12 @@ class DebuggerTests(unittest.TestCase):
# Disable this:
--- Python-2.7.3/Lib/test/test_gdb.py.gdb-autoload-safepath 2012-04-30 15:53:57.254045220 -0400
+++ Python-2.7.3/Lib/test/test_gdb.py 2012-04-30 16:19:19.569941124 -0400
@@ -54,6 +54,19 @@ def gdb_has_frame_select():
HAS_PYUP_PYDOWN = gdb_has_frame_select()
+def gdb_has_autoload_safepath():
+ # Recent GDBs will only auto-load scripts from certain safe
+ # locations, so we will need to turn off this protection.
+ # However, if the GDB doesn't have it, then the following
+ # command will generate noise on stderr (rhbz#817072):
+ cmd = "--eval-command=set auto-load safe-path /"
+ p = subprocess.Popen(["gdb", "--batch", cmd],
+ stderr=subprocess.PIPE)
+ _, stderr = p.communicate()
+ return '"on" or "off" expected.' not in stderr
+
+HAS_AUTOLOAD_SAFEPATH = gdb_has_autoload_safepath()
+
class DebuggerTests(unittest.TestCase):
"""Test that the debugger can debug Python."""
@@ -112,15 +125,28 @@ class DebuggerTests(unittest.TestCase):
'set print entry-values no',
+ # Recent GDBs will only auto-load scripts from certain safe
+ # locations.
+ # Turn off this protection during the build to ensure that
+ # our -gdb.py script can be loaded (rhbz#817072):
+ 'set auto-load safe-path /',
+
'run']
+
+ if HAS_AUTOLOAD_SAFEPATH:
+ # Recent GDBs will only auto-load scripts from certain safe
+ # locations.
+ # Where necessary, turn off this protection to ensure that
+ # our -gdb.py script can be loaded - but not on earlier gdb builds
+ # as this would generate noise on stderr (rhbz#817072):
+ init_commands = ['set auto-load safe-path /']
+ else:
+ init_commands = []
+
if cmds_after_breakpoint:
commands += cmds_after_breakpoint
else:
commands += ['backtrace']
+ # print init_commands
# print commands
# Use "commands" to generate the arguments with which to invoke "gdb":
args = ["gdb", "--batch"]
+ args += ['--init-eval-command=%s' % cmd for cmd in init_commands]
args += ['--eval-command=%s' % cmd for cmd in commands]
args += ["--args",
sys.executable]

View File

@ -108,7 +108,7 @@ Summary: An interpreted, interactive, object-oriented programming language
Name: %{python}
# Remember to also rebase python-docs when changing this:
Version: 2.7.3
Release: 5%{?dist}
Release: 6%{?dist}
License: Python
Group: Development/Languages
Requires: %{python}-libs%{?_isa} = %{version}-%{release}
@ -624,8 +624,8 @@ Patch153: 00153-fix-test_gdb-noise.patch
Patch155: 00155-avoid-ctypes-thunks.patch
# Recent builds of gdb will only auto-load scripts from certain safe
# locations. Turn off this protection during the build to ensure that our
# -gdb.py script can be loaded when running test_gdb (rhbz#817072):
# locations. Turn off this protection when running test_gdb in the selftest
# suite to ensure that it can load our -gdb.py script (rhbz#817072):
Patch156: 00156-gdb-autoload-safepath.patch
# (New patches go here ^^^)
@ -1779,6 +1779,9 @@ rm -fr %{buildroot}
# ======================================================
%changelog
* Mon Apr 30 2012 David Malcolm <dmalcolm@redhat.com> - 2.7.3-6
- try again to fix test_gdb.py (patch 156; rhbz#817072)
* Mon Apr 30 2012 David Malcolm <dmalcolm@redhat.com> - 2.7.3-5
- fix test_gdb.py (patch 156; rhbz#817072)