unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Is anybody working on a go build system in guix?
@ 2016-02-26 19:31 swedebugia
  2016-02-26 20:59 ` Thompson, David
  0 siblings, 1 reply; 5+ messages in thread
From: swedebugia @ 2016-02-26 19:31 UTC (permalink / raw)
  To: guix-devel

I have lately looked closer at IPFS and I would like to compile and run 
it on GuixSD but don't know how to succeed without a build system.

cheers
sdb

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Is anybody working on a go build system in guix?
  2016-02-26 19:31 Is anybody working on a go build system in guix? swedebugia
@ 2016-02-26 20:59 ` Thompson, David
  2016-02-26 21:36   ` Leo Famulari
  0 siblings, 1 reply; 5+ messages in thread
From: Thompson, David @ 2016-02-26 20:59 UTC (permalink / raw)
  To: swedebugia; +Cc: guix-devel

On Fri, Feb 26, 2016 at 2:31 PM,  <swedebugia@riseup.net> wrote:
> I have lately looked closer at IPFS and I would like to compile and run it
> on GuixSD but don't know how to succeed without a build system.

We would need a Go toolchain first.  I recall at least two people
trying to package Go but no patches have shown up here.  Seems it's
not a straightforward process.

- Dave

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Is anybody working on a go build system in guix?
  2016-02-26 20:59 ` Thompson, David
@ 2016-02-26 21:36   ` Leo Famulari
  2016-02-27 19:12     ` Efraim Flashner
  0 siblings, 1 reply; 5+ messages in thread
From: Leo Famulari @ 2016-02-26 21:36 UTC (permalink / raw)
  To: Thompson, David; +Cc: guix-devel

On Fri, Feb 26, 2016 at 03:59:49PM -0500, Thompson, David wrote:
> On Fri, Feb 26, 2016 at 2:31 PM,  <swedebugia@riseup.net> wrote:
> > I have lately looked closer at IPFS and I would like to compile and run it
> > on GuixSD but don't know how to succeed without a build system.
> 
> We would need a Go toolchain first.  I recall at least two people
> trying to package Go but no patches have shown up here.  Seems it's
> not a straightforward process.

IIRC, Efraim and "codemacs" (from IRC) have mentioned working on this.
My impression is that it's getting very close, but you may want to ask
them if they want help.

