diff options
| author | Stefan Monnier | 2013-06-17 21:26:47 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2013-06-17 21:26:47 -0400 |
| commit | f7f9a720aff8631092343baa53ff33255a3c8a83 (patch) | |
| tree | 7f224aa527f61dd756d692db6f618a337dac36c1 | |
| parent | 57ff04e08d09ed8047bf9881d8579dff7dd172a3 (diff) | |
| download | emacs-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/ChangeLog | 6 | ||||
| -rw-r--r-- | 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 @@ | |||
| 1 | 2013-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 | |||
| 1 | 2013-06-17 Lars Magne Ingebrigtsen <larsi@gnus.org> | 7 | 2013-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. |