guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/03: status: Be more defensive when looking for a log file.


From: Ludovic Courtès
Subject: 01/03: status: Be more defensive when looking for a log file.
Date: Fri, 28 Sep 2018 17:35:06 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit fb94d82bc2dc8eec35520bc2b6101ab8aaf0a4a7
Author: Ludovic Courtès <address@hidden>
Date:   Fri Sep 28 23:19:13 2018 +0200

    status: Be more defensive when looking for a log file.
    
    * guix/store.scm (derivation-log-file): New procedure.o
    (log-file): Use it.
    * guix/status.scm (print-build-event): Use 'derivation-log-file' instead
    of 'log-file'.  Check wheter the return value is #f.
---
 guix/status.scm | 14 ++++++++------
 guix/store.scm  | 28 +++++++++++++++++-----------
 2 files changed, 25 insertions(+), 17 deletions(-)

diff --git a/guix/status.scm b/guix/status.scm
index 94d4748..afa3c65 100644
--- a/guix/status.scm
+++ b/guix/status.scm
@@ -24,10 +24,7 @@
   #:autoload   (guix build syscalls) (terminal-columns)
   #:use-module ((guix build download)
                 #:select (nar-uri-abbreviation))
-  #:use-module ((guix store)
-                #:select (current-build-output-port
-                          current-store-protocol-version
-                          log-file))
+  #:use-module (guix store)
   #:use-module (guix derivations)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-9)
@@ -334,8 +331,13 @@ addition to build events."
     (('build-failed drv . _)
      (format port (failure (G_ "build of ~a failed")) drv)
      (newline port)
-     (format port (info (G_ "View build log at '~a'.~%"))
-             (log-file #f drv)))
+     (match (derivation-log-file drv)
+       (#f
+        (format port (failure (G_ "Could not find build log for '~a'."))
+                drv))
+       (log
+        (format port (info (G_ "View build log at '~a'.")) log)))
+     (newline port))
     (('substituter-started item _ ...)
      (when (or print-log? (not (extended-build-trace-supported?)))
        (format port (info (G_ "substituting ~a...")) item)
diff --git a/guix/store.scm b/guix/store.scm
index 7785a53..8b35fc8 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -152,6 +152,7 @@
             store-path-package-name
             store-path-hash-part
             direct-store-path
+            derivation-log-file
             log-file))
 
 (define %protocol-version #x162)
@@ -1706,21 +1707,26 @@ syntactically valid store path."
                 (and (string-every %nix-base32-charset hash)
                      hash))))))
 
+(define (derivation-log-file drv)
+  "Return the build log file for DRV, a derivation file name, or #f if it
+could not be found."
+  (let* ((base    (basename drv))
+         (log     (string-append (dirname %state-directory) ; XXX
+                                 "/log/guix/drvs/"
+                                 (string-take base 2) "/"
+                                 (string-drop base 2)))
+         (log.gz  (string-append log ".gz"))
+         (log.bz2 (string-append log ".bz2")))
+    (cond ((file-exists? log.gz) log.gz)
+          ((file-exists? log.bz2) log.bz2)
+          ((file-exists? log) log)
+          (else #f))))
+
 (define (log-file store file)
   "Return the build log file for FILE, or #f if none could be found.  FILE
 must be an absolute store file name, or a derivation file name."
   (cond ((derivation-path? file)
-         (let* ((base    (basename file))
-                (log     (string-append (dirname %state-directory) ; XXX
-                                        "/log/guix/drvs/"
-                                        (string-take base 2) "/"
-                                        (string-drop base 2)))
-                (log.gz  (string-append log ".gz"))
-                (log.bz2 (string-append log ".bz2")))
-           (cond ((file-exists? log.gz) log.gz)
-                 ((file-exists? log.bz2) log.bz2)
-                 ((file-exists? log) log)
-                 (else #f))))
+         (derivation-log-file file))
         (else
          (match (valid-derivers store file)
            ((derivers ...)



reply via email to

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