emacs: Add "Build Log" button to Package Info.
* emacs/guix-main.scm (package-build-log-file): New procedure. * emacs/guix-ui-package.el (guix-package-build-log-file) (guix-package-find-build-log) (guix-package-info-insert-build-log-button): New procedures. (guix-package-info-button-functions): Add 'guix-package-info-insert-build-log-button'.
This commit is contained in:
parent
e98316e69f
commit
b097dd72c4
|
@ -1000,6 +1000,16 @@ GENERATIONS is a list of generation numbers."
|
||||||
(format #t "The source store path: ~a~%"
|
(format #t "The source store path: ~a~%"
|
||||||
(package-source-derivation->store-path derivation))))))
|
(package-source-derivation->store-path derivation))))))
|
||||||
|
|
||||||
|
(define (package-build-log-file package-id)
|
||||||
|
"Return the build log file of a package PACKAGE-ID.
|
||||||
|
Return #f if the build log is not found."
|
||||||
|
(and-let* ((package (package-by-id package-id)))
|
||||||
|
(with-store store
|
||||||
|
(let* ((derivation (package-derivation store package))
|
||||||
|
(file (derivation-file-name derivation)))
|
||||||
|
(or (log-file store file)
|
||||||
|
((@@ (guix scripts build) log-url) store file))))))
|
||||||
|
|
||||||
|
|
||||||
;;; Executing guix commands
|
;;; Executing guix commands
|
||||||
|
|
||||||
|
|
|
@ -111,6 +111,19 @@ is found and `guix-package-list-single' is nil."
|
||||||
(list (if (= 0 package-id) package-id-str package-id)
|
(list (if (= 0 package-id) package-id-str package-id)
|
||||||
output))))
|
output))))
|
||||||
|
|
||||||
|
(defun guix-package-build-log-file (id)
|
||||||
|
"Return build log file name of a package defined by ID."
|
||||||
|
(guix-eval-read
|
||||||
|
(guix-make-guile-expression 'package-build-log-file id)))
|
||||||
|
|
||||||
|
(defun guix-package-find-build-log (id)
|
||||||
|
"Show build log of a package defined by ID."
|
||||||
|
(require 'guix-build-log)
|
||||||
|
(let ((file (guix-package-build-log-file id)))
|
||||||
|
(if file
|
||||||
|
(guix-build-log-find-file file)
|
||||||
|
(message "Couldn't find the package build log."))))
|
||||||
|
|
||||||
|
|
||||||
;;; Processing package actions
|
;;; Processing package actions
|
||||||
|
|
||||||
|
@ -333,7 +346,8 @@ prompt depending on `guix-operation-confirm' variable)."
|
||||||
:group 'guix-package-info)
|
:group 'guix-package-info)
|
||||||
|
|
||||||
(defcustom guix-package-info-button-functions
|
(defcustom guix-package-info-button-functions
|
||||||
'(guix-package-info-insert-build-button)
|
'(guix-package-info-insert-build-button
|
||||||
|
guix-package-info-insert-build-log-button)
|
||||||
"List of functions used to insert package buttons in Info buffer.
|
"List of functions used to insert package buttons in Info buffer.
|
||||||
Each function is called with 2 arguments: package ID and full name."
|
Each function is called with 2 arguments: package ID and full name."
|
||||||
:type '(repeat function)
|
:type '(repeat function)
|
||||||
|
@ -598,6 +612,15 @@ PACKAGE-ID is an ID of the package which store path to show."
|
||||||
(format "Build the current package")
|
(format "Build the current package")
|
||||||
'id id))
|
'id id))
|
||||||
|
|
||||||
|
(defun guix-package-info-insert-build-log-button (id _name)
|
||||||
|
"Insert button to show build log of a package defined by ID."
|
||||||
|
(guix-info-insert-action-button
|
||||||
|
"Build Log"
|
||||||
|
(lambda (btn)
|
||||||
|
(guix-package-find-build-log (button-get btn 'id)))
|
||||||
|
"View build log of the current package"
|
||||||
|
'id id))
|
||||||
|
|
||||||
(defun guix-package-info-show-source (entry-id package-id)
|
(defun guix-package-info-show-source (entry-id package-id)
|
||||||
"Show file name of a package source in the current info buffer.
|
"Show file name of a package source in the current info buffer.
|
||||||
Find the file if needed (see `guix-package-info-auto-find-source').
|
Find the file if needed (see `guix-package-info-auto-find-source').
|
||||||
|
|
Loading…
Reference in New Issue