Subject: [PATCH v4 55/58] gnu: bootstrap: %bootstrap-gcc: Also wrap g++ for the 64bit Hurd.

From: Janneke Nieuwenhuizen <[email-masked]>
Date: Sun, 24 Nov 2024 08:55:18 +0100

* gnu/packages/bootstrap.scm (%bootstrap-gcc)[arguments] When building for
thee 64bit Hurd have the #:builder also wrap g++.

Co-authored-by: Efraim Flashner <[email-masked]>

Change-Id: I2cdbc6837e1c451f108b309f2608240a7f57b82c
---
 gnu/packages/bootstrap.scm | 35 +++++++++++++++++++++--------------
 1 file changed, 21 insertions(+), 14 deletions(-)

diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm
index a6cdda2122..48c7b42cc9 100644
--- a/gnu/packages/bootstrap.scm
+++ b/gnu/packages/bootstrap.scm
@@ -866,29 +866,36 @@ (define %bootstrap-gcc
                (tarball (assoc-ref %build-inputs "tarball")))
 
            (mkdir out)
-           (copy-file tarball "binaries.tar.xz")
+           (copy-file tarball "binaries.tar.xz") ;avoid: more than one hard link
            (invoke xz "-d" "binaries.tar.xz")
            (let ((builddir (getcwd))
                  (bindir   (string-append out "/bin")))
+
+             (define (wrap-program program)
+               (let ((wrapped (format #f ".~a-wrapped" program)))
+                 (rename-file program wrapped)
+                 (call-with-output-file program
+                   (lambda (p)
+                     (format p "#!~a
+exec ~a/bin/~a -B~a/lib \
+     -Wl,-rpath -Wl,~a/lib \
+     -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
+                             bash
+                             out wrapped
+                             libc libc libc
+                             ,(glibc-dynamic-linker)))))
+               (chmod program #o555))
+
              (with-directory-excursion out
                (invoke tar "xvf"
                        (string-append builddir "/binaries.tar")))
 
              (with-directory-excursion bindir
                (chmod "." #o755)
-               (rename-file "gcc" ".gcc-wrapped")
-               (call-with-output-file "gcc"
-                 (lambda (p)
-                   (format p "#!~a
-exec ~a/bin/.gcc-wrapped -B~a/lib \
-     -Wl,-rpath -Wl,~a/lib \
-     -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
-                           bash
-                           out libc libc libc
-                           ,(glibc-dynamic-linker))))
-
-               (chmod "gcc" #o555)
-               #t))))))
+               (for-each wrap-program
+                         ,(if (target-hurd64?)
+                              ''("gcc" "g++")
+                              ''("gcc")))))))))
     (inputs
      `(("tar" ,(bootstrap-executable "tar" (%current-system)))
        ("xz"  ,(bootstrap-executable "xz" (%current-system)))
-- 
2.46.0