emacs-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debbugs-tracker] bug#32768: closed ([PATCH] gnu: go-1.11: Add New Versi


From: GNU bug Tracking System
Subject: [debbugs-tracker] bug#32768: closed ([PATCH] gnu: go-1.11: Add New Version)
Date: Sat, 22 Sep 2018 18:45:02 +0000

Your message dated Sat, 22 Sep 2018 14:44:18 -0400
with message-id <address@hidden>
and subject line Re: [bug#32768] [PATCH] gnu: go-1.11: Add New Version
has caused the debbugs.gnu.org bug report #32768,
regarding [PATCH] gnu: go-1.11: Add New Version
to be marked as done.

(If you believe you have received this mail in error, please contact
address@hidden)


-- 
32768: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=32768
GNU Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: [PATCH] gnu: go-1.11: Add New Version Date: Tue, 18 Sep 2018 21:52:58 -0500 User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)
---
 gnu/packages/golang.scm | 128 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 128 insertions(+)

diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index b4a088a05..be404cc16 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -12,6 +12,7 @@
 ;;; Copyright © 2018 Tomáš Čech <address@hidden>
 ;;; Copyright © 2018 Pierre-Antoine Rouby <address@hidden>
 ;;; Copyright © 2018 Pierre Neidhardt <address@hidden>
+;;; Copyright @ 2018 Katherine Cox-Buday <address@hidden>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -499,6 +500,133 @@ in the style of communicating sequential processes 
(@dfn{CSP}).")
                  (setenv "HOME" "/tmp")
                  #t)))))))))
 
+(define-public go-1.11
+  (package
+    (inherit go-1.10)
+    (name "go")
+    (version "1.11")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://storage.googleapis.com/golang/";
+                           name version ".src.tar.gz"))
+       (sha256
+        (base32
+         "1ysj04jzds6xa8kdflkdsgyv3mg9fdn90zdf78g4g6p4bwpy3hdg"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments go-1.10)
+       ((#: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")))
+
+                 (for-each delete-file
+                           ;; Removing net/ tests, which fail when attempting 
to access
+                           ;; network resources not present in the build 
container.
+                           '("net/listen_test.go"
+                             "net/parse_test.go"
+                             "net/cgo_unix_test.go"
+                             ;; A side affect 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 crt1.o despite being present.
+                             "cmd/go/testdata/script/list_compiled_imports.txt"
+                             "cmd/go/testdata/script/mod_case_cgo.txt"
+                             ;; https://github.com/golang/go/issues/24884
+                             "os/user/user_test.go"))
+
+                 (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.+)")
+                    ("os/os_test.go" "(.+)(TestHostname.+)")
+                    ("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)))
+           (replace '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")
+                 ;; Go 1.10 tries to write to $HOME in a test
+                 (setenv "HOME" "/tmp")
+                 #t)))))))))
+
 (define-public go go-1.9)
 
 (define-public go-github-com-alsm-ioprogress
-- 
2.17.1



--- End Message ---
--- Begin Message --- Subject: Re: [bug#32768] [PATCH] gnu: go-1.11: Add New Version Date: Sat, 22 Sep 2018 14:44:18 -0400 User-agent: Mutt/1.10.1 (2018-07-13)
On Fri, Sep 21, 2018 at 09:58:28AM -0500, Katherine Cox-Buday wrote:
> 
> > I tested that some basic packages build within the go-build-system
> > using Go 1.11 (several need to be updated to support Go 1.11,
> > however).
> 
> Great to hear. I didn't think to do that, thanks!

It can be done per-package by setting '#:go ,go-1.11' in the arguments
field of the package you'd like to test, or for the entire
go-build-system like this:

diff --git a/guix/build-system/go.scm b/guix/build-system/go.scm
index cf9116327..80894677f 100644
--- a/guix/build-system/go.scm
+++ b/guix/build-system/go.scm
@@ -44,7 +44,7 @@
 (define (default-go)
   ;; Lazily resolve the binding to avoid a circular dependency.
   (let ((go (resolve-interface '(gnu packages golang))))
-    (module-ref go 'go)))
+    (module-ref go 'go-1.11)))
 
 (define* (lower name
                 #:key source inputs native-inputs outputs system target

> > This phase is identical to the one that would be inherited from Go
> > 1.10,
> > right?
> 
> Yes, thanks! Removed.

Great! Pushed as 21280a8cd805ace5f95cd2580b8a6ca1e25050d7

> As an aside, this workflow is new to me. I'd greatly appreciate any
> pointers on convention if anyone has any. I hope I'm doing this
> correctly :)

> From 52199d74e7e417f6257b2bdf73b9982724183347 Mon Sep 17 00:00:00 2001
> In-Reply-To: <address@hidden>
> References: <address@hidden>
> From: Katherine Cox-Buday <address@hidden>
> Date: Fri, 21 Sep 2018 09:38:23 -0500
> Subject: [PATCH] Remove Unecessary Stage Replacement

In general, I prefer to make a change like this locally, amend the
original commit (I use `git add --patch && git commit --amend
--verbose`), and then send a new version of the original patch.

git-format-patch and git-send-email both take the --subject-prefix
argument, so you can generate the new patch with, for example,
'--subject-prefix=v2'. Then the subject line of your patch or email is
helpfully annotated:

Subject: [v2] gnu: Add Go 1.11.

But, for simple edits like this, or when there is only one patch,
sending a diff on the original patch works, too.

Please let us know if you have other workflow questions!

Attachment: signature.asc
Description: PGP signature


--- End Message ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]