From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Philip Kaludercic Newsgroups: gmane.emacs.bugs Subject: bug#72141: 29.4; package-upgrade vs package-load-list Date: Sun, 04 Aug 2024 14:57:23 +0000 Message-ID: <8734nkz67g.fsf@posteo.net> References: <87ikx5xulu.fsf@posteo.net> <865xsr2tn0.fsf@gnu.org> <871q3drb4v.fsf@posteo.net> <8634nt1z2k.fsf@gnu.org> <87plqxbsh4.fsf@posteo.net> <87o76c3fiq.fsf@posteo.net> <8734nmguiq.fsf@posteo.net> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="29599"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Eli Zaretskii , 72141@debbugs.gnu.org To: Thierry Volpiatto Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun Aug 04 16:57:56 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1sacgF-0007XH-Kg for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 04 Aug 2024 16:57:56 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sacg3-00010r-Bf; Sun, 04 Aug 2024 10:57:43 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sacg1-00010h-P8 for bug-gnu-emacs@gnu.org; Sun, 04 Aug 2024 10:57:41 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sacg1-0004n2-Fm for bug-gnu-emacs@gnu.org; Sun, 04 Aug 2024 10:57:41 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:Date:References:In-Reply-To:From:To:Subject; bh=HLnn4KzTyZ6cMFfdJQAR1tcy/6v8POHdYZV7KGzrR1Q=; b=G4lTcMPR0BhjN0NWnrG3j+zdcMrMv8dNsXEBgBhwH9R1Uqj5aS7FQyhVlwlibZSIklgf/Pj9EkFxhW1xV0ezJ137oF9bBTdsg3AjH7ZEgT4EbM7tXXZI79x2v6YCx6jwn84cAPl0XfHbWcVc9pRsooIE94R/XPcKu+miveDWOGyUf0xnOfHoO0RXcRXIsYhTrUkrG5ZVmXkKCfzOtGb8OBnJqU6FdbntpxziHR6OF/ooP5XXq0ROlhGDxlc5ux6oSfZW/8js+IZf5TWaMMjS/eYxBxeIDtNb13qlt6VkzfK/PRblq0MARsCVsiGyjEw8U9aBKaUSsa2u7KdcPYBSaQ==; Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1sacgM-0002Mn-HI for bug-gnu-emacs@gnu.org; Sun, 04 Aug 2024 10:58:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Philip Kaludercic Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 04 Aug 2024 14:58:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72141 X-GNU-PR-Package: emacs Original-Received: via spool by 72141-submit@debbugs.gnu.org id=B72141.17227834749075 (code B ref 72141); Sun, 04 Aug 2024 14:58:02 +0000 Original-Received: (at 72141) by debbugs.gnu.org; 4 Aug 2024 14:57:54 +0000 Original-Received: from localhost ([127.0.0.1]:56969 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sacgD-0002MI-Cy for submit@debbugs.gnu.org; Sun, 04 Aug 2024 10:57:53 -0400 Original-Received: from mout01.posteo.de ([185.67.36.65]:54089) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sacgB-0002Lq-Qs for 72141@debbugs.gnu.org; Sun, 04 Aug 2024 10:57:52 -0400 Original-Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id EFE59240028 for <72141@debbugs.gnu.org>; Sun, 4 Aug 2024 16:57:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1722783445; bh=OIs4o86u0MyH/NI1W1anGVg2l+eBXyJnc6imu4AFIqE=; h=From:To:Cc:Subject:Autocrypt:OpenPGP:Date:Message-ID:MIME-Version: Content-Type:From; b=jOm6e9sjRwsvdbmKb0BXNvOEbsWb0F32u//7XvajZjEn6JOaTaXY24vV5elMxKfQX XnC9LI6O+P8b5dKwI8wKBFDwBVQ7rj6jn+Zn5M0I/cYRVW4LGzuaG8uXladRvdXEa4 QUGK4kAea14nBZKNdkISF2AMEtTnTDGvKURFmJdFwLjWXByJA1UDIsOkhs4VNg5N6X VgE4oRURBoIx706gO0To+BTQs6vKmCYmpU5vlRF3lmoTgiaH9PGyjiSQpHRUO1wVkM 0XDMCBHb4wGvw+WdAwvQP0Vr1aklksnMsjhx7XG6shna/Q3PD46aLGDAvLE5rtOTEz KHbl2R3QCoCIQ== Original-Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4WcN2r1MtSz6tsb; Sun, 4 Aug 2024 16:57:24 +0200 (CEST) In-Reply-To: <8734nmguiq.fsf@posteo.net> (Thierry Volpiatto's message of "Sat, 03 Aug 2024 03:22:37 +0000") Autocrypt: addr=philipk@posteo.net; keydata= mDMEZBBQQhYJKwYBBAHaRw8BAQdAHJuofBrfqFh12uQu0Yi7mrl525F28eTmwUDflFNmdui0QlBo aWxpcCBLYWx1ZGVyY2ljIChnZW5lcmF0ZWQgYnkgYXV0b2NyeXB0LmVsKSA8cGhpbGlwa0Bwb3N0 ZW8ubmV0PoiWBBMWCAA+FiEEDg7HY17ghYlni8XN8xYDWXahwukFAmQQUEICGwMFCQHhM4AFCwkI BwIGFQoJCAsCBBYCAwECHgECF4AACgkQ8xYDWXahwulikAEA77hloUiSrXgFkUVJhlKBpLCHUjA0 mWZ9j9w5d08+jVwBAK6c4iGP7j+/PhbkxaEKa4V3MzIl7zJkcNNjHCXmvFcEuDgEZBBQQhIKKwYB BAGXVQEFAQEHQI5NLiLRjZy3OfSt1dhCmFyn+fN/QKELUYQetiaoe+MMAwEIB4h+BBgWCAAmFiEE Dg7HY17ghYlni8XN8xYDWXahwukFAmQQUEICGwwFCQHhM4AACgkQ8xYDWXahwukm+wEA8cml4JpK NeAu65rg+auKrPOP6TP/4YWRCTIvuYDm0joBALw98AMz7/qMHvSCeU/hw9PL6u6R2EScxtpKnWof z4oM OpenPGP: id=philipk@posteo.net; url="https://keys.openpgp.org/vks/v1/by-email/philipk@posteo.net"; preference=signencrypt X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:289760 Archived-At: Thierry Volpiatto writes: > Thierry Volpiatto writes: > >> Thierry Volpiatto writes: >> >>> Eli Zaretskii writes: >>> >>>>> From: Philip Kaludercic >>>>> Cc: Thierry Volpiatto , 72141@debbugs.gnu.org >>>>> Date: Sun, 28 Jul 2024 11:47:44 +0000 >>>>> >>>>> Eli Zaretskii writes: >>>>> >>>>> >> From: Thierry Volpiatto >>>>> >> Date: Tue, 16 Jul 2024 14:46:37 +0000 >>>>> >> >>>>> >> >>>>> >> I think there is a bug here, but please verify with following recipe as >>>>> >> I don't use widely package installation, at least for myself. >>>>> >> When reading >>>>> >> the code I believe it is reproductible as well on emacs-30+. >>>>> >> >>>>> >> 1) Install package foo and bar. >>>>> >> 2) Disable them in package-load-list ((foo nil) (bar nil) all). >>>>> >> 3) Wait some time until foo and/or bar have new versions available. >>>>> >> 4) Call package-upgrade-all. It will call package-upgrade on foo >>>>> >> and bar (and possibly others). When package-upgrade find foo >>>>> >> package it will (1) delete it and (2) call package-install which >>>>> >> will refuse to install (error) because foo is disabled. >>>>> >> >>>>> >> As a result we have lost foo package, it is now uninstalled. >>>>> >> Same problem with M-x package-upgrade, foo and bar are listed in >>>>> >> completion and made available whereas they are going to fail to >>>>> >> upgrade. >>>>> > >>>>> > Philip, any comments or suggestions? >>>>> >>>>> The issue is that we don't install a package if it is disabled. So >>>>> either we allow installing (but don't activate) disabled packages, or we >>>>> ignore disabled packages during upgrades. >>>> >>>> The latter, I'd say. It makes little sense to upgrade disabled >>>> packages. >>> >>> When I posted initially this bugreport I wrote this (fully not tested): >>> >>> (defun package--upgradeable-packages (&optional include-builtins filter-load-list) >>> ;; Initialize the package system to get the list of package >>> ;; symbols for completion. >>> (package--archives-initialize) >>> (let ((pkgs (if include-builtins >>> (append package-alist >>> (mapcan >>> (lambda (elt) >>> (when (not (assq (car elt) package-alist)) >>> (list (list (car elt) (package--from-builtin elt))))) >>> package--builtins)) >>> package-alist))) >>> (cl-loop for (sym desc) in pkgs >>> for available = (assq sym package-archive-contents) >>> when (or (and available >>> (or (and >>> include-builtins >>> (not (package-desc-version desc))) >>> (version-list-< >>> (package-desc-version desc) >>> (package-desc-version (cadr available))) >>> (and filter-load-list >>> (pcase (assq p package-load-list) >>> (`(,sym ,val) (or (not (eq val nil)) >>> (not (stringp val)))))))) >>> (package-vc-p desc)) >>> collect sym))) >>> >>> Perhaps package-disabled-p can be used instead of the pcase (I didn't >>> know its existence). >> >> Here a version fixing typo and using package-disabled-p (same, still >> fully untested) >> Note the extra optional arg filter-load-list that allow preserving the initial behavior >> if needed (better name?). >> >> (defun package--upgradeable-packages (&optional include-builtins filter-load-list) >> ;; Initialize the package system to get the list of package >> ;; symbols for completion. >> (package--archives-initialize) >> (let ((pkgs (if include-builtins >> (append package-alist >> (mapcan >> (lambda (elt) >> (when (not (assq (car elt) package-alist)) >> (list (list (car elt) (package--from-builtin elt))))) >> package--builtins)) >> package-alist))) >> (cl-loop for (sym desc) in pkgs >> for available = (assq sym package-archive-contents) >> for cversion = (and available (package-desc-version desc)) >> when (or (and available >> (or (and >> include-builtins >> (not (package-desc-version desc))) >> (version-list-< >> cversion >> (package-desc-version (cadr available))) >> (and filter-load-list >> (package-disabled-p sym cversion)))) >> (package-vc-p desc)) >> collect sym))) >> >> Also there is IMO another inconsistency in package-upgrade where the >> completion is done inconditionally on packages+builtins and later >> package-install-upgrade-built-in is let bounded to prevent >> package-install to upgrade built-in in case user chose a built-in! > > I finally rewrited a `package--upgradeable-packages` for helm and could test > it (versions I sent previously haven't been tested and are wrong), it is > working fine. I can send a patch if you want let me know. Gladly, then I'd like to try it out it and perhaps write a ERT test. > Thanks. > > https://github.com/emacs-helm/helm/blob/master/helm-packages.el#L266 -- Philip Kaludercic on peregrine