Subject: [PATCH] gnu: gccgo: Add version 10.

From: [email-masked]
Date: Mon, 8 Feb 2021 14:00:19 +0200

From: Manolis Ragkousis <[email-masked]>

* gnu/packages/patches/gcc-10-libgo-runpath.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add patch.
* gnu/packages/gcc.scm (gccgo-10): New package.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/gcc.scm                          | 21 +++++++++++++++++++
 .../patches/gcc-10-libgo-runpath.patch        | 16 ++++++++++++++
 3 files changed, 38 insertions(+)
 create mode 100644 gnu/packages/patches/gcc-10-libgo-runpath.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index f908f51074..302d3e2aa8 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1030,6 +1030,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/gcc-6-fix-buffer-size.patch	\
   %D%/packages/patches/gcc-6-libsanitizer-mode-size.patch	\
   %D%/packages/patches/gcc-7-libsanitizer-mode-size.patch	\
+  %D%/packages/patches/gcc-10-libgo-runpath.patch		\
   %D%/packages/patches/gcc-libvtv-runpath.patch			\
   %D%/packages/patches/gcc-strmov-store-file-names.patch	\
   %D%/packages/patches/gcc-4-compile-with-gcc-5.patch		 \
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 9b2a5556f6..d113cce2da 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -773,6 +773,27 @@ provides the GNU compiler for the Go programming language."))
               ;; a cyclic dependency.  <http://debbugs.gnu.org/18101>
               #:separate-lib-output? #f))
 
+(define-public gccgo-10
+  (custom-gcc (package
+                (inherit gcc-10)
+                (source
+                 (origin
+                   (inherit (package-source gcc-10))
+                   (patches
+                    (append
+                     (origin-patches (package-source gcc-10))
+                     (search-patches "gcc-10-libgo-runpath.patch")))))
+                (synopsis "Go frontend to GCC")
+                (description
+                 "This package is part of the GNU Compiler Collection and
+provides the GNU compiler for the Go programming language."))
+              "gccgo" '("go")
+              %generic-search-paths
+              ;; Suppress the separate "lib" output, because otherwise the
+              ;; "lib" and "out" outputs would refer to each other, creating
+              ;; a cyclic dependency.  <http://debbugs.gnu.org/18101>
+              #:separate-lib-output? #f))
+
 (define %objc-search-paths
   (list (search-path-specification
          (variable "OBJC_INCLUDE_PATH")
diff --git a/gnu/packages/patches/gcc-10-libgo-runpath.patch b/gnu/packages/patches/gcc-10-libgo-runpath.patch
new file mode 100644
index 0000000000..bf89d7b6d4
--- /dev/null
+++ b/gnu/packages/patches/gcc-10-libgo-runpath.patch
@@ -0,0 +1,16 @@
+gccgo needs libgo but it doesn't have $libdir in its RUNPATH.  This
+patch fixes that.
+
+diff --git a/libgo/Makefile.in b/libgo/Makefile.in
+index b835173585..64e45360aa 100644
+--- a/libgo/Makefile.in
++++ b/libgo/Makefile.in
+@@ -22,6 +22,8 @@
+ 
+ # Process this file with autoreconf to produce Makefile.in.
+ 
++libgo_llgo_la_LDFLAGS = -Wl,-rpath=$(libdir)
++
+ VPATH = @srcdir@
+ am__is_gnu_make = { \
+   if test -z '$(MAKELEVEL)'; then \
-- 
2.30.0