packages: Add zip archive support to 'patch-and-repack'.

Fixes <http://bugs.gnu.org/19830>.

* guix/packages.scm (%standard-patch-inputs): Add "unzip".
  (patch-and-repack)[decompression-type]: Detect zip archive.
  [build]: Invoke "unzip" when appropriate.
This commit is contained in:
Eric Bavier 2015-03-24 10:52:05 -05:00
parent a158484db4
commit 17287d7d47

View file

@ -335,6 +335,7 @@ (define (%standard-patch-inputs)
("bzip2" ,(ref '(gnu packages compression) 'bzip2))
("gzip" ,(ref '(gnu packages compression) 'gzip))
("lzip" ,(ref '(gnu packages compression) 'lzip))
("unzip" ,(ref '(gnu packages zip) 'unzip))
("patch" ,(ref '(gnu packages base) 'patch))
("locales" ,(ref '(gnu packages commencement)
'glibc-utf8-locales-final)))))
@ -384,6 +385,7 @@ (define decompression-type
(cond ((string-suffix? "gz" source-file-name) "gzip")
((string-suffix? "bz2" source-file-name) "bzip2")
((string-suffix? "lz" source-file-name) "lzip")
((string-suffix? "zip" source-file-name) "unzip")
(else "xz")))
(define original-file-name
@ -464,8 +466,10 @@ (define (first-file directory)
(mkdir directory)
(copy-recursively #$source directory)
#t)
(zero? (system* (string-append #$tar "/bin/tar")
"xvf" #$source)))
#$(if (string=? decompression-type "unzip")
#~(zero? (system* "unzip" #$source))
#~(zero? (system* (string-append #$tar "/bin/tar")
"xvf" #$source))))
(let ((directory (first-file ".")))
(format (current-error-port)
"source is under '~a'~%" directory)