* [Patch] go@1.4 Updated patch
@ 2016-06-03 11:42 Matthew Jordan
2016-06-03 15:40 ` Alex Griffin
0 siblings, 1 reply; 19+ messages in thread
From: Matthew Jordan @ 2016-06-03 11:42 UTC (permalink / raw)
To: guix-devel
[-- Attachment #1: Type: text/plain, Size: 404 bytes --]
Good Day Everyone,
Great news!!!
This patch is the first in patch series, dedicated to the golang
compiler. This patch represents the latest work done on the go@1.4
package, thus all other previous patches can be dis-guarded.
Note that the other patches in the series will be dependent on this patch,
as the go@1.4 is both it's own compiler and serves as a bootstrap
compiler for the other versions.
[-- Attachment #2: Patch to add go@1.4 compiler. --]
[-- Type: text/x-patch, Size: 10058 bytes --]
From 46f0f6610cf7ff9e916880502378cecdc627b937 Mon Sep 17 00:00:00 2001
From: Matthew Jordan <matthewjordandevops@yandex.com>
Date: Thu, 26 May 2016 08:57:16 -0400
Subject: [PATCH] gnu: Add go@1.4
* gnu/local.mk: Modified file.
* gnu/packages/golang.scm: New file.
Co-author: Efraim Flashner <efraim@flashner.co.il>
Co-author: Andy Wingo <wingo@igalia.com>
---
gnu/local.mk | 1 +
gnu/packages/golang.scm | 190 ++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 191 insertions(+)
create mode 100644 gnu/packages/golang.scm
diff --git a/gnu/local.mk b/gnu/local.mk
index 59aaccc..1cae981 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -147,6 +147,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/gnustep.scm \
%D%/packages/gnuzilla.scm \
%D%/packages/gnu-pw-mgr.scm \
+ %D%/packages/golang.scm \
%D%/packages/gperf.scm \
%D%/packages/gprolog.scm \
%D%/packages/gps.scm \
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
new file mode 100644
index 0000000..d9e9dec
--- /dev/null
+++ b/gnu/packages/golang.scm
@@ -0,0 +1,190 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
+;;; Copyright © 2016 Andy Wingo <wingo@igalia.com>
+;;;
+;;; This file is an addendum 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 admin)
+ #:use-module (gnu packages rc)
+ #:use-module (gnu packages gcc)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages perl)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages pcre)
+ #: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
+;; 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-public go-1.4
+ (package
+ (name "go")
+ (version "1.4.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://storage.googleapis.com/golang/"
+ name version ".src.tar.gz"))
+ (sha256
+ (base32
+ "0na9yqilzpvq0bjndbibfp07wr796gf252y471cip10bbdqgqiwr"))))
+ (build-system gnu-build-system)
+ (outputs '("out"
+ "doc"
+ "src"))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (add-after 'patch-generated-file-shebangs 'chdir
+ (lambda _ (chdir "src")))
+ (add-before 'build 'prebuild
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((gccgo (assoc-ref inputs "gccgo"))
+ (gcclib (string-append (assoc-ref inputs "gcc:lib") "/lib"))
+ (ld (string-append
+ (assoc-ref inputs "glibc") "/lib"))
+ (loader (car (find-files ld "^ld-linux.+")))
+ (libgcc (string-append (assoc-ref inputs "gcc:lib") "/lib"))
+ (net-base (assoc-ref inputs "net-base"))
+ (tzdata-path
+ (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo"))
+ (output (assoc-ref outputs "out")))
+
+ ;; Removing net/ tests
+ (for-each
+ (lambda (srcfile)
+ (let ((srcfile (string-append "net/" srcfile)))
+ (if (file-exists? srcfile)
+ (delete-file srcfile))))
+ '("multicast_test.go" "parse_test.go" "port_test.go"))
+
+ ;; Add libgcc to runpath
+ (substitute* "cmd/go/build.go"
+ (("cgoldflags := \\[\\]string\\{\\}")
+ (string-append "cgoldflags := []string{"
+ "\"-rpath=" gcclib "\""
+ "}"))
+ (("ldflags := buildLdflags")
+ (string-append
+ "ldflags := buildLdflags\n"
+ "ldflags = append(ldflags, \"-r\")\n"
+ "ldflags = append(ldflags, \"" gcclib "\")\n")))
+
+ (substitute* "os/os_test.go"
+ (("/usr/bin") (getcwd))
+ (("/bin/pwd") (which "pwd")))
+
+ ;; Disable failing tests
+ (for-each
+ (lambda (srcfile)
+ (substitute* (car srcfile)
+ (((cdr srcfile) all) (string-append all "return\n"))))
+ (list
+ '("net/net_test.go" . ".+TestShutdownUnix.+")
+ '("net/dial_test.go" . ".+TestDialTimeout.+")
+ '("os/os_test.go" . ".+TestHostname.+")
+ '("time/format_test.go" . ".+TestParseInSydney.+")
+ '("os/exec/exec_test.go" . ".+TestEcho.+")
+ '("os/exec/exec_test.go" . ".+TestCommandRelativeName.+")
+ '("os/exec/exec_test.go" . ".+TestCatStdin.+")
+ '("os/exec/exec_test.go" . ".+TestCatGoodAndBadFile.+")
+ '("os/exec/exec_test.go" . ".+TestExitStatus.+")
+ '("os/exec/exec_test.go" . ".+TestPipes.+")
+ '("os/exec/exec_test.go" . ".+TestStdinClose.+")
+ '("syscall/syscall_unix_test.go" . ".+TestPassFD\\(.+")
+ '("os/exec/exec_test.go" . ".+TestExtraFiles.+")))
+ (substitute* "net/lookup_unix.go"
+ (("/etc/protocols") (string-append net-base "/etc/protocols")))
+ (substitute* "time/zoneinfo_unix.go"
+ (("/usr/share/zoneinfo/") tzdata-path))
+ (substitute*
+ (find-files "cmd" "asm.c")
+ (("/lib/ld-linux.*\\.so\\.[0-9]") loader)))))
+
+ (replace 'build
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((gccgo (assoc-ref inputs "gccgo"))
+ (output (assoc-ref outputs "out")))
+ (setenv "CC" (which "gcc"))
+ (setenv "GOOS" "linux")
+ (setenv "GOROOT" (dirname (getcwd)))
+ (setenv "GOROOT_BOOTSTRAP" gccgo)
+ (setenv "GOROOT_FINAL" output)
+ (setenv "CGO_ENABLED" "1")
+ (zero? (system* "sh" "all.bash")))))
+
+ (replace 'install
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (let* ((output (assoc-ref outputs "out"))
+ (doc_out (assoc-ref outputs "doc"))
+ (bash (string-append (assoc-ref inputs "bash") "bin/bash"))
+ (docs (string-append doc_out "/share/doc/" ,name "-" ,version))
+ (src (string-append
+ (assoc-ref outputs "src") "/share/" ,name "-" ,version)))
+ (mkdir-p src)
+ (copy-recursively "../test" (string-append src "/test"))
+ (delete-file-recursively "../test")
+ (mkdir-p docs)
+ (copy-recursively "../api" (string-append docs "/api"))
+ (delete-file-recursively "../api")
+ (copy-recursively "../doc" (string-append docs "/doc"))
+ (delete-file-recursively "../doc")
+
+ (for-each
+ (lambda (file)
+ (let* ((filein (string-append "../" file))
+ (fileout (string-append docs "/" file)))
+ (copy-file filein fileout)
+ (delete-file filein)))
+ '("README" "CONTRIBUTORS" "AUTHORS" "PATENTS"
+ "LICENSE" "VERSION" "robots.txt"))
+ (copy-recursively "../" output)))))
+ #:tests? #f))
+ (inputs
+ `(("tzdata" ,tzdata)
+ ("pcre" ,pcre)))
+ (native-inputs
+ `(("pkg-config" ,%pkg-config)
+ ("which" ,which)
+ ("gccgo" ,gccgo-4.9)
+ ("gcc:out" ,gcc-4.9 "out")
+ ("net-base" ,net-base)
+ ("rc" ,rc)
+ ("perl" ,perl)))
+ (propagated-inputs
+ `(("gcc:lib" ,gcc-4.9 "lib")
+ ("glibc" ,glibc)))
+ (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.8.3
[-- Attachment #3: Type: text/plain, Size: 153 bytes --]
Also thanks to everyone who helped in getting this package as well as
the other to where they are now.
Sincerely,
--
Matthew Jordan
Sent with my mu4e
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [Patch] go@1.4 Updated patch
2016-06-03 11:42 [Patch] go@1.4 Updated patch Matthew Jordan
@ 2016-06-03 15:40 ` Alex Griffin
2016-06-03 17:39 ` Matthew Jordan
0 siblings, 1 reply; 19+ messages in thread
From: Alex Griffin @ 2016-06-03 15:40 UTC (permalink / raw)
To: guix-devel
I don't think this package needs to depend on rc or gccgo. Without rc,
guix will fail to patch the paths to rc, but those are only used on Plan
9 systems. And despite a few references to gccgo in the package
definition, removing it does not actually affect the build at all.
--
Alex Griffin
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Patch] go@1.4 Updated patch
2016-06-03 15:40 ` Alex Griffin
@ 2016-06-03 17:39 ` Matthew Jordan
2016-06-06 8:23 ` Andy Wingo
0 siblings, 1 reply; 19+ messages in thread
From: Matthew Jordan @ 2016-06-03 17:39 UTC (permalink / raw)
To: Alex Griffin; +Cc: guix-devel
[-- Attachment #1: Type: text/plain, Size: 40 bytes --]
Good Day,
Patch updated as suggested.
[-- Attachment #2: Add go@1.4 compiler. --]
[-- Type: text/x-patch, Size: 9806 bytes --]
From debf89e7a3456862b6de77e8d948b954d88bfca6 Mon Sep 17 00:00:00 2001
From: Matthew Jordan <matthewjordandevops@yandex.com>
Date: Thu, 26 May 2016 08:57:16 -0400
Subject: [PATCH] gnu: Add go@1.4
* gnu/local.mk: Modified file.
* gnu/packages/golang.scm: New file.
Co-author: Efraim Flashner <efraim@flashner.co.il>
Co-author: Andy Wingo <wingo@igalia.com>
---
gnu/local.mk | 1 +
gnu/packages/golang.scm | 184 ++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 185 insertions(+)
create mode 100644 gnu/packages/golang.scm
diff --git a/gnu/local.mk b/gnu/local.mk
index 59aaccc..1cae981 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -147,6 +147,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/gnustep.scm \
%D%/packages/gnuzilla.scm \
%D%/packages/gnu-pw-mgr.scm \
+ %D%/packages/golang.scm \
%D%/packages/gperf.scm \
%D%/packages/gprolog.scm \
%D%/packages/gps.scm \
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
new file mode 100644
index 0000000..c7e7e45
--- /dev/null
+++ b/gnu/packages/golang.scm
@@ -0,0 +1,184 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
+;;; Copyright © 2016 Andy Wingo <wingo@igalia.com>
+;;;
+;;; This file is an addendum 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 admin)
+ #:use-module (gnu packages gcc)
+ #:use-module (gnu packages base)
+ #:use-module (gnu packages perl)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages pcre)
+ #: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
+;; 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-public go-1.4
+ (package
+ (name "go")
+ (version "1.4.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://storage.googleapis.com/golang/"
+ name version ".src.tar.gz"))
+ (sha256
+ (base32
+ "0na9yqilzpvq0bjndbibfp07wr796gf252y471cip10bbdqgqiwr"))))
+ (build-system gnu-build-system)
+ (outputs '("out"
+ "doc"
+ "src"))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (add-after 'patch-generated-file-shebangs 'chdir
+ (lambda _ (chdir "src")))
+ (add-before 'build 'prebuild
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((gcclib (string-append (assoc-ref inputs "gcc:lib") "/lib"))
+ (ld (string-append
+ (assoc-ref inputs "glibc") "/lib"))
+ (loader (car (find-files ld "^ld-linux.+")))
+ (libgcc (string-append (assoc-ref inputs "gcc:lib") "/lib"))
+ (net-base (assoc-ref inputs "net-base"))
+ (tzdata-path
+ (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo"))
+ (output (assoc-ref outputs "out")))
+
+ ;; Removing net/ tests
+ (for-each
+ (lambda (srcfile)
+ (let ((srcfile (string-append "net/" srcfile)))
+ (if (file-exists? srcfile)
+ (delete-file srcfile))))
+ '("multicast_test.go" "parse_test.go" "port_test.go"))
+
+ ;; Add libgcc to runpath
+ (substitute* "cmd/go/build.go"
+ (("cgoldflags := \\[\\]string\\{\\}")
+ (string-append "cgoldflags := []string{"
+ "\"-rpath=" gcclib "\""
+ "}"))
+ (("ldflags := buildLdflags")
+ (string-append
+ "ldflags := buildLdflags\n"
+ "ldflags = append(ldflags, \"-r\")\n"
+ "ldflags = append(ldflags, \"" gcclib "\")\n")))
+
+ (substitute* "os/os_test.go"
+ (("/usr/bin") (getcwd))
+ (("/bin/pwd") (which "pwd")))
+
+ ;; Disable failing tests
+ (for-each
+ (lambda (srcfile)
+ (substitute* (car srcfile)
+ (((cdr srcfile) all) (string-append all "return\n"))))
+ (list
+ '("net/net_test.go" . ".+TestShutdownUnix.+")
+ '("net/dial_test.go" . ".+TestDialTimeout.+")
+ '("os/os_test.go" . ".+TestHostname.+")
+ '("time/format_test.go" . ".+TestParseInSydney.+")
+ '("os/exec/exec_test.go" . ".+TestEcho.+")
+ '("os/exec/exec_test.go" . ".+TestCommandRelativeName.+")
+ '("os/exec/exec_test.go" . ".+TestCatStdin.+")
+ '("os/exec/exec_test.go" . ".+TestCatGoodAndBadFile.+")
+ '("os/exec/exec_test.go" . ".+TestExitStatus.+")
+ '("os/exec/exec_test.go" . ".+TestPipes.+")
+ '("os/exec/exec_test.go" . ".+TestStdinClose.+")
+ '("syscall/syscall_unix_test.go" . ".+TestPassFD\\(.+")
+ '("os/exec/exec_test.go" . ".+TestExtraFiles.+")))
+ (substitute* "net/lookup_unix.go"
+ (("/etc/protocols") (string-append net-base "/etc/protocols")))
+ (substitute* "time/zoneinfo_unix.go"
+ (("/usr/share/zoneinfo/") tzdata-path))
+ (substitute*
+ (find-files "cmd" "asm.c")
+ (("/lib/ld-linux.*\\.so\\.[0-9]") loader)))))
+
+ (replace 'build
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((output (assoc-ref outputs "out")))
+ (setenv "CC" (which "gcc"))
+ (setenv "GOOS" "linux")
+ (setenv "GOROOT" (dirname (getcwd)))
+ (setenv "GOROOT_FINAL" output)
+ (setenv "CGO_ENABLED" "1")
+ (zero? (system* "sh" "all.bash")))))
+
+ (replace 'install
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (let* ((output (assoc-ref outputs "out"))
+ (doc_out (assoc-ref outputs "doc"))
+ (bash (string-append (assoc-ref inputs "bash") "bin/bash"))
+ (docs (string-append doc_out "/share/doc/" ,name "-" ,version))
+ (src (string-append
+ (assoc-ref outputs "src") "/share/" ,name "-" ,version)))
+ (mkdir-p src)
+ (copy-recursively "../test" (string-append src "/test"))
+ (delete-file-recursively "../test")
+ (mkdir-p docs)
+ (copy-recursively "../api" (string-append docs "/api"))
+ (delete-file-recursively "../api")
+ (copy-recursively "../doc" (string-append docs "/doc"))
+ (delete-file-recursively "../doc")
+
+ (for-each
+ (lambda (file)
+ (let* ((filein (string-append "../" file))
+ (fileout (string-append docs "/" file)))
+ (copy-file filein fileout)
+ (delete-file filein)))
+ '("README" "CONTRIBUTORS" "AUTHORS" "PATENTS"
+ "LICENSE" "VERSION" "robots.txt"))
+ (copy-recursively "../" output)))))
+ #:tests? #f))
+ (inputs
+ `(("tzdata" ,tzdata)
+ ("pcre" ,pcre)))
+ (native-inputs
+ `(("pkg-config" ,%pkg-config)
+ ("which" ,which)
+ ("gcc:out" ,gcc-4.9 "out")
+ ("net-base" ,net-base)
+ ("perl" ,perl)))
+ (propagated-inputs
+ `(("gcc:lib" ,gcc-4.9 "lib")
+ ("glibc" ,glibc)))
+ (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.8.3
[-- Attachment #3: Type: text/plain, Size: 53 bytes --]
Respectfully,
--
Matthew Jordan
Sent with my mu4e
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [Patch] go@1.4 Updated patch
2016-06-03 17:39 ` Matthew Jordan
@ 2016-06-06 8:23 ` Andy Wingo
2016-06-06 9:05 ` Alex Vong
2016-06-09 17:07 ` Matthew Jordan
0 siblings, 2 replies; 19+ messages in thread
From: Andy Wingo @ 2016-06-06 8:23 UTC (permalink / raw)
To: Matthew Jordan; +Cc: guix-devel
Hi :)
Looking good! I have some style nits :)
On Fri 03 Jun 2016 19:39, Matthew Jordan <matthewjordandevops@yandex.com> writes:
> + ;; Removing net/ tests
> + (for-each
> + (lambda (srcfile)
> + (let ((srcfile (string-append "net/" srcfile)))
> + (if (file-exists? srcfile)
> + (delete-file srcfile))))
> + '("multicast_test.go" "parse_test.go" "port_test.go"))
Either these files exist or they do not. Better to just have three
unconditional delete-file invocations.
> +
> + ;; Add libgcc to runpath
> + (substitute* "cmd/go/build.go"
> + (("cgoldflags := \\[\\]string\\{\\}")
> + (string-append "cgoldflags := []string{"
> + "\"-rpath=" gcclib "\""
> + "}"))
> + (("ldflags := buildLdflags")
> + (string-append
> + "ldflags := buildLdflags\n"
> + "ldflags = append(ldflags, \"-r\")\n"
> + "ldflags = append(ldflags, \"" gcclib "\")\n")))
> +
> + (substitute* "os/os_test.go"
> + (("/usr/bin") (getcwd))
> + (("/bin/pwd") (which "pwd")))
> +
> + ;; Disable failing tests
> + (for-each
> + (lambda (srcfile)
> + (substitute* (car srcfile)
> + (((cdr srcfile) all) (string-append all "return\n"))))
Is this a nice way to disable tests? I dunno. Why not change the test
name from TestFoo to DisabledTestFoo ? Then it would not get run.
Also let's avoid car and cdr, and instead use match-lambda:
(match-lambda
((file . pattern)
...))
But let's also avoid dotted pairs in bigger literal data structures;
it's ugly when there's lots of punctuation around. So if you change the
lines to be like
("net/net_test.go" ".+TestShutdownUnix.+")
you can
(match-lambda
((file pattern)
...))
Note the lack of " . ".
> + (list
> + '("net/net_test.go" . ".+TestShutdownUnix.+")
> + '("net/dial_test.go" . ".+TestDialTimeout.+")
Here make the whole list a literal instead of calling `list' on a list
of quoted datums:
'(("net/net_test.go" ".+TestHostname.+")
...)
Cheers,
Andy
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Patch] go@1.4 Updated patch
2016-06-06 8:23 ` Andy Wingo
@ 2016-06-06 9:05 ` Alex Vong
2016-06-06 12:34 ` Andy Wingo
2016-06-09 17:07 ` Matthew Jordan
1 sibling, 1 reply; 19+ messages in thread
From: Alex Vong @ 2016-06-06 9:05 UTC (permalink / raw)
To: Andy Wingo; +Cc: guix-devel, Matthew Jordan
Hello,
I think match-lambda is not documented in the guile manual (it only
appears in an example). While its usage is more or less the same as in
racket, I think it should be documented. What is your idea?
Thanks,
Alex
On 06/06/2016, Andy Wingo <wingo@igalia.com> wrote:
> Hi :)
>
> Looking good! I have some style nits :)
>
> On Fri 03 Jun 2016 19:39, Matthew Jordan <matthewjordandevops@yandex.com>
> writes:
>
>> + ;; Removing net/ tests
>> + (for-each
>> + (lambda (srcfile)
>> + (let ((srcfile (string-append "net/" srcfile)))
>> + (if (file-exists? srcfile)
>> + (delete-file srcfile))))
>> + '("multicast_test.go" "parse_test.go" "port_test.go"))
>
> Either these files exist or they do not. Better to just have three
> unconditional delete-file invocations.
>
>> +
>> + ;; Add libgcc to runpath
>> + (substitute* "cmd/go/build.go"
>> + (("cgoldflags := \\[\\]string\\{\\}")
>> + (string-append "cgoldflags := []string{"
>> + "\"-rpath=" gcclib "\""
>> + "}"))
>> + (("ldflags := buildLdflags")
>> + (string-append
>> + "ldflags := buildLdflags\n"
>> + "ldflags = append(ldflags, \"-r\")\n"
>> + "ldflags = append(ldflags, \"" gcclib "\")\n")))
>> +
>> + (substitute* "os/os_test.go"
>> + (("/usr/bin") (getcwd))
>> + (("/bin/pwd") (which "pwd")))
>> +
>> + ;; Disable failing tests
>> + (for-each
>> + (lambda (srcfile)
>> + (substitute* (car srcfile)
>> + (((cdr srcfile) all) (string-append all
>> "return\n"))))
>
> Is this a nice way to disable tests? I dunno. Why not change the test
> name from TestFoo to DisabledTestFoo ? Then it would not get run.
>
> Also let's avoid car and cdr, and instead use match-lambda:
>
> (match-lambda
> ((file . pattern)
> ...))
>
> But let's also avoid dotted pairs in bigger literal data structures;
> it's ugly when there's lots of punctuation around. So if you change the
> lines to be like
>
> ("net/net_test.go" ".+TestShutdownUnix.+")
>
> you can
>
> (match-lambda
> ((file pattern)
> ...))
>
> Note the lack of " . ".
>
>> + (list
>> + '("net/net_test.go" . ".+TestShutdownUnix.+")
>> + '("net/dial_test.go" . ".+TestDialTimeout.+")
>
> Here make the whole list a literal instead of calling `list' on a list
> of quoted datums:
>
> '(("net/net_test.go" ".+TestHostname.+")
> ...)
>
> Cheers,
>
> Andy
>
>
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Patch] go@1.4 Updated patch
2016-06-06 8:23 ` Andy Wingo
2016-06-06 9:05 ` Alex Vong
@ 2016-06-09 17:07 ` Matthew Jordan
2016-06-12 19:22 ` Ludovic Courtès
1 sibling, 1 reply; 19+ messages in thread
From: Matthew Jordan @ 2016-06-09 17:07 UTC (permalink / raw)
To: Andy Wingo; +Cc: guix-devel
[-- Attachment #1: Type: text/plain, Size: 80 bytes --]
Good Day,
I have updated the package in accordance with the suggestions made.
[-- Attachment #2: Patch to add go@1.4 package. --]
[-- Type: text/x-patch, Size: 9974 bytes --]
From 16ff70593c243290d0fe6288e75caeb2897d292c Mon Sep 17 00:00:00 2001
From: Matthew Jordan <matthewjordandevops@yandex.com>
Date: Thu, 26 May 2016 08:57:16 -0400
Subject: [PATCH] gnu: Add go@1.4
* gnu/local.mk: Modified file.
* gnu/packages/golang.scm: New file.
Co-author: Efraim Flashner <efraim@flashner.co.il>
Co-author: Andy Wingo <wingo@igalia.com>
---
gnu/local.mk | 1 +
gnu/packages/golang.scm | 189 ++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 190 insertions(+)
create mode 100644 gnu/packages/golang.scm
diff --git a/gnu/local.mk b/gnu/local.mk
index 8915c46..d03b00d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -147,6 +147,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/gnustep.scm \
%D%/packages/gnuzilla.scm \
%D%/packages/gnu-pw-mgr.scm \
+ %D%/packages/golang.scm \
%D%/packages/gperf.scm \
%D%/packages/gprolog.scm \
%D%/packages/gps.scm \
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
new file mode 100644
index 0000000..5652bbd
--- /dev/null
+++ b/gnu/packages/golang.scm
@@ -0,0 +1,189 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
+;;; Copyright © 2016 Andy Wingo <wingo@igalia.com>
+;;;
+;;; This file is an addendum 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 utils)
+ #:use-module (guix build-system gnu)
+ #:use-module (gnu packages admin)
+ #:use-module (gnu packages gcc)
+ #:use-module ((gnu packages base) #:prefix system:)
+ #:use-module (gnu packages perl)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages pcre)
+ #:use-module (ice-9 match)
+ #: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
+;; 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-public go-1.4
+ (package
+ (name "go")
+ (version "1.4.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://storage.googleapis.com/golang/"
+ name version ".src.tar.gz"))
+ (sha256
+ (base32
+ "0na9yqilzpvq0bjndbibfp07wr796gf252y471cip10bbdqgqiwr"))))
+ (build-system gnu-build-system)
+ (outputs '("out"
+ "doc"
+ "src"))
+ (arguments
+ `(#:modules ((ice-9 match)
+ (guix build gnu-build-system)
+ (guix build utils))
+ #:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (add-after 'patch-generated-file-shebangs 'chdir
+ (lambda _ (chdir "src")))
+ (add-before 'build 'prebuild
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((gcclib (string-append (assoc-ref inputs "gcc:lib") "/lib"))
+ (ld (string-append
+ (assoc-ref inputs "glibc") "/lib"))
+ (loader (car (find-files ld "^ld-linux.+")))
+ (net-base (assoc-ref inputs "net-base"))
+ (tzdata-path
+ (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo"))
+ (output (assoc-ref outputs "out")))
+
+ ;; Removing net/ tests
+ (for-each
+ (lambda (srcfile)
+ (let ((srcfile (string-append "net/" srcfile)))
+ (delete-file srcfile)))
+ '("multicast_test.go" "parse_test.go" "port_test.go"))
+
+ ;; Add libgcc to runpath
+ (substitute* "cmd/go/build.go"
+ (("cgoldflags := \\[\\]string\\{\\}")
+ (string-append "cgoldflags := []string{"
+ "\"-rpath=" gcclib "\""
+ "}"))
+ (("ldflags := buildLdflags")
+ (string-append
+ "ldflags := buildLdflags\n"
+ "ldflags = append(ldflags, \"-r\")\n"
+ "ldflags = append(ldflags, \"" gcclib "\")\n")))
+
+ (substitute* "os/os_test.go"
+ (("/usr/bin") (getcwd))
+ (("/bin/pwd") (which "pwd")))
+
+ ;; Disable failing tests
+ (map
+ (match-lambda
+ ((file regex)
+ (substitute* file
+ ((regex all before test_name)
+ (string-append before "Disabled" test_name)))))
+ '(("net/net_test.go" "(.+)(TestShutdownUnix.+)")
+ ("net/dial_test.go" "(.+)(TestDialTimeout.+)")
+ ("os/os_test.go" "(.+)(TestHostname.+)")
+ ("time/format_test.go" "(.+)(TestParseInSydney.+)")
+ ("os/exec/exec_test.go" "(.+)(TestEcho.+)")
+ ("os/exec/exec_test.go" "(.+)(TestCommandRelativeName.+)")
+ ("os/exec/exec_test.go" "(.+)(TestCatStdin.+)")
+ ("os/exec/exec_test.go" "(.+)(TestCatGoodAndBadFile.+)")
+ ("os/exec/exec_test.go" "(.+)(TestExitStatus.+)")
+ ("os/exec/exec_test.go" "(.+)(TestPipes.+)")
+ ("os/exec/exec_test.go" "(.+)(TestStdinClose.+)")
+ ("syscall/syscall_unix_test.go" "(.+)(TestPassFD\\(.+)")
+ ("os/exec/exec_test.go" "(.+)(TestExtraFiles.+)")))
+
+ (substitute* "net/lookup_unix.go"
+ (("/etc/protocols") (string-append net-base "/etc/protocols")))
+ (substitute* "time/zoneinfo_unix.go"
+ (("/usr/share/zoneinfo/") tzdata-path))
+ (substitute*
+ (find-files "cmd" "asm.c")
+ (("/lib/ld-linux.*\\.so\\.[0-9]") loader)))))
+
+ (replace 'build
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((output (assoc-ref outputs "out")))
+ (setenv "CC" (which "gcc"))
+ (setenv "GOOS" "linux")
+ (setenv "GOROOT" (dirname (getcwd)))
+ (setenv "GOROOT_FINAL" output)
+ (setenv "CGO_ENABLED" "1")
+ (zero? (system* "sh" "all.bash")))))
+
+ (replace 'install
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (let* ((output (assoc-ref outputs "out"))
+ (doc_out (assoc-ref outputs "doc"))
+ (bash (string-append (assoc-ref inputs "bash") "bin/bash"))
+ (docs (string-append doc_out "/share/doc/" ,name "-" ,version))
+ (src (string-append
+ (assoc-ref outputs "src") "/share/" ,name "-" ,version)))
+ (mkdir-p src)
+ (copy-recursively "../test" (string-append src "/test"))
+ (delete-file-recursively "../test")
+ (mkdir-p docs)
+ (copy-recursively "../api" (string-append docs "/api"))
+ (delete-file-recursively "../api")
+ (copy-recursively "../doc" (string-append docs "/doc"))
+ (delete-file-recursively "../doc")
+
+ (for-each
+ (lambda (file)
+ (let* ((filein (string-append "../" file))
+ (fileout (string-append docs "/" file)))
+ (copy-file filein fileout)
+ (delete-file filein)))
+ '("README" "CONTRIBUTORS" "AUTHORS" "PATENTS"
+ "LICENSE" "VERSION" "robots.txt"))
+ (copy-recursively "../" output)))))))
+ (inputs
+ `(("tzdata" ,system:tzdata)
+ ("pcre" ,pcre)))
+ (native-inputs
+ `(("pkg-config" ,%pkg-config)
+ ("which" ,system:which)
+ ("gcc:out" ,gcc-4.9 "out")
+ ("net-base" ,net-base)
+ ("perl" ,perl)))
+ (propagated-inputs
+ `(("gcc:lib" ,gcc-4.9 "lib")
+ ("glibc" ,system:glibc)))
+ (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.8.3
[-- Attachment #3: Type: text/plain, Size: 37 bytes --]
--
Matthew Jordan
Sent with my mu4e
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [Patch] go@1.4 Updated patch
2016-06-09 17:07 ` Matthew Jordan
@ 2016-06-12 19:22 ` Ludovic Courtès
2016-06-14 12:45 ` Ludovic Courtès
2016-06-26 22:14 ` Matthew Jordan
0 siblings, 2 replies; 19+ messages in thread
From: Ludovic Courtès @ 2016-06-12 19:22 UTC (permalink / raw)
To: Matthew Jordan; +Cc: guix-devel
[-- Attachment #1: Type: text/plain, Size: 552 bytes --]
Hi!
It seems we’re almost done! I was about to commit it with the changes
below on top of the patch you posted (they are mostly cosmetic.)
Since there are parts I don’t fully understand, I thought I’d leave it
up to you. In particular, could you could at least replace the “why” in
the comments below with explanations of why this is done?
Also, why do we need this “src” output? IIUC, it contains the source of
some of the unit tests, right?
Thank you for persevering in spite of all the nitpicks! :-)
Ludo’.
[-- Attachment #2: Type: text/x-patch, Size: 7602 bytes --]
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 5652bbd..dbb8283 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
;;; Copyright © 2016 Andy Wingo <wingo@igalia.com>
;;;
@@ -23,11 +23,10 @@
#:use-module (guix utils)
#:use-module (guix download)
#:use-module (guix packages)
- #:use-module (guix build utils)
#:use-module (guix build-system gnu)
#:use-module (gnu packages admin)
#:use-module (gnu packages gcc)
- #:use-module ((gnu packages base) #:prefix system:)
+ #:use-module (gnu packages base)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages pcre)
@@ -46,18 +45,17 @@
(package
(name "go")
(version "1.4.3")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "https://storage.googleapis.com/golang/"
- name version ".src.tar.gz"))
- (sha256
- (base32
- "0na9yqilzpvq0bjndbibfp07wr796gf252y471cip10bbdqgqiwr"))))
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://storage.googleapis.com/golang/"
+ name version ".src.tar.gz"))
+ (sha256
+ (base32
+ "0na9yqilzpvq0bjndbibfp07wr796gf252y471cip10bbdqgqiwr"))))
(build-system gnu-build-system)
(outputs '("out"
"doc"
- "src"))
+ "src")) ;What's this?
(arguments
`(#:modules ((ice-9 match)
(guix build gnu-build-system)
@@ -68,30 +66,27 @@
(delete 'configure)
(add-after 'patch-generated-file-shebangs 'chdir
(lambda _ (chdir "src")))
- (add-before 'build 'prebuild
+ (add-before 'build 'pre-build
(lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((gcclib (string-append (assoc-ref inputs "gcc:lib") "/lib"))
- (ld (string-append
- (assoc-ref inputs "glibc") "/lib"))
+ (let* ((gcclib (string-append (assoc-ref inputs "gcc:lib")
+ "/lib"))
+ (ld (string-append (assoc-ref inputs "libc") "/lib"))
(loader (car (find-files ld "^ld-linux.+")))
(net-base (assoc-ref inputs "net-base"))
(tzdata-path
(string-append (assoc-ref inputs "tzdata") "/share/zoneinfo"))
(output (assoc-ref outputs "out")))
- ;; Removing net/ tests
- (for-each
- (lambda (srcfile)
- (let ((srcfile (string-append "net/" srcfile)))
- (delete-file srcfile)))
- '("multicast_test.go" "parse_test.go" "port_test.go"))
+ ;; Remove net/ tests. Why?
+ (for-each delete-file
+ '("net/multicast_test.go" "net/parse_test.go"
+ "net/port_test.go"))
- ;; Add libgcc to runpath
+ ;; Add libgcc to the RUNPATH.
(substitute* "cmd/go/build.go"
(("cgoldflags := \\[\\]string\\{\\}")
(string-append "cgoldflags := []string{"
- "\"-rpath=" gcclib "\""
- "}"))
+ "\"-rpath=" gcclib "\"" "}"))
(("ldflags := buildLdflags")
(string-append
"ldflags := buildLdflags\n"
@@ -102,8 +97,8 @@
(("/usr/bin") (getcwd))
(("/bin/pwd") (which "pwd")))
- ;; Disable failing tests
- (map
+ ;; Disable failing tests. (XXX: Why?)
+ (for-each
(match-lambda
((file regex)
(substitute* file
@@ -127,9 +122,9 @@
(("/etc/protocols") (string-append net-base "/etc/protocols")))
(substitute* "time/zoneinfo_unix.go"
(("/usr/share/zoneinfo/") tzdata-path))
- (substitute*
- (find-files "cmd" "asm.c")
- (("/lib/ld-linux.*\\.so\\.[0-9]") loader)))))
+ (substitute* (find-files "cmd" "asm.c")
+ (("/lib/ld-linux.*\\.so\\.[0-9]") loader))
+ #t)))
(replace 'build
(lambda* (#:key inputs outputs #:allow-other-keys)
@@ -144,11 +139,12 @@
(replace 'install
(lambda* (#:key outputs inputs #:allow-other-keys)
(let* ((output (assoc-ref outputs "out"))
- (doc_out (assoc-ref outputs "doc"))
+ (doc-out (assoc-ref outputs "doc"))
(bash (string-append (assoc-ref inputs "bash") "bin/bash"))
- (docs (string-append doc_out "/share/doc/" ,name "-" ,version))
+ (docs (string-append doc-out "/share/doc/" ,name "-" ,version))
(src (string-append
- (assoc-ref outputs "src") "/share/" ,name "-" ,version)))
+ (assoc-ref outputs "src") "/share/"
+ ,name "-" ,version)))
(mkdir-p src)
(copy-recursively "../test" (string-append src "/test"))
(delete-file-recursively "../test")
@@ -158,27 +154,24 @@
(copy-recursively "../doc" (string-append docs "/doc"))
(delete-file-recursively "../doc")
- (for-each
- (lambda (file)
- (let* ((filein (string-append "../" file))
- (fileout (string-append docs "/" file)))
- (copy-file filein fileout)
- (delete-file filein)))
- '("README" "CONTRIBUTORS" "AUTHORS" "PATENTS"
- "LICENSE" "VERSION" "robots.txt"))
- (copy-recursively "../" output)))))))
+ (for-each (lambda (file)
+ (let ((file (string-append "../" file)))
+ (install-file file docs)
+ (delete-file file)))
+ '("README" "CONTRIBUTORS" "AUTHORS" "PATENTS"
+ "LICENSE" "VERSION" "robots.txt"))
+ (copy-recursively "../" output)
+ #t))))))
(inputs
- `(("tzdata" ,system:tzdata)
- ("pcre" ,pcre)))
+ `(("tzdata" ,tzdata)
+ ("pcre" ,pcre)
+ ("gcc:lib" ,gcc "lib")))
(native-inputs
`(("pkg-config" ,%pkg-config)
- ("which" ,system:which)
- ("gcc:out" ,gcc-4.9 "out")
+ ("which" ,which)
("net-base" ,net-base)
("perl" ,perl)))
- (propagated-inputs
- `(("gcc:lib" ,gcc-4.9 "lib")
- ("glibc" ,system:glibc)))
+
(home-page "https://golang.org/")
(synopsis "Compiled, statically typed language developed by Google")
(description "Go, also commonly referred to as golang, is a programming
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [Patch] go@1.4 Updated patch
2016-06-12 19:22 ` Ludovic Courtès
@ 2016-06-14 12:45 ` Ludovic Courtès
2016-06-26 22:17 ` Matthew Jordan
2016-06-26 22:14 ` Matthew Jordan
1 sibling, 1 reply; 19+ messages in thread
From: Ludovic Courtès @ 2016-06-14 12:45 UTC (permalink / raw)
To: Matthew Jordan; +Cc: guix-devel
ludo@gnu.org (Ludovic Courtès) skribis:
> It seems we’re almost done! I was about to commit it with the changes
> below on top of the patch you posted (they are mostly cosmetic.)
>
> Since there are parts I don’t fully understand, I thought I’d leave it
> up to you. In particular, could you could at least replace the “why” in
> the comments below with explanations of why this is done?
>
> Also, why do we need this “src” output? IIUC, it contains the source of
> some of the unit tests, right?
One last thing I forgot to mention: building with --rounds=2 shows that
the build is not reproducible (some differences in a few .a files.)
If you prefer, we can address it in a later patch, though.
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Patch] go@1.4 Updated patch
2016-06-14 12:45 ` Ludovic Courtès
@ 2016-06-26 22:17 ` Matthew Jordan
2016-06-27 12:13 ` Ludovic Courtès
0 siblings, 1 reply; 19+ messages in thread
From: Matthew Jordan @ 2016-06-26 22:17 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: guix-devel
Good Day,
> One last thing I forgot to mention: building with --rounds=2 shows that
> the build is not reproducible (some differences in a few .a files.)
>
> If you prefer, we can address it in a later patch, though.
Yes I would prefer address this issue in a later patch.
Respectuflly,
--
Matthew Jordan
Sent with my mu4e
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Patch] go@1.4 Updated patch
2016-06-26 22:17 ` Matthew Jordan
@ 2016-06-27 12:13 ` Ludovic Courtès
2016-06-28 0:02 ` Matthew Jordan
0 siblings, 1 reply; 19+ messages in thread
From: Ludovic Courtès @ 2016-06-27 12:13 UTC (permalink / raw)
To: Matthew Jordan; +Cc: guix-devel
Matthew Jordan <matthewjordandevops@yandex.com> skribis:
>> One last thing I forgot to mention: building with --rounds=2 shows that
>> the build is not reproducible (some differences in a few .a files.)
>>
>> If you prefer, we can address it in a later patch, though.
>
> Yes I would prefer address this issue in a later patch.
Sure, let’s keep that in mind and address it later (but not too late
;-)).
I also noticed the unusual file system layout in the main output:
--8<---------------cut here---------------start------------->8---
$ ls $(./pre-inst-env guix build go)
/gnu/store/05al7hhwng4a5hs1ix2i4agqzm9cs4gy-go-1.4.3-doc:
share
/gnu/store/6f6ns5c7gfr79pl190r9xjyx6rbx1vv1-go-1.4.3-tests:
share
/gnu/store/873c46bpppjssni07xk1j8r10ky4ybwz-go-1.4.3:
bin favicon.ico include lib misc pkg src
--8<---------------cut here---------------end--------------->8---
It would be nice to move misc/, pkg/, src/, and favicon.ico to
conventional directories (lib/ or share/ I guess.)
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Patch] go@1.4 Updated patch
2016-06-27 12:13 ` Ludovic Courtès
@ 2016-06-28 0:02 ` Matthew Jordan
0 siblings, 0 replies; 19+ messages in thread
From: Matthew Jordan @ 2016-06-28 0:02 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: guix-devel
> I also noticed the unusual file system layout in the main output:
>
> --8<---------------cut here---------------start------------->8---
> $ ls $(./pre-inst-env guix build go)
> /gnu/store/05al7hhwng4a5hs1ix2i4agqzm9cs4gy-go-1.4.3-doc:
> share
>
> /gnu/store/6f6ns5c7gfr79pl190r9xjyx6rbx1vv1-go-1.4.3-tests:
> share
>
> /gnu/store/873c46bpppjssni07xk1j8r10ky4ybwz-go-1.4.3:
> bin favicon.ico include lib misc pkg src
> --8<---------------cut here---------------end--------------->8---
>
> It would be nice to move misc/, pkg/, src/, and favicon.ico to
> conventional directories (lib/ or share/ I guess.)
Okay will look into that next, before submitting the next golang version.
--
Matthew Jordan
Sent with my mu4e
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Patch] go@1.4 Updated patch
2016-06-12 19:22 ` Ludovic Courtès
2016-06-14 12:45 ` Ludovic Courtès
@ 2016-06-26 22:14 ` Matthew Jordan
2016-06-27 12:11 ` Ludovic Courtès
2016-06-27 15:20 ` Leo Famulari
1 sibling, 2 replies; 19+ messages in thread
From: Matthew Jordan @ 2016-06-26 22:14 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: guix-devel
[-- Attachment #1: Type: text/plain, Size: 711 bytes --]
Good Day,
> Since there are parts I don’t fully understand, I thought I’d leave it
> up to you. In particular, could you could at least replace the “why” in
> the comments below with explanations of why this is done?
I updated the patch with additional comments as suggested. Let me know
if more information is needed.
> Also, why do we need this “src” output? IIUC, it contains the source of
> some of the unit tests, right?
I changed the "src" output to "tests", to clarify.
> Thank you for persevering in spite of all the nitpicks! :-)
No problem, just been a bit busy with work lately. But more than happy
to help. Plus it's been quite the learning experience.
[-- Attachment #2: Patch to add go@1.4 compiler. --]
[-- Type: text/x-patch, Size: 10341 bytes --]
From 9063100cfec1b8f31d3da31465b03ed54a9469e5 Mon Sep 17 00:00:00 2001
From: Matthew Jordan <matthewjordandevops@yandex.com>
Date: Thu, 26 May 2016 08:57:16 -0400
Subject: [PATCH] gnu: Add go@1.4
* gnu/local.mk: Modified file.
* gnu/packages/golang.scm: New file.
Co-author: Efraim Flashner <efraim@flashner.co.il>
Co-author: Andy Wingo <wingo@igalia.com>
---
gnu/local.mk | 1 +
gnu/packages/golang.scm | 193 ++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 194 insertions(+)
create mode 100644 gnu/packages/golang.scm
diff --git a/gnu/local.mk b/gnu/local.mk
index 956be9b..32b46b9 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -150,6 +150,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/gnustep.scm \
%D%/packages/gnuzilla.scm \
%D%/packages/gnu-pw-mgr.scm \
+ %D%/packages/golang.scm \
%D%/packages/gperf.scm \
%D%/packages/gprolog.scm \
%D%/packages/gps.scm \
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
new file mode 100644
index 0000000..9bbfd81
--- /dev/null
+++ b/gnu/packages/golang.scm
@@ -0,0 +1,193 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
+;;; Copyright © 2016 Andy Wingo <wingo@igalia.com>
+;;;
+;;; This file is an addendum 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 utils)
+ #:use-module (guix build-system gnu)
+ #:use-module (gnu packages admin)
+ #:use-module (gnu packages gcc)
+ #:use-module ((gnu packages base) #:prefix system:)
+ #:use-module (gnu packages perl)
+ #:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages pcre)
+ #:use-module (ice-9 match)
+ #: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
+;; 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-public go-1.4
+ (package
+ (name "go")
+ (version "1.4.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://storage.googleapis.com/golang/"
+ name version ".src.tar.gz"))
+ (sha256
+ (base32
+ "0na9yqilzpvq0bjndbibfp07wr796gf252y471cip10bbdqgqiwr"))))
+ (build-system gnu-build-system)
+ (outputs '("out"
+ "doc"
+ "tests"))
+ (arguments
+ `(#:modules ((ice-9 match)
+ (guix build gnu-build-system)
+ (guix build utils))
+ #:tests? #f ; Tests are run by the all.bash script.
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (add-after 'patch-generated-file-shebangs 'chdir
+ (lambda _ (chdir "src")))
+ (add-before 'build 'prebuild
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((gcclib (string-append (assoc-ref inputs "gcc:lib") "/lib"))
+ (ld (string-append
+ (assoc-ref inputs "glibc") "/lib"))
+ (loader (car (find-files ld "^ld-linux.+")))
+ (net-base (assoc-ref inputs "net-base"))
+ (tzdata-path
+ (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo"))
+ (output (assoc-ref outputs "out")))
+
+ ;; Removing net/ tests
+ ;; Reason: Build fails when tests attempt to access network resources
+ ;; not present in the build container
+ (for-each
+ (lambda (srcfile)
+ (let ((srcfile (string-append "net/" srcfile)))
+ (delete-file srcfile)))
+ '("multicast_test.go" "parse_test.go" "port_test.go"))
+
+ ;; Add libgcc to runpath
+ (substitute* "cmd/go/build.go"
+ (("cgoldflags := \\[\\]string\\{\\}")
+ (string-append "cgoldflags := []string{"
+ "\"-rpath=" gcclib "\""
+ "}"))
+ (("ldflags := buildLdflags")
+ (string-append
+ "ldflags := buildLdflags\n"
+ "ldflags = append(ldflags, \"-r\")\n"
+ "ldflags = append(ldflags, \"" gcclib "\")\n")))
+
+ (substitute* "os/os_test.go"
+ (("/usr/bin") (getcwd))
+ (("/bin/pwd") (which "pwd")))
+
+ ;; Disable failing tests
+ ;; Reason: These tests attempt to access commands or network resources
+ ;; which are neither available or necessary for the build to succeed.
+ (map
+ (match-lambda
+ ((file regex)
+ (substitute* file
+ ((regex all before test_name)
+ (string-append before "Disabled" test_name)))))
+ '(("net/net_test.go" "(.+)(TestShutdownUnix.+)")
+ ("net/dial_test.go" "(.+)(TestDialTimeout.+)")
+ ("os/os_test.go" "(.+)(TestHostname.+)")
+ ("time/format_test.go" "(.+)(TestParseInSydney.+)")
+ ("os/exec/exec_test.go" "(.+)(TestEcho.+)")
+ ("os/exec/exec_test.go" "(.+)(TestCommandRelativeName.+)")
+ ("os/exec/exec_test.go" "(.+)(TestCatStdin.+)")
+ ("os/exec/exec_test.go" "(.+)(TestCatGoodAndBadFile.+)")
+ ("os/exec/exec_test.go" "(.+)(TestExitStatus.+)")
+ ("os/exec/exec_test.go" "(.+)(TestPipes.+)")
+ ("os/exec/exec_test.go" "(.+)(TestStdinClose.+)")
+ ("syscall/syscall_unix_test.go" "(.+)(TestPassFD\\(.+)")
+ ("os/exec/exec_test.go" "(.+)(TestExtraFiles.+)")))
+
+ (substitute* "net/lookup_unix.go"
+ (("/etc/protocols") (string-append net-base "/etc/protocols")))
+ (substitute* "time/zoneinfo_unix.go"
+ (("/usr/share/zoneinfo/") tzdata-path))
+ (substitute*
+ (find-files "cmd" "asm.c")
+ (("/lib/ld-linux.*\\.so\\.[0-9]") loader)))))
+
+ (replace 'build
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((output (assoc-ref outputs "out")))
+ (setenv "CC" (which "gcc"))
+ (setenv "GOOS" "linux")
+ (setenv "GOROOT" (dirname (getcwd)))
+ (setenv "GOROOT_FINAL" output)
+ (setenv "CGO_ENABLED" "1")
+ (zero? (system* "sh" "all.bash")))))
+
+ (replace 'install
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (let* ((output (assoc-ref outputs "out"))
+ (doc_out (assoc-ref outputs "doc"))
+ (bash (string-append (assoc-ref inputs "bash") "bin/bash"))
+ (docs (string-append doc_out "/share/doc/" ,name "-" ,version))
+ (tests (string-append
+ (assoc-ref outputs "tests") "/share/" ,name "-" ,version)))
+ (mkdir-p tests)
+ (copy-recursively "../test" (string-append tests "/test"))
+ (delete-file-recursively "../test")
+ (mkdir-p docs)
+ (copy-recursively "../api" (string-append docs "/api"))
+ (delete-file-recursively "../api")
+ (copy-recursively "../doc" (string-append docs "/doc"))
+ (delete-file-recursively "../doc")
+
+ (for-each
+ (lambda (file)
+ (let* ((filein (string-append "../" file))
+ (fileout (string-append docs "/" file)))
+ (copy-file filein fileout)
+ (delete-file filein)))
+ '("README" "CONTRIBUTORS" "AUTHORS" "PATENTS"
+ "LICENSE" "VERSION" "robots.txt"))
+ (copy-recursively "../" output)))))))
+ (inputs
+ `(("tzdata" ,system:tzdata)
+ ("pcre" ,pcre)))
+ (native-inputs
+ `(("pkg-config" ,%pkg-config)
+ ("which" ,system:which)
+ ("gcc:out" ,gcc-4.9 "out")
+ ("net-base" ,net-base)
+ ("perl" ,perl)))
+ (propagated-inputs
+ `(("gcc:lib" ,gcc-4.9 "lib")
+ ("glibc" ,system:glibc)))
+ (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.8.3
[-- Attachment #3: Type: text/plain, Size: 49 bytes --]
Sincerely,
--
Matthew Jordan
Sent with my mu4e
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [Patch] go@1.4 Updated patch
2016-06-26 22:14 ` Matthew Jordan
@ 2016-06-27 12:11 ` Ludovic Courtès
2016-07-05 20:14 ` ng0
2016-06-27 15:20 ` Leo Famulari
1 sibling, 1 reply; 19+ messages in thread
From: Ludovic Courtès @ 2016-06-27 12:11 UTC (permalink / raw)
To: Matthew Jordan; +Cc: guix-devel
Hello,
Matthew Jordan <matthewjordandevops@yandex.com> skribis:
>> Also, why do we need this “src” output? IIUC, it contains the source of
>> some of the unit tests, right?
>
> I changed the "src" output to "tests", to clarify.
OK; it’s not clear to me if users need it, but it probably doesn’t hurt
to keep it.
> From 9063100cfec1b8f31d3da31465b03ed54a9469e5 Mon Sep 17 00:00:00 2001
> From: Matthew Jordan <matthewjordandevops@yandex.com>
> Date: Thu, 26 May 2016 08:57:16 -0400
> Subject: [PATCH] gnu: Add go@1.4
>
> * gnu/local.mk: Modified file.
> * gnu/packages/golang.scm: New file.
>
> Co-author: Efraim Flashner <efraim@flashner.co.il>
> Co-author: Andy Wingo <wingo@igalia.com>
Pushed as 7a2941a83ee8ecac9ca7a3a076b1231805b39bbd with the cosmetic
changes I had sent earlier.
Thank you!
Ludo’.
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Patch] go@1.4 Updated patch
2016-06-27 12:11 ` Ludovic Courtès
@ 2016-07-05 20:14 ` ng0
2016-07-11 8:42 ` Ludovic Courtès
0 siblings, 1 reply; 19+ messages in thread
From: ng0 @ 2016-07-05 20:14 UTC (permalink / raw)
To: guix-devel
Ludovic Courtès writes:
> Hello,
>
> Matthew Jordan <matthewjordandevops@yandex.com> skribis:
>
>>> Also, why do we need this “src” output? IIUC, it contains the source of
>>> some of the unit tests, right?
>>
>> I changed the "src" output to "tests", to clarify.
>
> OK; it’s not clear to me if users need it, but it probably doesn’t hurt
> to keep it.
>
>> From 9063100cfec1b8f31d3da31465b03ed54a9469e5 Mon Sep 17 00:00:00 2001
>> From: Matthew Jordan <matthewjordandevops@yandex.com>
>> Date: Thu, 26 May 2016 08:57:16 -0400
>> Subject: [PATCH] gnu: Add go@1.4
>>
>> * gnu/local.mk: Modified file.
>> * gnu/packages/golang.scm: New file.
>>
>> Co-author: Efraim Flashner <efraim@flashner.co.il>
>> Co-author: Andy Wingo <wingo@igalia.com>
>
> Pushed as 7a2941a83ee8ecac9ca7a3a076b1231805b39bbd with the cosmetic
> changes I had sent earlier.
>
> Thank you!
>
> Ludo’.
>
Could someone with the right privileges mark this in patchwork as
commited? I have no options in the below link to mark it as
anything.
http://patchwork.sourceware.org/patch/13377/
thanks
--
♥Ⓐ ng0
For non-prism friendly talk find me on http://www.psyced.org
SecuShare – http://secushare.org
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Patch] go@1.4 Updated patch
2016-06-26 22:14 ` Matthew Jordan
2016-06-27 12:11 ` Ludovic Courtès
@ 2016-06-27 15:20 ` Leo Famulari
2016-06-28 0:04 ` Matthew Jordan
1 sibling, 1 reply; 19+ messages in thread
From: Leo Famulari @ 2016-06-27 15:20 UTC (permalink / raw)
To: Matthew Jordan; +Cc: guix-devel
On Sun, Jun 26, 2016 at 06:14:48PM -0400, Matthew Jordan wrote:
> Subject: [PATCH] gnu: Add go@1.4
>
> * gnu/local.mk: Modified file.
> * gnu/packages/golang.scm: New file.
> + (replace 'install
> + (lambda* (#:key outputs inputs #:allow-other-keys)
> + (let* ((output (assoc-ref outputs "out"))
> + (doc_out (assoc-ref outputs "doc"))
> + (bash (string-append (assoc-ref inputs "bash") "bin/bash"))
What is this "bash" used for? I don't see it referred to in the install
phase.
^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2016-07-13 9:53 UTC | newest]
Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-06-03 11:42 [Patch] go@1.4 Updated patch Matthew Jordan
2016-06-03 15:40 ` Alex Griffin
2016-06-03 17:39 ` Matthew Jordan
2016-06-06 8:23 ` Andy Wingo
2016-06-06 9:05 ` Alex Vong
2016-06-06 12:34 ` Andy Wingo
2016-06-09 17:07 ` Matthew Jordan
2016-06-12 19:22 ` Ludovic Courtès
2016-06-14 12:45 ` Ludovic Courtès
2016-06-26 22:17 ` Matthew Jordan
2016-06-27 12:13 ` Ludovic Courtès
2016-06-28 0:02 ` Matthew Jordan
2016-06-26 22:14 ` Matthew Jordan
2016-06-27 12:11 ` Ludovic Courtès
2016-07-05 20:14 ` ng0
2016-07-11 8:42 ` Ludovic Courtès
2016-07-13 9:52 ` ng0
2016-06-27 15:20 ` Leo Famulari
2016-06-28 0:04 ` Matthew Jordan
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).