[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
01/02: packages: Mark the 'patches' field as delayed.
From: |
Ludovic Courtès |
Subject: |
01/02: packages: Mark the 'patches' field as delayed. |
Date: |
Tue, 20 Jan 2015 09:17:53 +0000 |
civodul pushed a commit to branch master
in repository guix.
commit 6b1f9721a83f343315ae4b936ec9b9542ba8523e
Author: Ludovic Courtès <address@hidden>
Date: Tue Jan 20 09:59:56 2015 +0100
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'.
---
guix/packages.scm | 14 ++++++++++----
1 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/guix/packages.scm b/guix/packages.scm
index de87681..96f3adf 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.