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'.
This commit is contained in:
Ludovic Courtès 2015-11-29 17:42:01 +01:00
parent 4eae798075
commit 841cb43c6b
1 changed files with 18 additions and 16 deletions

View File

@ -494,6 +494,15 @@ arguments with packages that use the specified source."
((head tail ...) ((head tail ...)
(loop tail sources (cons head result)))))) (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. ;;; Entry point.
@ -515,9 +524,14 @@ arguments with packages that use the specified source."
;; daemon's substitute URLs. ;; daemon's substitute URLs.
%default-substitute-urls) %default-substitute-urls)
'()))) '())))
(items (filter-map (match-lambda
(('argument . (? store-path? file))
file)
(_ #f))
opts))
(roots (filter-map (match-lambda (roots (filter-map (match-lambda
(('gc-root . root) root) (('gc-root . root) root)
(_ #f)) (_ #f))
opts))) opts)))
(set-build-options-from-command-line store 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?))) #:dry-run? (assoc-ref opts 'dry-run?)))
(cond ((assoc-ref opts 'log-file?) (cond ((assoc-ref opts 'log-file?)
(for-each (lambda (file) (for-each (cut show-build-log store <> urls)
(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))))
(delete-duplicates (delete-duplicates
(append (map derivation-file-name drv) (append (map derivation-file-name drv)
(filter-map (match-lambda items))))
(('argument
. (? store-path? file))
file)
(_ #f))
opts)))))
((assoc-ref opts 'derivations-only?) ((assoc-ref opts 'derivations-only?)
(format #t "~{~a~%~}" (map derivation-file-name drv)) (format #t "~{~a~%~}" (map derivation-file-name drv))
(for-each (cut register-root store <> <>) (for-each (cut register-root store <> <>)