From 1bb8d2327df7d2845e61d095a5fad9d5be5604b1 Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Sat, 9 Dec 2023 10:03:37 +0100 Subject: [PATCH] Remove old VC packages from 'package-alist' after installing * lisp/emacs-lisp/package-vc.el (package-vc--unpack-1): Wait for all system operations to have been completed, before proceeding to remove old package descriptors from 'package-alist'. This avoids loosing a package if an error occurs during upgrades. --- lisp/emacs-lisp/package-vc.el | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lisp/emacs-lisp/package-vc.el b/lisp/emacs-lisp/package-vc.el index 9780e4d53de..c23ca158b2d 100644 --- a/lisp/emacs-lisp/package-vc.el +++ b/lisp/emacs-lisp/package-vc.el @@ -503,10 +503,6 @@ identify a package as a VC package later on), building documentation and marking the package as installed." (let ((pkg-spec (package-vc--desc->spec pkg-desc)) missing) - ;; Remove any previous instance of PKG-DESC from `package-alist' - (let ((pkgs (assq (package-desc-name pkg-desc) package-alist))) - (when pkgs - (setf (cdr pkgs) (seq-remove #'package-vc-p (cdr pkgs))))) ;; In case the package was installed directly from source, the ;; dependency list wasn't know beforehand, and they might have @@ -576,6 +572,11 @@ documentation and marking the package as installed." (dolist (doc-file (ensure-list (plist-get pkg-spec :doc))) (package-vc--build-documentation pkg-desc doc-file)))) + ;; Remove any previous instance of PKG-DESC from `package-alist' + (let ((pkgs (assq (package-desc-name pkg-desc) package-alist))) + (when pkgs + (setf (cdr pkgs) (seq-remove #'package-vc-p (cdr pkgs))))) + ;; Update package-alist. (let ((new-desc (package-load-descriptor pkg-dir))) ;; Activation has to be done before compilation, so that if we're -- 2.39.2