diff options
| author | Philip Kaludercic | 2025-12-07 19:31:52 +0100 |
|---|---|---|
| committer | Philip Kaludercic | 2025-12-07 22:24:09 +0100 |
| commit | dba1c734bfdbc6432c8f6028583491b8c8f9663e (patch) | |
| tree | cebd9beef2bd33b5dd7ffeede8d181f3578af5fd | |
| parent | 573acd97e54ceead6d11b330909ffb8e744247cc (diff) | |
| download | emacs-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.el | 31 |
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 | |||
| 189 | directory named \"lisp\" or \"src\" that contains .el files and return | 183 | directory named \"lisp\" or \"src\" that contains .el files and return |
| 190 | that instead." | 184 | that 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 | |||
| 749 | user is fetching code from a repository that does not contain any | 740 | user is fetching code from a repository that does not contain any |
| 750 | Emacs Lisp files.") | 741 | Emacs 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. |
| 762 | PKG-SPEC is a package specification, a property list describing | 745 | PKG-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 | ||