As discovered by Albin Söderqvist (see the commentary in his 'openttd' patch [1]), the following command fails:
guix download http://binaries.openttd.org/releases/1.6.0/openttd-1.6.0-source.tar.xz with the following error: --8<---------------cut here---------------start------------->8--- Starting download of /tmp/guix-file.sYMDJZ >From http://binaries.openttd.org/releases/1.6.0/openttd-1.6.0-source.tar.xz... ERROR: download failed "http://binaries.openttd.org/releases/1.6.0/openttd-1.6.0-source.tar.xz" 307 "Temporary Redirect" failed to download "/tmp/guix-file.sYMDJZ" from "http://binaries.openttd.org/releases/1.6.0/openttd-1.6.0-source.tar.xz" guix download: error: http://binaries.openttd.org/releases/1.6.0/openttd-1.6.0-source.tar.xz: download failed --8<---------------cut here---------------end--------------->8--- This happens because 'http-fetch' procedure from (guix build download) module handles only 301 and 302 codes, while here we have 307 [2] [3]. The attached patch fixes this problem. [1] http://lists.gnu.org/archive/html/guix-devel/2016-04/msg00445.html [2] https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection [3] https://tools.ietf.org/html/rfc2616#section-10.3.8
>From d0ee21dd4e8c34e7d3f23eb69943026706d24d37 Mon Sep 17 00:00:00 2001 From: Alex Kost <[email protected]> Date: Tue, 12 Apr 2016 11:14:59 +0300 Subject: [PATCH] download: Follow HTTP 307 "Temporary Redirection". MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reported by Albin Söderqvist <[email protected]>. * guix/build/download.scm (http-fetch): Follow redirections upon 307. This is what 'binaries.openttd.org' does. --- guix/build/download.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/guix/build/download.scm b/guix/build/download.scm index 0568800..fb236d3 100644 --- a/guix/build/download.scm +++ b/guix/build/download.scm @@ -530,7 +530,8 @@ Return the resulting target URI." (put-bytevector p bv-or-port)))) file)) ((301 ; moved permanently - 302) ; found (redirection) + 302 ; found (redirection) + 307) ; temporary redirection (let ((uri (resolve-uri-reference (response-location resp) uri))) (format #t "following redirection to `~a'...~%" (uri->string uri)) -- 2.7.3
