emacs: Add 'guix-devel-build-package-source'.
Suggested by Ludovic Courtès <ludo@gnu.org>. * guix/scripts.scm (build-package-source): New procedure. * emacs/guix-devel.el (guix-devel-build-package-source): New command. (guix-devel-keys-map): Add key binding for it. * doc/emacs.texi (Emacs Development): Document it.
This commit is contained in:
parent
9d373377c9
commit
ad8b83bda0
|
@ -667,6 +667,12 @@ this command---for example, with @kbd{C-M-x} (@pxref{To eval or not to
|
||||||
eval,,, geiser, Geiser User Manual})
|
eval,,, geiser, Geiser User Manual})
|
||||||
(@code{guix-devel-build-package-definition}).
|
(@code{guix-devel-build-package-definition}).
|
||||||
|
|
||||||
|
@item C-c . s
|
||||||
|
Build a source derivation of the package defined by the current variable
|
||||||
|
definition. This command has the same meaning as @code{guix build -S}
|
||||||
|
shell command (@pxref{Invoking guix build})
|
||||||
|
(@code{guix-devel-build-package-source}).
|
||||||
|
|
||||||
@item C-c . l
|
@item C-c . l
|
||||||
Lint (check) a package defined by the current variable definition
|
Lint (check) a package defined by the current variable definition
|
||||||
(@pxref{Invoking guix lint}) (@code{guix-devel-lint-package}).
|
(@pxref{Invoking guix lint}) (@code{guix-devel-lint-package}).
|
||||||
|
|
|
@ -122,6 +122,21 @@ run BODY."
|
||||||
guix-use-substitutes)
|
guix-use-substitutes)
|
||||||
"#:dry-run?" (guix-guile-boolean guix-dry-run)))))))
|
"#:dry-run?" (guix-guile-boolean guix-dry-run)))))))
|
||||||
|
|
||||||
|
(defun guix-devel-build-package-source ()
|
||||||
|
"Build the source of the current package definition."
|
||||||
|
(interactive)
|
||||||
|
(guix-devel-with-definition def
|
||||||
|
(when (or (not guix-operation-confirm)
|
||||||
|
(guix-operation-prompt
|
||||||
|
(format "Build '%s' package source?" def)))
|
||||||
|
(guix-geiser-eval-in-repl
|
||||||
|
(concat ",run-in-store "
|
||||||
|
(guix-guile-make-call-expression
|
||||||
|
"build-package-source" def
|
||||||
|
"#:use-substitutes?" (guix-guile-boolean
|
||||||
|
guix-use-substitutes)
|
||||||
|
"#:dry-run?" (guix-guile-boolean guix-dry-run)))))))
|
||||||
|
|
||||||
(defun guix-devel-lint-package ()
|
(defun guix-devel-lint-package ()
|
||||||
"Check the current package.
|
"Check the current package.
|
||||||
See Info node `(guix) Invoking guix lint' for details."
|
See Info node `(guix) Invoking guix lint' for details."
|
||||||
|
@ -177,6 +192,7 @@ to find 'modify-phases' keywords."
|
||||||
(defvar guix-devel-keys-map
|
(defvar guix-devel-keys-map
|
||||||
(let ((map (make-sparse-keymap)))
|
(let ((map (make-sparse-keymap)))
|
||||||
(define-key map (kbd "b") 'guix-devel-build-package-definition)
|
(define-key map (kbd "b") 'guix-devel-build-package-definition)
|
||||||
|
(define-key map (kbd "s") 'guix-devel-build-package-source)
|
||||||
(define-key map (kbd "l") 'guix-devel-lint-package)
|
(define-key map (kbd "l") 'guix-devel-lint-package)
|
||||||
(define-key map (kbd "k") 'guix-devel-copy-module-as-kill)
|
(define-key map (kbd "k") 'guix-devel-copy-module-as-kill)
|
||||||
(define-key map (kbd "u") 'guix-devel-use-module)
|
(define-key map (kbd "u") 'guix-devel-use-module)
|
||||||
|
|
|
@ -31,7 +31,8 @@
|
||||||
#:export (args-fold*
|
#:export (args-fold*
|
||||||
parse-command-line
|
parse-command-line
|
||||||
maybe-build
|
maybe-build
|
||||||
build-package))
|
build-package
|
||||||
|
build-package-source))
|
||||||
|
|
||||||
;;; Commentary:
|
;;; Commentary:
|
||||||
;;;
|
;;;
|
||||||
|
@ -115,4 +116,21 @@ Show what and how will/would be built."
|
||||||
#:dry-run? dry-run?)
|
#:dry-run? dry-run?)
|
||||||
(return (show-derivation-outputs derivation))))))
|
(return (show-derivation-outputs derivation))))))
|
||||||
|
|
||||||
|
(define* (build-package-source package
|
||||||
|
#:key dry-run? (use-substitutes? #t)
|
||||||
|
#:allow-other-keys
|
||||||
|
#:rest build-options)
|
||||||
|
"Build PACKAGE source using BUILD-OPTIONS."
|
||||||
|
(mbegin %store-monad
|
||||||
|
(apply set-build-options*
|
||||||
|
#:use-substitutes? use-substitutes?
|
||||||
|
(strip-keyword-arguments '(#:dry-run?) build-options))
|
||||||
|
(mlet %store-monad ((derivation (origin->derivation
|
||||||
|
(package-source package))))
|
||||||
|
(mbegin %store-monad
|
||||||
|
(maybe-build (list derivation)
|
||||||
|
#:use-substitutes? use-substitutes?
|
||||||
|
#:dry-run? dry-run?)
|
||||||
|
(return (show-derivation-outputs derivation))))))
|
||||||
|
|
||||||
;;; scripts.scm ends here
|
;;; scripts.scm ends here
|
||||||
|
|
Loading…
Reference in New Issue