aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilip Kaludercic2025-12-07 19:31:52 +0100
committerPhilip Kaludercic2025-12-07 22:24:09 +0100
commitdba1c734bfdbc6432c8f6028583491b8c8f9663e (patch)
treecebd9beef2bd33b5dd7ffeede8d181f3578af5fd
parent573acd97e54ceead6d11b330909ffb8e744247cc (diff)
downloademacs-dba1c734bfdbc6432c8f6028583491b8c8f9663e.tar.gz
emacs-dba1c734bfdbc6432c8f6028583491b8c8f9663e.zip
Store VC checkout dir in 'package-desc-extras'
* lisp/emacs-lisp/package-vc.el (package-vc--url-scheme): Remove constant. (package-vc--checkout-dir): Check 'package-desc-extras'. (package-vc--save-selected-packages): Remove single-use function. (package-vc--unpack): (Re-)inline 'package-vc--save-selected-packages'. (package-vc-install-from-checkout): Set :vc-dir entry in 'package-desc-extras' if necessary. (Bug#79188)
-rw-r--r--lisp/emacs-lisp/package-vc.el31
1 files changed, 9 insertions, 22 deletions
diff --git a/lisp/emacs-lisp/package-vc.el b/lisp/emacs-lisp/package-vc.el
index e818949072c..ef7b2717fe7 100644
--- a/lisp/emacs-lisp/package-vc.el
+++ b/lisp/emacs-lisp/package-vc.el
@@ -84,12 +84,6 @@ the `clone' VC function."
84 84
85(defvar package-vc-selected-packages) ; pacify byte-compiler 85(defvar package-vc-selected-packages) ; pacify byte-compiler
86 86
87(defconst package-vc--url-scheme
88 (if (memq system-type '(ms-dos windows-nt cygwin))
89 "file:///"
90 "file://")
91 "Scheme for `:url' property in package spec.")
92
93;;;###autoload 87;;;###autoload
94(defun package-vc-install-selected-packages () 88(defun package-vc-install-selected-packages ()
95 "Ensure packages specified in `package-vc-selected-packages' are installed." 89 "Ensure packages specified in `package-vc-selected-packages' are installed."
@@ -189,11 +183,8 @@ located in a sub directory of the checkout, or the checkout has a sub
189directory named \"lisp\" or \"src\" that contains .el files and return 183directory named \"lisp\" or \"src\" that contains .el files and return
190that instead." 184that instead."
191 (let* ((pkg-spec (package-vc--desc->spec pkg-desc)) 185 (let* ((pkg-spec (package-vc--desc->spec pkg-desc))
192 (pkg-dir (pcase (plist-get pkg-spec :url) 186 (pkg-dir (or (alist-get :vc-dir (package-desc-extras pkg-desc))
193 ((rx (literal package-vc--url-scheme) 187 (package-desc-dir pkg-desc))))
194 (let checkout-dir (+ any)))
195 checkout-dir)
196 (_ (package-desc-dir pkg-desc)))))
197 (expand-file-name 188 (expand-file-name
198 (or (and lisp-dir 189 (or (and lisp-dir
199 (or (plist-get pkg-spec :lisp-dir) 190 (or (plist-get pkg-spec :lisp-dir)
@@ -749,14 +740,6 @@ This list is used by `package-vc--unpack' to better check if the
749user is fetching code from a repository that does not contain any 740user is fetching code from a repository that does not contain any
750Emacs Lisp files.") 741Emacs Lisp files.")
751 742
752(defun package-vc--save-selected-packages (name pkg-spec)
753 "Save the package specification PKG-SPEC for a package NAME."
754 (customize-save-variable
755 'package-vc-selected-packages
756 (cons (cons name pkg-spec)
757 (seq-remove (lambda (spec) (string= name (car spec)))
758 package-vc-selected-packages))))
759
760(defun package-vc--unpack (pkg-desc pkg-spec &optional rev) 743(defun package-vc--unpack (pkg-desc pkg-spec &optional rev)
761 "Install the package described by PKG-DESC. 744 "Install the package described by PKG-DESC.
762PKG-SPEC is a package specification, a property list describing 745PKG-SPEC is a package specification, a property list describing
@@ -792,7 +775,11 @@ abort installation?" name))
792 775
793 ;; Ensure we have a copy of the package specification 776 ;; Ensure we have a copy of the package specification
794 (when (null (package-vc--desc->spec pkg-desc name)) 777 (when (null (package-vc--desc->spec pkg-desc name))
795 (package-vc--save-selected-packages name pkg-spec)) 778 (customize-save-variable
779 'package-vc-selected-packages
780 (cons (cons name pkg-spec)
781 (seq-remove (lambda (spec) (string= name (car spec)))
782 package-vc-selected-packages))))
796 783
797 (package-vc--unpack-1 pkg-desc))) 784 (package-vc--unpack-1 pkg-desc)))
798 785
@@ -1056,11 +1043,11 @@ interactively), DIR must be an absolute file name."
1056 ;; We store a custom package specification so that it is available 1043 ;; We store a custom package specification so that it is available
1057 ;; for `package-vc--unpack-1' as well as `package-vc--checkout-dir' 1044 ;; for `package-vc--unpack-1' as well as `package-vc--checkout-dir'
1058 ;; can later retrieve the actual checkout. 1045 ;; can later retrieve the actual checkout.
1059 (package-vc--save-selected-packages
1060 name (list :url (concat package-vc--url-scheme dir)))
1061 (package-vc--unpack-1 1046 (package-vc--unpack-1
1062 (package-desc-create 1047 (package-desc-create
1063 :name (intern name) 1048 :name (intern name)
1049 :extras (and (not (file-equal-p pkg-dir dir))
1050 `((:vc-dir . ,dir)))
1064 :dir pkg-dir 1051 :dir pkg-dir
1065 :kind 'vc)))) 1052 :kind 'vc))))
1066 1053