aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2013-06-17 21:26:47 -0400
committerStefan Monnier2013-06-17 21:26:47 -0400
commitf7f9a720aff8631092343baa53ff33255a3c8a83 (patch)
tree7f224aa527f61dd756d692db6f618a337dac36c1
parent57ff04e08d09ed8047bf9881d8579dff7dd172a3 (diff)
downloademacs-f7f9a720aff8631092343baa53ff33255a3c8a83.tar.gz
emacs-f7f9a720aff8631092343baa53ff33255a3c8a83.zip
* 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
-rw-r--r--lisp/ChangeLog6
-rw-r--r--lisp/emacs-lisp/package.el30
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 @@
12013-06-18 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * emacs-lisp/package.el: Update package-alist after install (bug#14632).
4 (package-unpack, package-unpack-single): Return the pkg-dir.
5 (package-download-transaction): Use it to update package-alist.
6
12013-06-17 Lars Magne Ingebrigtsen <larsi@gnus.org> 72013-06-17 Lars Magne Ingebrigtsen <larsi@gnus.org>
2 8
3 * net/browse-url.el (browse-url-browser-function): Add `eww' as a 9 * 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."
640 ;; FIXME: should we delete PKG-DIR if it exists? 640 ;; FIXME: should we delete PKG-DIR if it exists?
641 (let* ((default-directory (file-name-as-directory package-user-dir))) 641 (let* ((default-directory (file-name-as-directory package-user-dir)))
642 (package-untar-buffer dirname) 642 (package-untar-buffer dirname)
643 (package--make-autoloads-and-compile package pkg-dir)))) 643 (package--make-autoloads-and-compile package pkg-dir)
644 pkg-dir)))
644 645
645(defun package--make-autoloads-and-compile (name pkg-dir) 646(defun package--make-autoloads-and-compile (name pkg-dir)
646 "Generate autoloads and do byte-compilation for package named NAME. 647 "Generate autoloads and do byte-compilation for package named NAME.
@@ -696,7 +697,8 @@ PKG-DIR is the name of the package directory."
696 nil 697 nil
697 pkg-file 698 pkg-file
698 nil nil nil 'excl)) 699 nil nil nil 'excl))
699 (package--make-autoloads-and-compile name pkg-dir)))) 700 (package--make-autoloads-and-compile name pkg-dir)
701 pkg-dir)))
700 702
701(defmacro package--with-work-buffer (location file &rest body) 703(defmacro package--with-work-buffer (location file &rest body)
702 "Run BODY in a buffer containing the contents of FILE at LOCATION. 704 "Run BODY in a buffer containing the contents of FILE at LOCATION.
@@ -922,16 +924,20 @@ using `package-compute-transaction'."
922 (hold (cadr (assq elt package-load-list))) 924 (hold (cadr (assq elt package-load-list)))
923 (v-string (or (and (stringp hold) hold) 925 (v-string (or (and (stringp hold) hold)
924 (package-version-join (package-desc-version desc)))) 926 (package-version-join (package-desc-version desc))))
925 (kind (package-desc-kind desc))) 927 (kind (package-desc-kind desc))
926 (cond 928 (pkg-dir
927 ((eq kind 'tar) 929 (cond
928 (package-download-tar elt v-string)) 930 ((eq kind 'tar)
929 ((eq kind 'single) 931 (package-download-tar elt v-string))
930 (package-download-single elt v-string 932 ((eq kind 'single)
931 (package-desc-summary desc) 933 (package-download-single elt v-string
932 (package-desc-reqs desc))) 934 (package-desc-summary desc)
933 (t 935 (package-desc-reqs desc)))
934 (error "Unknown package kind: %s" (symbol-name kind)))) 936 (t
937 (error "Unknown package kind: %s" (symbol-name kind))))))
938 ;; Update package-alist.
939 ;; FIXME: Check that the installed package's descriptor matches `desc'!
940 (package-load-descriptor pkg-dir)
935 ;; If package A depends on package B, then A may `require' B 941 ;; If package A depends on package B, then A may `require' B
936 ;; during byte compilation. So we need to activate B before 942 ;; during byte compilation. So we need to activate B before
937 ;; unpacking A. 943 ;; unpacking A.