Subject: [PATCH] gnu: Add ddd
From: Andy Tai <[email-masked]>
To: [email-masked]
Cc: Andy Tai <[email-masked]>
Date: Sat, 11 Feb 2023 16:40:23 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

* gnu/packages/debug.scm (ddd): New variable
---
 gnu/packages/debug.scm | 41 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index 22b3cd862d..e91d798a3b 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2021 Foo Chuan Wei <[email-masked]>
 ;;; Copyright © 2022 Michael Rohleder <[email-masked]>
 ;;; Copyright © 2022 Matthew James Kraai <[email-masked]>
+;;; Copyright © 2023 Andy Tai <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -53,6 +54,7 @@ (define-module (gnu packages debug)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages golang)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages lesstif)  ; motif
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages llvm)
@@ -70,6 +72,7 @@ (define-module (gnu packages debug)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages virtualization)
   #:use-module (gnu packages xdisorg)
+  #:use-module (gnu packages xorg)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1))
 
@@ -860,6 +863,44 @@ (define-public seer-gdb
     ;; Note: Some icons in src/resources are creative commons 3.0 and/or 4.0.
     (license license:gpl3+)))
 
+(define-public ddd
+  (package
+    (name "ddd")
+    (version "3.3.12")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/ddd/ddd-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0p5nx387857w3v2jbgvps2p6mlm0chajcdw5sfrddcglsxkwvmis"))))
+    (build-system gnu-build-system)
+    (inputs (list motif ncurses gdb))
+    (native-inputs (list pkg-config xorg-server-for-tests))
+    (arguments
+     (list #:tests? #f ;Those are manual
+           ;; avoid "friend declaration specifies default arguments and isn’t a definition" errors.
+           #:configure-flags #~(list "CXXFLAGS=-fpermissive")
+           #:phases #~(modify-phases %standard-phases
+                        (add-before 'check 'pre-check
+                          (lambda* (#:key native-inputs inputs
+                                    #:allow-other-keys)
+                            (setenv "HOME" "/tmp")
+                            (let ((xvfb (search-input-file (or native-inputs
+                                                               inputs)
+                                                           "bin/Xvfb"))
+                                  (display ":1"))
+                              (setenv "DISPLAY" display)
+                              (system (string-append xvfb " " display " &"))))))))
+    (synopsis "graphical front end for the command-line debugger GDB")
+    (description
+     "GNU Data Display Debugger (GNU DDD) is a graphical user interface ]
+(using the Motif toolkit) for command-line debuggers such as GDB,
+DBX, JDB, HP Wildebeest Debugger, XDB, the Perl debugger, the Bash
+debugger, the Python debugger, and the GNU Make debugger.")
+    (home-page "https://www.gnu.org/software/ddd/")
+    (license license:gpl3+)))
+
+
 (define-public delve
   (package
     (name "delve")
-- 
2.39.1