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