summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2018-09-28 23:19:13 +0200
committerLudovic Courtès <ludo@gnu.org>2018-09-28 23:28:03 +0200
commitfb94d82bc2dc8eec35520bc2b6101ab8aaf0a4a7 (patch)
treef1e032e1593d0d1026015442401679a9e7cacdb1
parent258a6d944ed891fa92fa87a16731e5dfe0bac477 (diff)
downloadgnu-guix-fb94d82bc2dc8eec35520bc2b6101ab8aaf0a4a7.tar
gnu-guix-fb94d82bc2dc8eec35520bc2b6101ab8aaf0a4a7.tar.gz
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.
-rw-r--r--guix/status.scm14
-rw-r--r--guix/store.scm28
2 files changed, 25 insertions, 17 deletions
diff --git a/guix/status.scm b/guix/status.scm
index 94d4748af5..afa3c656a8 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 7785a53aa1..8b35fc8d7a 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 ...)