From e3eedf42e11331c80210a96ae43d4e6bbcabfdcf Mon Sep 17 00:00:00 2001 From: Philip Kaludercic Date: Sat, 7 Dec 2024 20:02:00 +0100 Subject: [PATCH] Attempt to install package first when upgrading * lisp/emacs-lisp/package.el (package-upgrade): Swap the 'package-install' and the 'package-delete' invocations. (Bug#74556) (cherry picked from commit 3d8e49c41a66a7f05cb96f84e2a10f0f308ac9ca) --- lisp/emacs-lisp/package.el | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 7a8e5a685d9..31df3c2cc44 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -2268,12 +2268,16 @@ had been enabled." ;; `pkg-desc' will be nil when the package is an "active built-in". (if (and pkg-desc (package-vc-p pkg-desc)) (package-vc-upgrade pkg-desc) - (when pkg-desc - (package-delete pkg-desc 'force 'dont-unselect)) (package-install package ;; An active built-in has never been "selected" ;; before. Mark it as installed explicitly. - (and pkg-desc 'dont-select))))) + (and pkg-desc 'dont-select)) + ;; We delete the old package via the descriptor after installing + ;; the new package to avoid losing the package if there issues + ;; during installation (Bug#74556). + (when pkg-desc + (cl-assert (package-desc-dir pkg-desc)) + (package-delete pkg-desc 'force 'dont-unselect))))) (defun package--upgradeable-packages (&optional include-builtins) ;; Initialize the package system to get the list of package -- 2.39.5