[PATCH] gnu: cgdb: Add gdb to propagated-inputs

DoneSubmitted by Chadwain Holness.
Details
3 participants
  • Chadwain Holness
  • Ludovic Courtès
  • Maxime Devos
Owner
unassigned
Severity
normal
C
C
Chadwain Holness wrote on 18 Feb 06:20 +0100
(address . guix-patches@gnu.org)(name . Chadwain Holness)(address . chadwainholness@gmail.com)
20220218052005.10687-1-chadwainholness@gmail.com
* gnu/packages/debug.scm (cgdb)[propagated-inputs]: Add gdb
---
gnu/packages/debug.scm | 2 ++
1 file changed, 2 insertions(+)

Toggle diff (15 lines)
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index 24d17d95b0..89629e4aca 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -763,6 +763,8 @@ (define-public cgdb
      (list ncurses readline))
     (native-inputs
      (list flex texinfo))
+    (propagated-inputs
+     (list gdb))
     (home-page "https://cgdb.github.io")
     (synopsis "Console front-end to the GNU debugger")
     (description
-- 
2.35.1
M
M
Maxime Devos wrote on 18 Feb 08:56 +0100
a311b3e466ea030ce2f4bb8f8887074c00e65526.camel@telenet.be
Chadwain Holness schreef op vr 18-02-2022 om 00:20 [-0500]:
Toggle quote (3 lines)
> +    (propagated-inputs
> +     (list gdb))

Propagation can lead to slower profile build times and propagation
conflicts. Can it be depropagated by substituting 'gdb' with the
/gnu/store/... name? (Look for "gdb" in fork_util.cpp and
'substitute*' from (guix build utils).)

Also, looking at the source code, I see "/bin/sh", can it also be
replaced?

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYg9RPhccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7ob0AQCiH49u+LxZzdGrjFjvWFfE6H8d
v48jZcmQDrD2DrTqagD/Ym+lNbO/HBXLO/mVteZIj250973x2LYdyK1857M0JQo=
=suAf
-----END PGP SIGNATURE-----


C
C
Chadwain Holness wrote on 20 Feb 09:11 +0100
(name . Chadwain Holness)(address . chadwainholness@gmail.com)
20220220081155.13053-1-chadwainholness@gmail.com
Hello Maxime, thank you for the suggestion. Is this new patch better in your opinion?

* gnu/packages/debug.scm (cgdb)[inputs]: Add gdb
[arguments]: Add phase to fix hardcoded gdb and sh paths
---
gnu/packages/debug.scm | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)

Toggle diff (27 lines)
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index 24d17d95b0..85003feeae 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -760,9 +760,19 @@ (define-public cgdb
         (base32 "1w8ib2vg3pg68d9hh97fw5042c73i9nqavdddc87n9bpscjbaf0d"))))
     (build-system gnu-build-system)
     (inputs
-     (list ncurses readline))
+     (list ncurses readline gdb))
     (native-inputs
      (list flex texinfo))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+        (add-after 'unpack 'fix-paths
+         (lambda* (#:key inputs #:allow-other-keys)
+          (let ((gdb (assoc-ref inputs "gdb")))
+           (substitute* "lib/util/fork_util.cpp"
+            (("GDB = \"gdb\"") (string-append "GDB = \"" gdb "/bin/gdb\"")))
+           (substitute* "cgdb/cgdb.cpp"
+            (("/bin/sh") (which "sh")))))))))
     (home-page "https://cgdb.github.io")
     (synopsis "Console front-end to the GNU debugger")
     (description
-- 
2.35.1
M
M
Maxime Devos wrote on 20 Feb 11:30 +0100
d18c61c3127492333183362db9d50e25917b3d11.camel@telenet.be
Chadwain Holness schreef op zo 20-02-2022 om 03:11 [-0500]:
Toggle quote (2 lines)
> Hello Maxime, thank you for the suggestion. Is this new patch better in your opinion?

It does look quite a bit better, but there's a cross-compilation
problem now: when cross-compiling, 'which' looks in the 'native-inputs'
instead of the 'inputs' (native-inputs = compiled for the architecture
the build is performed on, inputs = compiled for the architecture
'cgdb' will be run on). You can use 'search-input-file' to solve this:

(arguments
(list
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'fix-paths
(lambda* (#:key inputs #:allow-other-keys)
(define gdb (search-input-file inputs "bin/gdb"))
(define sh (search-input-file inputs "bin/sh"))
(substitute* "lib/util/fork_util.cpp"
(("GDB = \"gdb\"") (string-append "GDB = \"" gdb))
(("/bin/sh") sh)))))))

Toggle quote (4 lines)
>      (inputs
> -     (list ncurses readline))
> +     (list ncurses readline gdb))

You are using a 'sh' from 'inputs' in 'fix-paths', so the package
'bash-minimal' needs to be included, otherwise the build would fail
when cross-compiling.

('bash-minimal' is an (implicit) native-input, so the build failure
would not happen when compiling natively).

To test whether cross-compiling cgdb works, you can try

./pre-inst-env guix build cgdb --target=aarch64-linux-gnu

(warning: this might build a cross-compiler toolchain first, which can
take quite some time, and possibly 'gdb' is not cross-compilable!)

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYhIYXBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7pc7AP9IOFkM11nrNMn3wK8NwkZkH7/i
xRFUBsLaReQe0koORQD/cPYNlMyF63+mFv6+1g74yZasl96aLRZjSZ2m9nBGMgA=
=myRk
-----END PGP SIGNATURE-----


