1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-07 06:50:23 -08:00

(package-activate-all): Be more robust when quickstart fails

Quickstart can fail in all kinds of ways, for example if a package
was removed without updating the quickstart file.

* lisp/emacs-lisp/package.el (package-activate-all): Revert to the slow
path if the quickstart signals an error.
(package--activate-all): Fix compilation warning without an autoload.
This commit is contained in:
Stefan Monnier 2023-12-05 14:24:45 -05:00
parent 1f1dbfc6e8
commit 4f0239d814

View file

@ -1720,18 +1720,21 @@ The variable `package-load-list' controls which packages to load."
package-quickstart-file))))
;; The quickstart file presumes that it has a blank slate,
;; so don't use it if we already activated some packages.
(if (and qs (not (bound-and-true-p package-activated-list)))
;; Skip load-source-file-function which would slow us down by a factor
;; 2 when loading the .el file (this assumes we were careful to
;; save this file so it doesn't need any decoding).
(let ((load-source-file-function nil))
(unless (boundp 'package-activated-list)
(setq package-activated-list nil))
(load qs nil 'nomessage))
(require 'package)
(package--activate-all)))))
(or (and qs (not (bound-and-true-p package-activated-list))
;; Skip `load-source-file-function' which would slow us down by
;; a factor 2 when loading the .el file (this assumes we were
;; careful to save this file so it doesn't need any decoding).
(with-demoted-errors "Error during quickstart: %S"
(let ((load-source-file-function nil))
(unless (boundp 'package-activated-list)
(setq package-activated-list nil))
(load qs nil 'nomessage)
t)))
(progn
(require 'package)
(declare-function package--activate-all "package" ())
(package--activate-all))))))
;;;###autoload
(defun package--activate-all ()
(dolist (elt (package--alist))
(condition-case err