gnu: java-snappy: Fix description.
[jackhill/guix/guix.git] / gnu / packages / curl.scm
CommitLineData
6b9105e5 1;;; GNU Guix --- Functional package management for GNU
8cab7580 2;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
74d72608 3;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
a55e2b22 4;;; Copyright © 2015 Tomáš Čech <sleep_walker@suse.cz>
9d9847e1 5;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
678dd8a5 6;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
79d95250 7;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
8a1716fe 8;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
1300e4ee 9;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
5e3010a2 10;;; Copyright © 2018 Roel Janssen <roel@gnu.org>
6b9105e5
AE
11;;;
12;;; This file is part of GNU Guix.
13;;;
14;;; GNU Guix is free software; you can redistribute it and/or modify it
15;;; under the terms of the GNU General Public License as published by
16;;; the Free Software Foundation; either version 3 of the License, or (at
17;;; your option) any later version.
18;;;
19;;; GNU Guix is distributed in the hope that it will be useful, but
20;;; WITHOUT ANY WARRANTY; without even the implied warranty of
21;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22;;; GNU General Public License for more details.
23;;;
24;;; You should have received a copy of the GNU General Public License
25;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
26
27(define-module (gnu packages curl)
b5b73a82 28 #:use-module ((guix licenses) #:prefix license:)
6b9105e5
AE
29 #:use-module (guix packages)
30 #:use-module (guix download)
8de9d532 31 #:use-module (guix git-download)
79d95250 32 #:use-module (guix utils)
6b9105e5 33 #:use-module (guix build-system gnu)
8de9d532 34 #:use-module (guix build-system go)
b6b29c77 35 #:use-module (gnu packages)
6b9105e5 36 #:use-module (gnu packages compression)
8de9d532 37 #:use-module (gnu packages golang)
6b9105e5
AE
38 #:use-module (gnu packages groff)
39 #:use-module (gnu packages gsasl)
5e3010a2 40 #:use-module (gnu packages guile)
6b9105e5
AE
41 #:use-module (gnu packages libidn)
42 #:use-module (gnu packages openldap)
43 #:use-module (gnu packages perl)
44 #:use-module (gnu packages pkg-config)
c0e57fb8 45 #:use-module (gnu packages python)
a7fd7b68 46 #:use-module (gnu packages ssh)
1300e4ee
TGR
47 #:use-module (gnu packages tls)
48 #:use-module (gnu packages web))
6b9105e5
AE
49
50(define-public curl
51 (package
52 (name "curl")
a5f2b443 53 (version "7.59.0")
b1184403 54 (replacement curl-7.61.0)
6b9105e5
AE
55 (source (origin
56 (method url-fetch)
6588c283 57 (uri (string-append "https://curl.haxx.se/download/curl-"
e0afc09d 58 version ".tar.xz"))
6b9105e5
AE
59 (sha256
60 (base32
a5f2b443 61 "1z310hrjm2vmbcpkyp81dcmj9rk127zkjyawpy2pah0nz6yslkp4"))))
6b9105e5 62 (build-system gnu-build-system)
9d9847e1
LC
63 (outputs '("out"
64 "doc")) ;1.2 MiB of man3 pages
6b9105e5 65 (inputs `(("gnutls" ,gnutls)
6b9105e5
AE
66 ("gss" ,gss)
67 ("libidn" ,libidn)
8d5ceb12 68 ("libssh2" ,libssh2)
6b9105e5 69 ("openldap" ,openldap)
6076496b 70 ("nghttp2" ,nghttp2 "lib")
6b9105e5 71 ("zlib" ,zlib)))
c4c4cc05
JD
72 (native-inputs
73 `(("perl" ,perl)
74 ;; to enable the --manual option and make test 1026 pass
75 ("groff" ,groff)
c0e57fb8
SHT
76 ("pkg-config" ,pkg-config)
77 ("python" ,python-2)))
dc138d6d
MB
78 (native-search-paths
79 ;; Note: This search path is respected by the `curl` command-line tool only.
80 ;; Ideally we would bake this into libcurl itself so other users can benefit,
81 ;; but it's not supported upstream due to thread safety concerns.
82 (list (search-path-specification
83 (variable "CURL_CA_BUNDLE")
84 (file-type 'regular)
85 (separator #f) ;single entry
86 (files '("etc/ssl/certs/ca-certificates.crt")))))
6b9105e5 87 (arguments
c0e57fb8
SHT
88 `(#:configure-flags '("--with-gnutls" "--with-gssapi")
89 ;; Add a phase to patch '/bin/sh' occurances in tests/runtests.pl
90 #:phases
5625adfc 91 (modify-phases %standard-phases
9d9847e1
LC
92 (add-after
93 'install 'move-man3-pages
94 (lambda* (#:key outputs #:allow-other-keys)
95 ;; Move section 3 man pages to "doc".
96 (let ((out (assoc-ref outputs "out"))
97 (doc (assoc-ref outputs "doc")))
98 (mkdir-p (string-append doc "/share/man"))
99 (rename-file (string-append out "/share/man/man3")
100 (string-append doc "/share/man/man3"))
101 #t)))
5625adfc
LC
102 (replace
103 'check
104 (lambda _
105 (substitute* "tests/runtests.pl"
106 (("/bin/sh") (which "sh")))
186de634 107
5625adfc
LC
108 ;; XXX FIXME: Test #1510 seems to work on some machines and not
109 ;; others, possibly based on the kernel version. It works on GuixSD
110 ;; on x86_64 with linux-libre-4.1, but fails on Hydra for both i686
111 ;; and x86_64 with the following error:
112 ;;
113 ;; test 1510...[HTTP GET connection cache limit (CURLOPT_MAXCONNECTS)]
114 ;;
115 ;; 1510: output (log/stderr1510) FAILED:
a124bbd2
SB
116 ;; --- log/check-expected 2015-06-27 07:45:53.166720834 +0000
117 ;; +++ log/check-generated 2015-06-27 07:45:53.166720834 +0000
5625adfc
LC
118 ;; @@ -1,5 +1,5 @@
119 ;; * Connection #0 to host server1.example.com left intact[LF]
120 ;; * Connection #1 to host server2.example.com left intact[LF]
121 ;; * Connection #2 to host server3.example.com left intact[LF]
122 ;; -* Closing connection 0[LF]
123 ;; +* Closing connection 1[LF]
124 ;; * Connection #3 to host server4.example.com left intact[LF]
125 (delete-file "tests/data/test1510")
d2e3caba 126
5625adfc
LC
127 ;; The top-level "make check" does "make -C tests quiet-test", which
128 ;; is too quiet. Use the "test" target instead, which is more
129 ;; verbose.
fac441b3 130 (invoke "make" "-C" "tests" "test"))))))
35b9e423 131 (synopsis "Command line tool for transferring data with URL syntax")
6b9105e5
AE
132 (description
133 "curl is a command line tool for transferring data with URL syntax,
134supporting DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP,
135LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet and TFTP.
7c125ce0
AK
136curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP
137form based upload, proxies, cookies, file transfer resume, user+password
138authentication (Basic, Digest, NTLM, Negotiate, kerberos...), proxy
139tunneling, and so on.")
166191b3 140 (license (license:non-copyleft "file://COPYING"
7c125ce0 141 "See COPYING in the distribution."))
14251e30 142 (home-page "https://curl.haxx.se/")))
e1444afa 143
b1184403 144(define-public curl-7.61.0
e1444afa
LF
145 (package
146 (inherit curl)
b1184403 147 (version "7.61.0")
e1444afa
LF
148 (source
149 (origin
150 (method url-fetch)
151 (uri (string-append "https://curl.haxx.se/download/curl-"
79d95250 152 version ".tar.xz"))
e1444afa
LF
153 (sha256
154 (base32
b1184403 155 "080p9r2kln8cbfj0rqfn6wqp5kdn9k5wp720nirkcw845lcmavpg"))))))
8de9d532
LF
156
157(define-public kurly
158 (package
159 (name "kurly")
fdcbe78b 160 (version "1.2.1")
8de9d532
LF
161 (source (origin
162 (method git-fetch)
163 (uri (git-reference
164 (url "https://github.com/davidjpeacock/kurly.git")
165 (commit (string-append "v" version))))
c2c04cde 166 (file-name (git-file-name name version))
8de9d532
LF
167 (sha256
168 (base32
fdcbe78b 169 "01kp33gvzxmk6ipz7323wqwmbc90q2mwzsjig8rzpqsm4kji5hi6"))))
8de9d532
LF
170 (build-system go-build-system)
171 (arguments
4880fddd
LF
172 `(#:import-path "github.com/davidjpeacock/kurly"
173 #:install-source? #f
174 #:phases
175 (modify-phases %standard-phases
fdcbe78b
TGR
176 (add-after 'install 'install-documentation
177 (lambda* (#:key import-path outputs #:allow-other-keys)
178 (let* ((source (string-append "src/" import-path))
179 (out (assoc-ref outputs "out"))
180 (doc (string-append out "/share/doc/" ,name "-" ,version))
181 (man (string-append out "/share/man/man1")))
182 (with-directory-excursion source
183 (install-file "README.md" doc)
184 (mkdir-p man)
185 (copy-file "meta/kurly.man"
186 (string-append man "/kurly.1")))
4880fddd 187 #t))))))
8de9d532
LF
188 (inputs
189 `(("go-github-com-alsm-ioprogress" ,go-github-com-alsm-ioprogress)
190 ("go-github-com-aki237-nscjar" ,go-github-com-aki237-nscjar)
191 ("go-github-com-davidjpeacock-cli" ,go-github-com-davidjpeacock-cli)))
192 (synopsis "Command-line HTTP client")
193 (description "kurly is an alternative to the @code{curl} program written in
194Go. kurly is designed to operate in a similar manner to curl, with select
195features. Notably, kurly is not aiming for feature parity, but common flags and
196mechanisms particularly within the HTTP(S) realm are to be expected. kurly does
197not offer a replacement for libcurl.")
198 (home-page "https://github.com/davidjpeacock/kurly")
199 (license license:asl2.0)))
5e3010a2
RJ
200
201(define-public guile-curl
202 (package
203 (name "guile-curl")
204 (version "0.5")
205 (source (origin
206 (method url-fetch)
207 (uri (string-append
208 "http://www.lonelycactus.com/tarball/guile-curl-"
209 version ".tar.gz"))
210 (sha256
211 (base32
212 "1846rxgc0ylh8768lr79irc7nwjichzb7qb7lzs2k42m0i53sc46"))))
213 (build-system gnu-build-system)
214 (arguments
215 `(#:configure-flags (list (string-append
216 "--with-guilesitedir="
217 (assoc-ref %outputs "out")
218 "/share/guile/site/2.2")
219 (string-append
220 "-with-guileextensiondir="
221 (assoc-ref %outputs "out")
222 "/lib/guile/2.2/extensions"))
223 #:phases
224 (modify-phases %standard-phases
225 (add-after 'install 'patch-extension-path
226 (lambda* (#:key outputs #:allow-other-keys)
227 (let* ((out (assoc-ref outputs "out"))
228 (curl.scm (string-append
229 out "/share/guile/site/2.2/curl.scm"))
230 (curl.go (string-append
231 out "/lib/guile/2.2/site-ccache/curl.go"))
232 (ext (string-append out "/lib/guile/2.2/"
233 "extensions/libguile-curl")))
234 (substitute* curl.scm (("libguile-curl") ext))
235 ;; The build system does not actually compile the Scheme module.
236 ;; So we can compile it and put it in the right place in one go.
d28e5ad2 237 (invoke "guild" "compile" curl.scm "-o" curl.go)))))))
5e3010a2
RJ
238 (native-inputs `(("pkg-config" ,pkg-config)))
239 (inputs
240 `(("curl" ,curl)
241 ("guile" ,guile-2.2)))
242 (home-page "http://www.lonelycactus.com/guile-curl.html")
243 (synopsis "Curl bindings for Guile")
244 (description "@code{guile-curl} is a project that has procedures that allow
245Guile to do client-side URL transfers, like requesting documents from HTTP or
246FTP servers. It is based on the curl library.")
247 (license license:gpl3+)))