Subject: Re: bug#59087: 29.0.50; package-vc-update error

From: Philip Kaludercic <[email-masked]>
Date: Fri, 18 Nov 2022 15:22:07 +0000

Feng Shu <[email-masked]> writes:

> Philip Kaludercic <[email-masked]> writes:
>
>> Feng Shu <[email-masked]> writes:
>>
>>> Philip Kaludercic <[email-masked]> writes:
>>>
>>>> Feng Shu <[email-masked]> writes:
>>>>
>>>>> I have found another issue:
>>>>>
>>>>> If I run package-update when emacs first start, it will show error:
>>>>>
>>>>> package-update: Symbol’s function definition is void: package-vc-update
>>>>
>>>
>>> When I install another package, for example: cnfonts, package-update do
>>> not show cnfonts, I need to reboot emacs.
>>
>> That is interesting, it the package listed in the Package List before
>> restarting?
>
> I have installed cnfonts tar from melpa before, when I delete it,
> package-update show cnfonts. 

Ok, so it looks like the issue is in the following:

--8<---------------cut here---------------start------------->8---
  (seq-filter
    (lambda (elt)
      (or (let ((available
                 (assq (car elt) package-archive-contents)))
            (and available
                 (version-list-<
                  (package-desc-version (cadr elt))
                  (package-desc-version (cadr available)))))
          (package-vc-p (cadr (assq (car elt) package-alist)))))
    package-alist)
--8<---------------cut here---------------end--------------->8---

specifically the

--8<---------------cut here---------------start------------->8---
(package-vc-p (cadr (assq (car elt) package-alist)))
--8<---------------cut here---------------end--------------->8---

We store all package descriptions in `package-alist', but here we only
check the first one (which is also the one I believe that is activated).

But after restarting Emacs, package.el makes sure that VC packages are
prioritised, so that is why the check does work later on.

The question is, what package is enabled?  I'd say that if after
installation, you run M-x find-library and end up in the MELPA
directory, then we would have to make up our mind of this is the right
thing or not.

But if the VC package is active, then we just have to make sure that it
is inserted at the beginning of the list, and not at the end.