packages: Mark the `inputs' field of <package> as thunked.

* guix/packages.scm (<package>)[inputs]: Mark as thunked.
  (package-derivation)[expand-input]: Remove case where the input is a
  procedure.
* tests/packages.scm ("trivial with system-dependent input"): Remove
  `lambda', and use (%current-system).
* gnu/packages/bootstrap.scm (package-from-tarball): Likewise for `inputs'.
  (%bootstrap-glibc, %bootstrap-gcc): Likewise.
* gnu/packages/scheme.scm (mit-scheme): Likewise.
This commit is contained in:
Ludovic Courtès 2013-01-24 23:33:30 +01:00
parent 3b9c002088
commit dd6b9a3790
4 changed files with 67 additions and 86 deletions

View File

@ -99,12 +99,9 @@ check whether everything is alright."
(zero? (system* (string-append "bin/" ,program-to-test)
"--version"))))))))
(inputs
`(("tar" ,(lambda (system)
(search-bootstrap-binary "tar" system)))
("xz" ,(lambda (system)
(search-bootstrap-binary "xz" system)))
("tarball" ,(lambda (system)
(bootstrap-origin (source* system))))))
`(("tar" ,(search-bootstrap-binary "tar" (%current-system)))
("xz" ,(search-bootstrap-binary "xz" (%current-system)))
("tarball" ,(bootstrap-origin (source* (%current-system))))))
(synopsis description*)
(description #f)
(home-page #f)))
@ -269,25 +266,22 @@ $out/bin/guile --version~%"
(("/[^ ]+/lib/(libc|ld)" _ prefix)
(string-append out "/lib/" prefix))))))))
(inputs
`(("tar" ,(lambda (system)
(search-bootstrap-binary "tar" system)))
("xz" ,(lambda (system)
(search-bootstrap-binary "xz" system)))
("tarball" ,(lambda (system)
(bootstrap-origin
(origin
(method url-fetch)
(uri (map (cut string-append <> "/" system
"/20130105/glibc-2.17.tar.xz")
%bootstrap-base-urls))
(sha256
(match system
("x86_64-linux"
(base32
"18kv1z9d8dr1j3hm9w7663kchqw9p6rsx11n1m143jgba2jz6jy3"))
("i686-linux"
(base32
"08hv8i0axwnihrcgbz19x0a7s6zyv3yx38x8r29liwl8h82x9g88"))))))))))
`(("tar" ,(search-bootstrap-binary "tar" (%current-system)))
("xz" ,(search-bootstrap-binary "xz" (%current-system)))
("tarball" ,(bootstrap-origin
(origin
(method url-fetch)
(uri (map (cut string-append <> "/" (%current-system)
"/20130105/glibc-2.17.tar.xz")
%bootstrap-base-urls))
(sha256
(match (%current-system)
("x86_64-linux"
(base32
"18kv1z9d8dr1j3hm9w7663kchqw9p6rsx11n1m143jgba2jz6jy3"))
("i686-linux"
(base32
"08hv8i0axwnihrcgbz19x0a7s6zyv3yx38x8r29liwl8h82x9g88")))))))))
(synopsis "Bootstrap binaries and headers of the GNU C Library")
(description #f)
(home-page #f)))
@ -337,28 +331,24 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \
(chmod "gcc" #o555))))))
(inputs
`(("tar" ,(lambda (system)
(search-bootstrap-binary "tar" system)))
("xz" ,(lambda (system)
(search-bootstrap-binary "xz" system)))
("bash" ,(lambda (system)
(search-bootstrap-binary "bash" system)))
`(("tar" ,(search-bootstrap-binary "tar" (%current-system)))
("xz" ,(search-bootstrap-binary "xz" (%current-system)))
("bash" ,(search-bootstrap-binary "bash" (%current-system)))
("libc" ,%bootstrap-glibc)
("tarball" ,(lambda (system)
(bootstrap-origin
(origin
(method url-fetch)
(uri (map (cut string-append <> "/" system
"/20130105/gcc-4.7.2.tar.xz")
%bootstrap-base-urls))
(sha256
(match system
("x86_64-linux"
(base32
"1x1p7han5crnbw906iwdifykr6grzm0w27dy9gz75j0q1b32i4px"))
("i686-linux"
(base32
"06wqs0xxnpw3hn0xjb4c9cs0899p1xwkcysa2rvzhvpra0c5vsg2"))))))))))
("tarball" ,(bootstrap-origin
(origin
(method url-fetch)
(uri (map (cut string-append <> "/" (%current-system)
"/20130105/gcc-4.7.2.tar.xz")
%bootstrap-base-urls))
(sha256
(match (%current-system)
("x86_64-linux"
(base32
"1x1p7han5crnbw906iwdifykr6grzm0w27dy9gz75j0q1b32i4px"))
("i686-linux"
(base32
"06wqs0xxnpw3hn0xjb4c9cs0899p1xwkcysa2rvzhvpra0c5vsg2")))))))))
(synopsis "Bootstrap binaries of the GNU Compiler Collection")
(description #f)
(home-page #f)))

View File

@ -22,6 +22,7 @@
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module ((guix utils) #:select (%current-system))
#:use-module (gnu packages m4)
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages emacs)
@ -69,33 +70,33 @@
("m4" ,m4)
("source"
,(lambda (system)
;; MIT/GNU Scheme is not bootstrappable, so it's recommended to
;; compile from the architecture-specific tarballs, which contain
;; pre-built binaries. It leads to more efficient code than when
;; building the tarball that contains generated C code instead of
;; those binaries.
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/mit-scheme/stable.pkg/"
version "/mit-scheme-"
version "-"
(match system
("x86_64-linux" "x86-64")
("i686-linux" "i386")
(_ "c"))
".tar.gz"))
(sha256
(match system
("x86_64-linux"
(base32
"1wcxm9hyfc53myvlcn93fyqrnnn4scwkknl9hkbp1cphc6mp291x"))
("i686-linux"
(base32
"0vi760fy550d9db538m0vzbq1mpdncvw9g8bk4lswk0kcdira55z"))
(_
(base32
"0pclakzwxbqgy6wqwvs6ml62wgby8ba8xzmwzdwhx1v8wv05yw1j")))))))))
;; MIT/GNU Scheme is not bootstrappable, so it's recommended to
;; compile from the architecture-specific tarballs, which contain
;; pre-built binaries. It leads to more efficient code than when
;; building the tarball that contains generated C code instead of
;; those binaries.
,(origin
(method url-fetch)
(uri (string-append "mirror://gnu/mit-scheme/stable.pkg/"
version "/mit-scheme-"
version "-"
(match (%current-system)
("x86_64-linux" "x86-64")
("i686-linux" "i386")
(_ "c"))
".tar.gz"))
(sha256
(match (%current-system)
("x86_64-linux"
(base32
"1wcxm9hyfc53myvlcn93fyqrnnn4scwkknl9hkbp1cphc6mp291x"))
("i686-linux"
(base32
"0vi760fy550d9db538m0vzbq1mpdncvw9g8bk4lswk0kcdira55z"))
(_
(base32
"0pclakzwxbqgy6wqwvs6ml62wgby8ba8xzmwzdwhx1v8wv05yw1j"))))))))
(home-page "http://www.gnu.org/software/mit-scheme/")
(synopsis "MIT/GNU Scheme, a native code Scheme compiler")
(description

View File

@ -113,7 +113,7 @@ representation."
(default '()) (thunked))
(inputs package-inputs ; input packages or derivations
(default '()))
(default '()) (thunked))
(propagated-inputs package-propagated-inputs ; same, but propagated
(default '()))
(native-inputs package-native-inputs ; native input packages/derivations
@ -272,15 +272,6 @@ PACKAGE for SYSTEM."
(list name (intern file)))
(((? string? name) (? origin? source))
(list name (package-source-derivation store source system)))
((and i ((? string? name) (? procedure? proc) sub-drv ...))
;; This form allows PROC to make a SYSTEM-dependent choice.
;; XXX: Currently PROC must return a .drv, a store path, a local
;; file name, or an <origin>. If it were allowed to return a
;; package, then `transitive-inputs' and co. would need to be
;; adjusted.
(let ((input (proc system)))
(expand-input (cons* name input sub-drv))))
(x
(raise (condition (&package-input-error
(package package)

View File

@ -124,9 +124,8 @@
(bash (assoc-ref %build-inputs "bash")))
(zero? (system* bash "-c"
(format #f "echo hello > ~a" out))))))
(inputs `(("bash" ,(lambda (system)
(search-bootstrap-binary "bash"
system)))))))
(inputs `(("bash" ,(search-bootstrap-binary "bash"
(%current-system)))))))
(d (package-derivation %store p)))
(and (build-derivations %store (list d))
(let ((p (pk 'drv d (derivation-path->output-path d))))