summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am4
-rw-r--r--distro/packages/base.scm29
-rw-r--r--distro/packages/bash.scm4
-rw-r--r--distro/packages/bdw-gc.scm4
-rw-r--r--distro/packages/bootstrap.scm16
-rw-r--r--distro/packages/compression.scm10
-rw-r--r--distro/packages/gawk.scm4
-rw-r--r--distro/packages/gnupg.scm12
-rw-r--r--distro/packages/gperf.scm4
-rw-r--r--distro/packages/guile.scm8
-rw-r--r--distro/packages/libffi.scm4
-rw-r--r--distro/packages/libsigsegv.scm4
-rw-r--r--distro/packages/libtool.scm4
-rw-r--r--distro/packages/libunistring.scm4
-rw-r--r--distro/packages/lout.scm4
-rw-r--r--distro/packages/m4.scm4
-rw-r--r--distro/packages/multiprecision.scm8
-rw-r--r--distro/packages/ncurses.scm4
-rw-r--r--distro/packages/perl.scm4
-rw-r--r--distro/packages/pkg-config.scm4
-rw-r--r--distro/packages/pth.scm4
-rw-r--r--distro/packages/readline.scm4
-rw-r--r--distro/packages/recutils.scm4
-rw-r--r--guix.scm3
-rw-r--r--guix/build/ftp.scm48
-rw-r--r--guix/build/http.scm100
-rw-r--r--guix/ftp.scm65
-rw-r--r--guix/http.scm63
-rw-r--r--tests/builders.scm13
29 files changed, 72 insertions, 371 deletions
diff --git a/Makefile.am b/Makefile.am
index c4e03a2d6a6..3cb7bf3bf9d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -30,15 +30,11 @@ MODULES = \
30 guix/build-system.scm \ 30 guix/build-system.scm \
31 guix/build-system/gnu.scm \ 31 guix/build-system/gnu.scm \
32 guix/build-system/trivial.scm \ 32 guix/build-system/trivial.scm \
33 guix/ftp.scm \
34 guix/ftp-client.scm \ 33 guix/ftp-client.scm \
35 guix/http.scm \
36 guix/store.scm \ 34 guix/store.scm \
37 guix/ui.scm \ 35 guix/ui.scm \
38 guix/build/download.scm \ 36 guix/build/download.scm \
39 guix/build/gnu-build-system.scm \ 37 guix/build/gnu-build-system.scm \
40 guix/build/ftp.scm \
41 guix/build/http.scm \
42 guix/build/utils.scm \ 38 guix/build/utils.scm \
43 guix/build/union.scm \ 39 guix/build/union.scm \
44 guix/packages.scm \ 40 guix/packages.scm \
diff --git a/distro/packages/base.scm b/distro/packages/base.scm
index 707e8db2f2d..04b1cccedc9 100644
--- a/distro/packages/base.scm
+++ b/distro/packages/base.scm
@@ -27,8 +27,7 @@
27 #:use-module (distro packages multiprecision) 27 #:use-module (distro packages multiprecision)
28 #:use-module (distro packages perl) 28 #:use-module (distro packages perl)
29 #:use-module (guix packages) 29 #:use-module (guix packages)
30 #:use-module (guix ftp) 30 #:use-module (guix download)
31 #:use-module (guix http)
32 #:use-module (guix build-system gnu) 31 #:use-module (guix build-system gnu)
33 #:use-module (guix build-system trivial) 32 #:use-module (guix build-system trivial)
34 #:use-module (guix utils) 33 #:use-module (guix utils)
@@ -47,7 +46,7 @@
47 (name "hello") 46 (name "hello")
48 (version "2.8") 47 (version "2.8")
49 (source (origin 48 (source (origin
50 (method http-fetch) 49 (method url-fetch)
51 (uri (string-append "http://ftp.gnu.org/gnu/hello/hello-" version 50 (uri (string-append "http://ftp.gnu.org/gnu/hello/hello-" version
52 ".tar.gz")) 51 ".tar.gz"))
53 (sha256 52 (sha256
@@ -68,7 +67,7 @@
68 (name "grep") 67 (name "grep")
69 (version "2.14") 68 (version "2.14")
70 (source (origin 69 (source (origin
71 (method http-fetch) 70 (method url-fetch)
72 (uri (string-append "http://ftp.gnu.org/gnu/grep/grep-" 71 (uri (string-append "http://ftp.gnu.org/gnu/grep/grep-"
73 version ".tar.xz")) 72 version ".tar.xz"))
74 (sha256 73 (sha256
@@ -88,7 +87,7 @@ lines.")
88 (name "sed") 87 (name "sed")
89 (version "4.2.1") 88 (version "4.2.1")
90 (source (origin 89 (source (origin
91 (method http-fetch) 90 (method url-fetch)
92 (uri (string-append "http://ftp.gnu.org/gnu/sed/sed-" version 91 (uri (string-append "http://ftp.gnu.org/gnu/sed/sed-" version
93 ".tar.bz2")) 92 ".tar.bz2"))
94 (sha256 93 (sha256
@@ -110,7 +109,7 @@ substituting multiple occurrences of a string within a file.")
110 (name "tar") 109 (name "tar")
111 (version "1.26") 110 (version "1.26")
112 (source (origin 111 (source (origin
113 (method http-fetch) 112 (method url-fetch)
114 (uri (string-append "http://ftp.gnu.org/gnu/tar/tar-" 113 (uri (string-append "http://ftp.gnu.org/gnu/tar/tar-"
115 version ".tar.bz2")) 114 version ".tar.bz2"))
116 (sha256 115 (sha256
@@ -140,7 +139,7 @@ files (as archives).")
140 (name "patch") 139 (name "patch")
141 (version "2.6.1") 140 (version "2.6.1")
142 (source (origin 141 (source (origin
143 (method http-fetch) 142 (method url-fetch)
144 (uri (string-append "http://ftp.gnu.org/gnu/patch/patch-" 143 (uri (string-append "http://ftp.gnu.org/gnu/patch/patch-"
145 version ".tar.xz")) 144 version ".tar.xz"))
146 (sha256 145 (sha256
@@ -166,7 +165,7 @@ producing patched versions.")
166 (name "diffutils") 165 (name "diffutils")
167 (version "3.2") 166 (version "3.2")
168 (source (origin 167 (source (origin
169 (method http-fetch) 168 (method url-fetch)
170 (uri (string-append "http://ftp.gnu.org/gnu/diffutils/diffutils-" 169 (uri (string-append "http://ftp.gnu.org/gnu/diffutils/diffutils-"
171 version ".tar.xz")) 170 version ".tar.xz"))
172 (sha256 171 (sha256
@@ -211,7 +210,7 @@ You can use the sdiff command to merge two files interactively.")
211 (name "findutils") 210 (name "findutils")
212 (version "4.4.2") 211 (version "4.4.2")
213 (source (origin 212 (source (origin
214 (method http-fetch) 213 (method url-fetch)
215 (uri (string-append "http://ftp.gnu.org/gnu/findutils/findutils-" 214 (uri (string-append "http://ftp.gnu.org/gnu/findutils/findutils-"
216 version ".tar.gz")) 215 version ".tar.gz"))
217 (sha256 216 (sha256
@@ -253,7 +252,7 @@ The tools supplied with this package are:
253 (name "coreutils") 252 (name "coreutils")
254 (version "8.19") 253 (version "8.19")
255 (source (origin 254 (source (origin
256 (method http-fetch) 255 (method url-fetch)
257 (uri (string-append "http://ftp.gnu.org/gnu/coreutils/coreutils-" 256 (uri (string-append "http://ftp.gnu.org/gnu/coreutils/coreutils-"
258 version ".tar.xz")) 257 version ".tar.xz"))
259 (sha256 258 (sha256
@@ -279,7 +278,7 @@ are expected to exist on every operating system.")
279 (name "make") 278 (name "make")
280 (version "3.82") 279 (version "3.82")
281 (source (origin 280 (source (origin
282 (method http-fetch) 281 (method url-fetch)
283 (uri (string-append "http://ftp.gnu.org/gnu/make/make-" version 282 (uri (string-append "http://ftp.gnu.org/gnu/make/make-" version
284 ".tar.bz2")) 283 ".tar.bz2"))
285 (sha256 284 (sha256
@@ -308,7 +307,7 @@ that it is possible to use Make to build and install the program.")
308 (name "binutils") 307 (name "binutils")
309 (version "2.22") 308 (version "2.22")
310 (source (origin 309 (source (origin
311 (method http-fetch) 310 (method url-fetch)
312 (uri (string-append "http://ftp.gnu.org/gnu/binutils/binutils-" 311 (uri (string-append "http://ftp.gnu.org/gnu/binutils/binutils-"
313 version ".tar.bz2")) 312 version ".tar.bz2"))
314 (sha256 313 (sha256
@@ -341,7 +340,7 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.")
341 (name "gcc") 340 (name "gcc")
342 (version "4.7.2") 341 (version "4.7.2")
343 (source (origin 342 (source (origin
344 (method http-fetch) 343 (method url-fetch)
345 (uri (string-append "http://ftp.gnu.org/gnu/gcc/gcc-" 344 (uri (string-append "http://ftp.gnu.org/gnu/gcc/gcc-"
346 version "/gcc-" version ".tar.bz2")) 345 version "/gcc-" version ".tar.bz2"))
347 (sha256 346 (sha256
@@ -469,7 +468,7 @@ used in the GNU system including the GNU/Linux variant.")
469 (name "linux-libre-headers") 468 (name "linux-libre-headers")
470 (version version*) 469 (version version*)
471 (source (origin 470 (source (origin
472 (method http-fetch) 471 (method url-fetch)
473 (uri (string-append 472 (uri (string-append
474 "http://linux-libre.fsfla.org/pub/linux-libre/releases/3.3.8-gnu/linux-libre-" 473 "http://linux-libre.fsfla.org/pub/linux-libre/releases/3.3.8-gnu/linux-libre-"
475 version "-gnu.tar.xz")) 474 version "-gnu.tar.xz"))
@@ -498,7 +497,7 @@ used in the GNU system including the GNU/Linux variant.")
498 (name "glibc") 497 (name "glibc")
499 (version "2.16.0") 498 (version "2.16.0")
500 (source (origin 499 (source (origin
501 (method http-fetch) 500 (method url-fetch)
502 (uri (string-append "http://ftp.gnu.org/gnu/glibc/glibc-" 501 (uri (string-append "http://ftp.gnu.org/gnu/glibc/glibc-"
503 version ".tar.xz")) 502 version ".tar.xz"))
504 (sha256 503 (sha256
diff --git a/distro/packages/bash.scm b/distro/packages/bash.scm
index b4e5c1158a4..3ee54299f99 100644
--- a/distro/packages/bash.scm
+++ b/distro/packages/bash.scm
@@ -20,7 +20,7 @@
20 #:use-module (distro packages ncurses) 20 #:use-module (distro packages ncurses)
21 #:use-module (distro packages readline) 21 #:use-module (distro packages readline)
22 #:use-module (guix packages) 22 #:use-module (guix packages)
23 #:use-module (guix http) 23 #:use-module (guix download)
24 #:use-module (guix utils) 24 #:use-module (guix utils)
25 #:use-module (guix build-system gnu)) 25 #:use-module (guix build-system gnu))
26 26
@@ -36,7 +36,7 @@
36 (name "bash") 36 (name "bash")
37 (version "4.2") 37 (version "4.2")
38 (source (origin 38 (source (origin
39 (method http-fetch) 39 (method url-fetch)
40 (uri (string-append 40 (uri (string-append
41 "http://ftp.gnu.org/gnu/bash/bash-" version ".tar.gz")) 41 "http://ftp.gnu.org/gnu/bash/bash-" version ".tar.gz"))
42 (sha256 42 (sha256
diff --git a/distro/packages/bdw-gc.scm b/distro/packages/bdw-gc.scm
index 9cf6c4cb2d7..7f9800eb090 100644
--- a/distro/packages/bdw-gc.scm
+++ b/distro/packages/bdw-gc.scm
@@ -18,7 +18,7 @@
18 18
19(define-module (distro packages bdw-gc) 19(define-module (distro packages bdw-gc)
20 #:use-module (guix packages) 20 #:use-module (guix packages)
21 #:use-module (guix http) 21 #:use-module (guix download)
22 #:use-module (guix utils) 22 #:use-module (guix utils)
23 #:use-module (guix build-system gnu)) 23 #:use-module (guix build-system gnu))
24 24
@@ -27,7 +27,7 @@
27 (name "libgc") 27 (name "libgc")
28 (version "7.2alpha6") 28 (version "7.2alpha6")
29 (source (origin 29 (source (origin
30 (method http-fetch) 30 (method url-fetch)
31 (uri (string-append 31 (uri (string-append
32 "http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-" 32 "http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-"
33 version ".tar.gz")) 33 version ".tar.gz"))
diff --git a/distro/packages/bootstrap.scm b/distro/packages/bootstrap.scm
index 95a7de444cb..8165be1d53b 100644
--- a/distro/packages/bootstrap.scm
+++ b/distro/packages/bootstrap.scm
@@ -19,8 +19,6 @@
19(define-module (distro packages bootstrap) 19(define-module (distro packages bootstrap)
20 #:use-module (distro) 20 #:use-module (distro)
21 #:use-module (guix packages) 21 #:use-module (guix packages)
22 #:use-module (guix ftp)
23 #:use-module (guix http)
24 #:use-module (guix download) 22 #:use-module (guix download)
25 #:use-module (guix build-system) 23 #:use-module (guix build-system)
26 #:use-module (guix build-system gnu) 24 #:use-module (guix build-system gnu)
@@ -67,11 +65,7 @@
67 65
68 (let ((orig-method (origin-method source))) 66 (let ((orig-method (origin-method source)))
69 (origin (inherit source) 67 (origin (inherit source)
70 (method (cond ((eq? orig-method http-fetch) 68 (method (cond ((eq? orig-method url-fetch)
71 (boot http-fetch))
72 ((eq? orig-method ftp-fetch)
73 (boot ftp-fetch))
74 ((eq? orig-method url-fetch)
75 (boot url-fetch)) 69 (boot url-fetch))
76 (else orig-method)))))) 70 (else orig-method))))))
77 71
@@ -207,7 +201,7 @@ $out/bin/guile --version~%"
207 (package-from-tarball "bootstrap-binaries" 201 (package-from-tarball "bootstrap-binaries"
208 (lambda (system) 202 (lambda (system)
209 (origin 203 (origin
210 (method http-fetch) 204 (method url-fetch)
211 (uri (string-append 205 (uri (string-append
212 %bootstrap-base-url "/" 206 %bootstrap-base-url "/"
213 system "/static-binaries.tar.xz")) 207 system "/static-binaries.tar.xz"))
@@ -226,7 +220,7 @@ $out/bin/guile --version~%"
226 (package-from-tarball "binutils-bootstrap" 220 (package-from-tarball "binutils-bootstrap"
227 (lambda (system) 221 (lambda (system)
228 (origin 222 (origin
229 (method http-fetch) 223 (method url-fetch)
230 (uri (string-append 224 (uri (string-append
231 %bootstrap-base-url "/" 225 %bootstrap-base-url "/"
232 system "/binutils-2.22.tar.xz")) 226 system "/binutils-2.22.tar.xz"))
@@ -280,7 +274,7 @@ $out/bin/guile --version~%"
280 ("tarball" ,(lambda (system) 274 ("tarball" ,(lambda (system)
281 (bootstrap-origin 275 (bootstrap-origin
282 (origin 276 (origin
283 (method http-fetch) 277 (method url-fetch)
284 (uri (string-append %bootstrap-base-url "/" 278 (uri (string-append %bootstrap-base-url "/"
285 system "/glibc-2.16.0.tar.xz")) 279 system "/glibc-2.16.0.tar.xz"))
286 (sha256 280 (sha256
@@ -351,7 +345,7 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \
351 ("tarball" ,(lambda (system) 345 ("tarball" ,(lambda (system)
352 (bootstrap-origin 346 (bootstrap-origin
353 (origin 347 (origin
354 (method http-fetch) 348 (method url-fetch)
355 (uri (string-append %bootstrap-base-url "/" 349 (uri (string-append %bootstrap-base-url "/"
356 system "/gcc-4.7.2.tar.xz")) 350 system "/gcc-4.7.2.tar.xz"))
357 (sha256 351 (sha256
diff --git a/distro/packages/compression.scm b/distro/packages/compression.scm
index b6f16afdf54..d5299f62bb7 100644
--- a/distro/packages/compression.scm
+++ b/distro/packages/compression.scm
@@ -18,7 +18,7 @@
18 18
19(define-module (distro packages compression) 19(define-module (distro packages compression)
20 #:use-module (guix packages) 20 #:use-module (guix packages)
21 #:use-module (guix http) 21 #:use-module (guix download)
22 #:use-module (guix build-system gnu)) 22 #:use-module (guix build-system gnu))
23 23
24(define-public zlib 24(define-public zlib
@@ -27,7 +27,7 @@
27 (version "1.2.7") 27 (version "1.2.7")
28 (source 28 (source
29 (origin 29 (origin
30 (method http-fetch) 30 (method url-fetch)
31 (uri (string-append "http://zlib.net/zlib-" 31 (uri (string-append "http://zlib.net/zlib-"
32 version ".tar.gz")) 32 version ".tar.gz"))
33 (sha256 33 (sha256
@@ -66,7 +66,7 @@ in compression.")
66 (name "gzip") 66 (name "gzip")
67 (version "1.5") 67 (version "1.5")
68 (source (origin 68 (source (origin
69 (method http-fetch) 69 (method url-fetch)
70 (uri (string-append "http://ftp.gnu.org/gnu/gzip/gzip-" 70 (uri (string-append "http://ftp.gnu.org/gnu/gzip/gzip-"
71 version ".tar.gz")) 71 version ".tar.gz"))
72 (sha256 72 (sha256
@@ -114,7 +114,7 @@ superior compression ratio of gzip is just a bonus.")
114 (name "bzip2") 114 (name "bzip2")
115 (version "1.0.6") 115 (version "1.0.6")
116 (source (origin 116 (source (origin
117 (method http-fetch) 117 (method url-fetch)
118 (uri (string-append "http://www.bzip.org/" version "/bzip2-" 118 (uri (string-append "http://www.bzip.org/" version "/bzip2-"
119 version ".tar.gz")) 119 version ".tar.gz"))
120 (sha256 120 (sha256
@@ -150,7 +150,7 @@ decompression.")
150 (name "xz") 150 (name "xz")
151 (version "5.0.4") 151 (version "5.0.4")
152 (source (origin 152 (source (origin
153 (method http-fetch) 153 (method url-fetch)
154 (uri (string-append "http://tukaani.org/xz/xz-" version 154 (uri (string-append "http://tukaani.org/xz/xz-" version
155 ".tar.gz")) 155 ".tar.gz"))
156 (sha256 156 (sha256
diff --git a/distro/packages/gawk.scm b/distro/packages/gawk.scm
index b04a1ebb576..58c1bf1bea3 100644
--- a/distro/packages/gawk.scm
+++ b/distro/packages/gawk.scm
@@ -19,7 +19,7 @@
19(define-module (distro packages gawk) 19(define-module (distro packages gawk)
20 #:use-module (distro packages libsigsegv) 20 #:use-module (distro packages libsigsegv)
21 #:use-module (guix packages) 21 #:use-module (guix packages)
22 #:use-module (guix http) 22 #:use-module (guix download)
23 #:use-module (guix utils) 23 #:use-module (guix utils)
24 #:use-module (guix build-system gnu)) 24 #:use-module (guix build-system gnu))
25 25
@@ -28,7 +28,7 @@
28 (name "gawk") 28 (name "gawk")
29 (version "4.0.0") 29 (version "4.0.0")
30 (source (origin 30 (source (origin
31 (method http-fetch) 31 (method url-fetch)
32 (uri (string-append "http://ftp.gnu.org/gnu/gawk/gawk-" version 32 (uri (string-append "http://ftp.gnu.org/gnu/gawk/gawk-" version
33 ".tar.bz2")) 33 ".tar.bz2"))
34 (sha256 34 (sha256
diff --git a/distro/packages/gnupg.scm b/distro/packages/gnupg.scm
index 062187c0f86..7bc3b0c266f 100644
--- a/distro/packages/gnupg.scm
+++ b/distro/packages/gnupg.scm
@@ -21,7 +21,7 @@
21 #:use-module (distro packages readline) 21 #:use-module (distro packages readline)
22 #:use-module (distro packages compression) 22 #:use-module (distro packages compression)
23 #:use-module (guix packages) 23 #:use-module (guix packages)
24 #:use-module (guix ftp) 24 #:use-module (guix download)
25 #:use-module (guix build-system gnu)) 25 #:use-module (guix build-system gnu))
26 26
27(define-public libgpg-error 27(define-public libgpg-error
@@ -30,7 +30,7 @@
30 (version "1.10") 30 (version "1.10")
31 (source 31 (source
32 (origin 32 (origin
33 (method ftp-fetch) 33 (method url-fetch)
34 (uri (string-append "ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-" 34 (uri (string-append "ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-"
35 version ".tar.bz2")) 35 version ".tar.bz2"))
36 (sha256 36 (sha256
@@ -53,7 +53,7 @@ Daemon and possibly more in the future.")
53 (version "1.5.0") 53 (version "1.5.0")
54 (source 54 (source
55 (origin 55 (origin
56 (method ftp-fetch) 56 (method url-fetch)
57 (uri (string-append "ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-" 57 (uri (string-append "ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-"
58 version ".tar.bz2")) 58 version ".tar.bz2"))
59 (sha256 59 (sha256
@@ -79,7 +79,7 @@ functions, random numbers and a lot of supporting functions.")
79 (version "2.0.3") 79 (version "2.0.3")
80 (source 80 (source
81 (origin 81 (origin
82 (method ftp-fetch) 82 (method url-fetch)
83 (uri (string-append "ftp://ftp.gnupg.org/gcrypt/libassuan/libassuan-" 83 (uri (string-append "ftp://ftp.gnupg.org/gcrypt/libassuan/libassuan-"
84 version ".tar.bz2")) 84 version ".tar.bz2"))
85 (sha256 85 (sha256
@@ -104,7 +104,7 @@ provided.")
104 (version "1.2.0") 104 (version "1.2.0")
105 (source 105 (source
106 (origin 106 (origin
107 (method ftp-fetch) 107 (method url-fetch)
108 (uri (string-append 108 (uri (string-append
109 "ftp://ftp.gnupg.org/gcrypt/libksba/libksba-" 109 "ftp://ftp.gnupg.org/gcrypt/libksba/libksba-"
110 version ".tar.bz2")) 110 version ".tar.bz2"))
@@ -129,7 +129,7 @@ specifications are building blocks of S/MIME and TLS.")
129 (version "2.0.19") 129 (version "2.0.19")
130 (source 130 (source
131 (origin 131 (origin
132 (method ftp-fetch) 132 (method url-fetch)
133 (uri (string-append 133 (uri (string-append
134 "ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-" version 134 "ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-" version
135 ".tar.bz2")) 135 ".tar.bz2"))
diff --git a/distro/packages/gperf.scm b/distro/packages/gperf.scm
index 392b9dd4feb..099038af691 100644
--- a/distro/packages/gperf.scm
+++ b/distro/packages/gperf.scm
@@ -18,7 +18,7 @@
18 18
19(define-module (distro packages gperf) 19(define-module (distro packages gperf)
20 #:use-module (guix packages) 20 #:use-module (guix packages)
21 #:use-module (guix ftp) 21 #:use-module (guix download)
22 #:use-module (guix utils) 22 #:use-module (guix utils)
23 #:use-module (guix build-system gnu)) 23 #:use-module (guix build-system gnu))
24 24
@@ -28,7 +28,7 @@
28 (version "3.0.4") 28 (version "3.0.4")
29 (source 29 (source
30 (origin 30 (origin
31 (method ftp-fetch) 31 (method url-fetch)
32 (uri (string-append "ftp://ftp.gnu.org/gnu/gperf/gperf-" 32 (uri (string-append "ftp://ftp.gnu.org/gnu/gperf/gperf-"
33 version ".tar.gz")) 33 version ".tar.gz"))
34 (sha256 34 (sha256
diff --git a/distro/packages/guile.scm b/distro/packages/guile.scm
index d65584f3719..937be8dd2c5 100644
--- a/distro/packages/guile.scm
+++ b/distro/packages/guile.scm
@@ -29,7 +29,7 @@
29 #:use-module (distro packages pkg-config) 29 #:use-module (distro packages pkg-config)
30 #:use-module (distro packages readline) 30 #:use-module (distro packages readline)
31 #:use-module (guix packages) 31 #:use-module (guix packages)
32 #:use-module (guix http) 32 #:use-module (guix download)
33 #:use-module (guix build-system gnu)) 33 #:use-module (guix build-system gnu))
34 34
35;;; Commentary: 35;;; Commentary:
@@ -43,7 +43,7 @@
43 (name "guile") 43 (name "guile")
44 (version "1.8.8") 44 (version "1.8.8")
45 (source (origin 45 (source (origin
46 (method http-fetch) 46 (method url-fetch)
47 (uri (string-append "http://ftp.gnu.org/gnu/guile/guile-" version 47 (uri (string-append "http://ftp.gnu.org/gnu/guile/guile-" version
48 ".tar.gz")) 48 ".tar.gz"))
49 (sha256 49 (sha256
@@ -93,7 +93,7 @@ extensible. It supports many SRFIs.")
93 (name "guile") 93 (name "guile")
94 (version "2.0.6") 94 (version "2.0.6")
95 (source (origin 95 (source (origin
96 (method http-fetch) 96 (method url-fetch)
97 (uri (string-append "http://ftp.gnu.org/gnu/guile/guile-" version 97 (uri (string-append "http://ftp.gnu.org/gnu/guile/guile-" version
98 ".tar.xz")) 98 ".tar.xz"))
99 (sha256 99 (sha256
@@ -142,7 +142,7 @@ or 2.0."
142 (name (string-append "guile-reader-for-guile-" (package-version guile))) 142 (name (string-append "guile-reader-for-guile-" (package-version guile)))
143 (version "0.6") 143 (version "0.6")
144 (source (origin 144 (source (origin
145 (method http-fetch) 145 (method url-fetch)
146 (uri (string-append 146 (uri (string-append
147 "http://download-mirror.savannah.gnu.org/releases/guile-reader/guile-reader-" 147 "http://download-mirror.savannah.gnu.org/releases/guile-reader/guile-reader-"
148 version ".tar.gz")) 148 version ".tar.gz"))
diff --git a/distro/packages/libffi.scm b/distro/packages/libffi.scm
index dca0387433c..8d702a92ddf 100644
--- a/distro/packages/libffi.scm
+++ b/distro/packages/libffi.scm
@@ -18,7 +18,7 @@
18 18
19(define-module (distro packages libffi) 19(define-module (distro packages libffi)
20 #:use-module (guix packages) 20 #:use-module (guix packages)
21 #:use-module (guix ftp) 21 #:use-module (guix download)
22 #:use-module (guix utils) 22 #:use-module (guix utils)
23 #:use-module (guix build-system gnu)) 23 #:use-module (guix build-system gnu))
24 24
@@ -40,7 +40,7 @@
40 (name "libffi") 40 (name "libffi")
41 (version "3.0.9") 41 (version "3.0.9")
42 (source (origin 42 (source (origin
43 (method ftp-fetch) 43 (method url-fetch)
44 (uri 44 (uri
45 (string-append "ftp://sourceware.org/pub/libffi/" 45 (string-append "ftp://sourceware.org/pub/libffi/"
46 name "-" version ".tar.gz")) 46 name "-" version ".tar.gz"))
diff --git a/distro/packages/libsigsegv.scm b/distro/packages/libsigsegv.scm
index 9c6d80296db..030557f9184 100644
--- a/distro/packages/libsigsegv.scm
+++ b/distro/packages/libsigsegv.scm
@@ -18,7 +18,7 @@
18 18
19(define-module (distro packages libsigsegv) 19(define-module (distro packages libsigsegv)
20 #:use-module (guix packages) 20 #:use-module (guix packages)
21 #:use-module (guix http) 21 #:use-module (guix download)
22 #:use-module (guix utils) 22 #:use-module (guix utils)
23 #:use-module (guix build-system gnu)) 23 #:use-module (guix build-system gnu))
24 24
@@ -27,7 +27,7 @@
27 (name "libsigsegv") 27 (name "libsigsegv")
28 (version "2.10") 28 (version "2.10")
29 (source (origin 29 (source (origin
30 (method http-fetch) 30 (method url-fetch)
31 (uri (string-append 31 (uri (string-append
32 "http://ftp.gnu.org/gnu/libsigsegv/libsigsegv-" 32 "http://ftp.gnu.org/gnu/libsigsegv/libsigsegv-"
33 version ".tar.gz")) 33 version ".tar.gz"))
diff --git a/distro/packages/libtool.scm b/distro/packages/libtool.scm
index 02af715d320..63c88cd4cd3 100644
--- a/distro/packages/libtool.scm
+++ b/distro/packages/libtool.scm
@@ -21,7 +21,7 @@
21 #:use-module (distro packages m4) 21 #:use-module (distro packages m4)
22 #:use-module (distro packages perl) 22 #:use-module (distro packages perl)
23 #:use-module (guix packages) 23 #:use-module (guix packages)
24 #:use-module (guix http) 24 #:use-module (guix download)
25 #:use-module (guix utils) 25 #:use-module (guix utils)
26 #:use-module (guix build-system gnu)) 26 #:use-module (guix build-system gnu))
27 27
@@ -30,7 +30,7 @@
30 (name "libtool") 30 (name "libtool")
31 (version "2.4.2") 31 (version "2.4.2")
32 (source (origin 32 (source (origin
33 (method http-fetch) 33 (method url-fetch)
34 (uri (string-append "http://ftp.gnu.org/gnu/libtool/libtool-" 34 (uri (string-append "http://ftp.gnu.org/gnu/libtool/libtool-"
35 version ".tar.gz")) 35 version ".tar.gz"))
36 (sha256 36 (sha256
diff --git a/distro/packages/libunistring.scm b/distro/packages/libunistring.scm
index fb912eaf8f4..0d865645bde 100644
--- a/distro/packages/libunistring.scm
+++ b/distro/packages/libunistring.scm
@@ -18,7 +18,7 @@
18 18
19(define-module (distro packages libunistring) 19(define-module (distro packages libunistring)
20 #:use-module (guix packages) 20 #:use-module (guix packages)
21 #:use-module (guix http) 21 #:use-module (guix download)
22 #:use-module (guix utils) 22 #:use-module (guix utils)
23 #:use-module (guix build-system gnu)) 23 #:use-module (guix build-system gnu))
24 24
@@ -27,7 +27,7 @@
27 (name "libunistring") 27 (name "libunistring")
28 (version "0.9.3") 28 (version "0.9.3")
29 (source (origin 29 (source (origin
30 (method http-fetch) 30 (method url-fetch)
31 (uri (string-append 31 (uri (string-append
32 "http://ftp.gnu.org/gnu/libunistring/libunistring-" 32 "http://ftp.gnu.org/gnu/libunistring/libunistring-"
33 version ".tar.gz")) 33 version ".tar.gz"))
diff --git a/distro/packages/lout.scm b/distro/packages/lout.scm
index 3045afa3abf..0ea3b0887de 100644
--- a/distro/packages/lout.scm
+++ b/distro/packages/lout.scm
@@ -18,7 +18,7 @@
18 18
19(define-module (distro packages lout) 19(define-module (distro packages lout)
20 #:use-module (guix packages) 20 #:use-module (guix packages)
21 #:use-module (guix http) 21 #:use-module (guix download)
22 #:use-module (guix utils) 22 #:use-module (guix utils)
23 #:use-module (guix build-system gnu)) 23 #:use-module (guix build-system gnu))
24 24
@@ -78,7 +78,7 @@
78 (name "lout") 78 (name "lout")
79 (version "3.39") 79 (version "3.39")
80 (source (origin 80 (source (origin
81 (method http-fetch) 81 (method url-fetch)
82 ;; FIXME: `http-get' doesn't follow redirects, hence the URL. 82 ;; FIXME: `http-get' doesn't follow redirects, hence the URL.
83 (uri (string-append 83 (uri (string-append
84 "http://download-mirror.savannah.gnu.org/releases/lout/lout-" 84 "http://download-mirror.savannah.gnu.org/releases/lout/lout-"
diff --git a/distro/packages/m4.scm b/distro/packages/m4.scm
index 7097ffb68f4..8517b738340 100644
--- a/distro/packages/m4.scm
+++ b/distro/packages/m4.scm
@@ -19,7 +19,7 @@
19(define-module (distro packages m4) 19(define-module (distro packages m4)
20 #:use-module (distro) 20 #:use-module (distro)
21 #:use-module (guix packages) 21 #:use-module (guix packages)
22 #:use-module (guix http) 22 #:use-module (guix download)
23 #:use-module (guix utils) 23 #:use-module (guix utils)
24 #:use-module (guix build-system gnu)) 24 #:use-module (guix build-system gnu))
25 25
@@ -28,7 +28,7 @@
28 (name "m4") 28 (name "m4")
29 (version "1.4.16") 29 (version "1.4.16")
30 (source (origin 30 (source (origin
31 (method http-fetch) 31 (method url-fetch)
32 (uri (string-append "http://ftp.gnu.org/gnu/m4/m4-" 32 (uri (string-append "http://ftp.gnu.org/gnu/m4/m4-"
33 version ".tar.bz2")) 33 version ".tar.bz2"))
34 (sha256 34 (sha256
diff --git a/distro/packages/multiprecision.scm b/distro/packages/multiprecision.scm
index 98e4c72a724..c780e4ce039 100644
--- a/distro/packages/multiprecision.scm
+++ b/distro/packages/multiprecision.scm
@@ -20,7 +20,7 @@
20 #:use-module (distro) 20 #:use-module (distro)
21 #:use-module (distro packages m4) 21 #:use-module (distro packages m4)
22 #:use-module (guix packages) 22 #:use-module (guix packages)
23 #:use-module (guix http) 23 #:use-module (guix download)
24 #:use-module (guix utils) 24 #:use-module (guix utils)
25 #:use-module (guix build-system gnu)) 25 #:use-module (guix build-system gnu))
26 26
@@ -29,7 +29,7 @@
29 (name "gmp") 29 (name "gmp")
30 (version "5.0.5") 30 (version "5.0.5")
31 (source (origin 31 (source (origin
32 (method http-fetch) 32 (method url-fetch)
33 (uri (string-append "http://ftp.gnu.org/gnu/gmp/gmp-" version 33 (uri (string-append "http://ftp.gnu.org/gnu/gmp/gmp-" version
34 ".tar.bz2")) 34 ".tar.bz2"))
35 (sha256 35 (sha256
@@ -71,7 +71,7 @@ faster algorithms.")
71 (name "mpfr") 71 (name "mpfr")
72 (version "3.1.1") 72 (version "3.1.1")
73 (source (origin 73 (source (origin
74 (method http-fetch) 74 (method url-fetch)
75 (uri (string-append "http://ftp.gnu.org/gnu/mpfr/mpfr-" version 75 (uri (string-append "http://ftp.gnu.org/gnu/mpfr/mpfr-" version
76 ".tar.xz")) 76 ".tar.xz"))
77 (sha256 (base32 77 (sha256 (base32
@@ -97,7 +97,7 @@ double-precision floating-point arithmetic (53-bit mantissa).")
97 (name "mpc") 97 (name "mpc")
98 (version "1.0") 98 (version "1.0")
99 (source (origin 99 (source (origin
100 (method http-fetch) 100 (method url-fetch)
101 (uri (string-append 101 (uri (string-append
102 "http://www.multiprecision.org/mpc/download/mpc-" 102 "http://www.multiprecision.org/mpc/download/mpc-"
103 version ".tar.gz")) 103 version ".tar.gz"))
diff --git a/distro/packages/ncurses.scm b/distro/packages/ncurses.scm
index d9c31c6feeb..b16d4002eee 100644
--- a/distro/packages/ncurses.scm
+++ b/distro/packages/ncurses.scm
@@ -18,7 +18,7 @@
18 18
19(define-module (distro packages ncurses) 19(define-module (distro packages ncurses)
20 #:use-module (guix packages) 20 #:use-module (guix packages)
21 #:use-module (guix http) 21 #:use-module (guix download)
22 #:use-module (guix utils) 22 #:use-module (guix utils)
23 #:use-module (guix build-system gnu)) 23 #:use-module (guix build-system gnu))
24 24
@@ -55,7 +55,7 @@
55 (name "ncurses") 55 (name "ncurses")
56 (version "5.9") 56 (version "5.9")
57 (source (origin 57 (source (origin
58 (method http-fetch) 58 (method url-fetch)
59 (uri (string-append "http://ftp.gnu.org/gnu/ncurses/ncurses-" 59 (uri (string-append "http://ftp.gnu.org/gnu/ncurses/ncurses-"
60 version ".tar.gz")) 60 version ".tar.gz"))
61 (sha256 61 (sha256
diff --git a/distro/packages/perl.scm b/distro/packages/perl.scm
index 7e6cf0e4f75..9704ae1440b 100644
--- a/distro/packages/perl.scm
+++ b/distro/packages/perl.scm
@@ -19,7 +19,7 @@
19(define-module (distro packages perl) 19(define-module (distro packages perl)
20 #:use-module (distro) 20 #:use-module (distro)
21 #:use-module (guix packages) 21 #:use-module (guix packages)
22 #:use-module (guix http) 22 #:use-module (guix download)
23 #:use-module (guix utils) 23 #:use-module (guix utils)
24 #:use-module (guix build-system gnu)) 24 #:use-module (guix build-system gnu))
25 25
@@ -29,7 +29,7 @@
29 (name "perl") 29 (name "perl")
30 (version "5.16.1") 30 (version "5.16.1")
31 (source (origin 31 (source (origin
32 (method http-fetch) 32 (method url-fetch)
33 (uri (string-append "http://www.cpan.org/src/5.0/perl-" 33 (uri (string-append "http://www.cpan.org/src/5.0/perl-"
34 version ".tar.gz")) 34 version ".tar.gz"))
35 (sha256 35 (sha256
diff --git a/distro/packages/pkg-config.scm b/distro/packages/pkg-config.scm
index 7e44efb4296..554be6bcde7 100644
--- a/distro/packages/pkg-config.scm
+++ b/distro/packages/pkg-config.scm
@@ -18,7 +18,7 @@
18 18
19(define-module (distro packages pkg-config) 19(define-module (distro packages pkg-config)
20 #:use-module (guix packages) 20 #:use-module (guix packages)
21 #:use-module (guix http) 21 #:use-module (guix download)
22 #:use-module (guix utils) 22 #:use-module (guix utils)
23 #:use-module (guix build-system gnu)) 23 #:use-module (guix build-system gnu))
24 24
@@ -27,7 +27,7 @@
27 (name "pkg-config") 27 (name "pkg-config")
28 (version "0.27.1") 28 (version "0.27.1")
29 (source (origin 29 (source (origin
30 (method http-fetch) 30 (method url-fetch)
31 (uri (string-append 31 (uri (string-append
32 "http://pkgconfig.freedesktop.org/releases/pkg-config-" 32 "http://pkgconfig.freedesktop.org/releases/pkg-config-"
33 version ".tar.gz")) 33 version ".tar.gz"))
diff --git a/distro/packages/pth.scm b/distro/packages/pth.scm
index 94e0dbbaee8..bb65c41598a 100644
--- a/distro/packages/pth.scm
+++ b/distro/packages/pth.scm
@@ -18,7 +18,7 @@
18 18
19(define-module (distro packages pth) 19(define-module (distro packages pth)
20 #:use-module (guix packages) 20 #:use-module (guix packages)
21 #:use-module (guix ftp) 21 #:use-module (guix download)
22 #:use-module (guix build-system gnu)) 22 #:use-module (guix build-system gnu))
23 23
24(define-public pth 24(define-public pth
@@ -27,7 +27,7 @@
27 (version "2.0.7") 27 (version "2.0.7")
28 (source 28 (source
29 (origin 29 (origin
30 (method ftp-fetch) 30 (method url-fetch)
31 (uri (string-append "ftp://ftp.gnu.org/gnu/pth/pth-" version 31 (uri (string-append "ftp://ftp.gnu.org/gnu/pth/pth-" version
32 ".tar.gz")) 32 ".tar.gz"))
33 (sha256 33 (sha256
diff --git a/distro/packages/readline.scm b/distro/packages/readline.scm
index 6f54d328254..18c149b2c61 100644
--- a/distro/packages/readline.scm
+++ b/distro/packages/readline.scm
@@ -20,7 +20,7 @@
20 #:use-module (distro) 20 #:use-module (distro)
21 #:use-module (distro packages ncurses) 21 #:use-module (distro packages ncurses)
22 #:use-module (guix packages) 22 #:use-module (guix packages)
23 #:use-module (guix http) 23 #:use-module (guix download)
24 #:use-module (guix utils) 24 #:use-module (guix utils)
25 #:use-module (guix build-system gnu)) 25 #:use-module (guix build-system gnu))
26 26
@@ -29,7 +29,7 @@
29 (name "readline") 29 (name "readline")
30 (version "6.2") 30 (version "6.2")
31 (source (origin 31 (source (origin
32 (method http-fetch) 32 (method url-fetch)
33 (uri (string-append "http://ftp.gnu.org/gnu/readline/readline-" 33 (uri (string-append "http://ftp.gnu.org/gnu/readline/readline-"
34 version ".tar.gz")) 34 version ".tar.gz"))
35 (sha256 35 (sha256
diff --git a/distro/packages/recutils.scm b/distro/packages/recutils.scm
index c3b74b60851..a03e73b7d64 100644
--- a/distro/packages/recutils.scm
+++ b/distro/packages/recutils.scm
@@ -19,7 +19,7 @@
19(define-module (distro packages recutils) 19(define-module (distro packages recutils)
20 #:use-module (distro) 20 #:use-module (distro)
21 #:use-module (guix packages) 21 #:use-module (guix packages)
22 #:use-module (guix http) 22 #:use-module (guix download)
23 #:use-module (guix utils) 23 #:use-module (guix utils)
24 #:use-module (guix build-system gnu)) 24 #:use-module (guix build-system gnu))
25 25
@@ -28,7 +28,7 @@
28 (name "recutils") 28 (name "recutils")
29 (version "1.5") 29 (version "1.5")
30 (source (origin 30 (source (origin
31 (method http-fetch) 31 (method url-fetch)
32 (uri (string-append "http://ftp.gnu.org/gnu/recutils/recutils-" 32 (uri (string-append "http://ftp.gnu.org/gnu/recutils/recutils-"
33 version ".tar.gz")) 33 version ".tar.gz"))
34 (sha256 34 (sha256
diff --git a/guix.scm b/guix.scm
index 1e136372bcb..9efc6e71398 100644
--- a/guix.scm
+++ b/guix.scm
@@ -27,8 +27,7 @@
27 build-system 27 build-system
28 derivations 28 derivations
29 ftp-client 29 ftp-client
30 ftp 30 download
31 http
32 packages 31 packages
33 store 32 store
34 utils)) 33 utils))
diff --git a/guix/build/ftp.scm b/guix/build/ftp.scm
deleted file mode 100644
index 17486953c28..00000000000
--- a/guix/build/ftp.scm
+++ /dev/null
@@ -1,48 +0,0 @@
1;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
2;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
3;;;
4;;; This file is part of Guix.
5;;;
6;;; Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with Guix. If not, see <http://www.gnu.org/licenses/>.
18
19(define-module (guix build ftp)
20 #:use-module (guix ftp-client)
21 #:use-module (guix build utils)
22 #:use-module (web uri)
23 #:export (ftp-fetch))
24
25;;; Commentary:
26;;;
27;;; Fetch data such as tarballs over FTP (builder-side code).
28;;;
29;;; Code:
30
31(define (ftp-fetch url file)
32 "Fetch data from URL and write it to FILE. Return FILE on success."
33
34 (setvbuf (current-output-port) _IOLBF)
35 (format #t "starting FTP download of `~a' from `~a'...~%" file url)
36 (let* ((uri (string->uri url))
37 (conn (ftp-open (uri-host uri)))
38 (in (ftp-retr conn (basename (uri-path uri))
39 (dirname (uri-path uri)))))
40 (call-with-output-file file
41 (lambda (out)
42 ;; TODO: Show a progress bar.
43 (dump-port in out)))
44
45 (ftp-close conn))
46 file)
47
48;;; ftp.scm ends here
diff --git a/guix/build/http.scm b/guix/build/http.scm
deleted file mode 100644
index 65c09fa4cd7..00000000000
--- a/guix/build/http.scm
+++ /dev/null
@@ -1,100 +0,0 @@
1;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
2;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
3;;;
4;;; This file is part of Guix.
5;;;
6;;; Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with Guix. If not, see <http://www.gnu.org/licenses/>.
18
19(define-module (guix build http)
20 #:use-module (web uri)
21 #:use-module (web client)
22 #:use-module (web response)
23 #:use-module (rnrs io ports)
24 #:use-module (srfi srfi-11)
25 #:export (http-fetch))
26
27;;; Commentary:
28;;;
29;;; Fetch data such as tarballs over HTTP (builder-side code).
30;;;
31;;; Code:
32
33(define (open-connection-for-uri uri)
34 "Return an open input/output port for a connection to URI.
35
36This is the same as Guile's `open-socket-for-uri', except that we always
37use a numeric port argument, to avoid the need to go through libc's NSS,
38which is not available during bootstrap."
39 (define addresses
40 (let ((port (or (uri-port uri)
41 (case (uri-scheme uri)
42 ((http) 80) ; /etc/services, not for me!
43 (else
44 (error "unsupported URI scheme" uri))))))
45 (getaddrinfo (uri-host uri)
46 (number->string port)
47 AI_NUMERICSERV)))
48
49 (let loop ((addresses addresses))
50 (let* ((ai (car addresses))
51 (s (with-fluids ((%default-port-encoding #f))
52 (socket (addrinfo:fam ai) (addrinfo:socktype ai)
53 (addrinfo:protocol ai)))))
54 (catch 'system-error
55 (lambda ()
56 (connect s (addrinfo:addr ai))
57
58 ;; Buffer input and output on this port.
59 (setvbuf s _IOFBF)
60 ;; Enlarge the receive buffer.
61 (setsockopt s SOL_SOCKET SO_RCVBUF (* 12 1024))
62 s)
63 (lambda args
64 ;; Connection failed, so try one of the other addresses.
65 (close s)
66 (if (null? addresses)
67 (apply throw args)
68 (loop (cdr addresses))))))))
69
70;; XXX: This is an awful hack to make sure the (set-port-encoding! p
71;; "ISO-8859-1") call in `read-response' passes, even during bootstrap
72;; where iconv is not available.
73(module-define! (resolve-module '(web response))
74 'set-port-encoding!
75 (lambda (p e) #f))
76
77(define (http-fetch url file)
78 "Fetch data from URL and write it to FILE. Return FILE on success."
79
80 (setvbuf (current-output-port) _IOLBF)
81 (format #t "starting HTTP download of `~a' from `~a'...~%" file url)
82
83 ;; FIXME: Use a variant of `http-get' that returns a port instead of
84 ;; loading everything in memory.
85 (let*-values (((uri)
86 (string->uri url))
87 ((connection)
88 (open-connection-for-uri uri))
89 ((resp bv)
90 (http-get uri #:port connection #:decode-body? #f))
91 ((code)
92 (response-code resp)))
93 (if (= 200 code)
94 (begin
95 (call-with-output-file file
96 (lambda (p)
97 (put-bytevector p bv)))
98 file)
99 (error "download failed" url
100 code (response-reason-phrase resp)))))
diff --git a/guix/ftp.scm b/guix/ftp.scm
deleted file mode 100644
index 2717bf3fb3f..00000000000
--- a/guix/ftp.scm
+++ /dev/null
@@ -1,65 +0,0 @@
1;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
2;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
3;;;
4;;; This file is part of Guix.
5;;;
6;;; Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with Guix. If not, see <ftp://www.gnu.org/licenses/>.
18
19(define-module (guix ftp)
20 #:use-module (ice-9 match)
21 #:use-module (guix derivations)
22 #:use-module (guix packages)
23 #:use-module ((guix store) #:select (derivation-path?))
24 #:use-module (guix utils)
25 #:export (ftp-fetch))
26
27;;; Commentary:
28;;;
29;;; Produce fixed-output derivations with data fetched over FTP.
30;;;
31;;; Code:
32
33(define* (ftp-fetch store url hash-algo hash
34 #:optional name
35 #:key (system (%current-system)) guile)
36 "Return the path of a fixed-output derivation in STORE that fetches URL,
37which is expected to have hash HASH of type HASH-ALGO (a symbol). By
38default, the file name is the base name of URL; optionally, NAME can specify
39a different file name."
40 (define builder
41 `(begin
42 (use-modules (guix build ftp))
43 (ftp-fetch ,url %output)))
44
45 (define guile-for-build
46 (match guile
47 ((? package?)
48 (package-derivation store guile system))
49 ((and (? string?) (? derivation-path?))
50 guile)
51 (#f ; the default
52 (let* ((distro (resolve-interface '(distro packages base)))
53 (guile (module-ref distro 'guile-final)))
54 (package-derivation store guile system)))))
55
56 (build-expression->derivation store (or name (basename url)) system
57 builder '()
58 #:hash-algo hash-algo
59 #:hash hash
60 #:modules '((guix ftp-client)
61 (guix build ftp)
62 (guix build utils))
63 #:guile-for-build guile-for-build))
64
65;;; ftp.scm ends here
diff --git a/guix/http.scm b/guix/http.scm
deleted file mode 100644
index 182d011b77e..00000000000
--- a/guix/http.scm
+++ /dev/null
@@ -1,63 +0,0 @@
1;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
2;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
3;;;
4;;; This file is part of Guix.
5;;;
6;;; Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with Guix. If not, see <http://www.gnu.org/licenses/>.
18
19(define-module (guix http)
20 #:use-module (ice-9 match)
21 #:use-module (guix derivations)
22 #:use-module (guix packages)
23 #:use-module ((guix store) #:select (derivation-path?))
24 #:use-module (guix utils)
25 #:export (http-fetch))
26
27;;; Commentary:
28;;;
29;;; Produce fixed-output derivations with data fetched over HTTP.
30;;;
31;;; Code:
32
33(define* (http-fetch store url hash-algo hash
34 #:optional name
35 #:key (system (%current-system)) guile)
36 "Return the path of a fixed-output derivation in STORE that fetches URL,
37which is expected to have hash HASH of type HASH-ALGO (a symbol). By
38default, the file name is the base name of URL; optionally, NAME can specify
39a different file name."
40 (define builder
41 `(begin
42 (use-modules (guix build http))
43 (http-fetch ,url %output)))
44
45 (define guile-for-build
46 (match guile
47 ((? package?)
48 (package-derivation store guile system))
49 ((and (? string?) (? derivation-path?))
50 guile)
51 (#f ; the default
52 (let* ((distro (resolve-interface '(distro packages base)))
53 (guile (module-ref distro 'guile-final)))
54 (package-derivation store guile system)))))
55
56 (build-expression->derivation store (or name (basename url)) system
57 builder '()
58 #:hash-algo hash-algo
59 #:hash hash
60 #:modules '((guix build http))
61 #:guile-for-build guile-for-build))
62
63;;; http.scm ends here
diff --git a/tests/builders.scm b/tests/builders.scm
index 9cc86ef1c21..d2691c521f4 100644
--- a/tests/builders.scm
+++ b/tests/builders.scm
@@ -18,7 +18,6 @@
18 18
19 19
20(define-module (test-builders) 20(define-module (test-builders)
21 #:use-module (guix http)
22 #:use-module (guix download) 21 #:use-module (guix download)
23 #:use-module (guix build-system) 22 #:use-module (guix build-system)
24 #:use-module (guix build-system gnu) 23 #:use-module (guix build-system gnu)
@@ -54,16 +53,6 @@
54 53
55(test-begin "builders") 54(test-begin "builders")
56 55
57(test-assert "http-fetch"
58 (let* ((url "http://ftp.gnu.org/gnu/hello/hello-2.8.tar.gz")
59 (hash (nix-base32-string->bytevector
60 "0wqd8sjmxfskrflaxywc7gqw7sfawrfvdxd9skxawzfgyy0pzdz6"))
61 (drv-path (http-fetch %store url 'sha256 hash))
62 (out-path (derivation-path->output-path drv-path)))
63 (and (build-derivations %store (list drv-path))
64 (file-exists? out-path)
65 (valid-path? %store out-path))))
66
67(test-assert "url-fetch" 56(test-assert "url-fetch"
68 (let* ((url '("http://ftp.gnu.org/gnu/hello/hello-2.8.tar.gz" 57 (let* ((url '("http://ftp.gnu.org/gnu/hello/hello-2.8.tar.gz"
69 "ftp://ftp.gnu.org/gnu/hello/hello-2.8.tar.gz")) 58 "ftp://ftp.gnu.org/gnu/hello/hello-2.8.tar.gz"))
@@ -83,7 +72,7 @@
83 (let* ((url "http://ftp.gnu.org/gnu/hello/hello-2.8.tar.gz") 72 (let* ((url "http://ftp.gnu.org/gnu/hello/hello-2.8.tar.gz")
84 (hash (nix-base32-string->bytevector 73 (hash (nix-base32-string->bytevector
85 "0wqd8sjmxfskrflaxywc7gqw7sfawrfvdxd9skxawzfgyy0pzdz6")) 74 "0wqd8sjmxfskrflaxywc7gqw7sfawrfvdxd9skxawzfgyy0pzdz6"))
86 (tarball (http-fetch %store url 'sha256 hash)) 75 (tarball (url-fetch %store url 'sha256 hash))
87 (build (gnu-build %store "hello-2.8" tarball 76 (build (gnu-build %store "hello-2.8" tarball
88 %bootstrap-inputs 77 %bootstrap-inputs
89 #:implicit-inputs? #f 78 #:implicit-inputs? #f