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.
This commit is contained in:
parent
8e6e6e6de5
commit
4a25205ec1
2 changed files with 28 additions and 24 deletions
|
@ -155,8 +155,6 @@ The output is written out into PKG-FILE."
|
||||||
|
|
||||||
(defun package-vc-unpack (pkg-desc)
|
(defun package-vc-unpack (pkg-desc)
|
||||||
"Install the package described by 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))
|
(let* ((name (package-desc-name pkg-desc))
|
||||||
(dirname (package-desc-full-name pkg-desc))
|
(dirname (package-desc-full-name pkg-desc))
|
||||||
(pkg-dir (expand-file-name dirname package-user-dir)))
|
(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)
|
(`(,backend ,repo ,dir ,branch)
|
||||||
(or (alist-get :upstream attr)
|
(or (alist-get :upstream attr)
|
||||||
(error "Source package has no repository")))
|
(error "Source package has no repository")))
|
||||||
(repo-dir (file-name-concat
|
(repo-dir
|
||||||
package-vc-repository-store
|
(if (null dir)
|
||||||
;; FIXME: We aren't sure this directory
|
pkg-dir
|
||||||
;; will be unique, but we can try other
|
(unless (file-exists-p package-vc-repository-store)
|
||||||
;; names to avoid an unnecessary error.
|
(make-directory package-vc-repository-store t))
|
||||||
(file-name-base repo))))
|
(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'.
|
;; Clone the repository into `repo-dir'.
|
||||||
(make-directory (file-name-directory repo-dir) t)
|
(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))
|
(vc-clone backend repo repo-dir))
|
||||||
(error "Failed to clone %s from %s" name repo))
|
(error "Failed to clone %s from %s" name repo))
|
||||||
|
|
||||||
;; Link from the right position in `repo-dir' to the package
|
(unless (eq pkg-dir repo-dir)
|
||||||
;; directory in the ELPA store.
|
;; Link from the right position in `repo-dir' to the package
|
||||||
(make-symbolic-link (file-name-concat repo-dir dir) pkg-dir)
|
;; directory in the ELPA store.
|
||||||
|
(make-symbolic-link (file-name-concat repo-dir dir) pkg-dir))
|
||||||
(when-let ((default-directory repo-dir)
|
(when-let ((default-directory repo-dir)
|
||||||
(rev (or (alist-get :rev attr) branch)))
|
(rev (or (alist-get :rev attr) branch)))
|
||||||
(vc-retrieve-tag pkg-dir rev))
|
(vc-retrieve-tag pkg-dir rev))
|
||||||
|
|
|
@ -2416,19 +2416,19 @@ compiled."
|
||||||
(cl-loop
|
(cl-loop
|
||||||
for file in (directory-files-recursively dir "\\.el\\'")
|
for file in (directory-files-recursively dir "\\.el\\'")
|
||||||
do (comp-clean-up-stale-eln (comp-el-to-eln-filename file))))
|
do (comp-clean-up-stale-eln (comp-el-to-eln-filename file))))
|
||||||
(cond
|
(if (and (package-vc-p pkg-desc)
|
||||||
((not (package-vc-p pkg-desc))
|
(require 'package-vc) ;load `package-vc-repository-store'
|
||||||
(delete-directory dir t))
|
(file-in-directory-p dir package-vc-repository-store))
|
||||||
((progn
|
(progn
|
||||||
(require 'package-vc) ;load `package-vc-repository-store'
|
(delete-directory
|
||||||
(file-in-directory-p dir package-vc-repository-store))
|
(expand-file-name
|
||||||
(delete-directory
|
(car (file-name-split
|
||||||
(expand-file-name
|
(file-relative-name dir package-vc-repository-store)))
|
||||||
(car (file-name-split
|
package-vc-repository-store)
|
||||||
(file-relative-name dir package-vc-repository-store)))
|
t)
|
||||||
package-vc-repository-store)
|
(delete-file (directory-file-name dir)))
|
||||||
t)
|
(delete-directory dir t)))
|
||||||
(delete-file (directory-file-name dir)))))
|
|
||||||
|
|
||||||
(defun package-delete (pkg-desc &optional force nosave)
|
(defun package-delete (pkg-desc &optional force nosave)
|
||||||
"Delete package PKG-DESC.
|
"Delete package PKG-DESC.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue