summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-11-29 17:42:01 +0100
committerLudovic Courtès <ludo@gnu.org>2015-11-29 17:42:01 +0100
commit841cb43c6b4b7cb6ce328962368c583bc5fdc114 (patch)
tree5daaa07ddd6a2b5d66c55a207a1bf9b09161e046
parent4eae7980753649fd8b3cfdb92f755acf0a2108e8 (diff)
downloadguix-841cb43c6b4b7cb6ce328962368c583bc5fdc114.tar.gz
guix build: Factorize build log query.
* guix/scripts/build.scm (show-build-log): New procedure.
(guix-build): New variable 'items'.  Use it and 'show-build-log'.
-rw-r--r--guix/scripts/build.scm34
1 files changed, 18 insertions, 16 deletions
diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm
index 644ffe8d6e..b415403473 100644
--- a/guix/scripts/build.scm
+++ b/guix/scripts/build.scm
@@ -494,6 +494,15 @@ arguments with packages that use the specified source."
       ((head tail ...)
        (loop tail sources (cons head result))))))
 
+(define (show-build-log store file urls)
+  "Show the build log for FILE, falling back to remote logs from URLS if
+needed."
+  (let ((log (or (log-file store file)
+                 (log-url store file #:base-urls urls))))
+    (if log
+        (format #t "~a~%" log)
+        (leave (_ "no build log for '~a'~%") file))))
+
 
 ;;;
 ;;; Entry point.
@@ -515,9 +524,14 @@ arguments with packages that use the specified source."
                                  ;; daemon's substitute URLs.
                                  %default-substitute-urls)
                              '())))
+             (items (filter-map (match-lambda
+                                  (('argument . (? store-path? file))
+                                   file)
+                                  (_ #f))
+                                opts))
              (roots (filter-map (match-lambda
-                                 (('gc-root . root) root)
-                                 (_ #f))
+                                  (('gc-root . root) root)
+                                  (_ #f))
                                 opts)))
 
         (set-build-options-from-command-line store opts)
@@ -527,22 +541,10 @@ arguments with packages that use the specified source."
                               #:dry-run? (assoc-ref opts 'dry-run?)))
 
         (cond ((assoc-ref opts 'log-file?)
-               (for-each (lambda (file)
-                           (let ((log (or (log-file store file)
-                                          (log-url store file
-                                                   #:base-urls urls))))
-                             (if log
-                                 (format #t "~a~%" log)
-                                 (leave (_ "no build log for '~a'~%")
-                                        file))))
+               (for-each (cut show-build-log store <> urls)
                          (delete-duplicates
                           (append (map derivation-file-name drv)
-                                  (filter-map (match-lambda
-                                               (('argument
-                                                 . (? store-path? file))
-                                                file)
-                                               (_ #f))
-                                              opts)))))
+                                  items))))
               ((assoc-ref opts 'derivations-only?)
                (format #t "~{~a~%~}" (map derivation-file-name drv))
                (for-each (cut register-root store <> <>)