From 2fecbdbd82efda717d0e56101afcf41b79404a4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 9 Sep 2015 23:25:22 +0200 Subject: [PATCH] gnu: gdb: Remove headers and libraries already in Binutils. * gnu/packages/gdb.scm (gdb)[arguments]: Add #:modules. Rename 'post-install' phase to 'remove-libs-already-in-binutils'. Change it to compute the intersection of the set of headers and libraries of GDB vs. Binutils and to remove each of the files found in both. --- gnu/packages/gdb.scm | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm index 5849831f04..f17b398048 100644 --- a/gnu/packages/gdb.scm +++ b/gnu/packages/gdb.scm @@ -46,7 +46,11 @@ "1a08c9svaihqmz2mm44il1gwa810gmwkckns8b0y0v3qz52amgby")))) (build-system gnu-build-system) (arguments - '(#:tests? #f ; FIXME "make check" fails on single-processor systems. + `(#: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 @@ -54,15 +58,25 @@ (for-each patch-makefile-SHELL (find-files "." "Makefile\\.in")))) (add-after - 'install 'post-install - (lambda* (#:key outputs #:allow-other-keys) - ;; Like Binutils, GDB installs libbfd and libopcodes. + '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. - (for-each delete-file - (find-files (assoc-ref outputs "out") - "^lib(opcodes|bfd)\\."))))))) + (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)