all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* [bug#34752] [PATCH] WIP: Update Go to 1.12.
@ 2019-03-04 22:28 Leo Famulari
  2019-03-16 22:57 ` [bug#34752] Duplicated work (sorry!) Katherine Cox-Buday
  0 siblings, 1 reply; 3+ messages in thread
From: Leo Famulari @ 2019-03-04 22:28 UTC (permalink / raw)
  To: 34752

This patch depends on the removal of Go 1.9 in bug #34280.

Any ideas about these new test failures? Something fails to find some
kernel headers for reasons that I don't understand.

* gnu/packages/golang.scm (go-1.11): Replace with ...
(go-1.12): ... new variable.
[arguments]: Remove the Go 1.11.5 'tarbomb-workaround' phase.
Move 'set-bootstrap-variables' into the 'build' phase.
Disable some more tests in the 'prebuild' phase. Set $HOME because Go
1.12 actually tries to use it.
(go): Update to go-1.12.
* guix/build/go-build-system.scm (setup-environment): Set $HOME.
---
 gnu/packages/golang.scm        | 39 ++++++++++++----------------------
 guix/build/go-build-system.scm |  1 +
 2 files changed, 14 insertions(+), 26 deletions(-)

diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index da8ad3d7fe..ff21bcdba9 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -223,11 +223,11 @@ in the style of communicating sequential processes (@dfn{CSP}).")
     (supported-systems '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux"))
     (license license:bsd-3)))
 
-(define-public go-1.11
+(define-public go-1.12
   (package
     (inherit go-1.4)
     (name "go")
-    (version "1.11.5")
+    (version "1.12")
     (source
      (origin
        (method url-fetch)
@@ -235,23 +235,11 @@ in the style of communicating sequential processes (@dfn{CSP}).")
                            name version ".src.tar.gz"))
        (sha256
         (base32
-         "0gllmbjvp12iszwils8id78mvjxwviwf98lh2gdkb236n4mz07mw"))))
+         "1wl8kq21fbzmv4plnaza5acz8dhbaaq6smjzk3r6cf3l6qrkvi09"))))
     (arguments
      (substitute-keyword-arguments (package-arguments go-1.4)
        ((#:phases phases)
         `(modify-phases ,phases
-           ;; XXX Work around the Go 1.11.5 tarbomb.
-           ;; <https://github.com/golang/go/issues/29906>
-           (add-after 'unpack 'tarbomb-workaround
-             (lambda _
-               (chdir "..")
-               (delete-file-recursively "gocache")
-               (delete-file-recursively "tmp")
-               #t))
-           (replace 'chdir
-             (lambda _
-               (chdir "go/src")
-               #t))
            (replace 'prebuild
              (lambda* (#:key inputs outputs #:allow-other-keys)
                (let* ((gcclib (string-append (assoc-ref inputs "gcc:lib") "/lib"))
@@ -276,8 +264,10 @@ in the style of communicating sequential processes (@dfn{CSP}).")
                              ;; 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"))
+                             ;; XXX fails to find "asm/socket.h"
+                             "cmd/go/testdata/script/list_find.txt"
+                             ;; XXX fails to find "linux/errno.h"
+                             "cmd/go/testdata/script/cgo_syso_issue29253.txt"))
 
                  (substitute* "os/os_test.go"
                    (("/usr/bin") (getcwd))
@@ -352,19 +342,16 @@ in the style of communicating sequential processes (@dfn{CSP}).")
                  (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")))
+               (let ((go (assoc-ref inputs "go"))
+                     (output (assoc-ref outputs "out")))
+                 (setenv "HOME" "/tmp")
+                 (setenv "GOGC" "400") ; XXX necessary?
                  (setenv "CC" (which "gcc"))
                  (setenv "GOOS" "linux")
+                 (setenv "GOROOT_BOOTSTRAP" go)
                  (setenv "GOROOT" (dirname (getcwd)))
                  (setenv "GOROOT_FINAL" output)
                  (setenv "CGO_ENABLED" "1")
@@ -415,7 +402,7 @@ in the style of communicating sequential processes (@dfn{CSP}).")
        ,@(package-native-inputs go-1.4)))
     (supported-systems %supported-systems)))
 
-(define-public go go-1.11)
+(define-public go go-1.12)
 
 (define-public go-github-com-alsm-ioprogress
   (let ((commit "063c3725f436e7fba0c8f588547bee21ffec7ac5")
diff --git a/guix/build/go-build-system.scm b/guix/build/go-build-system.scm
index 022d4fe16b..c4f55b06ee 100644
--- a/guix/build/go-build-system.scm
+++ b/guix/build/go-build-system.scm
@@ -172,6 +172,7 @@ respectively."
     (if (getenv "GOPATH")
       (setenv "GOPATH" (string-append (getcwd) ":" (getenv "GOPATH")))
       (setenv "GOPATH" (getcwd)))
+    (setenv "HOME" "/tmp")
     ;; Where to install compiled executable files ('commands' in Go parlance').
     (setenv "GOBIN" (string-append out "/bin"))
     #t))
-- 
2.21.0

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

* [bug#34752] Duplicated work (sorry!)
  2019-03-04 22:28 [bug#34752] [PATCH] WIP: Update Go to 1.12 Leo Famulari
@ 2019-03-16 22:57 ` Katherine Cox-Buday
  2019-03-18 20:14   ` bug#34752: " Leo Famulari
  0 siblings, 1 reply; 3+ messages in thread
From: Katherine Cox-Buday @ 2019-03-16 22:57 UTC (permalink / raw)
  To: 34752

Hey Leo, I've just submitted patch 34887. I didn't realize your patch
existed until I had already submitted. I apologize, I don't contribute
to projects managed in this style enough to have the workflow
internalized :(

At any rate, my patch does much the same thing except that it leaves
1.11 in place as default. I did that for a couple of reasons:

- In organizations, it's very common for projects/teams to lag behind a
  bit the newest releases, and for people installing Go through Guix,
  it's nice to still have previous versions available. The Go team
  officially supports LATEST-2 releases, and I think we should consider
  doing the same.

- https://golang.org/doc/go1.12#gocache states that the build cache is
  now required. I saw that you were experimenting with setting the home
  directory to `/tmp`. The approach I considered taking was to modify
  the Go build-system to override the `GOCACHE` environmental variable
  when doing builds. Otherwise, any Go package will have to spoof the
  home directory.

Regarding your question about the test failures. I tried to resolve
these in 1.11 and the new ones that cropped up in 1.12. The issue is
that these "scripts" are effectively running in a custom little
script-engine that was custom built. I made some attempts at correcting
this which you can read about in patch 32768. You can find out more
about this scripting engine here:

https://github.com/golang/go/blob/release-branch.go1.12/src/cmd/go/testdata/script/README

-- 
Katherine

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

* bug#34752: Duplicated work (sorry!)
  2019-03-16 22:57 ` [bug#34752] Duplicated work (sorry!) Katherine Cox-Buday
@ 2019-03-18 20:14   ` Leo Famulari
  0 siblings, 0 replies; 3+ messages in thread
From: Leo Famulari @ 2019-03-18 20:14 UTC (permalink / raw)
  To: Katherine Cox-Buday; +Cc: 34752-done

[-- Attachment #1: Type: text/plain, Size: 1415 bytes --]

On Sat, Mar 16, 2019 at 05:57:29PM -0500, Katherine Cox-Buday wrote:
> Hey Leo, I've just submitted patch 34887. I didn't realize your patch
> existed until I had already submitted. I apologize, I don't contribute
> to projects managed in this style enough to have the workflow
> internalized :(

It's okay. Our work overlapped but we can consider it a very in-depth
code review :)

> At any rate, my patch does much the same thing except that it leaves
> 1.11 in place as default. I did that for a couple of reasons:
> 
> - In organizations, it's very common for projects/teams to lag behind a
>   bit the newest releases, and for people installing Go through Guix,
>   it's nice to still have previous versions available. The Go team
>   officially supports LATEST-2 releases, and I think we should consider
>   doing the same.

Okay, let's do this from now on. We can make Go 1.12 the default later.

> - https://golang.org/doc/go1.12#gocache states that the build cache is
>   now required. I saw that you were experimenting with setting the home
>   directory to `/tmp`. The approach I considered taking was to modify
>   the Go build-system to override the `GOCACHE` environmental variable
>   when doing builds. Otherwise, any Go package will have to spoof the
>   home directory.

Yeah... as discussed on IRC #guix yesterday, we have some work to do to
fully support recent Go.

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

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

end of thread, other threads:[~2019-03-18 20:15 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-04 22:28 [bug#34752] [PATCH] WIP: Update Go to 1.12 Leo Famulari
2019-03-16 22:57 ` [bug#34752] Duplicated work (sorry!) Katherine Cox-Buday
2019-03-18 20:14   ` bug#34752: " Leo Famulari

Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.