Don't call package--ensure-init-file if initialized during startup

* lisp/emacs-lisp/package.el (package-initialize): Check
`after-init-time' rather than `load-file-name' to decide if
`package--ensure-init-file' should be called.  Depending on
`load-file-name' will fail if the user calls `pacakge-initialize' in
file which is loaded from the init file (Bug#24643, Bug#25819).
This commit is contained in:
Noam Postavsky 2017-02-22 21:12:41 -05:00
parent 2bb467a2e2
commit 6b6cc56e72

View file

@ -1445,13 +1445,13 @@ individual packages after calling `package-initialize' -- this is
taken care of by `package-initialize'."
(interactive)
(setq package-alist nil)
(if (equal user-init-file load-file-name)
;; If `package-initialize' is being called as part of loading
;; the init file, it's obvious we don't need to ensure-init.
(setq package--init-file-ensured t
;; And likely we don't need to run it again after init.
package-enable-at-startup nil)
(package--ensure-init-file))
(if after-init-time
(package--ensure-init-file)
;; If `package-initialize' is before we finished loading the init
;; file, it's obvious we don't need to ensure-init.
(setq package--init-file-ensured t
;; And likely we don't need to run it again after init.
package-enable-at-startup nil))
(package-load-all-descriptors)
(package-read-all-archive-contents)
(unless no-activate