guix_mirror_bot pushed a commit to branch master
in repository guix.
commit 1d9cf8758ecf49343457b98c1bbb084d214a602b
Author: Yelninei <[email protected]>
AuthorDate: Thu Jan 15 13:13:25 2026 +0000
gnu: gdb: Enable scripting when cross compiling.
Python detection failed because gdb was not able to find the flags for
linking
with python.
Follow https://www.sourceware.org/gdb/wiki/CrossCompilingWithPythonSupport
but
dispatch to pkg-config.
Guile detection was failing because gdb only tried the unprefixed
pkg-config.
Also a native guile is needed to compile the scheme files.
Fixes guix/guix#5634.
* gnu/packages/gdb.scm (gdb-python-config): New procedure.
(gdb-14)[configure-flags]: Add --with-python
[#:phases]: Add a phase for guile detection.
[native-inputs]: Add guile-3.0.
Change-Id: I4a151ac292eba1472725a1535b72b9168bc10742
Signed-off-by: Ludovic Courtès <[email protected]>
Merges: #5645
---
gnu/packages/gdb.scm | 41 ++++++++++++++++++++++++++++++++++++++---
1 file changed, 38 insertions(+), 3 deletions(-)
diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm
index d6757adee0..7a111dbd0b 100644
--- a/gnu/packages/gdb.scm
+++ b/gnu/packages/gdb.scm
@@ -48,6 +48,26 @@
#:use-module ((guix build utils) #:select (alist-replace))
#:use-module (srfi srfi-1))
+
+(define (gdb-python-config pkg-config)
+ "Return a script to satisfy gdb to enable python support."
+ ;; based on
https://www.sourceware.org/gdb/wiki/CrossCompilingWithPythonSupport
+ (program-file "gdb-python-config"
+ #~(begin
+ (use-modules (ice-9 match))
+ (let ((pkg-config #$pkg-config))
+ (match (command-line)
+ ((_ _ "--includes")
+ (execlp pkg-config pkg-config
+ "python3-embed" "--cflags"))
+ ((_ _ "--ldflags")
+ (execlp pkg-config pkg-config
+ "python3-embed" "--libs"))
+ ((_ _ "--exec-prefix")
+ (execlp pkg-config pkg-config
+ "python3-embed" "--variable=exec_prefix"))
+ (_ (exit 1)))))))
+
(define-public gdb-14
(package
(name "gdb")
@@ -67,9 +87,16 @@
#:out-of-source? #t
#:modules `((srfi srfi-1)
,@%default-gnu-modules)
- #:configure-flags (if (target-hurd64?)
- #~'("--enable-targets=i586-pc-gnu,x86_64-pc-gnu")
- #~'())
+ #:configure-flags
+ #~(list
+ #$@(if (and (this-package-input "python-wrapper")
+ (%current-target-system))
+ #~((string-append "--with-python="
+ #+(gdb-python-config
(pkg-config-for-target))))
+ #~())
+ #$@(if (target-hurd64?)
+ #~("--enable-targets=i586-pc-gnu,x86_64-pc-gnu")
+ #~()))
#:phases #~(modify-phases %standard-phases
;; The following phase only applies to gdb@12, which
;; inherits from this package. Remove it when removing
@@ -81,6 +108,13 @@
(("aarch64_get_CPSR_bits \\(sim_cpu \\*,
uint32_t\\)")
"aarch64_get_CPSR_bits (sim_cpu *,
FlagMask)")))))
#~())
+ #$@(if (%current-target-system)
+ #~((add-after 'unpack 'enable-guile
+ (lambda* (#:key native-inputs
#:allow-other-keys)
+ (setenv "ac_cv_guild_program_name" (which
"guild"))
+ (setenv "ac_cv_path_pkg_config_prog_path"
+ (which #$(pkg-config-for-target))))))
+ #~())
(add-after 'unpack 'patch-paths
(lambda* (#:key inputs #:allow-other-keys)
(let ((sh (string-append (assoc-ref inputs "bash")
@@ -136,6 +170,7 @@
`(("texinfo" ,texinfo)
("dejagnu" ,dejagnu)
("pkg-config" ,pkg-config)
+ ("guile" ,guile-3.0) ;; cross-compiling
,@(if (target-hurd?)
;; When cross-compiling from x86_64-linux, make sure to use a
;; 32-bit MiG because we assume target i586-pc-gnu.