Re-sending to correct address -------- Forwarded Message -------- Subject: Re: [PATCH] gnu: gccgo: Add version 10. Date: Mon, 8 Feb 2021 14:06:20 +0200 From: Manolis Ragkousis To: manolis837@gmail.com This patch is the start of adding a newer gccgo version, based on the suggestion from Leo Le Bouter, of replace go-1.4 with a newer version of gccgo which could work on powerpc 64. Currently the bellow patch fails the build with: starting phase `validate-runpath' validating RUNPATH of 170 binaries in "/gnu/store/h8z1d4qwrabdp7ax73nz7bm9yvxjciy9-gccgo-10.2.0/lib"... validating RUNPATH of 13 binaries in "/gnu/store/h8z1d4qwrabdp7ax73nz7bm9yvxjciy9-gccgo-10.2.0/libexec"... /gnu/store/h8z1d4qwrabdp7ax73nz7bm9yvxjciy9-gccgo-10.2.0/libexec/gcc/x86_64-unknown-linux-gnu/10.2.0/buildid: error: depends on 'libgo.so.16', which cannot be found in RUNPATH ("/gnu/store/m1lw20jnpmbvlcwn7wkg1z77sqsni0hr-glibc-2.32/lib") /gnu/store/h8z1d4qwrabdp7ax73nz7bm9yvxjciy9-gccgo-10.2.0/libexec/gcc/x86_64-unknown-linux-gnu/10.2.0/cgo: error: depends on 'libgo.so.16', which cannot be found in RUNPATH ("/gnu/store/m1lw20jnpmbvlcwn7wkg1z77sqsni0hr-glibc-2.32/lib") /gnu/store/h8z1d4qwrabdp7ax73nz7bm9yvxjciy9-gccgo-10.2.0/libexec/gcc/x86_64-unknown-linux-gnu/10.2.0/test2json: error: depends on 'libgo.so.16', which cannot be found in RUNPATH ("/gnu/store/m1lw20jnpmbvlcwn7wkg1z77sqsni0hr-glibc-2.32/lib") /gnu/store/h8z1d4qwrabdp7ax73nz7bm9yvxjciy9-gccgo-10.2.0/libexec/gcc/x86_64-unknown-linux-gnu/10.2.0/vet: error: depends on 'libgo.so.16', which cannot be found in RUNPATH ("/gnu/store/m1lw20jnpmbvlcwn7wkg1z77sqsni0hr-glibc-2.32/lib") validating RUNPATH of 3 binaries in "/gnu/store/h8z1d4qwrabdp7ax73nz7bm9yvxjciy9-gccgo-10.2.0/bin"... /gnu/store/h8z1d4qwrabdp7ax73nz7bm9yvxjciy9-gccgo-10.2.0/bin/go: error: depends on 'libgo.so.16', which cannot be found in RUNPATH ("/gnu/store/m1lw20jnpmbvlcwn7wkg1z77sqsni0hr-glibc-2.32/lib") /gnu/store/h8z1d4qwrabdp7ax73nz7bm9yvxjciy9-gccgo-10.2.0/bin/gofmt: error: depends on 'libgo.so.16', which cannot be found in RUNPATH ("/gnu/store/m1lw20jnpmbvlcwn7wkg1z77sqsni0hr-glibc-2.32/lib") error: in phase 'validate-runpath': uncaught exception: misc-error #f "RUNPATH validation failed" () #f phase `validate-runpath' failed after 0.3 seconds Backtrace: 9 (primitive-load "/gnu/store/axnbrhz8vjsj6gakdq6a2jargkj…") In ice-9/eval.scm: 191:35 8 (_ _) In guix/build/gnu-build-system.scm: 898:2 7 (gnu-build #:source _ #:outputs _ #:inputs _ #:phases . #) In ice-9/boot-9.scm: 1736:10 6 (with-exception-handler _ _ #:unwind? _ # _) In srfi/srfi-1.scm: 634:9 5 (for-each # …) In ice-9/boot-9.scm: 1736:10 4 (with-exception-handler _ _ #:unwind? _ # _) In guix/build/gnu-build-system.scm: 919:23 3 (_) 562:10 2 (validate-runpath #:validate-runpath? _ # _ #:outputs _) In ice-9/boot-9.scm: 1669:16 1 (raise-exception _ #:continuable? _) 1669:16 0 (raise-exception _ #:continuable? _) ice-9/boot-9.scm:1669:16: In procedure raise-exception: RUNPATH validation failed On 2/8/21 2:00 PM, manolis837@gmail.com wrote: > From: Manolis Ragkousis > > * 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. > #: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. > + #: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 \ >