summary refs log tree commit diff
path: root/gnu/packages
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2015-06-08 15:19:28 -0400
committerMark H Weaver <mhw@netris.org>2015-06-08 16:14:03 -0400
commitf8badf151b4d2d966a1ebeba0345dfc9e4564d01 (patch)
tree317eaec3d7153542e55d856324fc837428591161 /gnu/packages
parent56eba3d1521e38ef21116ac6502e2c4021836b79 (diff)
downloadguix-f8badf151b4d2d966a1ebeba0345dfc9e4564d01.tar.gz
gnu: commencement: Use our Binutils as soon as possible.
* gnu/packages/commencement.scm (binutils-boot0)[arguments]: Add
  'add-symlinks' phase.
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/commencement.scm27
1 files 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 @@
      (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 @@
   ;; 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