diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-01-20 09:59:56 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-01-20 09:59:56 +0100 |
commit | 6b1f9721a83f343315ae4b936ec9b9542ba8523e (patch) | |
tree | 371bd58e839ce54b075ce9437244404caea58494 | |
parent | 310b32a2a6136a99d3c48542bf68d0d8b550f42f (diff) | |
download | guix-6b1f9721a83f343315ae4b936ec9b9542ba8523e.tar.gz |
packages: Mark the 'patches' field as delayed.
* guix/packages.scm (<origin>)[patches]: Mark as 'delayed'. (print-origin, origin->derivation): Add call to 'force' when accessing 'patches'.
-rw-r--r-- | guix/packages.scm | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/guix/packages.scm b/guix/packages.scm index de87681fcd..96f3adfc32 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -135,7 +135,13 @@ (method origin-method) ; procedure (sha256 origin-sha256) ; bytevector (file-name origin-file-name (default #f)) ; optional file name - (patches origin-patches (default '())) ; list of file names + + ;; Patches are delayed so that the 'search-patch' calls are made lazily, + ;; which reduces I/O on startup and allows patch-not-found errors to be + ;; gracefully handled at run time. + (patches origin-patches ; list of file names + (default '()) (delayed)) + (snippet origin-snippet (default #f)) ; sexp or #f (patch-flags origin-patch-flags ; list of strings (default '("-p1"))) @@ -157,7 +163,7 @@ (($ <origin> uri method sha256 file-name patches) (simple-format port "#<origin ~s ~a ~s ~a>" uri (bytevector->base32-string sha256) - patches + (force patches) (number->string (object-address origin) 16))))) (set-record-type-printer! <origin> print-origin) @@ -937,10 +943,10 @@ cross-compilation target triplet." SOURCE is a file name, return either the interned file name (if SOURCE is outside of the store) or SOURCE itself (if SOURCE is already a store item.)" (match source - (($ <origin> uri method sha256 name () #f) + (($ <origin> uri method sha256 name (= force ()) #f) ;; No patches, no snippet: this is a fixed-output derivation. (method uri 'sha256 sha256 name #:system system)) - (($ <origin> uri method sha256 name (patches ...) snippet + (($ <origin> uri method sha256 name (= force (patches ...)) snippet (flags ...) inputs (modules ...) (imported-modules ...) guile-for-build) ;; Patches and/or a snippet. |