summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorArtur Malabarba <bruce.connor.am@gmail.com>2015-01-14 13:04:00 -0200
committerArtur Malabarba <bruce.connor.am@gmail.com>2015-01-14 13:04:00 -0200
commit44d3f7dd079c150d2b484cf804f86ea6cc00f524 (patch)
tree9dcf26b7db4b292a6c51da581add6e094b1b0fa2 /lisp/emacs-lisp
parent7224ac1ed8898d291230b787dea6f8fb2d87f8ee (diff)
downloademacs-44d3f7dd079c150d2b484cf804f86ea6cc00f524.tar.gz
Set 'dir packages to 'tar or 'single after installation.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/package.el18
1 files changed, 12 insertions, 6 deletions
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index dcb63a3e207..27d6b9ce738 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -787,12 +787,18 @@ untar into a directory named DIR; otherwise, signal an error."
(pcase (package-desc-kind pkg-desc)
(`dir
(make-directory pkg-dir t)
- (dolist (source-file
- (directory-files
- default-directory 'full "\\`[^.].*\\.el\\'" 'nosort))
- (let ((target-el-file
- (expand-file-name (file-name-nondirectory source-file) pkg-dir)))
- (copy-file source-file target-el-file t))))
+ (let ((file-list
+ (directory-files
+ default-directory 'full "\\`[^.].*\\.el\\'" 'nosort)))
+ (dolist (source-file file-list)
+ (let ((target-el-file
+ (expand-file-name (file-name-nondirectory source-file) pkg-dir)))
+ (copy-file source-file target-el-file t)))
+ ;; Now that the files have been installed, this package is
+ ;; indistinguishable from a `tar' or a `single'. Let's make
+ ;; things simple by ensuring we're one of them.
+ (setf (package-desc-kind pkg-desc)
+ (if (> (length file-list) 1) 'tar 'single))))
(`tar
(make-directory package-user-dir t)
;; FIXME: should we delete PKG-DIR if it exists?