Eric Bavier <bav...@member.fsf.org> skribis: > * guix/import/json.scm (json-fetch): Use http-fetch instead of url-fetch > to avoid writing to stdout and a temporary file for each invocation. > * guix/import/gem.scm (rubygems-fetch): Do not redirect json-fetch > output to /dev/null. > * guix/import/pypi.scm (pypi-fetch): Likewise.
[...] > (define (json-fetch url) > "Return an alist representation of the JSON resource URL, or #f on > failure." > - (call-with-temporary-output-file > - (lambda (temp port) > - (and (url-fetch url temp) > - (hash-table->alist > - (call-with-input-file temp json->scm)))))) > + (and=> (false-if-exception (http-fetch url)) > + (lambda (port) > + (let ((result (hash-table->alist (json->scm port)))) > + (close-port port) > + result)))) It’d be better to not catch exceptions raised by ‘http-fetch’ here. Instead they’d be caught at the top level and a detailed error message would be displayed, which is always better than silently ignoring issues. However we’d need to check if there are uses where this is a problem. For example, there might be updaters or importers that assume that #f means that the package doesn’t exist or something like that. WDYT? > diff --git a/guix/import/pypi.scm b/guix/import/pypi.scm > index 68153d5..9794ff9 100644 > --- a/guix/import/pypi.scm > +++ b/guix/import/pypi.scm > @@ -51,14 +51,8 @@ > (define (pypi-fetch name) > "Return an alist representation of the PyPI metadata for the package NAME, > or #f on failure." > - ;; XXX: We want to silence the download progress report, which is > especially > - ;; annoying for 'guix refresh', but we have to use a file port. > - (call-with-output-file "/dev/null" > - (lambda (null) > - (with-error-to-port null > - (lambda () > - (json-fetch (string-append "https://pypi.python.org/pypi/" > - name "/json"))))))) > + (json-fetch (string-append "https://pypi.python.org/pypi/" > + name "/json"))) The rest LGTM, thanks! Ludo’.