* [bug#52774] [PATCH] import: elpa: Also check NonGNU ELPA for updates. @ 2021-12-24 11:25 Xinglu Chen 2021-12-24 12:17 ` Liliana Marie Prikler 0 siblings, 1 reply; 11+ messages in thread From: Xinglu Chen @ 2021-12-24 11:25 UTC (permalink / raw) To: 52774 * 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 <upstream-release> 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 -- 2.33.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [bug#52774] [PATCH] import: elpa: Also check NonGNU ELPA for updates. 2021-12-24 11:25 [bug#52774] [PATCH] import: elpa: Also check NonGNU ELPA for updates Xinglu Chen @ 2021-12-24 12:17 ` Liliana Marie Prikler 2021-12-25 9:44 ` Xinglu Chen 0 siblings, 1 reply; 11+ messages in thread From: Liliana Marie Prikler @ 2021-12-24 12:17 UTC (permalink / raw) To: Xinglu Chen, 52774 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 <upstream-release> 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? If not, I'd still use a cond or match in the definition of repo. Otherwise LGTM, cheers! ^ permalink raw reply [flat|nested] 11+ messages in thread
* [bug#52774] [PATCH] import: elpa: Also check NonGNU ELPA for updates. 2021-12-24 12:17 ` Liliana Marie Prikler @ 2021-12-25 9:44 ` Xinglu Chen 2021-12-25 10:15 ` Liliana Marie Prikler 0 siblings, 1 reply; 11+ messages in thread From: Xinglu Chen @ 2021-12-25 9:44 UTC (permalink / raw) To: Liliana Marie Prikler, 52774 [-- Attachment #1: Type: text/plain, Size: 2851 bytes --] 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 <upstream-release> 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. > Otherwise LGTM, cheers! Cool, thanks for taking a look! [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 861 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* [bug#52774] [PATCH] import: elpa: Also check NonGNU ELPA for updates. 2021-12-25 9:44 ` Xinglu Chen @ 2021-12-25 10:15 ` Liliana Marie Prikler 2021-12-25 14:31 ` Xinglu Chen 0 siblings, 1 reply; 11+ messages in thread From: Liliana Marie Prikler @ 2021-12-25 10:15 UTC (permalink / raw) To: Xinglu Chen, 52774 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 <upstream-release> 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. Cheers ^ permalink raw reply [flat|nested] 11+ messages in thread
* [bug#52774] [PATCH] import: elpa: Also check NonGNU ELPA for updates. 2021-12-25 10:15 ` Liliana Marie Prikler @ 2021-12-25 14:31 ` Xinglu Chen 2021-12-25 15:23 ` Liliana Marie Prikler 0 siblings, 1 reply; 11+ messages in thread From: Xinglu Chen @ 2021-12-25 14:31 UTC (permalink / raw) To: Liliana Marie Prikler, 52774 [-- Attachment #1: Type: text/plain, Size: 3734 bytes --] 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 <upstream-release> 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. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 861 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* [bug#52774] [PATCH] import: elpa: Also check NonGNU ELPA for updates. 2021-12-25 14:31 ` Xinglu Chen @ 2021-12-25 15:23 ` Liliana Marie Prikler 2021-12-26 12:44 ` Xinglu Chen 0 siblings, 1 reply; 11+ messages in thread From: Liliana Marie Prikler @ 2021-12-25 15:23 UTC (permalink / raw) To: Xinglu Chen, 52774 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 <upstream-release> 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 (which could be expanded to e.g. include 'melpa or 'some-other-law-abiding-elpa in case the ELPA updater is found to work for those as well). Saying that it satisfies the above member function was a shorthand for that. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [bug#52774] [PATCH] import: elpa: Also check NonGNU ELPA for updates. 2021-12-25 15:23 ` Liliana Marie Prikler @ 2021-12-26 12:44 ` Xinglu Chen 2021-12-26 13:08 ` Liliana Marie Prikler 2022-01-05 22:18 ` bug#52774: " Ludovic Courtès 0 siblings, 2 replies; 11+ messages in thread From: Xinglu Chen @ 2021-12-26 12:44 UTC (permalink / raw) To: Liliana Marie Prikler, 52774 [-- Attachment #1.1: Type: text/plain, Size: 5414 bytes --] 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 <upstream-release> 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--- [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1.2: 0001-import-elpa-Also-check-NonGNU-ELPA-for-updates.patch --] [-- Type: text/x-patch, Size: 2858 bytes --] From 4332502000bd06a2be900c236666d10f07777807 Mon Sep 17 00:00:00 2001 Message-Id: <4332502000bd06a2be900c236666d10f07777807.1640522590.git.public@yoctocell.xyz> From: Xinglu Chen <public@yoctocell.xyz> Date: Thu, 23 Dec 2021 22:08:33 +0100 Subject: [PATCH] import: elpa: Also check NonGNU ELPA for updates. * elpa.scm (latest-release): Determine the repository based on the URL of the source. (package-from-gnu.org?): Rename to ... (elpa-repository): ...this; memoize. (elpa-package?): New procedure. (%elpa-updater): Adjust accordingly. --- guix/import/elpa.scm | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/guix/import/elpa.scm b/guix/import/elpa.scm index edabb88b7a..a03df5167e 100644 --- a/guix/import/elpa.scm +++ b/guix/import/elpa.scm @@ -44,6 +44,7 @@ (define-module (guix import elpa) #:use-module (guix base32) #:use-module (guix upstream) #:use-module (guix packages) + #:use-module (guix memoization) #:use-module ((guix utils) #:select (call-with-temporary-output-file)) #:export (elpa->guix-package guix-package->elpa-name @@ -424,7 +425,7 @@ (define (guix-package->elpa-name package) (define (latest-release package) "Return an <upstream-release> for the latest release of PACKAGE." (define name (guix-package->elpa-name package)) - (define repo 'gnu) + (define repo (elpa-repository package)) (match (elpa-package-info name repo) (#f @@ -443,11 +444,20 @@ (define repo 'gnu) (urls (list url)) (signature-urls (list (string-append url ".sig")))))))) -(define package-from-gnu.org? - (url-predicate (lambda (url) - (let ((uri (string->uri url))) - (and uri - (string=? (uri-host uri) "elpa.gnu.org")))))) +(define elpa-repository + (memoize + (url-predicate (lambda (url) + (let ((uri (string->uri url))) + (and uri + (cond + ((string=? (uri-host uri) "elpa.gnu.org") + 'gnu) + ((string=? (uri-host uri) "elpa.nongnu.org") + 'nongnu) + (else #f)))))))) + +(define (elpa-package? package) + (member (elpa-repository package) '(gnu nongnu))) (define %elpa-updater ;; The ELPA updater. We restrict it to packages hosted on elpa.gnu.org @@ -455,7 +465,7 @@ (define %elpa-updater (upstream-updater (name 'elpa) (description "Updater for ELPA packages") - (pred package-from-gnu.org?) + (pred elpa-package?) (latest latest-release))) (define elpa-guix-name (cut guix-name "emacs-" <>)) base-commit: 2495582e08cf411163f0799d290fda5101141949 -- 2.33.1 [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 861 bytes --] ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [bug#52774] [PATCH] import: elpa: Also check NonGNU ELPA for updates. 2021-12-26 12:44 ` Xinglu Chen @ 2021-12-26 13:08 ` Liliana Marie Prikler 2022-01-05 22:18 ` bug#52774: " Ludovic Courtès 1 sibling, 0 replies; 11+ messages in thread From: Liliana Marie Prikler @ 2021-12-26 13:08 UTC (permalink / raw) To: Xinglu Chen, 52774 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 ^ permalink raw reply [flat|nested] 11+ messages in thread
* bug#52774: [PATCH] import: elpa: Also check NonGNU ELPA for updates. 2021-12-26 12:44 ` Xinglu Chen 2021-12-26 13:08 ` Liliana Marie Prikler @ 2022-01-05 22:18 ` Ludovic Courtès 2022-01-05 23:03 ` [bug#52774] " Liliana Marie Prikler 1 sibling, 1 reply; 11+ messages in thread From: Ludovic Courtès @ 2022-01-05 22:18 UTC (permalink / raw) To: Xinglu Chen; +Cc: Liliana Marie Prikler, 52774-done Hi, Xinglu Chen <public@yoctocell.xyz> skribis: > From 4332502000bd06a2be900c236666d10f07777807 Mon Sep 17 00:00:00 2001 > Message-Id: <4332502000bd06a2be900c236666d10f07777807.1640522590.git.public@yoctocell.xyz> > From: Xinglu Chen <public@yoctocell.xyz> > Date: Thu, 23 Dec 2021 22:08:33 +0100 > Subject: [PATCH] import: elpa: Also check NonGNU ELPA for updates. > > * elpa.scm (latest-release): Determine the repository based on the URL of the > source. > (package-from-gnu.org?): Rename to ... > (elpa-repository): ...this; memoize. > (elpa-package?): New procedure. > (%elpa-updater): Adjust accordingly. Applied, thanks to the two of you! I had to rename ‘elpa-package?’ because: guix/import/elpa.scm:459:0: warning: shadows previous definition of `elpa-package?' at <unknown-location> (The other ‘elpa-package?’ predicate wasn’t used, but still.) Ludo’. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [bug#52774] [PATCH] import: elpa: Also check NonGNU ELPA for updates. 2022-01-05 22:18 ` bug#52774: " Ludovic Courtès @ 2022-01-05 23:03 ` Liliana Marie Prikler 2022-01-05 23:12 ` Liliana Marie Prikler 0 siblings, 1 reply; 11+ messages in thread From: Liliana Marie Prikler @ 2022-01-05 23:03 UTC (permalink / raw) To: Ludovic Courtès, Xinglu Chen; +Cc: 52774-done Am Mittwoch, dem 05.01.2022 um 23:18 +0100 schrieb Ludovic Courtès: > Hi, > > Xinglu Chen <public@yoctocell.xyz> skribis: > > > From 4332502000bd06a2be900c236666d10f07777807 Mon Sep 17 00:00:00 > > 2001 > > Message-Id: > > <4332502000bd06a2be900c236666d10f07777807.1640522590.git.public@yoctocell.xyz > > > > > From: Xinglu Chen <public@yoctocell.xyz> > > Date: Thu, 23 Dec 2021 22:08:33 +0100 > > Subject: [PATCH] import: elpa: Also check NonGNU ELPA for updates. > > > > * elpa.scm (latest-release): Determine the repository based on the > > URL of the > > source. > > (package-from-gnu.org?): Rename to ... > > (elpa-repository): ...this; memoize. > > (elpa-package?): New procedure. > > (%elpa-updater): Adjust accordingly. > > Applied, thanks to the two of you! Ahh, sorry for not applying it earlier. I was too caught up in the message accompanying it that I didn't notice the patch actually behaving the way I intended. My bad, I'll try to be less confusing next time ^ permalink raw reply [flat|nested] 11+ messages in thread
* [bug#52774] [PATCH] import: elpa: Also check NonGNU ELPA for updates. 2022-01-05 23:03 ` [bug#52774] " Liliana Marie Prikler @ 2022-01-05 23:12 ` Liliana Marie Prikler 0 siblings, 0 replies; 11+ messages in thread From: Liliana Marie Prikler @ 2022-01-05 23:12 UTC (permalink / raw) To: Ludovic Courtès, Xinglu Chen; +Cc: 52774-done Am Donnerstag, dem 06.01.2022 um 00:03 +0100 schrieb Liliana Marie Prikler: > Ahh, sorry for not applying it earlier. I was too caught up in the > message accompanying it that I didn't notice the patch actually > behaving the way I intended. Okay, I take that back, my point about needing to modify two places still applies, but shouldn't have held this patch back. Either way, sorry. ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2022-01-05 23:13 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-12-24 11:25 [bug#52774] [PATCH] import: elpa: Also check NonGNU ELPA for updates Xinglu Chen 2021-12-24 12:17 ` Liliana Marie Prikler 2021-12-25 9:44 ` Xinglu Chen 2021-12-25 10:15 ` Liliana Marie Prikler 2021-12-25 14:31 ` Xinglu Chen 2021-12-25 15:23 ` Liliana Marie Prikler 2021-12-26 12:44 ` Xinglu Chen 2021-12-26 13:08 ` Liliana Marie Prikler 2022-01-05 22:18 ` bug#52774: " Ludovic Courtès 2022-01-05 23:03 ` [bug#52774] " Liliana Marie Prikler 2022-01-05 23:12 ` Liliana Marie Prikler
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/guix.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.