gnu: Add Go 1.12.
* gnu/packages/golang.scm (go-1.12): New variable. Signed-off-by: Leo Famulari <leo@famulari.name>
This commit is contained in:
		
							parent
							
								
									aef4c482a3
								
							
						
					
					
						commit
						18199da4b7
					
				
					 1 changed files with 187 additions and 1 deletions
				
			
		| 
						 | 
					@ -12,7 +12,7 @@
 | 
				
			||||||
;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
 | 
					;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
 | 
				
			||||||
;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
 | 
					;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
 | 
				
			||||||
;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
 | 
					;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
 | 
				
			||||||
;;; Copyright @ 2018 Katherine Cox-Buday <cox.katherine.e@gmail.com>
 | 
					;;; Copyright @ 2018, 2019 Katherine Cox-Buday <cox.katherine.e@gmail.com>
 | 
				
			||||||
;;; Copyright @ 2019 Giovanni Biscuolo <g@xelera.eu>
 | 
					;;; Copyright @ 2019 Giovanni Biscuolo <g@xelera.eu>
 | 
				
			||||||
;;;
 | 
					;;;
 | 
				
			||||||
;;; This file is part of GNU Guix.
 | 
					;;; This file is part of GNU Guix.
 | 
				
			||||||
| 
						 | 
					@ -414,6 +414,192 @@ in the style of communicating sequential processes (@dfn{CSP}).")
 | 
				
			||||||
       ,@(package-native-inputs go-1.4)))
 | 
					       ,@(package-native-inputs go-1.4)))
 | 
				
			||||||
    (supported-systems %supported-systems)))
 | 
					    (supported-systems %supported-systems)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define-public go-1.12
 | 
				
			||||||
 | 
					  (package
 | 
				
			||||||
 | 
					    (inherit go-1.4)
 | 
				
			||||||
 | 
					    (name "go")
 | 
				
			||||||
 | 
					    (version "1.12.1")
 | 
				
			||||||
 | 
					    (source
 | 
				
			||||||
 | 
					     (origin
 | 
				
			||||||
 | 
					       (method url-fetch)
 | 
				
			||||||
 | 
					       (uri (string-append "https://storage.googleapis.com/golang/"
 | 
				
			||||||
 | 
					                           name version ".src.tar.gz"))
 | 
				
			||||||
 | 
					       (sha256
 | 
				
			||||||
 | 
					        (base32
 | 
				
			||||||
 | 
					         "12l12mmgqvy3nbscy7sz83qj4m6iz5a322aq9sk45f7l9ml2gq8b"))))
 | 
				
			||||||
 | 
					    (arguments
 | 
				
			||||||
 | 
					     (substitute-keyword-arguments (package-arguments go-1.4)
 | 
				
			||||||
 | 
					       ((#:phases phases)
 | 
				
			||||||
 | 
					        `(modify-phases ,phases
 | 
				
			||||||
 | 
					           (replace 'prebuild
 | 
				
			||||||
 | 
					             (lambda* (#:key inputs outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					               (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")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                 ;; A side effect of these test scripts is testing
 | 
				
			||||||
 | 
					                 ;; cgo. Attempts at using cgo flags and directives with these
 | 
				
			||||||
 | 
					                 ;; scripts as specified here (https://golang.org/cmd/cgo/)
 | 
				
			||||||
 | 
					                 ;; have not worked. The tests continue to state that they can
 | 
				
			||||||
 | 
					                 ;; not find object files/headers despite being present.
 | 
				
			||||||
 | 
					                 (for-each
 | 
				
			||||||
 | 
					                  delete-file
 | 
				
			||||||
 | 
					                  '("cmd/go/testdata/script/mod_case_cgo.txt"
 | 
				
			||||||
 | 
					                    "cmd/go/testdata/script/list_find.txt"
 | 
				
			||||||
 | 
					                    "cmd/go/testdata/script/list_compiled_imports.txt"
 | 
				
			||||||
 | 
					                    "cmd/go/testdata/script/cgo_syso_issue29253.txt"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                 (substitute* "os/os_test.go"
 | 
				
			||||||
 | 
					                   (("/usr/bin") (getcwd))
 | 
				
			||||||
 | 
					                   (("/bin/pwd") (which "pwd"))
 | 
				
			||||||
 | 
					                   (("/bin/sh") (which "sh")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                 (substitute* "cmd/vendor/golang.org/x/sys/unix/syscall_unix_test.go"
 | 
				
			||||||
 | 
					                   (("/usr/bin") "/tmp"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                 ;; Add libgcc to runpath
 | 
				
			||||||
 | 
					                 (substitute* "cmd/link/internal/ld/lib.go"
 | 
				
			||||||
 | 
					                   (("!rpath.set") "true"))
 | 
				
			||||||
 | 
					                 (substitute* "cmd/go/internal/work/gccgo.go"
 | 
				
			||||||
 | 
					                   (("cgoldflags := \\[\\]string\\{\\}")
 | 
				
			||||||
 | 
					                    (string-append "cgoldflags := []string{"
 | 
				
			||||||
 | 
					                                   "\"-rpath=" gcclib "\""
 | 
				
			||||||
 | 
					                                   "}"))
 | 
				
			||||||
 | 
					                   (("\"-lgcc_s\", ")
 | 
				
			||||||
 | 
					                    (string-append
 | 
				
			||||||
 | 
					                     "\"-Wl,-rpath=" gcclib "\", \"-lgcc_s\", ")))
 | 
				
			||||||
 | 
					                 (substitute* "cmd/go/internal/work/gc.go"
 | 
				
			||||||
 | 
					                   (("ldflags = setextld\\(ldflags, compiler\\)")
 | 
				
			||||||
 | 
					                    (string-append
 | 
				
			||||||
 | 
					                     "ldflags = setextld(ldflags, compiler)\n"
 | 
				
			||||||
 | 
					                     "ldflags = append(ldflags, \"-r\")\n"
 | 
				
			||||||
 | 
					                     "ldflags = append(ldflags, \"" gcclib "\")\n")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                 ;; Disable failing tests: these tests attempt to access
 | 
				
			||||||
 | 
					                 ;; commands or network resources which are neither available
 | 
				
			||||||
 | 
					                 ;; nor necessary for the build to succeed.
 | 
				
			||||||
 | 
					                 (for-each
 | 
				
			||||||
 | 
					                  (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.+)")
 | 
				
			||||||
 | 
					                    ("net/cgo_unix_test.go" "(.+)(TestCgoLookupPort.+)")
 | 
				
			||||||
 | 
					                    ("net/cgo_unix_test.go" "(.+)(TestCgoLookupPortWithCancel.+)")
 | 
				
			||||||
 | 
					                    ;; 127.0.0.1 doesn't exist
 | 
				
			||||||
 | 
					                    ("net/cgo_unix_test.go" "(.+)(TestCgoLookupPTR.+)")
 | 
				
			||||||
 | 
					                    ;; 127.0.0.1 doesn't exist
 | 
				
			||||||
 | 
					                    ("net/cgo_unix_test.go" "(.+)(TestCgoLookupPTRWithCancel.+)")
 | 
				
			||||||
 | 
					                    ;; /etc/services doesn't exist
 | 
				
			||||||
 | 
					                    ("net/parse_test.go" "(.+)(TestReadLine.+)")
 | 
				
			||||||
 | 
					                    ("os/os_test.go" "(.+)(TestHostname.+)")
 | 
				
			||||||
 | 
					                    ;; The user's directory doesn't exist
 | 
				
			||||||
 | 
					                    ("os/os_test.go" "(.+)(TestUserHomeDir.+)")
 | 
				
			||||||
 | 
					                    ("time/format_test.go" "(.+)(TestParseInSydney.+)")
 | 
				
			||||||
 | 
					                    ("time/format_test.go" "(.+)(TestParseInLocation.+)")
 | 
				
			||||||
 | 
					                    ("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.+)")
 | 
				
			||||||
 | 
					                    ("os/exec/exec_test.go" "(.+)(TestIgnorePipeErrorOnSuccess.+)")
 | 
				
			||||||
 | 
					                    ("syscall/syscall_unix_test.go" "(.+)(TestPassFD\\(.+)")
 | 
				
			||||||
 | 
					                    ("os/exec/exec_test.go" "(.+)(TestExtraFiles/areturn.+)")
 | 
				
			||||||
 | 
					                    ("cmd/go/go_test.go" "(.+)(TestCoverageWithCgo.+)")
 | 
				
			||||||
 | 
					                    ("cmd/go/go_test.go" "(.+)(TestTwoPkgConfigs.+)")
 | 
				
			||||||
 | 
					                    ("os/exec/exec_test.go" "(.+)(TestOutputStderrCapture.+)")
 | 
				
			||||||
 | 
					                    ("os/exec/exec_test.go" "(.+)(TestExtraFiles.+)")
 | 
				
			||||||
 | 
					                    ("os/exec/exec_test.go" "(.+)(TestExtraFilesRace.+)")
 | 
				
			||||||
 | 
					                    ("net/lookup_test.go" "(.+)(TestLookupPort.+)")
 | 
				
			||||||
 | 
					                    ("syscall/exec_linux_test.go"
 | 
				
			||||||
 | 
					                     "(.+)(TestCloneNEWUSERAndRemapNoRootDisableSetgroups.+)")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                 ;; fix shebang for testar script
 | 
				
			||||||
 | 
					                 ;; note the target script is generated at build time.
 | 
				
			||||||
 | 
					                 (substitute* "../misc/cgo/testcarchive/carchive_test.go"
 | 
				
			||||||
 | 
					                   (("#!/usr/bin/env") (string-append "#!" (which "env"))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                 (substitute* "net/lookup_unix.go"
 | 
				
			||||||
 | 
					                   (("/etc/protocols") (string-append net-base "/etc/protocols")))
 | 
				
			||||||
 | 
					                 (substitute* "net/port_unix.go"
 | 
				
			||||||
 | 
					                   (("/etc/services") (string-append net-base "/etc/services")))
 | 
				
			||||||
 | 
					                 (substitute* "time/zoneinfo_unix.go"
 | 
				
			||||||
 | 
					                   (("/usr/share/zoneinfo/") tzdata-path))
 | 
				
			||||||
 | 
					                 (substitute* (find-files "cmd" "\\.go")
 | 
				
			||||||
 | 
					                   (("/lib(64)?/ld-linux.*\\.so\\.[0-9]") loader))
 | 
				
			||||||
 | 
					                 #t)))
 | 
				
			||||||
 | 
					           (add-before 'build 'set-bootstrap-variables
 | 
				
			||||||
 | 
					             (lambda* (#:key outputs inputs #:allow-other-keys)
 | 
				
			||||||
 | 
					               ;; Tell the build system where to find the bootstrap Go.
 | 
				
			||||||
 | 
					               (let ((go  (assoc-ref inputs "go")))
 | 
				
			||||||
 | 
					                 (setenv "GOROOT_BOOTSTRAP" go)
 | 
				
			||||||
 | 
					                 (setenv "GOGC" "400")
 | 
				
			||||||
 | 
					                 #t)))
 | 
				
			||||||
 | 
					           (replace 'build
 | 
				
			||||||
 | 
					             (lambda* (#:key inputs outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					               ;; FIXME: Some of the .a files are not bit-reproducible.
 | 
				
			||||||
 | 
					               (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")
 | 
				
			||||||
 | 
					                 (invoke "sh" "all.bash"))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					           (replace 'install
 | 
				
			||||||
 | 
					             ;; TODO: Most of this could be factorized with Go 1.4.
 | 
				
			||||||
 | 
					             (lambda* (#:key outputs #:allow-other-keys)
 | 
				
			||||||
 | 
					               (let* ((output (assoc-ref outputs "out"))
 | 
				
			||||||
 | 
					                      (doc_out (assoc-ref outputs "doc"))
 | 
				
			||||||
 | 
					                      (docs (string-append doc_out "/share/doc/" ,name "-" ,version))
 | 
				
			||||||
 | 
					                      (src (string-append
 | 
				
			||||||
 | 
					                            (assoc-ref outputs "tests") "/share/" ,name "-" ,version)))
 | 
				
			||||||
 | 
					                 (delete-file-recursively "../pkg/bootstrap")
 | 
				
			||||||
 | 
					                 ;; Prevent installation of the build cache, which contains
 | 
				
			||||||
 | 
					                 ;; store references to most of the tools used to build Go and
 | 
				
			||||||
 | 
					                 ;; would unnecessarily increase the size of Go's closure if it
 | 
				
			||||||
 | 
					                 ;; was installed.
 | 
				
			||||||
 | 
					                 (delete-file-recursively "../pkg/obj")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                 (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)))
 | 
				
			||||||
 | 
					                  ;; Note the slightly different file names compared to 1.4.
 | 
				
			||||||
 | 
					                  '("README.md" "CONTRIBUTORS" "AUTHORS" "PATENTS"
 | 
				
			||||||
 | 
					                    "LICENSE" "VERSION" "CONTRIBUTING.md" "robots.txt"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                 (copy-recursively "../" output)
 | 
				
			||||||
 | 
					                 #t)))))))
 | 
				
			||||||
 | 
					    (native-inputs
 | 
				
			||||||
 | 
					     `(("go" ,go-1.4)
 | 
				
			||||||
 | 
					       ,@(match (%current-system)
 | 
				
			||||||
 | 
					           ((or "armhf-linux" "aarch64-linux")
 | 
				
			||||||
 | 
					            `(("gold" ,binutils-gold)))
 | 
				
			||||||
 | 
					           (_ `()))
 | 
				
			||||||
 | 
					       ,@(package-native-inputs go-1.4)))
 | 
				
			||||||
 | 
					    (supported-systems %supported-systems)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public go go-1.11)
 | 
					(define-public go go-1.11)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public go-github-com-alsm-ioprogress
 | 
					(define-public go-github-com-alsm-ioprogress
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Reference in a new issue