guix-commits
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]