Subject: [bug#52774] [PATCH] import: elpa: Also check NonGNU ELPA for updates.

From: Liliana Marie Prikler <[email-masked]>
Date: Sun, 26 Dec 2021 14:08:18 +0100

Hi Xinglu,

Am Sonntag, dem 26.12.2021 um 13:44 +0100 schrieb Xinglu Chen:
> > > I am not sure I follow.  If ‘elpa-package?’ returned #f, the
> > > following would return #f.
> > > 
> > >   (member (elpa-package? pkg) '(gnu nongnu))
> > > 
> > > Meaning that PKG is not hosted on GNU or NonGNU ELPA, and thus,
> > > should not be checked for updates.
> > > 
> > > When including #f in the list, the value returned by the ‘member’
> > > expression would be '(#f), which means that PKG would be checked
> > > for updates, even though it shouldn’t.
> > I think you're misunderstanding what I'm saying, but that might be
> > because I worded it badly.  My suggestion was to make elpa-package?
> > a "predicate with meaning", which returns #f if PKG is not an ELPA
> > package, and a truthy value otherwise, said truthy value being the
> > symbol 'gnu or 'nongnu at the moment
> 
> That was what I had in mind as well, but I don’t see why we would
> need '(gnu nongnu #f) instead of just '(gnu nongnu).  If PKG is not
> in ELPA, we _don’t_ want to check for updates, and therefore, #f
> shouldn’t be a member of the list.
Because (eq? (elpa-package? NOT_AN_ELPA_PACKAGE) #f) needs to be
defined behaviour.

> I took a stab at the problem (patch attached below), and the result
> seems to be what would be expected.
> 
> --8<---------------cut here---------------start------------->8---
> $ ./pre-inst-env guix refresh -t elpa emacs-caml emacs-project emacs-
> helm
> gnu/packages/emacs-xyz.scm:10870:2: warning: no updater for emacs-
> helm                   ;github
> gnu/packages/emacs-xyz.scm:636:13: 0.8.1 is already the latest
> version of emacs-project  ;gnu
> gnu/packages/emacs-xyz.scm:2751:13: 4.9 is already the latest version
> of emacs-caml      ;nongnu
> --8<---------------cut here---------------end--------------->8---
In my personal opinion, elpa-repository as you defined it in that patch
would already be a valid value for the pred field of %elpa-updater. 
There is no need to define a procedure that does the member call and in
fact it makes it harder to update the updater, as now two locations
have to be updated.  If there is a requirement to only return #t or #f
we could make it (compose ->bool elpa-repository)

Cheers