~ruther/guix-local

6f229017f5ba52a69d4b7bc35722c9f919372f71 — Maxim Cournoyer 7 months ago 16f0f49
gnu: binutils-boot0: Refactor arguments.

When the inherited binutils package had a #:phases argument, it would replace
that fo binutils-boot0 (being appended), and causing breakage.

* gnu/packages/commencement.scm (binutils-boot0): Do not append the inherited
binutils arguments; modify them with a chained ensure-keyword-arguments and
substitute-keyword-arguments.

Suggested-by: Rutherther <rutherther@ditigal.xyz>
Change-Id: If1245556e363b9a1da2e2bb65c83e3b3aa4ff6de
1 files changed, 34 insertions(+), 34 deletions(-)

M gnu/packages/commencement.scm
M gnu/packages/commencement.scm => gnu/packages/commencement.scm +34 -34
@@ 2248,40 2248,40 @@ exec " gcc "/bin/" program
    (source (bootstrap-origin (package-source binutils)))
    (name "binutils-cross-boot0")
    (arguments
     (append (list #:guile %bootstrap-guile
                   #:implicit-inputs? #f

                   #:modules '((guix build gnu-build-system)
                               (guix build utils)
                               (ice-9 ftw)) ; for 'scandir'
                   #:phases
                   #~(modify-phases %standard-phases
                       (add-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?))))))))
             (substitute-keyword-arguments (package-arguments binutils)
               ((#:configure-flags cf)
                #~(append (list #$(string-append "--target="
                                                 (boot-triplet))
                                "--disable-gprofng") ;requires Bison
                          #$cf)))))
    (native-inputs '())                           ;no Bison
     (ensure-keyword-arguments
      (substitute-keyword-arguments (package-arguments binutils)
        ((#:modules modules '((guix build gnu-build-system)
                              (guix build utils)))
         (cons '(ice-9 ftw) modules))
        ((#:configure-flags cf ''())
         #~(append (list #$(string-append "--target="
                                          (boot-triplet))
                         "--disable-gprofng") ;requires Bison
                   #$cf))
        ((#:phases phases '%standard-phases)
         #~(modify-phases #$phases
             (add-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?)))))))))
      (list #:guile %bootstrap-guile
            #:implicit-inputs? #f)))
    (native-inputs '())                 ;no Bison
    (inputs (%boot0-inputs))))

(define libstdc++-boot0