Subject: [bug#63008] gdb on aarch64

From: Pierre Langlois <[email-masked]>
Date: Mon, 24 Apr 2023 20:20:26 +0100

Pierre Langlois <[email-masked]> writes:

> [[PGP Signed Part:Undecided]]
> Hi Andreas, sorry I missed your reply!
>
> Andreas Enge <[email-masked]> writes:
>
>> Hello Pierre,
>>
>> we also have gdb@12 in core-updates; does this also not build? Right now
>> none of the two have been built on aarch64 on CI, so I lack an overview.
>
> Yup, gdb@12 builds just fine for me!
>
>>
>> On x86_64, both build; @12 has 101 dependents, @11 7563!
>> This cannot be accomodated on core-updates any more, I am afraid.
>>
>> We will need to build it out afterwards. And probably the best course
>> of action would be to move the dependents to gdb@12; or drop the
>> dependency? Why do so many packages depend on a debugger?
>
> Yeah gdb is used as a dependency for testing rust, I'm not sure if it
> has to be 11, it can probably work with 12 although I haven't tried.
>
> I think the main reason we still have gdb 11 is to make sure we don't
> rebuild the rust world. I'm afraid if we don't do update it know, we'll
> have to do it quite soon, can the rust world be rebuilt on a staging
> branch soon after the core-updates merge? I'm concerned that these days
> a lot relies on rust (via librsvg IIRC), so not having it available
> might be an issue, even for simple systems :-/.
>
> All that being said, it might be possible to add a separate [email-masked]
> package, and only use it for rust on non-x86, in a way that doesn't
> cause a rebuild, could that work?

To illustrate what I mean, here's a WIP patch (it needs comments),
AFAICT, this would only be a rebuild on non-x86:

diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm
index 82050d9ac5..d460f3950c 100644
--- a/gnu/packages/gdb.scm
+++ b/gnu/packages/gdb.scm
@@ -146,6 +146,18 @@ (define-public gdb-11
     ;; RPC stubs).
     (supported-systems (fold delete %supported-systems %hurd-systems))))
 
+(define-public gdb-11.2
+  (package
+    (inherit gdb-11)
+    (version "11.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/gdb/gdb-"
+                                  version ".tar.xz"))
+              (sha256
+               (base32
+                "xvczsqcbh5y0gx7qrclpna0qzx26sk7lra6y8qzxam1biyzr65qf"))))))
+
 (define-public gdb-12
   (package
     (inherit gdb-11)
@@ -166,6 +178,11 @@ (define-public gdb/pinned
   ;; enough to avoid massive rebuilds.
   gdb-11)
 
+(define-public gdb-11.2/pinned
+  ;; This is the fixed version that packages depend on.  Update it rarely
+  ;; enough to avoid massive rebuilds.
+  gdb-11.2)
+
 (define-public gdb
   ;; The "default" version.
   gdb-12)
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index d07f4ef10c..3cc5a4926b 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -788,7 +788,9 @@ (define-public rust
                     (format #f "prefix = ~s" (assoc-ref outputs "rustfmt"))))
                  (invoke "./x.py" "install" "rustfmt")))))))
       ;; Add test inputs.
-      (native-inputs (cons* `("gdb" ,gdb/pinned)
+      (native-inputs (cons* `("gdb" ,(if (target-x86?)
+                                         gdb/pinned
+                                         gdb-11.2/pinned))
                             `("procps" ,procps)
                             (package-native-inputs base-rust))))))