unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: Efraim Flashner <efraim@flashner.co.il>
To: Catonano <catonano@gmail.com>
Cc: 28226@debbugs.gnu.org
Subject: [bug#28226] Build go with gccgo
Date: Tue, 12 Sep 2017 13:44:47 +0300	[thread overview]
Message-ID: <20170912104447.GA3972@macbook42.flashner.co.il> (raw)
In-Reply-To: <CAJ98PDxggb4QZA-c92r_d3brh+z2joeBWAcTTPyo=oyGgXe-wg@mail.gmail.com>


[-- Attachment #1.1: Type: text/plain, Size: 1784 bytes --]

On Tue, Sep 12, 2017 at 11:59:31AM +0200, Catonano wrote:
> 2017-08-24 22:51 GMT+02:00 Efraim Flashner <efraim@flashner.co.il>:
> 
> > I need some help testing this on x86_64, I did all the building and
> > testing on aarch64. It turns out there's a known issues in the cgo
> > implementation that causes the test suite to fail on aarch64. With this
> > patch set I was able to build gccgo@7 -> go@1.7 -> lfam's syncthing.
> >
> 
> I can't apply these patches
> 
> ~/projects/guix$ git am
> 0001-gnu-custom-gcc-Add-flag-to-optionally-not-remove-con.patch
> Applying: gnu: custom-gcc: Add flag to optionally not remove conflicting
> files.
> 
> ~/projects/guix$ git am 0002-gnu-Add-gccgo-7.patch
> Applying: gnu: Add gccgo@7.
> error: patch non riuscita: gnu/packages/gcc.scm:414
> error: gnu/packages/gcc.scm: la patch non può essere applicata
> Patch failed at 0001 gnu: Add gccgo@7.
> The copy of the patch that failed is found in: .git/rebase-apply/patch
> When you have resolved this problem, run "git am --continue".
> If you prefer to skip this patch, run "git am --skip" instead.
> To restore the original branch and stop patching, run "git am --abort".
> 
> 
> I don't know what these patches do, I was just trying to apply them in
> order (1, 2, 3)
> 
> Should I follow a different order ?
> 
> I would have attempted to build this thing
> 
> I git pulled on master right now ( 12 september) and created a branch for
> thhese patches and git am'ed there

I've reattached the patches, seems they don't apply cleanly anymore

-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

[-- Attachment #1.2: 0001-gnu-custom-gcc-Add-flag-to-optionally-not-remove-con.patch --]
[-- Type: text/plain, Size: 1928 bytes --]

From 649980fb84726ba758f68e40b836974148154428 Mon Sep 17 00:00:00 2001
From: Efraim Flashner <efraim@flashner.co.il>
Date: Mon, 7 Aug 2017 22:56:57 +0300
Subject: [PATCH 1/3] gnu: custom-gcc: Add flag to optionally not remove
 conflicting files.

* gnu/packages/gcc.scm (custom-gcc): Add flag to optionally keep the
files that would conflict with gcc.
---
 gnu/packages/gcc.scm | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index da4d66ce36..14a49b9aac 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -486,7 +486,8 @@ using compilers other than GCC."
 (define* (custom-gcc gcc name languages
                      #:optional
                      (search-paths (package-native-search-paths gcc))
-                     #:key (separate-lib-output? #t))
+                     #:key (separate-lib-output? #t)
+                     (remove-conflicting-files? #t))
   "Return a custom version of GCC that supports LANGUAGES.  Use SEARCH-PATHS
 as the 'native-search-paths' field."
   (package (inherit gcc)
@@ -509,12 +510,14 @@ as the 'native-search-paths' field."
                        ,flags)))
        ((#:phases phases)
         `(modify-phases ,phases
-           (add-after 'install 'remove-broken-or-conflicting-files
+          ,@(if remove-conflicting-files?
+           `((add-after 'install 'remove-broken-or-conflicting-files
              (lambda* (#:key outputs #:allow-other-keys)
                (for-each delete-file
                          (find-files (string-append (assoc-ref outputs "out") "/bin")
                                      ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc.*)"))
-               #t))))))))
+               #t)))
+           '())))))))
 
 (define %generic-search-paths
   ;; This is the language-neutral search path for GCC.  Entries in $CPATH are
-- 
2.14.1


[-- Attachment #1.3: 0002-gnu-Add-gccgo-7.patch --]
[-- Type: text/plain, Size: 3782 bytes --]

From 6917ddf5d319df740b63e5a2f50c7d0da0bbfea9 Mon Sep 17 00:00:00 2001
From: Efraim Flashner <efraim@flashner.co.il>
Date: Mon, 7 Aug 2017 22:59:22 +0300
Subject: [PATCH 2/3] gnu: Add gccgo@7.

* gnu/packages/gcc.scm (gccgo@7): New variable.
* gnu/packages/gcc.scm (gcc@7)[source]: Add patch.
* gnu/packages/patches/gcc-7.1-go-runpath.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/gcc.scm                          | 15 ++++++++++++++-
 gnu/packages/patches/gcc-7.1-go-runpath.patch | 13 +++++++++++++
 3 files changed, 28 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/gcc-7.1-go-runpath.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 643a88db81..9b61b16578 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -628,6 +628,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/gcc-5-source-date-epoch-2.patch		\
   %D%/packages/patches/gcc-6-arm-none-eabi-multilib.patch	\
   %D%/packages/patches/gcc-6-cross-environment-variables.patch	\
+  %D%/packages/patches/gcc-7.1-go-runpath.patch	\
   %D%/packages/patches/gcr-disable-failing-tests.patch		\
   %D%/packages/patches/gcr-fix-collection-tests-to-work-with-gpg-21.patch	\
   %D%/packages/patches/gdk-pixbuf-list-dir.patch		\
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 14a49b9aac..aca2e19696 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -415,7 +415,8 @@ Go.  It also includes runtime support libraries for these languages.")
                (base32
                 "16j7i0888j2f1yp9l0nhji6cq65dy6y4nwy8868a8njbzzwavxqw"))
               (patches (search-patches "gcc-strmov-store-file-names.patch"
-                                       "gcc-5.0-libvtv-runpath.patch"))))))
+                                       "gcc-5.0-libvtv-runpath.patch"
+                                       "gcc-7.1-go-runpath.patch"))))))
 
 ;; Note: When changing the default gcc version, update
 ;;       the gcc-toolchain-* definitions and the gfortran definition
@@ -566,6 +567,18 @@ as the 'native-search-paths' field."
               ;; a cyclic dependency.  <http://debbugs.gnu.org/18101>
               #:separate-lib-output? #f))
 
+(define-public gccgo-7
+  (custom-gcc gcc-7 "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
+              ;; When building go, it is expected to use the same GCC output
+              ;; for gcc and for gccgo, so we compile go with the gcc from
+              ;; this build.
+              #:remove-conflicting-files? #f))
+
 (define-public gcc-objc-4.8
   (custom-gcc gcc-4.8 "gcc-objc" '("objc")
               (list (search-path-specification
diff --git a/gnu/packages/patches/gcc-7.1-go-runpath.patch b/gnu/packages/patches/gcc-7.1-go-runpath.patch
new file mode 100644
index 0000000000..e1ff2fc034
--- /dev/null
+++ b/gnu/packages/patches/gcc-7.1-go-runpath.patch
@@ -0,0 +1,13 @@
+--- gcc-7.1.0/gotools/Makefile.in
++++ gcc-7.1.0/gotools/Makefile.in
+@@ -258,6 +258,6 @@
+ # Use the compiler we just built.
+ @NATIVE_TRUE@GOCOMPILER = $(GOC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET)
+ GOCOMPILE = $(GOCOMPILER) $(GOCFLAGS)
+-AM_LDFLAGS = -L $(libgodir) -L $(libgodir)/.libs
++AM_LDFLAGS = -Wl,-rpath=$(libdir) -L $(libgodir) -L $(libgodir)/.libs
+ GOLINK = $(GOCOMPILER) $(GOCFLAGS) $(AM_GOCFLAGS) $(LDFLAGS) $(AM_LDFLAGS) -o $@
+ cmdsrcdir = $(srcdir)/../libgo/go/cmd
+-- 
+2.14.0
+
-- 
2.14.1


[-- Attachment #1.4: 0003-gnu-go-Build-with-gccgo-7.patch --]
[-- Type: text/plain, Size: 2057 bytes --]

From 5ae1423b545a1284a840ee883e2781bb92b49741 Mon Sep 17 00:00:00 2001
From: Efraim Flashner <efraim@flashner.co.il>
Date: Mon, 7 Aug 2017 23:09:29 +0300
Subject: [PATCH 3/3] gnu: go: Build with gccgo@7.

* gnu/packages/golang.scm (go@1.8)[inputs]: Remove gcc-lib.
[native-inputs]: Remove go@1.4, add gccgo@7.
---
 gnu/packages/golang.scm | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 9f3ccc8f69..be5f2f8e37 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
 ;;; Copyright © 2016 Andy Wingo <wingo@igalia.com>
 ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
@@ -220,7 +220,7 @@ sequential processes (CSP) concurrent programming features added.")
            (replace 'prebuild
              ;; TODO: Most of this could be factorized with Go 1.4.
              (lambda* (#:key inputs outputs #:allow-other-keys)
-               (let* ((gcclib (string-append (assoc-ref inputs "gcc:lib") "/lib"))
+               (let* ((gcclib (string-append (assoc-ref inputs "go") "/lib"))
                       (ld (string-append (assoc-ref inputs "libc") "/lib"))
                       (loader (car (find-files ld "^ld-linux.+")))
                       (net-base (assoc-ref inputs "net-base"))
@@ -370,8 +370,11 @@ sequential processes (CSP) concurrent programming features added.")
                     "LICENSE" "VERSION" "CONTRIBUTING.md" "robots.txt"))
 
                  (copy-recursively "../" output))))))))
+    (inputs
+     `(("tzdata" ,tzdata)
+       ("pcre" ,pcre)))
     (native-inputs
-     `(("go" ,go-1.4)
+     `(("go" ,gccgo-7)
        ,@(package-native-inputs go-1.4)))))
 
 (define-public go go-1.9)
-- 
2.14.1


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2017-09-12 10:46 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-24 20:51 [bug#28226] Build go with gccgo Efraim Flashner
2017-09-12  9:59 ` Catonano
2017-09-12 10:44   ` Efraim Flashner [this message]
2017-09-12 12:54     ` Catonano
2020-06-05 23:58 ` [bug#28226] go with gccgo still relevant? Jack Hill
2020-06-07  7:34   ` Efraim Flashner
2021-08-05 23:05 ` bug#28226: Build go with gccgo Sarah Morgensen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170912104447.GA3972@macbook42.flashner.co.il \
    --to=efraim@flashner.co.il \
    --cc=28226@debbugs.gnu.org \
    --cc=catonano@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).