> 
> - Dave
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Is anybody working on a go build system in guix?
  2016-02-26 21:36   ` Leo Famulari
@ 2016-02-27 19:12     ` Efraim Flashner
  2016-02-27 23:45       ` Leo Famulari
  0 siblings, 1 reply; 5+ messages in thread
From: Efraim Flashner @ 2016-02-27 19:12 UTC (permalink / raw)
  To: Leo Famulari; +Cc: guix-devel


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

On Fri, 26 Feb 2016 16:36:56 -0500
Leo Famulari <leo@famulari.name> wrote:

> On Fri, Feb 26, 2016 at 03:59:49PM -0500, Thompson, David wrote:
> > On Fri, Feb 26, 2016 at 2:31 PM,  <swedebugia@riseup.net> wrote:  
> > > I have lately looked closer at IPFS and I would like to compile and run it
> > > on GuixSD but don't know how to succeed without a build system.  
> > 
> > We would need a Go toolchain first.  I recall at least two people
> > trying to package Go but no patches have shown up here.  Seems it's
> > not a straightforward process.  
> 
> IIRC, Efraim and "codemacs" (from IRC) have mentioned working on this.
> My impression is that it's getting very close, but you may want to ask
> them if they want help.
> 

I've attached what my current go patches are. Here[1] is codemac's go packages.

quoting codemac from mid-january:

They still fail if you ever link against anything that dynamically links
against glibc. This means any go program that uses the net, os/user,
runtime or cgo packages fail to execute complaining they can't find
libgcc_s. I've tried just about everything imagineable, and it's unclear
to me how the nix gcc + glibc packages differ from the guix ones.

I'd love help / suggestions, I use golang at my day job so I'm motivated
to get this fixed. I have a pretty good idea of what the go package
system could look like for guix without us distributing PILES of
statically linked go poop as well, but that's a separate discussion.


I haven't tested it so much yet, never actually coded in go. Tzdata is
bundled, but it wouldn't be the only program we have with tzdata being
bundled, and after codemac's issues with go programs after replacing it, I'm
not really in a rush to do so.


1: https://github.com/codemac/guix-pkgs/blob/master/tmp/codemac/packages/go.scm


-- 
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

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: 0001-gnu-Add-go-1.4.patch --]
[-- Type: text/x-patch, Size: 5294 bytes --]

From 38625c70a470ecdab0d8a57c9273611694cfe440 Mon Sep 17 00:00:00 2001
From: Efraim Flashner <efraim@flashner.co.il>
Date: Mon, 28 Dec 2015 19:27:18 +0200
Subject: [PATCH 1/2] gnu: Add go-1.4.

* gnu/packages/golang.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add golang.scm.
---
 gnu-system.am           |  1 +
 gnu/packages/golang.scm | 91 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 92 insertions(+)
 create mode 100644 gnu/packages/golang.scm

diff --git a/gnu-system.am b/gnu-system.am
index 20e38ae..04925db 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -140,6 +140,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/gnustep.scm			\
   gnu/packages/gnuzilla.scm			\
   gnu/packages/gnu-pw-mgr.scm			\
+  gnu/packages/golang.scm			\
   gnu/packages/gperf.scm			\
   gnu/packages/gprolog.scm			\
   gnu/packages/gps.scm				\
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
new file mode 100644
index 0000000..f02d4a8
--- /dev/null
+++ b/gnu/packages/golang.scm
@@ -0,0 +1,91 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages golang)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix utils)
+  #:use-module (guix download)
+  #:use-module (guix packages)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages gcc)
+  #:use-module (gnu packages perl))
+
+;; According to https://golang.org/doc/install/gccgo, gccgo-4.8.2 includes a
+;; complete go-1.1.2 implementation, gccgo-4.9 includes a complete go-1.2
+;; implementation, and gccgo-5 a complete implementation of go-1.4.  Ultimately
+;; we hope to build go-1.5 with a bootstrap process using gccgo-5.  As of
+;; go-1.5, go cannot be bootstrapped without go-1.4, so we need to use go-1.4 or
+;; gccgo-5.  Mips is not officially supported, but it should work if it is
+;; bootstrapped.
+
+(define go-1.4
+  (package
+    (name "go")
+    (version "1.4.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "https://storage.googleapis.com/golang/go"
+                            version ".src.tar.gz"))
+        (sha256
+         (base32
+          "0na9yqilzpvq0bjndbibfp07wr796gf252y471cip10bbdqgqiwr"))))
+    (build-system gnu-build-system)
+    (outputs '("out" "doc" "tests"))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-after 'patch-generated-file-shebangs 'chdir
+           (lambda _ (chdir "src")))
+         (replace 'build
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((gccgo  (assoc-ref inputs "gccgo"))
+                   (output (assoc-ref outputs "out")))
+               (setenv "CC" "gcc")
+               (setenv "GOROOT" (getcwd))
+               (setenv "GOROOT_BOOTSTRAP" gccgo)
+               (setenv "GOROOT_FINAL" output)
+               (setenv "CGO_ENABLED" "0")
+               ;; all.bash includes the tests, which fail because they
+               ;; require network access, and access to /bin
+               (zero? (system* "bash" "make.bash")))))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((output (assoc-ref outputs "out"))
+                    (docs   (assoc-ref outputs "doc"))
+                    (tests  (assoc-ref outputs "tests")))
+               (copy-recursively "../test" tests)
+               (delete-file-recursively "../test")
+               (copy-recursively "../api" (string-append docs "/api"))
+               (delete-file-recursively "../api")
+               (copy-recursively "../doc" (string-append docs "/doc"))
+               (delete-file-recursively "../doc")
+               (copy-recursively "../" output)))))
+       #:tests? #f))
+    (native-inputs
+     `(("gccgo" ,gccgo-4.9)
+       ("perl" ,perl)))
+    (home-page "https://golang.org/")
+    (synopsis "Compiled, statically typed language developed by Google")
+    (description "Go, also commonly referred to as golang, is a programming
+ language developed at Google.  Designed primarily for systems programming, it
+ is a compiled, statically typed language in the tradition of C and C++, with
+garbage collection, various safety features and in the style of communicating
+sequential processes (CSP) concurrent programming features added.")
+    (license license:bsd-3)))
-- 
2.7.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.3: 0002-gnu-Add-go.patch --]
[-- Type: text/x-patch, Size: 1602 bytes --]