L
L
Ludovic Courtès wrote on 3 Mar 23:24 +0100
Re: bug#54052: [PATCH] gnu: cgdb: Add gdb to propagated-inputs
(name . Chadwain Holness)(address . chadwainholness@gmail.com)
87mti6vfm9.fsf_-_@gnu.org
Hi Chadwain,

Did you have a chance to look into this?


Thanks in advance!

Ludo’.

Maxime Devos <maximedevos@telenet.be> skribis:

Toggle quote (41 lines)
> Chadwain Holness schreef op zo 20-02-2022 om 03:11 [-0500]:
>> Hello Maxime, thank you for the suggestion. Is this new patch better in your opinion?
>
> It does look quite a bit better, but there's a cross-compilation
> problem now: when cross-compiling, 'which' looks in the 'native-inputs'
> instead of the 'inputs' (native-inputs = compiled for the architecture
> the build is performed on, inputs = compiled for the architecture
> 'cgdb' will be run on). You can use 'search-input-file' to solve this:
>
> (arguments
> (list
> #:phases
> #~(modify-phases %standard-phases
> (add-after 'unpack 'fix-paths
> (lambda* (#:key inputs #:allow-other-keys)
> (define gdb (search-input-file inputs "bin/gdb"))
> (define sh (search-input-file inputs "bin/sh"))
> (substitute* "lib/util/fork_util.cpp"
> (("GDB = \"gdb\"") (string-append "GDB = \"" gdb))
> (("/bin/sh") sh)))))))
>
>>      (inputs
>> -     (list ncurses readline))
>> +     (list ncurses readline gdb))
>
> You are using a 'sh' from 'inputs' in 'fix-paths', so the package
> 'bash-minimal' needs to be included, otherwise the build would fail
> when cross-compiling.
>
> ('bash-minimal' is an (implicit) native-input, so the build failure
> would not happen when compiling natively).
>
> To test whether cross-compiling cgdb works, you can try
>
> ./pre-inst-env guix build cgdb --target=aarch64-linux-gnu
>
> (warning: this might build a cross-compiler toolchain first, which can
> take quite some time, and possibly 'gdb' is not cross-compilable!)
>
> Greetings,
> Maxime.
L
L
Ludovic Courtès wrote on 3 Mar 23:24 +0100
control message for bug #54052
(address . control@debbugs.gnu.org)
87lexqvfm1.fsf@gnu.org
tags 54052 + moreinfo
quit
C
C
Chadwain Holness wrote on 6 Mar 07:24 +0100
[PATCH] gnu: cgdb: Reference gdb
(name . Chadwain Holness)(address . chadwainholness@gmail.com)
20220306062434.17898-1-chadwainholness@gmail.com
Hello Ludovic,

I was able to compile cgdb natively and cross with the following patch.

Cheers,
Chadwain

* gnu/packages/debug.scm (cgdb)[inputs]: Add gdb, bash-minimal
[arguments]: Add phase to fix hardcoded gdb and sh paths
Add configure flags for cross-compilation
---
gnu/packages/debug.scm | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)

Toggle diff (33 lines)
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index 24d17d95b0..63e5553484 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -760,9 +760,25 @@ (define-public cgdb
         (base32 "1w8ib2vg3pg68d9hh97fw5042c73i9nqavdddc87n9bpscjbaf0d"))))
     (build-system gnu-build-system)
     (inputs
-     (list ncurses readline))
+     (list bash-minimal ncurses readline gdb))
     (native-inputs
      (list flex texinfo))
+    (arguments
+     `(#:configure-flags
+        (list
+          (string-append "ac_cv_rl_version=" ,(package-version readline))
+          "ac_cv_file__dev_ptmx=no"
+          "ac_cv_file__proc_self_status=no"
+          "ac_cv_func_setpgrp_void=no")
+       #:phases
+       (modify-phases %standard-phases
+        (add-after 'unpack 'fix-paths
+         (lambda* (#:key inputs #:allow-other-keys)
+          (let ((gdb (search-input-file inputs "bin/gdb"))
+                (sh (search-input-file inputs "bin/sh")))
+           (substitute* "lib/util/fork_util.cpp"
+            (("GDB = \"gdb\"") (string-append "GDB = \"" gdb "\"")))
+           (substitute* "cgdb/cgdb.cpp" (("/bin/sh") sh))))))))
     (home-page "https://cgdb.github.io")
     (synopsis "Console front-end to the GNU debugger")
     (description
-- 
2.35.1
L
L
Ludovic Courtès wrote on 6 Mar 22:13 +0100
Re: bug#54052: [PATCH] gnu: cgdb: Add gdb to propagated-inputs
(name . Chadwain Holness)(address . chadwainholness@gmail.com)(address . 54052-done@debbugs.gnu.org)
87v8wqkcmv.fsf_-_@gnu.org
Hi Chadwain,

Chadwain Holness <chadwainholness@gmail.com> skribis:

Toggle quote (11 lines)
> Hello Ludovic,
>
> I was able to compile cgdb natively and cross with the following patch.
>
> Cheers,
> Chadwain
>
> * gnu/packages/debug.scm (cgdb)[inputs]: Add gdb, bash-minimal
> [arguments]: Add phase to fix hardcoded gdb and sh paths
> Add configure flags for cross-compilation

Perfect, applied!

Thanks,
Ludo’.
Closed
?
Your comment

This issue is archived.

To comment on this conversation send email to 54052@debbugs.gnu.org