summaryrefslogtreecommitdiff
path: root/gnu/packages/commencement.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/commencement.scm')
-rw-r--r--gnu/packages/commencement.scm15
1 files changed, 14 insertions, 1 deletions
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 4342dc56d1..22da2e0fb3 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -708,6 +708,19 @@ COREUTILS-FINAL vs. COREUTILS, etc."
;;; GCC toolchain.
;;;
+(define (fixed-ld-wrapper)
+ ;; FIXME: In this cycle, a bug was introduced in ld-wrapper: it would
+ ;; incorrectly flag ~/.guix-profile/lib/libfoo.so as "impure", due to a bug
+ ;; in its symlink resolution code. To work around that while avoiding a
+ ;; full rebuild, use an ld-wrapper with the bug-fix for 'gcc-toolchain'.
+ (let ((orig (car (assoc-ref %final-inputs "ld-wrapper"))))
+ (package
+ (inherit orig)
+ (location (source-properties->location (current-source-location)))
+ (inputs `(("wrapper" ,(search-path %load-path
+ "gnu/packages/ld-wrapper2.in"))
+ ,@(package-inputs orig))))))
+
(define (gcc-toolchain gcc)
"Return a complete toolchain for GCC."
(package
@@ -746,7 +759,7 @@ and binaries, plus debugging symbols in the 'debug' output), and Binutils.")
;; install everything that we need, and (2) to make sure ld-wrapper comes
;; before Binutils' ld in the user's profile.
(inputs `(("gcc" ,gcc)
- ("ld-wrapper" ,(car (assoc-ref %final-inputs "ld-wrapper")))
+ ("ld-wrapper" ,(fixed-ld-wrapper))
("binutils" ,binutils-final)
("libc" ,glibc-final)
("libc-debug" ,glibc-final "debug")))))