From c51161c51f11e6ffcba17758424596fe44f9d42a Mon Sep 17 00:00:00 2001 From: Joseph Turner Date: Sat, 6 May 2023 13:44:32 -0700 Subject: [PATCH] package-vc: Process :make and :shell-command spec args --- lisp/emacs-lisp/package-vc.el | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/lisp/emacs-lisp/package-vc.el b/lisp/emacs-lisp/package-vc.el index 421947b528d..489610e2a1e 100644 --- a/lisp/emacs-lisp/package-vc.el +++ b/lisp/emacs-lisp/package-vc.el @@ -344,6 +344,35 @@ asynchronously." "\n") nil pkg-file nil 'silent)))) +(defcustom package-vc-process-make nil + "If non-nil, process :make and :shell-command spec arguments. +Package specs are loaded from trusted package archives." + :type 'boolean) + +(defun package-vc--call (destination program &rest args) + "Like ‘call-process’ for PROGRAM, DESTINATION, ARGS. +The INFILE and DISPLAY arguments are fixed as nil." + (apply #'call-process program nil destination nil (delq nil args))) + +(defun package-vc--make (pkg-spec dir) + "Process :make and :shell-command spec arguments." + (let ((target (plist-get pkg-spec :make)) + (cmd (plist-get pkg-spec :shell-command))) + (when (or cmd target) + (with-current-buffer (get-buffer-create " *package-vc make*") + (erase-buffer) + (when (and cmd + (/= 0 (package-vc--call t shell-file-name + shell-command-switch + cmd))) + (message "Failed to run %s, see buffer %S" + cmd (buffer-name))) + (when (and target + (/= 0 (apply #'package-vc--call t "make" + (if (consp target) target (list target))))) + (message "Failed to make %s, see buffer %S" + target (buffer-name))))))) + (declare-function org-export-to-file "ox" (backend file)) (defun package-vc--build-documentation (pkg-desc file) @@ -486,6 +515,9 @@ documentation and marking the package as installed." ;; Generate package file (package-vc--generate-description-file pkg-desc pkg-file) + ;; Process :make and :shell-command arguments before building documentation + (when package-vc-process-make (package-vc--make pkg-spec pkg-dir)) + ;; Detect a manual (when (executable-find "install-info") (dolist (doc-file (ensure-list (plist-get pkg-spec :doc))) -- 2.39.2