diff options
author | Marius Bakke <mbakke@fastmail.com> | 2018-07-24 01:09:39 +0200 |
---|---|---|
committer | Marius Bakke <mbakke@fastmail.com> | 2018-07-28 15:52:30 +0200 |
commit | fc8778e2934e623b4cfae253942a721cea42a43b (patch) | |
tree | 62e4052857d6415f5bf66df0132622f7c20cfaba /gnu/packages | |
parent | 25ccb99347d7f8e54fecf0d8b397e21c3879d0fa (diff) | |
download | guix-fc8778e2934e623b4cfae253942a721cea42a43b.tar.gz |
gnu: gdb: Fix build with Python >= 3.7.
* gnu/packages/patches/gdb-python-3.7.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. * gnu/packages/gdb.scm (gdb)[source](patches): New field.
Diffstat (limited to 'gnu/packages')
-rw-r--r-- | gnu/packages/gdb.scm | 1 | ||||
-rw-r--r-- | gnu/packages/patches/gdb-python-3.7.patch | 52 |
2 files changed, 53 insertions, 0 deletions
diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm index 36ccb79d67..4c47cc5854 100644 --- a/gnu/packages/gdb.scm +++ b/gnu/packages/gdb.scm @@ -42,6 +42,7 @@ (method url-fetch) (uri (string-append "mirror://gnu/gdb/gdb-" version ".tar.xz")) + (patches (search-patches "gdb-python-3.7.patch")) (sha256 (base32 "0d2bpqk58fqlx21rbnk8mbcjlggzc9kb5sjirrfrrrjq70ka0qdg")))) diff --git a/gnu/packages/patches/gdb-python-3.7.patch b/gnu/packages/patches/gdb-python-3.7.patch new file mode 100644 index 0000000000..c51442c8b2 --- /dev/null +++ b/gnu/packages/patches/gdb-python-3.7.patch @@ -0,0 +1,52 @@ +Fix build failure with Python 3.7 and newer. + +Taken from this upstream commit, sans ChangeLog update: + +https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;h=aeab512851bf6ed623d1c6c4305b6ce05e51a10c + +diff --git a/gdb/python/python.c b/gdb/python/python.c +index 1805c90..20fc674 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 +-- +2.9.3 + |