civodul pushed a commit to branch master
in repository guix.

commit 4cd5ec801bb6c82cc1df2c4ac419d89614aa5d1b
Author: Ludovic Courtès <l...@gnu.org>
Date:   Fri Jan 13 18:14:19 2017 +0100

    import: github: Fix regression on the /releases retrieval.
    
    Fixes a regression introduced in
    62bd24db39a86f80242f923eb4cc2f18f3b02c67, which introduced a call to
    'hash-table->alist'.
    
    * guix/import/github.scm (json-fetch*): New procedure.
    (latest-released-version): Use it.
---
 guix/import/github.scm |   16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/guix/import/github.scm b/guix/import/github.scm
index 01452b1..a41511a 100644
--- a/guix/import/github.scm
+++ b/guix/import/github.scm
@@ -19,16 +19,28 @@
 (define-module (guix import github)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-34)
   #:use-module (json)
   #:use-module (guix utils)
   #:use-module ((guix download) #:prefix download:)
   #:use-module (guix import utils)
-  #:use-module (guix import json)
   #:use-module (guix packages)
   #:use-module (guix upstream)
+  #:use-module (guix http-client)
   #:use-module (web uri)
   #:export (%github-updater))
 
+(define (json-fetch* url)
+  "Return a representation of the JSON resource URL (a list or hash table), or
+#f if URL returns 404."
+  (guard (c ((and (http-get-error? c)
+                  (= 404 (http-get-error-code c)))
+             #f))                       ;"expected" if package is unknown
+    (let* ((port   (http-fetch url))
+           (result (json->scm port)))
+      (close-port port)
+      result)))
+
 (define (find-extension url)
   "Return the extension of the archive e.g. '.tar.gz' given a URL, or
 false if none is recognized"
@@ -125,7 +137,7 @@ the package e.g. 'bedtools2'.  Return #f if there is no 
releases"
                    "https://api.github.com/repos/";
                    (github-user-slash-repository url)
                    "/releases"))
-         (json (json-fetch
+         (json (json-fetch*
                 (if token
                     (string-append api-url "?access_token=" token)
                     api-url))))

Reply via email to