Date: Sunday, July 1, 2018 @ 07:37:26
  Author: anatolik
Revision: 327904

Pull python 3.7 fix from upstream

Added:
  gdb/trunk/fix_python37.patch
Modified:
  gdb/trunk/PKGBUILD

--------------------+
 PKGBUILD           |   10 +++++--
 fix_python37.patch |   66 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 73 insertions(+), 3 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2018-07-01 06:33:45 UTC (rev 327903)
+++ PKGBUILD    2018-07-01 07:37:26 UTC (rev 327904)
@@ -7,15 +7,17 @@
 # of gdb (for arm/avr/...)
 pkgname=(gdb gdb-common)
 pkgver=8.1
-pkgrel=1
+pkgrel=2
 pkgdesc='The GNU Debugger'
 arch=(x86_64)
 url='http://www.gnu.org/software/gdb/'
 license=(GPL3)
 makedepends=(texinfo python guile2.0 ncurses expat xz)
-source=(https://ftp.gnu.org/gnu/gdb/${pkgname}-${pkgver}.tar.xz{,.sig})
+source=(https://ftp.gnu.org/gnu/gdb/${pkgname}-${pkgver}.tar.xz{,.sig}
+        fix_python37.patch)
 sha1sums=('641861f7d3f22b6a23bc3e801f0ff29a78375490'
-          'SKIP')
+          'SKIP'
+          '37a299b86478228cf35f00c7e01274c07dc5fa94')
 validpgpkeys=('F40ADB902B24264AA42E50BF92EDB04BFF325CF3') # Joel Brobecker
 
 prepare() {
@@ -23,6 +25,8 @@
 
   # hack! - libiberty configure tests for header files using "$CPP $CPPFLAGS"
   sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" libiberty/configure
+
+  patch -p1 < ../fix_python37.patch
 }
 
 build() {

Added: fix_python37.patch
===================================================================
--- fix_python37.patch                          (rev 0)
+++ fix_python37.patch  2018-07-01 07:37:26 UTC (rev 327904)
@@ -0,0 +1,66 @@
+From aeab512851bf6ed623d1c6c4305b6ce05e51a10c Mon Sep 17 00:00:00 2001
+From: Paul Koning <paul_kon...@dell.com>
+Date: Fri, 8 Jun 2018 13:26:36 -0400
+Subject: [PATCH] Fix build issue with Python 3.7
+
+Originally reported in
+https://bugzilla.redhat.com/show_bug.cgi?id=1577396 -- gdb build fails
+with Python 3.7 due to references to a Python internal function whose
+declaration changed in 3.7.
+
+gdb/ChangeLog
+2018-06-08  Paul Koning  <paul_kon...@dell.com>
+
+           PR gdb/23252
+
+           * python/python.c (do_start_initialization):
+           Avoid call to internal Python API.
+           (init__gdb_module): New function.
+---
+ gdb/ChangeLog       |  8 ++++++++
+ gdb/python/python.c | 18 +++++++++++++++---
+ 2 files changed, 23 insertions(+), 3 deletions(-)
+
+diff --git a/gdb/python/python.c b/gdb/python/python.c
+index 1805c906284..20fc674f20a 100644
+--- a/gdb/python/python.c
++++ b/gdb/python/python.c
+@@ -1667,6 +1667,17 @@ finalize_python (void *ignore)
+   restore_active_ext_lang (previous_active);
+ }
+ 
++#ifdef IS_PY3K
++/* This is called via the PyImport_AppendInittab mechanism called
++   during initialization, to make the built-in _gdb module known to
++   Python.  */
++PyMODINIT_FUNC
++init__gdb_module (void)
++{
++  return PyModule_Create (&python_GdbModuleDef);
++}
++#endif
++
+ static bool
+ do_start_initialization ()
+ {
+@@ -1707,6 +1718,9 @@ do_start_initialization ()
+      remain alive for the duration of the program's execution, so
+      it is not freed after this call.  */
+   Py_SetProgramName (progname_copy);
++
++  /* Define _gdb as a built-in module.  */
++  PyImport_AppendInittab ("_gdb", init__gdb_module);
+ #else
+   Py_SetProgramName (progname.release ());
+ #endif
+@@ -1716,9 +1730,7 @@ do_start_initialization ()
+   PyEval_InitThreads ();
+ 
+ #ifdef IS_PY3K
+-  gdb_module = PyModule_Create (&python_GdbModuleDef);
+-  /* Add _gdb module to the list of known built-in modules.  */
+-  _PyImport_FixupBuiltin (gdb_module, "_gdb");
++  gdb_module = PyImport_ImportModule ("_gdb");
+ #else
+   gdb_module = Py_InitModule ("_gdb", python_GdbMethods);
+ #endif

Reply via email to