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.

Reply via email to