From f8badf151b4d2d966a1ebeba0345dfc9e4564d01 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Mon, 8 Jun 2015 15:19:28 -0400 Subject: [PATCH] gnu: commencement: Use our Binutils as soon as possible. * gnu/packages/commencement.scm (binutils-boot0)[arguments]: Add 'add-symlinks' phase. --- gnu/packages/commencement.scm | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index ab166602aa..6cf56badbf 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -139,6 +139,28 @@ (define binutils-boot0 (arguments `(#:guile ,%bootstrap-guile #:implicit-inputs? #f + + #:modules ((guix build gnu-build-system) + (guix build utils) + (ice-9 ftw)) ; for 'scandir' + #:phases (alist-cons-after + 'install 'add-symlinks + (lambda* (#:key outputs #:allow-other-keys) + ;; The cross-gcc invokes 'as', 'ld', etc, without the + ;; triplet prefix, so add symlinks. + (let ((out (assoc-ref outputs "out")) + (triplet-prefix (string-append ,(boot-triplet) "-"))) + (define (has-triplet-prefix? name) + (string-prefix? triplet-prefix name)) + (define (remove-triplet-prefix name) + (substring name (string-length triplet-prefix))) + (with-directory-excursion (string-append out "/bin") + (for-each (lambda (name) + (symlink name (remove-triplet-prefix name))) + (scandir "." has-triplet-prefix?))) + #t)) + %standard-phases) + ,@(substitute-keyword-arguments (package-arguments binutils) ((#:configure-flags cf) `(cons ,(string-append "--target=" (boot-triplet)) @@ -274,10 +296,7 @@ (define %boot1-inputs ;; 2nd stage inputs. `(("gcc" ,gcc-boot0) ("binutils-cross" ,binutils-boot0) - - ;; Keep "binutils" here because the cross-gcc invokes `as', not the - ;; cross-`as'. - ,@%boot0-inputs)) + ,@(alist-delete "binutils" %boot0-inputs))) (define glibc-final-with-bootstrap-bash ;; The final libc, "cross-built". If everything went well, the resulting