From f7f9a720aff8631092343baa53ff33255a3c8a83 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Mon, 17 Jun 2013 21:26:47 -0400 Subject: [PATCH] * lisp/emacs-lisp/package.el: Update package-alist after install. (package-unpack, package-unpack-single): Return the pkg-dir. (package-download-transaction): Use it to update package-alist. Fixes: debbugs:14632 --- lisp/ChangeLog | 6 ++++++ lisp/emacs-lisp/package.el | 30 ++++++++++++++++++------------ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 2d6fdc3367d..76a1a715c91 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2013-06-18 Stefan Monnier + + * emacs-lisp/package.el: Update package-alist after install (bug#14632). + (package-unpack, package-unpack-single): Return the pkg-dir. + (package-download-transaction): Use it to update package-alist. + 2013-06-17 Lars Magne Ingebrigtsen * net/browse-url.el (browse-url-browser-function): Add `eww' as a diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index d7f4f4cf54f..ae4ebb87ee2 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -640,7 +640,8 @@ untar into a directory named DIR; otherwise, signal an error." ;; FIXME: should we delete PKG-DIR if it exists? (let* ((default-directory (file-name-as-directory package-user-dir))) (package-untar-buffer dirname) - (package--make-autoloads-and-compile package pkg-dir)))) + (package--make-autoloads-and-compile package pkg-dir) + pkg-dir))) (defun package--make-autoloads-and-compile (name pkg-dir) "Generate autoloads and do byte-compilation for package named NAME. @@ -696,7 +697,8 @@ PKG-DIR is the name of the package directory." nil pkg-file nil nil nil 'excl)) - (package--make-autoloads-and-compile name pkg-dir)))) + (package--make-autoloads-and-compile name pkg-dir) + pkg-dir))) (defmacro package--with-work-buffer (location file &rest body) "Run BODY in a buffer containing the contents of FILE at LOCATION. @@ -922,16 +924,20 @@ using `package-compute-transaction'." (hold (cadr (assq elt package-load-list))) (v-string (or (and (stringp hold) hold) (package-version-join (package-desc-version desc)))) - (kind (package-desc-kind desc))) - (cond - ((eq kind 'tar) - (package-download-tar elt v-string)) - ((eq kind 'single) - (package-download-single elt v-string - (package-desc-summary desc) - (package-desc-reqs desc))) - (t - (error "Unknown package kind: %s" (symbol-name kind)))) + (kind (package-desc-kind desc)) + (pkg-dir + (cond + ((eq kind 'tar) + (package-download-tar elt v-string)) + ((eq kind 'single) + (package-download-single elt v-string + (package-desc-summary desc) + (package-desc-reqs desc))) + (t + (error "Unknown package kind: %s" (symbol-name kind)))))) + ;; Update package-alist. + ;; FIXME: Check that the installed package's descriptor matches `desc'! + (package-load-descriptor pkg-dir) ;; If package A depends on package B, then A may `require' B ;; during byte compilation. So we need to activate B before ;; unpacking A. -- 2.11.4.GIT