summary refs log tree commit diff
path: root/gnu/packages
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2018-12-13 14:36:38 +0100
committerLudovic Courtès <ludo@gnu.org>2018-12-13 18:44:40 +0100
commit5e741ff0212cc09e086f566493508166f4e2e1b8 (patch)
tree96bdda25a2e91aa311c3b2ef63e9cbebf96fea29 /gnu/packages
parent1fc90e89f01f6fc372ef9d58826a23d861df24a7 (diff)
downloadguix-5e741ff0212cc09e086f566493508166f4e2e1b8.tar.gz
gnu: go-ipfs: Work around tar bomb.
* gnu/packages/ipfs.scm (go-ipfs)[source](method): Switch to
URL-FETCH/TARBOMB.
(file-name): New field.
[arguments]: Add 'make-files-writable' phase.
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/ipfs.scm16
1 files changed, 13 insertions, 3 deletions
diff --git a/gnu/packages/ipfs.scm b/gnu/packages/ipfs.scm
index 82ef0ea028..a67919691f 100644
--- a/gnu/packages/ipfs.scm
+++ b/gnu/packages/ipfs.scm
@@ -218,17 +218,27 @@ written in Go.")
     (version "0.4.18")
     (source
      (origin
-       (method url-fetch)
+       (method url-fetch/tarbomb)
        (uri (string-append
              "https://dist.ipfs.io/go-ipfs/v" version
              "/go-ipfs-source.tar.gz"))
        (sha256
         (base32
-         "19hfgbyn5sr1bw0cwm3gsjz0w3b3vh3mmkax1906raah30lavj1x"))))
+         "19hfgbyn5sr1bw0cwm3gsjz0w3b3vh3mmkax1906raah30lavj1x"))
+       (file-name (string-append name "-" version "-source"))))
     (build-system go-build-system)
     (arguments
      '(#:unpack-path "github.com/ipfs/go-ipfs"
-       #:import-path "github.com/ipfs/go-ipfs/cmd/ipfs"))
+       #:import-path "github.com/ipfs/go-ipfs/cmd/ipfs"
+       #:phases (modify-phases %standard-phases
+                  (add-before 'reset-gzip-timestamps 'make-files-writable
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      ;; Make sure .gz files are writable so that the
+                      ;; 'reset-gzip-timestamps' phase can do its work.
+                      (let ((out (assoc-ref outputs "out")))
+                        (for-each make-file-writable
+                                  (find-files out "\\.gz$"))
+                        #t))))))
     (home-page "https://ipfs.io")
     (synopsis "Go implementation of IPFS, a peer-to-peer hypermedia protocol")
     (description "IPFS is a global, versioned, peer-to-peer filesystem.  It