summary refs log tree commit diff
diff options
context:
space:
mode:
authorLeo Famulari <leo@famulari.name>2018-11-01 22:56:38 -0400
committerLeo Famulari <leo@famulari.name>2018-11-01 23:23:09 -0400
commitb3325eb306b33541edcb343d75d8457624744375 (patch)
tree884a8e228cffe8e13559972db5365c9d0bb62b1f
parent7571ec357670fc891bfd348d4fb9bf5760a7b6a4 (diff)
downloadguix-b3325eb306b33541edcb343d75d8457624744375.tar.gz
gnu: Go 1.11: Avoid unnecessary store references.
This shrinks the closure of Go 1.11 from 1379 MiB to 581 MiB.

Fixes <https://bugs.gnu.org/32949>.

* gnu/packages/golang.scm (go-1.11)[arguments]: Add a 'delete-extraneous-files'
phase.
-rw-r--r--gnu/packages/golang.scm13
1 files changed, 12 insertions, 1 deletions
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 60d3ee7ad9..82e8173210 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -510,12 +510,23 @@ in the style of communicating sequential processes (@dfn{CSP}).")
                  (substitute* (find-files "cmd" "\\.go")
                    (("/lib(64)?/ld-linux.*\\.so\\.[0-9]") loader))
                  #t)))
+           ;; 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.
+           ;; TODO This should be moved into the 'install' phase when Go 1.9 is
+           ;; removed.
+           (add-before 'install 'delete-extraneous-files
+             (lambda _
+               (delete-file-recursively "../pkg/obj")
+               #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"))))))))))
+                 (setenv "GOGC" "400")
+                 #t)))))))))
 
 (define-public go go-1.9)