summary refs log tree commit diff
diff options
context:
space:
mode:
authorJakub Kądziołka <kuba@kadziolka.net>2020-02-23 12:06:31 +0100
committerJakub Kądziołka <kuba@kadziolka.net>2020-02-23 12:30:18 +0100
commit6a3911b88f84eff6b3268b4687caea405f43e39b (patch)
tree6f20f82eca0daf8fd6867cce93ee8f2362b83bc7
parent5ce67a1c202d3cddf5d3b98a72eea78e02d4a681 (diff)
downloadguix-6a3911b88f84eff6b3268b4687caea405f43e39b.tar.gz
swh: Handle absolute URLs being returned by the API.
* guix/swh.scm (swh-url): Don't prepend (%swh-base-url) if a domain is
  already present.

This fixes the "guix lint: warning: while connecting to Software Heritage:
host lookup failure: Name or service not known" error message.
-rw-r--r--guix/swh.scm12
1 files changed, 10 insertions, 2 deletions
diff --git a/guix/swh.scm b/guix/swh.scm
index 8bdf9965f6..ec744fed2f 100644
--- a/guix/swh.scm
+++ b/guix/swh.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -126,9 +127,16 @@
   (make-parameter "https://archive.softwareheritage.org"))
 
 (define (swh-url path . rest)
+  ;; URLs returned by the API may be relative or absolute. This has changed
+  ;; without notice before. Handle both cases by detecting whether the path
+  ;; starts with a domain.
+  (define root
+    (if (string-prefix? "/" path)
+      (string-append (%swh-base-url) path)
+      path))
+
   (define url
-    (string-append (%swh-base-url) path
-                   (string-join rest "/" 'prefix)))
+    (string-append root (string-join rest "/" 'prefix)))
 
   ;; Ensure there's a trailing slash or we get a redirect.
   (if (string-suffix? "/" url)