From 35354eed31abebff6977544cee7578d4ba1dcbd1 Mon Sep 17 00:00:00 2001
From: Efraim Flashner <efraim@flashner.co.il>
Date: Tue, 12 Jan 2016 16:23:50 +0200
Subject: [PATCH 2/2] gnu: Add go.

* gnu/packages/golang.scm (go): New variable.
---
 gnu/packages/golang.scm | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index f02d4a8..d94bd2c 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -23,7 +23,8 @@
   #:use-module (guix packages)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages gcc)
-  #:use-module (gnu packages perl))
+  #:use-module (gnu packages perl)
+  #:use-module (srfi srfi-1))
 
 ;; According to https://golang.org/doc/install/gccgo, gccgo-4.8.2 includes a
 ;; complete go-1.1.2 implementation, gccgo-4.9 includes a complete go-1.2
@@ -89,3 +90,18 @@
 garbage collection, various safety features and in the style of communicating
 sequential processes (CSP) concurrent programming features added.")
     (license license:bsd-3)))
+
+(define-public go
+  (package (inherit go-1.4)
+    (version "1.6")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "https://storage.googleapis.com/golang/go"
+                            version ".src.tar.gz"))
+        (sha256
+         (base32
+          "0ipivhc34df8h439h5d81m0h1jz0gsy71m67ljrgk6rswj6cwv59"))))
+    (native-inputs
+     `(("gccgo" ,go-1.4)
+       ,@(alist-delete "gccgo" (package-native-inputs go-1.4))))))
-- 
2.7.0


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: Is anybody working on a go build system in guix?
  2016-02-27 19:12     ` Efraim Flashner
@ 2016-02-27 23:45       ` Leo Famulari
  0 siblings, 0 replies; 5+ messages in thread
From: Leo Famulari @ 2016-02-27 23:45 UTC (permalink / raw)
  To: Efraim Flashner; +Cc: guix-devel

On Sat, Feb 27, 2016 at 09:12:42PM +0200, Efraim Flashner wrote:
> On Fri, 26 Feb 2016 16:36:56 -0500
> Leo Famulari <leo@famulari.name> wrote:
> 
> > On Fri, Feb 26, 2016 at 03:59:49PM -0500, Thompson, David wrote:
> > > On Fri, Feb 26, 2016 at 2:31 PM,  <swedebugia@riseup.net> wrote:  
> > > > I have lately looked closer at IPFS and I would like to compile and run it
> > > > on GuixSD but don't know how to succeed without a build system.  
> > > 
> > > We would need a Go toolchain first.  I recall at least two people
> > > trying to package Go but no patches have shown up here.  Seems it's
> > > not a straightforward process.  
> > 
> > IIRC, Efraim and "codemacs" (from IRC) have mentioned working on this.
> > My impression is that it's getting very close, but you may want to ask
> > them if they want help.
> > 
> 
> I've attached what my current go patches are. Here[1] is codemac's go packages.
> 
> quoting codemac from mid-january:
> 
> They still fail if you ever link against anything that dynamically links
> against glibc. This means any go program that uses the net, os/user,
> runtime or cgo packages fail to execute complaining they can't find
> libgcc_s. I've tried just about everything imagineable, and it's unclear
> to me how the nix gcc + glibc packages differ from the guix ones.
> 
> I'd love help / suggestions, I use golang at my day job so I'm motivated
> to get this fixed. I have a pretty good idea of what the go package
> system could look like for guix without us distributing PILES of
> statically linked go poop as well, but that's a separate discussion.

Has anybody asked for help from the Nix hackers that maintain Go in Nix?
It might be worth an email to their mailing list...

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2016-02-27 23:45 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-26 19:31 Is anybody working on a go build system in guix? swedebugia
2016-02-26 20:59 ` Thompson, David
2016-02-26 21:36   ` Leo Famulari
2016-02-27 19:12     ` Efraim Flashner
2016-02-27 23:45       ` Leo Famulari

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).