Mathieu Lirzin <m...@gnu.org> skribis: > Cyril Roelandt <tipec...@gmail.com> writes: > >> * guix/import/pypi.scm (guix-package->pypi-name, >> latest-release): New procedures. >> (pypi-updater): New variable. >> * guix/scripts/refresh.scm (%updaters): Add %PYPI-UPDATER. >> --- >> guix/import/pypi.scm | 50 >> +++++++++++++++++++++++++++++++++++++++++++++++- >> guix/scripts/refresh.scm | 4 +++- >> 2 files changed, 52 insertions(+), 2 deletions(-) >> > > IIUC the commit bab020d7ca50e4153cf24832d119389a37fa8f63 has made > Guile-JSON non optional.
Yes, a mistake. > What should we do about this? Something like this should work:
diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm index 3984a0b..4e9d1c8 100644 --- a/guix/scripts/refresh.scm +++ b/guix/scripts/refresh.scm @@ -30,7 +30,6 @@ #:use-module ((guix gnu-maintenance) #:select (%gnu-updater)) #:use-module (guix import elpa) #:use-module (guix import cran) - #:use-module (guix import pypi) #:use-module (guix gnupg) #:use-module (gnu packages) #:use-module ((gnu packages commencement) #:select (%final-inputs)) @@ -149,12 +148,35 @@ specified with `--select'.\n")) ;;; Updates. ;;; +(define-syntax maybe-updater + (lambda (s) + (syntax-case s (=>) + ((_ ((module => updater) rest ...) (result ...)) + (let ((met? (false-if-exception + (resolve-interface (syntax->datum #'module))))) + (if met? + #'(maybe-updater (rest ...) + (result ... (@ module updater))) + #'(maybe-updater (rest ...) (result ...))))) + ((_ (updater rest ...) (result ...)) + #'(maybe-updater (rest ...) (result ... updater))) + ((_ () result) + #'result)))) + +(define-syntax-rule (list-updaters updaters ...) + "Expand to '(list UPDATERS ...)' but only the subset of UPDATERS that are +either unconditional, or have their requirement met. + +This is a way to discard at macro expansion time updaters that depend on +unavailable optional dependencies such as Guile-JSON." + (maybe-updater (updaters ...) (list))) + (define %updaters ;; List of "updaters" used by default. They are consulted in this order. - (list %gnu-updater + (list-updaters %gnu-updater %elpa-updater %cran-updater - %pypi-updater)) + ((guix import pypi) => %pypi-updater))) (define (lookup-updater name) "Return the updater called NAME."
Could you test in a JSON-less environment and report back? Alternately, we could declare Guile-JSON to be mandatory. TIA, Ludo’.