;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages gdb)
+ #:use-module (gnu packages)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages readline)
#:use-module (gnu packages dejagnu)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages xml)
+ #:use-module (gnu packages guile)
#:use-module (gnu packages python)
+ #:use-module (gnu packages pkg-config)
#:use-module ((guix licenses) #:select (gpl3+))
#:use-module (guix packages)
#:use-module (guix download)
(define-public gdb
(package
(name "gdb")
- (version "7.6")
+ (version "7.12")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/gdb/gdb-"
- version ".tar.bz2"))
+ version ".tar.xz"))
(sha256
(base32
- "06yzggy97qka6fs1vdz4q0d2fgrpm3iaj7dzvf1ww377bvryh454"))))
+ "152g2qa8337cxif3lkvabjcxfd9jphfb2mza8f1p2c4bjk2z6kw3"))))
(build-system gnu-build-system)
(arguments
- '(#:phases (alist-cons-after
- 'configure 'post-configure
- (lambda _
- (patch-makefile-SHELL "gdb/gdbserver/Makefile.in"))
- %standard-phases)))
+ `(#:tests? #f ; FIXME "make check" fails on single-processor systems.
+
+ #:modules ((srfi srfi-1)
+ ,@%gnu-build-system-modules)
+
+ #:phases (modify-phases %standard-phases
+ (add-after
+ 'configure 'post-configure
+ (lambda _
+ (for-each patch-makefile-SHELL
+ (find-files "." "Makefile\\.in"))))
+ (add-after
+ 'install 'remove-libs-already-in-binutils
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; Like Binutils, GDB installs libbfd, libopcodes, etc.
+ ;; However, this leads to collisions when both are
+ ;; installed, and really is none of its business,
+ ;; conceptually. So remove them.
+ (let* ((binutils (assoc-ref inputs "binutils"))
+ (out (assoc-ref outputs "out"))
+ (files1 (with-directory-excursion binutils
+ (append (find-files "lib")
+ (find-files "include"))))
+ (files2 (with-directory-excursion out
+ (append (find-files "lib")
+ (find-files "include"))))
+ (common (lset-intersection string=?
+ files1 files2)))
+ (with-directory-excursion out
+ (for-each delete-file common)
+ #t)))))))
(inputs
`(("expat" ,expat)
("mpfr" ,mpfr)
("gmp" ,gmp)
("readline" ,readline)
("ncurses" ,ncurses)
+ ("guile" ,guile-2.0)
("python" ,python)
- ("texinfo" ,texinfo)
- ("dejagnu" ,dejagnu)))
- (home-page "http://www.gnu.org/software/gdb/")
+ ("python-wrapper" ,python-wrapper)
+ ("dejagnu" ,dejagnu)
+
+ ;; Allow use of XML-formatted syscall information. This enables 'catch
+ ;; syscall' and similar commands.
+ ("libxml2" ,libxml2)))
+ (native-inputs
+ `(("texinfo" ,texinfo)
+ ("pkg-config" ,pkg-config)))
+ (home-page "https://www.gnu.org/software/gdb/")
(synopsis "The GNU debugger")
(description
- "GDB, the GNU Project debugger, allows you to see what is going
-on `inside' another program while it executes -- or what another
-program was doing at the moment it crashed.")
+ "GDB is the GNU debugger. With it, you can monitor what a program is
+doing while it runs or what it was doing just before a crash. It allows you
+to specify the runtime conditions, to define breakpoints, and to change how
+the program is running to try to fix bugs. It can be used to debug programs
+written in C, C++, Ada, Objective-C, Pascal and more.")
(license gpl3+)))