guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/02: gnu: go-1.17: Build with gcc:lib on arm* architectures.


From: guix-commits
Subject: 02/02: gnu: go-1.17: Build with gcc:lib on arm* architectures.
Date: Tue, 21 Dec 2021 11:25:25 -0500 (EST)

efraim pushed a commit to branch master
in repository guix.

commit 8f85e4f9aa0bd53d0240ea28e280551c8a066b85
Author: Efraim Flashner <efraim@flashner.co.il>
AuthorDate: Tue Dec 21 18:21:53 2021 +0200

    gnu: go-1.17: Build with gcc:lib on arm* architectures.
    
    * gnu/packages/golang.scm (go-1.17)[arguments]: Add phase on arm*
    architectures to link to gcc:lib.
    [inputs]: When building for arm* don't remove gcc:lib.
---
 gnu/packages/golang.scm | 27 ++++++++++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index f03e9cc..f716c69 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -685,6 +685,29 @@ in the style of communicating sequential processes 
(@dfn{CSP}).")
                   (string-append net-base "/etc/services")))
                (substitute* "src/time/zoneinfo_unix.go"
                  (("/usr/share/zoneinfo/") tzdata-path)))))
+         ;; Keep this synchronized with the package inputs.
+         ,@(if (target-arm?)
+             '((add-after 'unpack 'patch-gcc:lib
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   (let* ((gcclib (string-append (assoc-ref inputs "gcc:lib") 
"/lib")))
+                     ;; Add libgcc to runpath
+                     (substitute* "src/cmd/link/internal/ld/lib.go"
+                       (("!rpath.set") "true"))
+                     (substitute* "src/cmd/go/internal/work/gccgo.go"
+                       (("cgoldflags := \\[\\]string\\{\\}")
+                        (string-append "cgoldflags := []string{"
+                                       "\"-Wl,-rpath=" gcclib "\""
+                                       "}"))
+                       (("\"-lgcc_s\", ")
+                        (string-append
+                         "\"-Wl,-rpath=" gcclib "\", \"-lgcc_s\", ")))
+                     (substitute* "src/cmd/go/internal/work/gc.go"
+                       (("ldflags = setextld\\(ldflags, compiler\\)")
+                        (string-append
+                         "ldflags = setextld(ldflags, compiler)\n"
+                         "ldflags = append(ldflags, \"-r\")\n"
+                         "ldflags = append(ldflags, \"" gcclib "\")\n")))))))
+             '())
          (add-after 'patch-source 'disable-failing-tests
            (lambda _
              ;; Disable failing tests: these tests attempt to access
@@ -796,7 +819,9 @@ in the style of communicating sequential processes 
(@dfn{CSP}).")
                   (install-file file (string-append out "/share/doc/go")))
                 '("AUTHORS" "CONTRIBUTORS" "CONTRIBUTING.md" "PATENTS"
                   "README.md" "SECURITY.md"))))))))
-    (inputs (alist-delete "gcc:lib" (package-inputs go-1.16)))
+    (inputs (if (not (target-arm?))
+              (alist-delete "gcc:lib" (package-inputs go-1.16))
+              (package-inputs go-1.16)))
     (native-inputs
      (if (not (member (%current-system) (package-supported-systems go-1.4)))
        ;; gccgo-10.4, 11.3 and lower has a bug which causes bootstrapping



reply via email to

[Prev in Thread] Current Thread [Next in Thread]