Use 'package-vc-selected-packages' to store package specs

* doc/emacs/package.texi (Fetching Package Sources): Do not promote
the usage of 'package-vc-selected-packages' to install packages.
* lisp/emacs-lisp/package-vc.el (package-vc-selected-packages): Remove
custom setter and change docstring according to these changes.
(package-vc--desc->spec): Consult 'package-vc-selected-packages' for
package specifications.
(package-vc--unpack): Add unknown package specifications to
'package-vc-selected-packages'
This commit is contained in:
Philip Kaludercic 2023-03-15 09:51:14 +01:00
parent d3ad6c5e16
commit 168165178f
2 changed files with 22 additions and 39 deletions

View file

@ -558,29 +558,6 @@ regular package listing. If you just wish to clone the source of a
package, without adding it to the package list, use
@code{package-vc-checkout}.
@vindex package-vc-selected-packages
@findex package-vc-install-selected-packages
An alternative way to use @code{package-vc-install} is via the
@code{package-vc-selected-packages} user option. This is an alist of
packages to install, where each key is a package name and the value is
@code{nil}, indicating that any revision is to install, a string,
indicating a specific revision or a package specification plist. The
side effect of setting the user option is to install the package, but
the process can also be manually triggered using the function
@code{package-vc-install-selected-packages}. Here is an example of
how the user option:
@example
@group
(setopt package-vc-selected-packages
'((modus-themes . "0f39eb3fd9") ;specific revision
(auctex . nil) ;any revision
(foo ;a package specification
:url "https://git.sv.gnu.org/r/foo-mode.git"
:branch "trunk")))
@end group
@end example
@findex package-report-bug
@findex package-vc-prepare-patch
With the source checkout, you might want to reproduce a bug against

View file

@ -139,7 +139,6 @@ the `clone' function."
(package-desc-create :name name :kind 'vc))
spec)))))))
;;;###autoload
(defcustom package-vc-selected-packages '()
"List of packages that must be installed.
Each member of the list is of the form (NAME . SPEC), where NAME
@ -174,13 +173,9 @@ is a symbol designating the package and SPEC is one of:
All other keys are ignored.
This user option differs from `package-selected-packages' in that
it is meant to be specified manually. If you want to install all
the packages in the list, you cal also use
`package-vc-install-selected-packages'.
Note that this option will not override an existing source
package installation or revert the checked out revision."
This user option will be automatically updated to store package
specifications for packages that are not specified in any
archive."
:type '(alist :tag "List of packages you want to be installed"
:key-type (symbol :tag "Package")
:value-type
@ -191,10 +186,6 @@ package installation or revert the checked out revision."
(:lisp-dir string)
(:main-file string)
(:vc-backend symbol)))))
:initialize #'custom-initialize-default
:set (lambda (sym val)
(custom-set-default sym val)
(package-vc-install-selected-packages))
:version "29.1")
(defvar package-vc--archive-spec-alist nil
@ -224,12 +215,17 @@ All other values are ignored.")
The optional argument NAME can be used to override the default
name for PKG-DESC."
(alist-get
(or name (package-desc-name pkg-desc))
(if (package-desc-archive pkg-desc)
(setq name (or name (package-desc-name pkg-desc)))
(if (and (package-desc-archive pkg-desc)
(not (alist-get name package-vc-selected-packages
nil nil #'string=)))
(alist-get (intern (package-desc-archive pkg-desc))
package-vc--archive-spec-alist)
(apply #'append (mapcar #'cdr package-vc--archive-spec-alist)))
nil nil #'string=))
;; Consult both our local list of package specifications, as well
;; as the lists provided by the archives.
(apply #'append (cons package-vc-selected-packages
(mapcar #'cdr package-vc--archive-spec-alist))))
'() nil #'string=))
(define-inline package-vc--query-spec (pkg-desc prop)
"Query the property PROP for the package specification of PKG-DESC.
@ -659,9 +655,19 @@ abort installation?" name))
;; file system or between installations.
(throw 'done (setq lisp-dir name)))))
;; Store the :lisp-dir
(when lisp-dir
(push (cons :lisp-dir lisp-dir)
(package-desc-extras pkg-desc)))
;; Ensure we have a copy of the package specification
(unless (equal (alist-get name (mapcar #'cdr package-vc--archive-spec-alist)) pkg-spec)
(customize-save-variable
'package-vc-selected-packages
(cons (cons name pkg-spec)
(seq-remove (lambda (spec) (string= name (car spec)))
package-vc-selected-packages))))
(package-vc--unpack-1 pkg-desc pkg-dir)))
(defun package-vc--read-package-name (prompt &optional allow-url installed)