Merge 'emacs-29' into 'feature/inhibit-native-comp-cleanup'

This commit is contained in:
Andrea Corallo 2023-02-17 11:14:38 +01:00
commit d6e4f24372
42 changed files with 907 additions and 508 deletions

View file

@ -435,21 +435,26 @@ version of that package."
(push pkg missing))))))
(version-order (a b)
"Predicate to sort packages in order."
(version-list-< (cadr b) (cadr a)))
(version-list-<
(package-desc-version b)
(package-desc-version a)))
(duplicate-p (a b)
"Are A and B the same package?"
(eq (car a) (car b)))
(eq (package-desc-name a) (package-desc-name b)))
(depends-on-p (target package)
"Does PACKAGE depend on TARGET?"
(or (eq target package)
(let* ((pac package-archive-contents)
(desc (cadr (assoc package pac))))
(seq-some
(apply-partially #'depends-on-p target)
(package-desc-reqs desc)))))
(and desc (seq-some
(apply-partially #'depends-on-p target)
(package-desc-reqs desc))))))
(dependent-order (a b)
(or (not (depends-on-p (car b) (car a)))
(depends-on-p (car a) (car b)))))
(let ((desc-a (package-desc-name a))
(desc-b (package-desc-name b)))
(or (not desc-a) (not desc-b)
(not (depends-on-p desc-b desc-a))
(depends-on-p desc-a desc-b)))))
(mapc #'search requirements)
(cl-callf sort to-install #'version-order)
(cl-callf seq-uniq to-install #'duplicate-p)
@ -597,6 +602,13 @@ attribute in PKG-SPEC."
(vc-retrieve-tag dir release-rev)
(message "No release revision was found, continuing...")))))
(defvar package-vc-non-code-file-names
'(".dir-locals.el" ".dir-locals-2.el")
"List of file names that do not contain Emacs Lisp code.
This list is used by `package-vc--unpack' to better check if the
user is fetching code from a repository that does not contain any
Emacs Lisp files.")
(defun package-vc--unpack (pkg-desc pkg-spec &optional rev)
"Install the package described by PKG-DESC.
PKG-SPEC is a package specification, a property list describing
@ -606,7 +618,7 @@ checkout. This overrides the `:branch' attribute in PKG-SPEC."
(pcase-let* (((map :lisp-dir) pkg-spec)
(name (package-desc-name pkg-desc))
(dirname (package-desc-full-name pkg-desc))
(pkg-dir (expand-file-name dirname package-user-dir)))
(pkg-dir (file-name-as-directory (expand-file-name dirname package-user-dir))))
(when (string-empty-p name)
(user-error "Empty package name"))
(setf (package-desc-dir pkg-desc) pkg-dir)
@ -615,6 +627,17 @@ checkout. This overrides the `:branch' attribute in PKG-SPEC."
(package--delete-directory pkg-dir)
(error "There already exists a checkout for %s" name)))
(package-vc--clone pkg-desc pkg-spec pkg-dir rev)
(when (directory-empty-p pkg-dir)
(delete-directory pkg-dir)
(error "Empty checkout for %s" name))
(unless (seq-remove
(lambda (file)
(member (file-name-nondirectory file) package-vc-non-code-file-names))
(directory-files-recursively pkg-dir "\\.el\\'" nil))
(when (yes-or-no-p (format "No Emacs Lisp files found when fetching \"%s\", \
abort installation?" name))
(delete-directory pkg-dir t)
(user-error "Installation aborted")))
;; When nothing is specified about a `lisp-dir', then should
;; heuristically check if there is a sub-directory with lisp