summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorPhilip Kaludercic <philipk@posteo.net>2022-10-12 14:49:23 +0200
committerPhilip Kaludercic <philipk@posteo.net>2022-10-12 14:49:35 +0200
commit4a25205ec121926ffdbe2beee64dc10241b4cc6c (patch)
tree383c1b6946f56c3d314ee688becec16219b2dc9a /lisp/emacs-lisp
parent8e6e6e6de511ea5cf664a17761e879077aa07e0d (diff)
downloademacs-4a25205ec121926ffdbe2beee64dc10241b4cc6c.tar.gz
emacs-4a25205ec121926ffdbe2beee64dc10241b4cc6c.tar.bz2
emacs-4a25205ec121926ffdbe2beee64dc10241b4cc6c.zip
Only use 'package-vc-repository-store' if necessary
* lisp/emacs-lisp/package-vc.el (package-vc-unpack): Check if the upstream data indicates a custom lisp directory. * lisp/emacs-lisp/package.el (package--delete-directory): Adapt accordingly.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/package-vc.el26
-rw-r--r--lisp/emacs-lisp/package.el26
2 files changed, 28 insertions, 24 deletions
diff --git a/lisp/emacs-lisp/package-vc.el b/lisp/emacs-lisp/package-vc.el
index f5cf90963fa..fd8639e4c54 100644
--- a/lisp/emacs-lisp/package-vc.el
+++ b/lisp/emacs-lisp/package-vc.el
@@ -155,8 +155,6 @@ The output is written out into PKG-FILE."
(defun package-vc-unpack (pkg-desc)
"Install the package described by PKG-DESC."
- (unless (file-exists-p package-vc-repository-store)
- (make-directory package-vc-repository-store t))
(let* ((name (package-desc-name pkg-desc))
(dirname (package-desc-full-name pkg-desc))
(pkg-dir (expand-file-name dirname package-user-dir)))
@@ -169,12 +167,17 @@ The output is written out into PKG-FILE."
(`(,backend ,repo ,dir ,branch)
(or (alist-get :upstream attr)
(error "Source package has no repository")))
- (repo-dir (file-name-concat
- package-vc-repository-store
- ;; FIXME: We aren't sure this directory
- ;; will be unique, but we can try other
- ;; names to avoid an unnecessary error.
- (file-name-base repo))))
+ (repo-dir
+ (if (null dir)
+ pkg-dir
+ (unless (file-exists-p package-vc-repository-store)
+ (make-directory package-vc-repository-store t))
+ (file-name-concat
+ package-vc-repository-store
+ ;; FIXME: We aren't sure this directory
+ ;; will be unique, but we can try other
+ ;; names to avoid an unnecessary error.
+ (file-name-base repo)))))
;; Clone the repository into `repo-dir'.
(make-directory (file-name-directory repo-dir) t)
@@ -182,9 +185,10 @@ The output is written out into PKG-FILE."
(vc-clone backend repo repo-dir))
(error "Failed to clone %s from %s" name repo))
- ;; Link from the right position in `repo-dir' to the package
- ;; directory in the ELPA store.
- (make-symbolic-link (file-name-concat repo-dir dir) pkg-dir)
+ (unless (eq pkg-dir repo-dir)
+ ;; Link from the right position in `repo-dir' to the package
+ ;; directory in the ELPA store.
+ (make-symbolic-link (file-name-concat repo-dir dir) pkg-dir))
(when-let ((default-directory repo-dir)
(rev (or (alist-get :rev attr) branch)))
(vc-retrieve-tag pkg-dir rev))
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 2748adddfb6..106b7d5a8de 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -2416,19 +2416,19 @@ compiled."
(cl-loop
for file in (directory-files-recursively dir "\\.el\\'")
do (comp-clean-up-stale-eln (comp-el-to-eln-filename file))))
- (cond
- ((not (package-vc-p pkg-desc))
- (delete-directory dir t))
- ((progn
- (require 'package-vc) ;load `package-vc-repository-store'
- (file-in-directory-p dir package-vc-repository-store))
- (delete-directory
- (expand-file-name
- (car (file-name-split
- (file-relative-name dir package-vc-repository-store)))
- package-vc-repository-store)
- t)
- (delete-file (directory-file-name dir)))))
+ (if (and (package-vc-p pkg-desc)
+ (require 'package-vc) ;load `package-vc-repository-store'
+ (file-in-directory-p dir package-vc-repository-store))
+ (progn
+ (delete-directory
+ (expand-file-name
+ (car (file-name-split
+ (file-relative-name dir package-vc-repository-store)))
+ package-vc-repository-store)
+ t)
+ (delete-file (directory-file-name dir)))
+ (delete-directory dir t)))
+
(defun package-delete (pkg-desc &optional force nosave)
"Delete package PKG-DESC.