Liliana schrieb am Samstag der 25. Dezember 2021 um 16:23 +01: > Am Samstag, dem 25.12.2021 um 15:31 +0100 schrieb Xinglu Chen: >> Liliana schrieb am Samstag der 25. Dezember 2021 um 11:15 +01: >> >> > Am Samstag, dem 25.12.2021 um 10:44 +0100 schrieb Xinglu Chen: >> > > Liliana schrieb am Freitag der 24. Dezember 2021 um 13:17 +01: >> > > >> > > > Am Freitag, dem 24.12.2021 um 12:25 +0100 schrieb Xinglu Chen: >> > > > > * elpa.scm (latest-release): Determine the repository based >> > > > > on >> > > > > the URL of the source. >> > > > > (package-from-gnu.org?): Rename to ... >> > > > > (package-from-gnu.org-or-nongnu.org?): ...this. >> > > > > (%elpa-updater): Adjust accordingly. >> > > > > --- >> > > > >  guix/import/elpa.scm | 13 +++++++++---- >> > > > >  1 file changed, 9 insertions(+), 4 deletions(-) >> > > > > >> > > > > diff --git a/guix/import/elpa.scm b/guix/import/elpa.scm >> > > > > index edabb88b7a..038379e01b 100644 >> > > > > --- a/guix/import/elpa.scm >> > > > > +++ b/guix/import/elpa.scm >> > > > > @@ -424,7 +424,11 @@ (define (guix-package->elpa-name >> > > > > package) >> > > > >  (define (latest-release package) >> > > > >    "Return an for the latest release of >> > > > > PACKAGE." >> > > > >    (define name (guix-package->elpa-name package)) >> > > > > -  (define repo 'gnu) >> > > > > +  (define repo >> > > > > +    (let ((url (origin-uri (package-source package)))) >> > > > > +      (if (string-prefix? "https://elpa.nongnu.org" url) >> > > > > +          'nongnu >> > > > > +          'gnu))) >> > > > >   >> > > > >    (match (elpa-package-info name repo) >> > > > >      (#f >> > > > > @@ -443,11 +447,12 @@ (define repo 'gnu) >> > > > >          (urls (list url)) >> > > > >          (signature-urls (list (string-append url >> > > > > ".sig")))))))) >> > > > >   >> > > > > -(define package-from-gnu.org? >> > > > > +(define package-from-gnu.org-or-nongnu.org? >> > > > >    (url-predicate (lambda (url) >> > > > >                     (let ((uri (string->uri url))) >> > > > >                       (and uri >> > > > > -                          (string=? (uri-host uri) >> > > > > "elpa.gnu.org")))))) >> > > > > +                          (or (string=? (uri-host uri) >> > > > > "elpa.gnu.org") >> > > > > +                              (string=? (uri-host uri) >> > > > > "elpa.nongnu.org"))))))) >> > > > >   >> > > > >  (define %elpa-updater >> > > > >    ;; The ELPA updater.  We restrict it to packages hosted on >> > > > > elpa.gnu.org >> > > > > @@ -455,7 +460,7 @@ (define %elpa-updater >> > > > >    (upstream-updater >> > > > >     (name 'elpa) >> > > > >     (description "Updater for ELPA packages") >> > > > > -   (pred package-from-gnu.org?) >> > > > > +   (pred package-from-gnu.org-or-nongnu.org?) >> > > > >     (latest latest-release))) >> > > > >   >> > > > >  (define elpa-guix-name (cut guix-name "emacs-" <>)) >> > > > > >> > > > > base-commit: e8c1562599c7ebee8b7b228237fb0d75d4472a61 >> > > > Could we make it so that package-from-gnu.org? becomes elpa- >> > > > package? s.t. (member (elpa-package? pkg) '(gnu nongnu #f)) and >> > > > its >> > > > evaluation can be reused? >> > > >> > > Wouldn’t it be enough with just '(gnu nongnu)? >> > > >> > > We could make the ‘elpa-package?’ procedure memoized to avoid >> > > evaluating the same thing twice. >> > The reason for #f is so that packages that are neither from GNU nor >> > NonGNU ELPA are still excluded from the updater. >> >> 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. 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---