bug#81373: 31.0.90; package-upgrade and package-retention-policy

Jeremy Bryant via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <[email protected]>
Newsgroups gmane.emacs.bugs
Message-ID <[email protected]>
Jeremy Bryant via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <[email protected]> writes:

> Philip Kaludercic <[email protected]> writes:
>

>>>> I suspect this is related to the new option, so adding Philip.
>>>> package-retention-policy is t
>>>
>>> You mean to say that this is your local customisation?
>
> Yes, and by setting this variabel package-retention-policy to nil, it
> restores the behaviour where upgrading all packages by 'U' in M-x
> list-packages, works again, with all packages upgraded via this user
> interface.  (Rather than calling package-upgrade-all as above, being
> known to work.)
>
> In testing, I observe this bug on two different installations of Emacs
> on two machines.
>
> When time permits, I would like to trace more precisely if it is due to
> the particular set of packages, which is unlikely in any case.
>
> In the meantime, if you have suggestions to debug, I can try locally.
>
>
>>>
>>>> This function specifically hangs
>>>> package-menu--mark-upgrades-1

I have debugged the code from edebug, and narrowed it down.
with the new option package-retention-policy set to t, it hangs on the
last package requiring an upgrade.
What is missing is the forward-line part of
package-menu--mark-upgrades-1 here:
            (cond ((null upgrade)
                   (forward-line 1))

in

        (while (not (eobp))
          (let* ((pkg-desc (tabulated-list-get-id))
                 (upgrade (cdr (assq (package-desc-name pkg-desc) upgrades))))
            (cond ((null upgrade)
                   (forward-line 1))
                  ((equal pkg-desc upgrade)
                   (package-menu-mark-install))
                  (t
                   (unless (package-matches-selector-p
                            package-retention-policy
                            pkg-desc)
                     (package-menu-mark-delete)))))))



By changing the new option package-retention-policy back to nil, it
enters the function package-menu-mark-delete, of which the last line is

(forward-line)

So what is missing is restoring that forward-line somewhere with the new option.


When time permits I intend to write a patch but in the meantime the
above may help others.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.