gnu: nghttp2: Support for the Hurd.
[jackhill/guix/guix.git] / gnu / packages / web.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
3 ;;; Copyright © 2013 Aljosha Papsch <misc@rpapsch.de>
4 ;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
5 ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
6 ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
7 ;;; Copyright © 2018 Raoul Jean Pierre Bonnal <ilpuccio.febo@gmail.com>
8 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
9 ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Eric Bavier <bavier@posteo.net>
10 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
11 ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
12 ;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org>
13 ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
14 ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org>
15 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
16 ;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org>
17 ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
18 ;;; Copyright © 2016, 2017, 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
19 ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
20 ;;; Copyright © 2016 Bake Timmons <b3timmons@speedymail.org>
21 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
22 ;;; Copyright © 2017, 2018, 2020 Marius Bakke <mbakke@fastmail.com>
23 ;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
24 ;;; Copyright © 2017 Petter <petter@mykolab.ch>
25 ;;; Copyright © 2017 Pierre Langlois <pierre.langlois@gmx.com>
26 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
27 ;;; Copyright © 2017, 2019, 2020 Christopher Baines <mail@cbaines.net>
28 ;;; Copyright © 2018, 2019 Julien Lepiller <julien@lepiller.eu>
29 ;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
30 ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
31 ;;; Copyright © 2018 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
32 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
33 ;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
34 ;;; Copyright © 2019 Brendan Tildesley <mail@brendan.scot>
35 ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
36 ;;; Copyright © 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
37 ;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.org>
38 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
39 ;;; Copyright © 2019 Pierre-Moana Levesque <pierre.moana.levesque@gmail.com>
40 ;;; Copyright © 2019, 2020 Florian Pelz <pelzflorian@pelzflorian.de>
41 ;;; Copyright © 2020 Timotej Lazar <timotej.lazar@araneo.si>
42 ;;; Copyright © 2020 Alexandros Theodotou <alex@zrythm.org>
43 ;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz>
44 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
45 ;;; Copyright © 2018, 2019, 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
46 ;;; Copyright © 2020 Paul Garlick <pgarlick@tourbillion-technology.com>
47 ;;;
48 ;;; This file is part of GNU Guix.
49 ;;;
50 ;;; GNU Guix is free software; you can redistribute it and/or modify it
51 ;;; under the terms of the GNU General Public License as published by
52 ;;; the Free Software Foundation; either version 3 of the License, or (at
53 ;;; your option) any later version.
54 ;;;
55 ;;; GNU Guix is distributed in the hope that it will be useful, but
56 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
57 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
58 ;;; GNU General Public License for more details.
59 ;;;
60 ;;; You should have received a copy of the GNU General Public License
61 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
62
63 (define-module (gnu packages web)
64 #:use-module (ice-9 match)
65 #:use-module ((guix licenses) #:prefix license:)
66 #:use-module (guix packages)
67 #:use-module (guix download)
68 #:use-module (guix gexp)
69 #:use-module (guix git-download)
70 #:use-module (guix cvs-download)
71 #:use-module (guix hg-download)
72 #:use-module (guix utils)
73 #:use-module (guix build-system gnu)
74 #:use-module (guix build-system glib-or-gtk)
75 #:use-module (guix build-system perl)
76 #:use-module (guix build-system cmake)
77 #:use-module (guix build-system trivial)
78 #:use-module (guix build-system python)
79 #:use-module (guix build-system ant)
80 #:use-module (guix build-system scons)
81 #:use-module (guix build-system go)
82 #:use-module (gnu packages)
83 #:use-module (gnu packages admin)
84 #:use-module (gnu packages adns)
85 #:use-module (gnu packages apr)
86 #:use-module (gnu packages boost)
87 #:use-module (gnu packages check)
88 #:use-module (gnu packages documentation)
89 #:use-module (gnu packages docbook)
90 #:use-module (gnu packages emacs)
91 #:use-module (gnu packages emacs-xyz)
92 #:use-module (gnu packages autotools)
93 #:use-module (gnu packages compression)
94 #:use-module (gnu packages curl)
95 #:use-module (gnu packages cyrus-sasl)
96 #:use-module (gnu packages databases)
97 #:use-module (gnu packages bison)
98 #:use-module (gnu packages flex)
99 #:use-module (gnu packages fontutils)
100 #:use-module (gnu packages freedesktop)
101 #:use-module (gnu packages kerberos)
102 #:use-module (gnu packages gcc)
103 #:use-module (gnu packages gd)
104 #:use-module (gnu packages gettext)
105 #:use-module (gnu packages glib)
106 #:use-module (gnu packages gnome)
107 #:use-module (gnu packages gnu-doc)
108 #:use-module (gnu packages gnupg)
109 #:use-module (gnu packages golang)
110 #:use-module (gnu packages gperf)
111 #:use-module (gnu packages gtk)
112 #:use-module (gnu packages guile)
113 #:use-module (gnu packages guile-xyz)
114 #:use-module (gnu packages hurd)
115 #:use-module (gnu packages java)
116 #:use-module (gnu packages jemalloc)
117 #:use-module (gnu packages image)
118 #:use-module (gnu packages imagemagick)
119 #:use-module (gnu packages kde)
120 #:use-module (gnu packages libevent)
121 #:use-module (gnu packages libidn)
122 #:use-module (gnu packages libunistring)
123 #:use-module (gnu packages libunwind)
124 #:use-module (gnu packages linux)
125 #:use-module (gnu packages lisp-xyz)
126 #:use-module (gnu packages lsof)
127 #:use-module (gnu packages lua)
128 #:use-module (gnu packages markup)
129 #:use-module (gnu packages ncurses)
130 #:use-module (gnu packages networking)
131 #:use-module (gnu packages nss)
132 #:use-module (gnu packages openldap)
133 #:use-module (gnu packages openstack)
134 #:use-module (gnu packages base)
135 #:use-module (gnu packages package-management)
136 #:use-module (gnu packages perl)
137 #:use-module (gnu packages perl-check)
138 #:use-module (gnu packages python)
139 #:use-module (gnu packages python-web)
140 #:use-module (gnu packages python-xyz)
141 #:use-module (gnu packages pcre)
142 #:use-module (gnu packages pkg-config)
143 #:use-module (gnu packages qt)
144 #:use-module (gnu packages readline)
145 #:use-module (gnu packages re2c)
146 #:use-module (gnu packages sphinx)
147 #:use-module (gnu packages texinfo)
148 #:use-module (gnu packages textutils)
149 #:use-module (gnu packages tls)
150 #:use-module (gnu packages valgrind)
151 #:use-module (gnu packages version-control)
152 #:use-module (gnu packages vim)
153 #:use-module (gnu packages xml)
154 #:use-module ((srfi srfi-1) #:select (delete-duplicates)))
155
156 (define-public httpd
157 (package
158 (name "httpd")
159 (version "2.4.43")
160 (source (origin
161 (method url-fetch)
162 (uri (string-append "mirror://apache/httpd/httpd-"
163 version ".tar.bz2"))
164 (sha256
165 (base32
166 "0hqgw47r3p3521ygkkqs8s30s5crm683081avj6330gwncm6b5x4"))))
167 (build-system gnu-build-system)
168 (native-inputs `(("pcre" ,pcre "bin"))) ;for 'pcre-config'
169 (inputs `(("apr" ,apr)
170 ("apr-util" ,apr-util)
171 ("openssl" ,openssl)
172 ("perl" ,perl))) ; needed to run bin/apxs
173 (arguments
174 `(#:test-target "test"
175 #:configure-flags (list "--enable-rewrite"
176 "--enable-userdir"
177 "--enable-vhost-alias"
178 "--enable-ssl"
179 "--enable-mime-magic"
180 (string-append "--sysconfdir="
181 (assoc-ref %outputs "out")
182 "/etc/httpd"))))
183 (synopsis "Featureful HTTP server")
184 (description
185 "The Apache HTTP Server Project is a collaborative software development
186 effort aimed at creating a robust, commercial-grade, featureful, and
187 freely-available source code implementation of an HTTP (Web) server. The
188 project is jointly managed by a group of volunteers located around the world,
189 using the Internet and the Web to communicate, plan, and develop the server
190 and its related documentation.")
191 (license license:asl2.0)
192 (home-page "https://httpd.apache.org/")))
193
194 (define-public mod-wsgi
195 (package
196 (name "mod-wsgi")
197 (version "4.5.22")
198 (source (origin
199 (method git-fetch)
200 (uri (git-reference
201 (url "https://github.com/GrahamDumpleton/mod_wsgi.git")
202 (commit version)))
203 (file-name (git-file-name name version))
204 (sha256
205 (base32
206 "1q90xw2cbhka5gcd6yc69iir73x4gm7fm75qpkins2ryfl6w1q3f"))))
207 (build-system gnu-build-system)
208 (arguments
209 '(#:tests? #f ; TODO: can't figure out if there are tests
210 #:make-flags (list
211 (string-append "DESTDIR="
212 (assoc-ref %outputs "out"))
213 "LIBEXECDIR=/modules")))
214 (inputs
215 `(("httpd" ,httpd)
216 ("python" ,python-wrapper)))
217 (synopsis "Apache HTTPD module for Python WSGI applications")
218 (description
219 "The mod_wsgi module for the Apache HTTPD Server adds support for running
220 applications that support the Python @acronym{WSGI, Web Server Gateway
221 Interface} specification.")
222 (license license:asl2.0)
223 (home-page "https://modwsgi.readthedocs.io/")))
224
225 (define-public nginx
226 (package
227 (name "nginx")
228 ;; Track the ‘mainline’ branch. Upstream considers it more reliable than
229 ;; ’stable’ and recommends that “in general you deploy the NGINX mainline
230 ;; branch at all times” (https://www.nginx.com/blog/nginx-1-6-1-7-released/)
231 ;; Consider updating the nginx-documentation package together with this one.
232 (version "1.19.0")
233 (source (origin
234 (method url-fetch)
235 (uri (string-append "https://nginx.org/download/nginx-"
236 version ".tar.gz"))
237 (sha256
238 (base32
239 "1j1n3rlvan6l9j3vw8axbbdm96w7s0x6ygmgqvbplzfd3wbid9j4"))))
240 (build-system gnu-build-system)
241 (inputs `(("openssl" ,openssl)
242 ("pcre" ,pcre)
243 ("zlib" ,zlib)))
244 (arguments
245 `(#:tests? #f ; no test target
246 #:phases
247 (modify-phases %standard-phases
248 (add-before 'configure 'patch-/bin/sh
249 (lambda _
250 (substitute* "auto/feature"
251 (("/bin/sh") (which "sh")))
252 #t))
253 (replace 'configure
254 ;; The configure script is hand-written, not from GNU autotools.
255 (lambda* (#:key outputs #:allow-other-keys)
256 (let ((flags
257 (list (string-append "--prefix=" (assoc-ref outputs "out"))
258 "--with-http_ssl_module"
259 "--with-http_v2_module"
260 "--with-pcre-jit"
261 "--with-debug"
262 ;; Even when not cross-building, we pass the
263 ;; --crossbuild option to avoid customizing for the
264 ;; kernel version on the build machine.
265 ,(let ((system "Linux") ; uname -s
266 (release "3.2.0") ; uname -r
267 ;; uname -m
268 (machine (match (or (%current-target-system)
269 (%current-system))
270 ("x86_64-linux" "x86_64")
271 ("i686-linux" "i686")
272 ("mips64el-linux" "mips64")
273 ;; Prevent errors when querying
274 ;; this package on unsupported
275 ;; platforms, e.g. when running
276 ;; "guix package --search="
277 (_ "UNSUPPORTED"))))
278 (string-append "--crossbuild="
279 system ":" release ":" machine)))))
280 (setenv "CC" "gcc")
281 (format #t "configure flags: ~s~%" flags)
282 (apply invoke "./configure" flags)
283 #t)))
284 (add-after 'install 'install-man-page
285 (lambda* (#:key outputs #:allow-other-keys)
286 (let* ((out (assoc-ref outputs "out"))
287 (man (string-append out "/share/man")))
288 (install-file "objs/nginx.8" (string-append man "/man8"))
289 #t)))
290 (add-after 'install 'fix-root-dirs
291 (lambda* (#:key outputs #:allow-other-keys)
292 ;; 'make install' puts things in strange places, so we need to
293 ;; clean it up ourselves.
294 (let* ((out (assoc-ref outputs "out"))
295 (share (string-append out "/share/nginx")))
296 ;; This directory is empty, so get rid of it.
297 (rmdir (string-append out "/logs"))
298 ;; Example configuration and HTML files belong in
299 ;; /share.
300 (mkdir-p share)
301 (rename-file (string-append out "/conf")
302 (string-append share "/conf"))
303 (rename-file (string-append out "/html")
304 (string-append share "/html"))
305 #t))))))
306 (home-page "https://nginx.org")
307 (synopsis "HTTP and reverse proxy server")
308 (description
309 "Nginx (\"engine X\") is a high-performance web and reverse proxy server
310 created by Igor Sysoev. It can be used both as a stand-alone web server
311 and as a proxy to reduce the load on back-end HTTP or mail servers.")
312 ;; Almost all of nginx is distributed under the bsd-2 license.
313 ;; The exceptions are:
314 ;; * The 'nginx-http-push' module is covered by the expat license.
315 ;; * The 'nginx-development-kit' module is mostly covered by bsd-3,
316 ;; except for two source files which are bsd-4 licensed.
317 (license (list license:bsd-2 license:expat license:bsd-3 license:bsd-4))))
318
319 (define nginx-xslscript
320 (let ((revision 11)
321 (changeset "01dc9ba12e1b"))
322 (package
323 (name "nginx-xslscript")
324 (version
325 (simple-format #f "2014-03-31-~A-~A" revision changeset))
326 (source (origin
327 (method hg-fetch)
328 (uri (hg-reference
329 (url "http://hg.nginx.org/xslscript")
330 (changeset changeset)))
331 (file-name (string-append name "-" version))
332 (sha256
333 (base32
334 "0am8zvdx3jmiwkg5q07qjaw5r26r4i2v5i4yr8a1k0jgib6ii08g"))))
335 (build-system gnu-build-system)
336 (arguments
337 '(#:tests? #f ; No test suite
338 #:phases
339 (modify-phases %standard-phases
340 (delete 'configure)
341 (delete 'build)
342 (replace 'install
343 (lambda* (#:key outputs #:allow-other-keys)
344 (let ((out-bin (string-append
345 (assoc-ref outputs "out")
346 "/bin")))
347 (mkdir-p out-bin)
348 (copy-file "xslscript.pl"
349 (string-append
350 out-bin
351 "/xslscript.pl"))
352 #t))))))
353 (home-page "http://hg.nginx.org/xslscript")
354 (synopsis "XSLScript with NGinx specific modifications")
355 (description
356 "XSLScript is a terse notation for writing complex XSLT stylesheets.
357 This is modified version, specifically intended for use with the NGinx
358 documentation.")
359 (license license:bsd-2))))
360
361 (define-public nginx-documentation
362 ;; This documentation should be relevant for the current nginx package.
363 (let ((version "1.19.0")
364 (revision 2549)
365 (changeset "c13a55aae487"))
366 (package
367 (name "nginx-documentation")
368 (version (simple-format #f "~A-~A-~A" version revision changeset))
369 (source
370 (origin (method hg-fetch)
371 (uri (hg-reference
372 (url "http://hg.nginx.org/nginx.org")
373 (changeset changeset)))
374 (file-name (string-append name "-" version))
375 (sha256
376 (base32
377 "0vwwvk6wf8f6c6n6yffmya9a287s6dbx1p739hdl3hwxfyh2ygc5"))))
378 (build-system gnu-build-system)
379 (arguments
380 '(#:tests? #f ; no test suite
381 #:phases
382 (modify-phases %standard-phases
383 (delete 'configure) ; no configure script
384 (replace 'build
385 (lambda* (#:key outputs #:allow-other-keys)
386 (let ((output (assoc-ref outputs "out")))
387 (substitute* "umasked.sh"
388 ((" /bin/sh") (string-append " " (which "sh"))))
389 ;; The documentation includes a banner, which makes sense on
390 ;; the NGinx website, but doesn't make much sense when
391 ;; viewing locally. Therefore, modify the CSS to remove the
392 ;; banner.
393 (substitute* "xslt/style.xslt"
394 (("#banner \\{ background: black;")
395 "#banner { display: none;"))
396 (invoke "make")
397 #t)))
398 (replace 'install
399 (lambda* (#:key outputs #:allow-other-keys)
400 (let ((output (assoc-ref outputs "out")))
401 (mkdir-p output)
402 (copy-recursively "libxslt" output)
403 #t))))))
404 (native-inputs
405 `(("libxml2" ,libxml2)
406 ("libxslt" ,libxslt)
407 ("nginx-xslscript" ,nginx-xslscript)))
408 (home-page "https://nginx.org")
409 (synopsis "Documentation for the nginx web server")
410 (description
411 "This package provides HTML documentation for the nginx web server.")
412 (license license:bsd-2))))
413
414 (define-public nginx-accept-language-module
415 ;; Upstream has never made a release; use current commit instead.
416 (let ((commit "2f69842f83dac77f7d98b41a2b31b13b87aeaba7")
417 (revision "1"))
418 (package
419 (name "nginx-accept-language-module")
420 (version (git-version "0.0.0" ;upstream has no version number
421 revision commit))
422 (source
423 (origin
424 (method git-fetch)
425 (uri (git-reference
426 (url "https://github.com/giom/nginx_accept_language_module.git")
427 (commit commit)))
428 (file-name (git-file-name name version))
429 (sha256
430 (base32 "1hjysrl15kh5233w7apq298cc2bp4q1z5mvaqcka9pdl90m0vhbw"))))
431 (build-system gnu-build-system)
432 (inputs `(("openssl" ,openssl)
433 ("pcre" ,pcre)
434 ("nginx-sources" ,(package-source nginx))
435 ("zlib" ,zlib)))
436 (arguments
437 `(#:tests? #f ; no test target
438 #:make-flags (list "modules")
439 #:modules ((guix build utils)
440 (guix build gnu-build-system)
441 (ice-9 popen)
442 (ice-9 regex)
443 (ice-9 textual-ports))
444 #:phases
445 (modify-phases %standard-phases
446 (add-after 'unpack 'unpack-nginx-sources
447 (lambda* (#:key inputs native-inputs #:allow-other-keys)
448 (begin
449 ;; The nginx source code is part of the module’s source.
450 (format #t "decompressing nginx source code~%")
451 (let ((tar (assoc-ref inputs "tar"))
452 (nginx-srcs (assoc-ref inputs "nginx-sources")))
453 (invoke (string-append tar "/bin/tar")
454 "xvf" nginx-srcs "--strip-components=1"))
455 #t)))
456 (add-after 'unpack 'convert-to-dynamic-module
457 (lambda _
458 (begin
459 (with-atomic-file-replacement "config"
460 (lambda (in out)
461 ;; cf. https://www.nginx.com/resources/wiki/extending/new_config/
462 (format out "ngx_module_type=HTTP~%")
463 (format out "ngx_module_name=\
464 ngx_http_accept_language_module~%")
465 (let* ((str (get-string-all in))
466 (rx (make-regexp
467 "NGX_ADDON_SRCS=\"\\$NGX_ADDON_SRCS (.*)\""))
468 (m (regexp-exec rx str))
469 (srcs (match:substring m 1)))
470 (format out (string-append "ngx_module_srcs=\""
471 srcs "\"~%")))
472 (format out ". auto/module~%")
473 (format out "ngx_addon_name=$ngx_module_name~%"))))))
474 (add-before 'configure 'patch-/bin/sh
475 (lambda _
476 (substitute* "auto/feature"
477 (("/bin/sh") (which "sh")))
478 #t))
479 (replace 'configure
480 ;; This phase is largely copied from the nginx package.
481 (lambda* (#:key outputs #:allow-other-keys)
482 (let ((flags
483 (list ;; A copy of nginx’ flags follows, otherwise we
484 ;; get a binary compatibility error. FIXME: Code
485 ;; duplication is bad.
486 (string-append "--prefix=" (assoc-ref outputs "out"))
487 "--with-http_ssl_module"
488 "--with-http_v2_module"
489 "--with-pcre-jit"
490 "--with-debug"
491 ;; Even when not cross-building, we pass the
492 ;; --crossbuild option to avoid customizing for the
493 ;; kernel version on the build machine.
494 ,(let ((system "Linux") ; uname -s
495 (release "3.2.0") ; uname -r
496 ;; uname -m
497 (machine (match (or (%current-target-system)
498 (%current-system))
499 ("x86_64-linux" "x86_64")
500 ("i686-linux" "i686")
501 ("mips64el-linux" "mips64")
502 ;; Prevent errors when querying
503 ;; this package on unsupported
504 ;; platforms, e.g. when running
505 ;; "guix package --search="
506 (_ "UNSUPPORTED"))))
507 (string-append "--crossbuild="
508 system ":" release ":" machine))
509 ;; The following are the args decribed on
510 ;; <https://www.nginx.com/blog/compiling-dynamic-modules-nginx-plus>.
511 ;; Enabling --with-compat here and in the nginx package
512 ;; would ensure binary compatibility even when using
513 ;; different configure options from the main nginx
514 ;; package. This is not needed for Guix.
515 ;; "--with-compat"
516 "--add-dynamic-module=.")))
517 (setenv "CC" "gcc")
518 (format #t "environment variable `CC' set to `gcc'~%")
519 (format #t "configure flags: ~s~%" flags)
520 (apply invoke "./configure" flags)
521 #t)))
522 (replace 'install
523 (lambda* (#:key outputs #:allow-other-keys)
524 (let* ((out (assoc-ref outputs "out"))
525 (modules-dir (string-append out "/etc/nginx/modules"))
526 (doc-dir (string-append
527 out "/share/doc/nginx-accept-language-module")))
528 (mkdir-p modules-dir)
529 (copy-file "objs/ngx_http_accept_language_module.so"
530 (string-append
531 modules-dir "/ngx_http_accept_language_module.so"))
532 (mkdir-p doc-dir)
533 (copy-file "README.textile"
534 (string-append doc-dir "/README.textile"))
535 #t))))))
536 (home-page
537 "https://www.nginx.com/resources/wiki/modules/accept_language/")
538 (synopsis "Nginx module for parsing the Accept-Language HTTP header")
539 (description
540 "This nginx module parses the Accept-Language field in HTTP headers and
541 chooses the most suitable locale for the user from the list of locales
542 supported at your website.")
543 (license (delete-duplicates
544 (cons license:bsd-2 ;license of nginx-accept-language-module
545 ;; The module’s code is linked statically with nginx,
546 ;; therefore nginx’ other licenses may also apply to its
547 ;; binary:
548 (package-license nginx)))))))
549
550 (define-public lighttpd
551 (package
552 (name "lighttpd")
553 (version "1.4.55")
554 (source (origin
555 (method url-fetch)
556 (uri (string-append "https://download.lighttpd.net/lighttpd/"
557 "releases-" (version-major+minor version) ".x/"
558 "lighttpd-" version ".tar.xz"))
559 (sha256
560 (base32
561 "09z947730yjh438wrqb3z1c5hr1dbb11a8sr92g3vk6mr7lm02va"))))
562 (build-system gnu-build-system)
563 (arguments
564 `(#:configure-flags
565 (list "--with-krb5"
566 "--with-ldap"
567 "--with-libev"
568 "--with-libunwind"
569 "--with-openssl"
570 "--with-pam"
571 "--with-sasl")
572 #:phases
573 (modify-phases %standard-phases
574 (add-after 'unpack 'embed-/bin/sh-reference
575 (lambda _
576 (substitute* "src/mod_ssi.c"
577 (("/bin/sh") (which "sh")))
578 #t))
579 (add-after 'unpack 'fix-tests
580 (lambda _
581 (setenv "SHELL" (which "sh"))
582 ;; gethostbyaddr fails
583 (substitute* "tests/LightyTest.pm"
584 (("\\{HOSTNAME\\} = \\$name;")
585 "{HOSTNAME} = \"127.0.0.1\";"))
586 #t)))))
587 (inputs
588 `(("cyrus-sasl" ,cyrus-sasl)
589 ("libev" ,libev)
590 ("libunwind" ,libunwind)
591 ("linux-pam" ,linux-pam)
592 ("mit-krb5" ,mit-krb5)
593 ("openldap" ,openldap)
594 ("openssl" ,openssl)
595 ("pcre" ,pcre)
596 ("pcre:bin" ,pcre "bin")
597 ("zlib" ,zlib)))
598 (native-inputs
599 `(("perl" ,perl) ; for tests
600 ("pkg-config" ,pkg-config)
601 ("which" ,which)))
602 (home-page "https://www.lighttpd.net/")
603 (synopsis "Lightweight HTTP and reverse proxy server")
604 (description
605 "Lighttpd is a secure, fast, compliant, and very flexible web-server that
606 has been optimized for high-performance environments. It has a very low
607 memory footprint compared to other webservers. Its features include FastCGI,
608 CGI, authentication, output compression, URL rewriting and many more.")
609 (license license:bsd-3)))
610
611 (define-public fcgi
612 (package
613 (name "fcgi")
614 (version "2.4.2")
615 (source
616 (origin
617 (method git-fetch)
618 ;; Upstream has disappeared.
619 (uri (git-reference
620 (url "https://github.com/FastCGI-Archives/fcgi2")
621 (commit version)))
622 (file-name (git-file-name name version))
623 (sha256
624 (base32 "1jhz6jfwv5kawa8kajvg18nfwc1b30f38zc0lggszd1vcmrwqkz1"))))
625 (build-system gnu-build-system)
626 ;; Parallel building is not supported.
627 (arguments `(#:parallel-build? #f))
628 (native-inputs
629 `(("autoconf" ,autoconf)
630 ("automake" ,automake)
631 ("libtool" ,libtool)))
632 ;; This is an archived fork of the original home page, www.fastcgi.com.
633 (home-page "https://fastcgi-archives.github.io/")
634 (synopsis "Language-independent, high-performant extension to CGI")
635 (description "FastCGI is a language-independent, scalable extension to CGI
636 that provides high performance without the limitations of server specific
637 APIs.")
638 ;; This package is released under the Open Market License, a variant of
639 ;; the Expat license, incompatible with the GPL.
640 (license (license:non-copyleft "file://LICENSE.TERMS"))))
641
642 (define-public fcgiwrap
643 (package
644 (name "fcgiwrap")
645 (version "1.1.0")
646 (source
647 (origin
648 (method git-fetch)
649 (uri (git-reference
650 (url "https://github.com/gnosek/fcgiwrap.git")
651 (commit version)))
652 (file-name (git-file-name name version))
653 (sha256
654 (base32 "1ryw66h9aazi83amk8l7ha8k5g0c7qvk5g6jv376a1ws9xk2qw6f"))))
655 (build-system gnu-build-system)
656 (arguments
657 `(#:tests? #f ; no tests included
658 #:make-flags (list "CC=gcc")
659 #:phases
660 (modify-phases %standard-phases
661 (add-after 'unpack 'fix-CFLAGS
662 ;; Remove broken options unconditionally added to CFLAGS.
663 (lambda _
664 (substitute* "configure.ac"
665 ((" -Werror") ""))
666 #t)))))
667 (native-inputs
668 `(("autoconf" ,autoconf)
669 ("automake" ,automake)
670 ("pkg-config" ,pkg-config)))
671 (inputs
672 `(("fcgi" ,fcgi)))
673 (home-page "https://nginx.localdomain.pl/wiki/FcgiWrap")
674 (synopsis "Simple server for running CGI applications over FastCGI")
675 (description "Fcgiwrap is a simple server for running CGI applications
676 over FastCGI. It hopes to provide clean CGI support to Nginx (and other web
677 servers that may need it).")
678 (license license:expat)))
679
680 (define-public starman
681 (package
682 (name "starman")
683 (version "0.4015")
684 (source
685 (origin
686 (method url-fetch)
687 (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
688 "Starman-" version ".tar.gz"))
689 (sha256
690 (base32 "1y1kn4929k299fbf6sw9lxcsdlq9fvq777p6yrzk591rr9xhkx8h"))))
691 (build-system perl-build-system)
692 (native-inputs
693 `(("perl-libwww" ,perl-libwww)
694 ("perl-module-build-tiny" ,perl-module-build-tiny)
695 ("perl-test-requires" ,perl-test-requires)))
696 (propagated-inputs
697 `(("perl-data-dump" ,perl-data-dump)
698 ("perl-http-date" ,perl-http-date)
699 ("perl-http-message" ,perl-http-message)
700 ("perl-http-parser-xs" ,perl-http-parser-xs)
701 ("perl-net-server" ,perl-net-server)
702 ("perl-plack" ,perl-plack)
703 ("perl-test-tcp" ,perl-test-tcp)))
704 (home-page "https://metacpan.org/release/Starman")
705 (synopsis "PSGI/Plack web server")
706 (description "Starman is a PSGI perl web server that has unique features
707 such as high performance, preforking, signal support, superdaemon awareness,
708 and UNIX socket support.")
709 (license license:perl-license)))
710
711 (define-public icedtea-web
712 (package
713 (name "icedtea-web")
714 (version "1.6.2")
715 (source (origin
716 (method url-fetch)
717 (uri (string-append
718 "http://icedtea.wildebeest.org/download/source/"
719 name "-" version ".tar.gz"))
720 (sha256
721 (base32
722 "004kwrngyxxlrlzby4vzxjr0xcyngcdc9dfgnvi61ffnjr006ryf"))))
723 (build-system gnu-build-system)
724 (arguments
725 `(#:configure-flags
726 (list "--disable-plugin" ;NPAPI plugins are obsolete nowadays.
727 (string-append "BIN_BASH=" (assoc-ref %build-inputs "bash")
728 "/bin/bash")
729 (string-append "--with-jdk-home=" (assoc-ref %build-inputs "jdk")))))
730 (outputs '("out" "doc"))
731 (native-inputs
732 `(("pkg-config" ,pkg-config)
733 ("zip" ,zip)))
734 (inputs
735 `(("gtk+" ,gtk+)
736 ("jdk" ,icedtea "jdk")))
737 (home-page "http://icedtea.classpath.org/wiki/IcedTea-Web")
738 (synopsis "Java Web Start")
739 (description
740 "IcedTea-Web is an implementation of the @dfn{Java Network Launching
741 Protocol}, also known as Java Web Start. This package provides tools and
742 libraries for working with JNLP applets.")
743 ;; The program is mainly GPL2+, with some individual files under LGPL2.1+
744 ;; or dual licenses.
745 (license license:gpl2+)))
746
747 (define-public jansson
748 (package
749 (name "jansson")
750 (version "2.12")
751 (source (origin
752 (method url-fetch)
753 (uri
754 (string-append "http://www.digip.org/jansson/releases/jansson-"
755 version ".tar.bz2"))
756 (sha256
757 (base32
758 "1lp1mv8pjp5yziws66cy0dhpcam4bbjqhffk13v4vgdybp674pb4"))))
759 (build-system gnu-build-system)
760 (arguments
761 `(#:configure-flags '("--disable-static")))
762 (home-page "http://www.digip.org/jansson/")
763 (synopsis "JSON C library")
764 (description
765 "Jansson is a C library for encoding, decoding and manipulating JSON
766 data.")
767 (license license:expat)))
768
769 (define-public json-c
770 (package
771 (name "json-c")
772 (version "0.14")
773 (source (origin
774 (method url-fetch)
775 (uri (string-append
776 "https://s3.amazonaws.com/json-c_releases/releases/json-c-"
777 version ".tar.gz"))
778 (sha256
779 (base32
780 "0w381krr99q5a2rypx4g437fa7gzgl82i64sgnrs6g5jr44dwxxk"))))
781 (build-system cmake-build-system)
782 (home-page "https://github.com/json-c/json-c/wiki")
783 (synopsis "JSON implementation in C")
784 (description
785 "JSON-C implements a reference counting object model that allows you to
786 easily construct JSON objects in C, output them as JSON-formatted strings and
787 parse JSON-formatted strings back into the C representation of JSON objects.
788 It aims to conform to RFC 7159.")
789 (license license:x11)))
790
791 ;; TODO: Remove these old versions when all dependents have been updated.
792 (define-public json-c-0.13
793 (package
794 (inherit json-c)
795 (version "0.13.1")
796 (source (origin
797 (method url-fetch)
798 (uri (string-append
799 "https://s3.amazonaws.com/json-c_releases/releases/json-c-"
800 version ".tar.gz"))
801 (sha256
802 (base32 "0ws8dz9nk8q2c0gbf66kg2r6mrkl7kamd3gpdv9zsyrz9n6n0zmq"))
803 (modules '((guix build utils)))
804 (snippet
805 '(begin
806 ;; Somehow 'config.h.in' is older than
807 ;; 'aclocal.m4', which would trigger a rule to
808 ;; run 'autoheader'.
809 (set-file-time "config.h.in"
810 (stat "aclocal.m4"))
811 #t))))
812 (build-system gnu-build-system)))
813
814 (define-public json-c-0.12
815 (package
816 (inherit json-c-0.13)
817 (version "0.12.1")
818 (source (origin
819 (method url-fetch)
820 (uri (string-append
821 "https://s3.amazonaws.com/json-c_releases/releases/json-c-"
822 version ".tar.gz"))
823 (sha256
824 (base32 "08qibrq29a5v7g23wi5icy6l4fbfw90h9ccps6vq0bcklx8n84ra"))
825 (modules '((guix build utils)))
826 (snippet
827 '(begin
828 ;; Somehow 'config.h.in' is older than
829 ;; 'aclocal.m4', which would trigger a rule to
830 ;; run 'autoheader'.
831 (set-file-time "config.h.in"
832 (stat "aclocal.m4"))
833
834 ;; Don't try to build with -Werror.
835 (substitute* (find-files "." "Makefile\\.in")
836 (("-Werror") ""))
837 #t))))))
838
839 (define-public json-parser
840 (package
841 (name "json-parser")
842 (version "1.1.0")
843 (source (origin
844 ;; do not use auto-generated tarballs
845 (method git-fetch)
846 (uri (git-reference
847 (url "https://github.com/udp/json-parser.git")
848 (commit (string-append "v" version))))
849 (file-name (git-file-name name version))
850 (sha256
851 (base32
852 "1ls7z4fx0sq633s5bc0j1gh36sv087gmrgr7rza22wjq2d4606yf"))))
853 ;; FIXME: we should build the python bindings in a separate package
854 (build-system gnu-build-system)
855 ;; the tests are written for the python bindings which are not built here
856 (arguments '(#:tests? #f))
857 (home-page "https://github.com/udp/json-parser")
858 (synopsis "JSON parser written in ANSI C")
859 (description "This package provides a very low footprint JSON parser
860 written in portable ANSI C.
861
862 @itemize
863 @item BSD licensed with no dependencies (i.e. just drop the C file into your
864 project)
865 @item Never recurses or allocates more memory than it needs
866 @item Very simple API with operator sugar for C++
867 @end itemize")
868 (license license:bsd-2)))
869
870 (define-public qjson
871 (package
872 (name "qjson")
873 (version "0.9.0")
874 (source (origin
875 (method git-fetch)
876 (uri (git-reference
877 (url "https://github.com/flavio/qjson.git")
878 (commit version)))
879 (file-name (git-file-name name version))
880 (sha256
881 (base32
882 "1f4wnxzx0qdmxzc7hqk28m0sva7z9p9xmxm6aifvjlp0ha6pmfxs"))))
883 (build-system cmake-build-system)
884 (arguments
885 ;; The tests require a running X server.
886 `(#:configure-flags '("-DQJSON_BUILD_TESTS=ON"
887 "-DCMAKE_CXX_FLAGS=-std=gnu++11 -fPIC")
888 #:phases
889 (modify-phases %standard-phases
890 (add-after 'unpack 'disable-broken-test
891 (lambda _
892 ;; FIXME: One test fails. See
893 ;; https://github.com/flavio/qjson/issues/105
894 (substitute* "tests/scanner/testscanner.cpp"
895 (("QTest::newRow\\(\"too large exponential\"\\)" line)
896 (string-append "//" line)))
897 #t))
898 (add-before 'check 'render-offscreen
899 (lambda _ (setenv "QT_QPA_PLATFORM" "offscreen") #t)))))
900 (inputs
901 `(("qtbase" ,qtbase)))
902 (home-page "http://qjson.sourceforge.net")
903 (synopsis "Library that maps JSON data to QVariant objects")
904 (description "QJson is a Qt-based library that maps JSON data to
905 @code{QVariant} objects. JSON arrays will be mapped to @code{QVariantList}
906 instances, while JSON's objects will be mapped to @code{QVariantMap}.")
907 ;; Only version 2.1 of the license
908 (license license:lgpl2.1)))
909
910 (define-public qoauth
911 (package
912 (name "qoauth")
913 (version "2.0.0")
914 (source (origin
915 (method git-fetch)
916 (uri (git-reference
917 (url "https://github.com/ayoy/qoauth.git")
918 (commit (string-append "v" version))))
919 (file-name (git-file-name name version))
920 (sha256
921 (base32
922 "1b2jdqs526ac635yb2whm049spcsk7almnnr6r5b4yqhq922anw3"))))
923 (build-system gnu-build-system)
924 (inputs
925 `(("qca" ,qca)
926 ("qtbase" ,qtbase)))
927 (arguments
928 '(#:phases
929 (modify-phases %standard-phases
930 (add-after 'unpack 'patch-code
931 (lambda _
932 (make-file-writable "src/qoauth.pc")
933 (substitute* "src/src.pro"
934 (("/lib64") "/lib"))
935 #t))
936 (delete 'configure) ; no configure script
937 (delete 'check) ; no test target
938 (add-before 'build 'qmake
939 (lambda _
940 (let ((qca (assoc-ref %build-inputs "qca")))
941 (invoke
942 "qmake"
943 (string-append "PREFIX=" (assoc-ref %outputs "out"))
944 (string-append "QMAKE_INCDIR+=" qca "/include/Qca-qt5/QtCrypto")
945 (string-append "LIBS+=-L" qca "/lib")
946 (string-append "LIBS+=-lqca-qt5"))))))))
947 (home-page "https://github.com/ayoy/qoauth")
948 (synopsis "Qt-based C++ library for OAuth authorization scheme")
949 (description "QOAuth is an attempt to support interaction with
950 OAuth-powered network services in a Qt way, i.e. simply, clearly and
951 efficiently. It gives the application developer no more than 4 methods.")
952 (license license:lgpl2.1+)))
953
954 (define-public krona-tools
955 (package
956 (name "krona-tools")
957 (version "2.7")
958 (source (origin
959 (method url-fetch)
960 (uri (string-append
961 "https://github.com/marbl/Krona/releases/download/v"
962 version "/KronaTools-" version ".tar"))
963 (sha256
964 (base32
965 "0wvgllcqscsfb4xc09y3fqhx8i38pmr4w55vjs5y79wx56n710iq"))))
966 (build-system perl-build-system)
967 (arguments
968 `(#:phases
969 (modify-phases %standard-phases
970 ;; There is no configure or build steps.
971 (delete 'configure)
972 (delete 'build)
973 ;; Install script "install.pl" expects the build directory to remain
974 ;; after installation, creating symlinks etc., so re-implement it
975 ;; here.
976 (replace 'install
977 (lambda* (#:key outputs #:allow-other-keys)
978 (let ((bin (string-append (assoc-ref outputs "out") "/bin"))
979 (perl (string-append (assoc-ref outputs "out")
980 "/lib/perl5/site_perl/krona-tools/lib")))
981 (mkdir-p bin)
982 (for-each
983 (lambda (script)
984 (let* ((executable (string-append "scripts/" script ".pl")))
985 ;; Prefix executables with 'kt' as install script does.
986 (copy-file executable (string-append bin "/kt" script))))
987 '("ClassifyBLAST"
988 "GetContigMagnitudes"
989 "GetLCA"
990 "GetTaxIDFromAcc"
991 "GetTaxInfo"
992 "ImportBLAST"
993 "ImportDiskUsage"
994 "ImportEC"
995 "ImportFCP"
996 "ImportGalaxy"
997 "ImportKrona"
998 "ImportMETAREP-BLAST"
999 "ImportMETAREP-EC"
1000 "ImportMGRAST"
1001 "ImportPhymmBL"
1002 "ImportRDP"
1003 "ImportRDPComparison"
1004 "ImportTaxonomy"
1005 "ImportText"
1006 "ImportXML"))
1007 (for-each
1008 (lambda (directory)
1009 (copy-recursively directory
1010 (string-append perl "/../" directory)))
1011 (list "data" "img" "taxonomy" "src"))
1012 (install-file "lib/KronaTools.pm" perl))))
1013 (add-after 'install 'wrap-program
1014 (lambda* (#:key inputs outputs #:allow-other-keys)
1015 (let* ((out (assoc-ref outputs "out"))
1016 (path (getenv "PERL5LIB")))
1017 (for-each
1018 (lambda (executable)
1019 (wrap-program executable
1020 `("PERL5LIB" ":" prefix
1021 (,(string-append out "/lib/perl5/site_perl/krona-tools/lib")))))
1022 (find-files (string-append out "/bin/") ".*")))))
1023 (delete 'check)
1024 (add-after 'wrap-program 'check
1025 (lambda* (#:key inputs outputs #:allow-other-keys)
1026 (with-directory-excursion "data"
1027 (invoke (string-append (assoc-ref outputs "out") "/bin/ktImportText")
1028 "ec.tsv")))))))
1029 (inputs
1030 `(("perl" ,perl)))
1031 (home-page "https://github.com/marbl/Krona/wiki")
1032 (synopsis "Hierarchical data exploration with zoomable HTML5 pie charts")
1033 (description
1034 "Krona is a flexible tool for exploring the relative proportions of
1035 hierarchical data, such as metagenomic classifications, using a radial,
1036 space-filling display. It is implemented using HTML5 and JavaScript, allowing
1037 charts to be explored locally or served over the Internet, requiring only a
1038 current version of any major web browser.")
1039 (license license:bsd-3)))
1040
1041 (define-public rapidjson
1042 (package
1043 (name "rapidjson")
1044 (version "1.1.0")
1045 (source (origin
1046 (method git-fetch)
1047 (uri (git-reference
1048 (url "https://github.com/Tencent/rapidjson.git")
1049 (commit (string-append "v" version))))
1050 (file-name (git-file-name name version))
1051 (sha256
1052 (base32
1053 "1jixgb8w97l9gdh3inihz7avz7i770gy2j2irvvlyrq3wi41f5ab"))
1054 (patches (search-patches "rapidjson-gcc-compat.patch"))
1055 (modules '((guix build utils)))
1056 (snippet
1057 '(begin
1058 ;; Remove code using the problematic JSON license (see
1059 ;; <https://www.gnu.org/licenses/license-list.html#JSON>).
1060 (delete-file-recursively "bin/jsonchecker")
1061 #t))))
1062 (build-system cmake-build-system)
1063 (arguments
1064 (if (string-prefix? "aarch64" (or (%current-target-system)
1065 (%current-system)))
1066 '(#:phases
1067 (modify-phases %standard-phases
1068 (add-after 'unpack 'patch-aarch-march-detection
1069 (lambda _
1070 (substitute* (find-files "." "^CMakeLists\\.txt$")
1071 (("native") "armv8-a"))
1072 #t))))
1073 ;; Disable CPU optimization for reproducibility.
1074 '(#:configure-flags '("-DRAPIDJSON_ENABLE_INSTRUMENTATION_OPT=OFF"))))
1075 (home-page "https://github.com/Tencent/rapidjson")
1076 (synopsis "JSON parser/generator for C++ with both SAX/DOM style API")
1077 (description
1078 "RapidJSON is a fast JSON parser/generator for C++ with both SAX/DOM
1079 style API.")
1080 (license license:expat)))
1081
1082 (define-public libyajl
1083 (package
1084 (name "libyajl")
1085 (version "2.1.0")
1086 (source (origin
1087 (method git-fetch)
1088 (uri (git-reference
1089 (url "https://github.com/lloyd/yajl.git")
1090 (commit version)))
1091 (file-name (git-file-name name version))
1092 (sha256
1093 (base32
1094 "00yj06drb6izcxfxfqlhimlrb089kka0w0x8k27pyzyiq7qzcvml"))))
1095 (build-system cmake-build-system)
1096 (arguments
1097 '(#:phases
1098 (modify-phases %standard-phases
1099 (add-after 'patch-source-shebangs 'patch-tests
1100 (lambda _
1101 (substitute* "test/parsing/run_tests.sh"
1102 (("`which echo`") (which "echo")))
1103 #t)))))
1104 (home-page "https://lloyd.github.io/yajl/")
1105 (synopsis "C library for parsing JSON")
1106 (description
1107 "Yet Another JSON Library (YAJL) is a small event-driven (SAX-style) JSON
1108 parser written in ANSI C and a small validating JSON generator.")
1109 (license license:isc)))
1110
1111 (define-public libwebsockets
1112 (package
1113 (name "libwebsockets")
1114 (version "1.3")
1115 (source (origin
1116 ;; The project does not publish tarballs, so we have to take
1117 ;; things from Git.
1118 (method git-fetch)
1119 (uri (git-reference
1120 (url "https://github.com/warmcat/libwebsockets.git")
1121 (commit (string-append "v" version
1122 "-chrome37-firefox30"))))
1123 (sha256
1124 (base32
1125 "12fqh2d2098mgf0ls19p9lzibpsqhv7mc5rn1yvrbfnazmcr40g4"))
1126 (file-name (string-append name "-" version))))
1127
1128 (build-system cmake-build-system)
1129 (arguments
1130 ;; XXX: The thing lacks a 'make test' target, because CMakeLists.txt
1131 ;; doesn't use 'add_test', and it's unclear how to run the test suite.
1132 '(#:tests? #f))
1133
1134 (native-inputs `(("perl" ,perl))) ; to build the HTML doc
1135 (inputs `(("zlib" ,zlib)
1136 ("openssl" ,openssl)))
1137 (synopsis "WebSockets library written in C")
1138 (description
1139 "Libwebsockets is a library that allows C programs to establish client
1140 and server WebSockets connections---a protocol layered above HTTP that allows
1141 for efficient socket-like bidirectional reliable communication channels.")
1142 (home-page "https://libwebsockets.org")
1143
1144 ;; This is LGPLv2.1-only with extra exceptions specified in 'LICENSE'.
1145 (license license:lgpl2.1)))
1146
1147 (define-public wabt
1148 (package
1149 (name "wabt")
1150 (version "1.0.12")
1151 (source
1152 (origin
1153 (method git-fetch)
1154 (uri (git-reference
1155 (url "https://github.com/WebAssembly/wabt")
1156 (commit version)))
1157 (file-name (git-file-name name version))
1158 (sha256
1159 (base32 "1zlv3740wkqj4mn6sr84h0x6wk2lcp4pwwmqsh5yyqp1j1glbsa0"))))
1160 (build-system cmake-build-system)
1161 (arguments
1162 `(#:configure-flags '("-DBUILD_TESTS=OFF")
1163 #:tests? #f))
1164 (inputs `(("python" ,python-2)
1165 ("re2c" ,re2c)))
1166 (home-page "https://github.com/WebAssembly/wabt")
1167 (synopsis "WebAssembly Binary Toolkit")
1168 (description "WABT (pronounced: wabbit) is a suite of tools for
1169 WebAssembly, including:
1170
1171 @enumerate
1172 @item @command{wat2wasm} translates from WebAssembly text format to the
1173 WebAssembly binary format
1174 @item @command{wasm2wat} is the inverse; it translates from the binary format
1175 back to the text format (also known as a .wat)
1176 @item @command{wasm-objdump} prints information about a wasm binary, similarly
1177 to @command{objdump}.
1178 @item @command{wasm-interp} decodes ands run a WebAssembly binary file using a
1179 stack-based interpreter
1180 @item @command{wat-desugar} parses .wat text form as supported by the spec
1181 interpreter (s-expressions, flat syntax, or mixed) and prints the canonical
1182 flat format
1183 @item @command{wasm2c} converts a WebAssembly binary file to a C source and
1184 header file.
1185 @end enumerate
1186
1187 These tools are intended for use in (or for development of) toolchains or
1188 other systems that want to manipulate WebAssembly files.")
1189 (license license:asl2.0)))
1190
1191 (define-public websocketpp
1192 (package
1193 (name "websocketpp")
1194 (version "0.8.2")
1195 (source
1196 (origin
1197 (method git-fetch)
1198 (uri (git-reference
1199 (url "https://github.com/zaphoyd/websocketpp.git")
1200 (commit version)))
1201 (file-name (git-file-name name version))
1202 (sha256
1203 (base32 "1ww4fhl8qf12hkv6jaild8zzsygdspxm1gqpk2f63gv1xfi31wpm"))
1204 (patches (search-patches "websocketpp-fix-for-cmake-3.15.patch"))))
1205 (build-system cmake-build-system)
1206 (inputs `(("boost" ,boost)
1207 ("openssl" ,openssl)))
1208 (arguments '(#:configure-flags '("-DBUILD_TESTS=ON")
1209 #:phases
1210 (modify-phases %standard-phases
1211 (add-after 'install 'remove-tests
1212 (lambda* (#:key outputs #:allow-other-keys)
1213 (let* ((install-dir (assoc-ref outputs "out"))
1214 (bin-dir (string-append install-dir "/bin")))
1215 (delete-file-recursively bin-dir)
1216 #t))))))
1217 (home-page "https://www.zaphoyd.com/websocketpp/")
1218 (synopsis "C++ library implementing the WebSocket protocol")
1219 (description "WebSocket++ is a C++ library that can be used to implement
1220 WebSocket functionality. The goals of the project are to provide a WebSocket
1221 implementation that is simple, portable, flexible, lightweight, low level, and
1222 high performance.")
1223 (license license:bsd-3)))
1224
1225 (define-public wslay
1226 (package
1227 (name "wslay")
1228 (version "1.1.1")
1229 (source
1230 (origin
1231 (method git-fetch)
1232 (uri (git-reference
1233 (url "https://github.com/tatsuhiro-t/wslay.git")
1234 (commit (string-append "release-" version))))
1235 (file-name (git-file-name name version))
1236 (sha256
1237 (base32 "1w32iljg4inqf0712w5fxxhggvmjh6ipl2lnz0h36dv1xrj0d964"))))
1238 (build-system gnu-build-system)
1239 (arguments
1240 ;; Parallel builds don't reliably succeed.
1241 `(#:parallel-build? #f))
1242 (native-inputs
1243 `(("autoconf" ,autoconf)
1244 ("automake" ,automake)
1245 ("cunit" ,cunit) ; for tests
1246 ("libtool" ,libtool)
1247 ("pkg-config" ,pkg-config)
1248 ("python-sphinx" ,python-sphinx)))
1249 (home-page "https://tatsuhiro-t.github.io/wslay/")
1250 (synopsis "C WebSocket library")
1251 (description "@code{Wslay} is an event-based C library for the WebSocket
1252 protocol version 13, described in RFC 6455. Besides a high-level API it
1253 provides callbacks for sending and receiving frames directly. @code{Wslay}
1254 only supports the data transfer part of WebSocket protocol and does not
1255 perform the opening handshake in HTTP.")
1256 (license license:expat)))
1257
1258 (define-public libpsl
1259 (package
1260 (name "libpsl")
1261 (version "0.21.0")
1262 (source (origin
1263 (method url-fetch)
1264 (uri (string-append "https://github.com/rockdaboot/libpsl/"
1265 "releases/download/libpsl-" version
1266 "/libpsl-" version ".tar.gz"))
1267 (sha256
1268 (base32
1269 "04pfagb7ppq3yibx4lhazd1v9nwkxdfkyy2rgcrmrf3mldsirga1"))))
1270 (build-system gnu-build-system)
1271 (native-inputs
1272 `(("pkg-config" ,pkg-config)
1273
1274 ;; For tests.
1275 ("python" ,python-wrapper)))
1276 (inputs
1277 `(("libidn2" ,libidn2)
1278 ("libunistring" ,libunistring)))
1279 (home-page "https://github.com/rockdaboot/libpsl")
1280 (synopsis "C library for the Publix Suffix List")
1281 (description
1282 "A \"public suffix\" is a domain name under which Internet users can
1283 directly register own names.
1284
1285 Browsers and other web clients can use it to avoid privacy-leaking
1286 \"supercookies\", avoid privacy-leaking \"super domain\" certificates, domain
1287 highlighting parts of the domain in a user interface, and sorting domain lists
1288 by site.
1289
1290 Libpsl has built-in PSL data for fast access, allowing to load PSL data from
1291 files, checks if a given domain is a public suffix, provides immediate cookie
1292 domain verification, finds the longest public part of a given domain, finds
1293 the shortest private part of a given domain, works with international
1294 domains (UTF-8 and IDNA2008 Punycode), is thread-safe, and handles IDNA2008
1295 UTS#46.")
1296 (license license:x11)))
1297
1298 (define-public tidy
1299 (package
1300 (name "tidy")
1301 (version "20091223")
1302 (source (origin
1303 (method cvs-fetch)
1304 (uri (cvs-reference
1305 (root-directory
1306 ":pserver:anonymous@tidy.cvs.sourceforge.net:/cvsroot/tidy")
1307 (module "tidy")
1308 (revision "2009-12-23")))
1309 (file-name (string-append name "-" version "-checkout"))
1310 (sha256
1311 (base32
1312 "14dsnmirjcrvwsffqp3as70qr6bbfaig2fv3zvs5g7005jrsbvpb"))
1313 (patches (search-patches "tidy-CVE-2015-5522+5523.patch"))))
1314 (build-system gnu-build-system)
1315 (arguments
1316 '(#:phases (modify-phases %standard-phases
1317 (replace 'bootstrap
1318 (lambda* (#:key inputs #:allow-other-keys)
1319 ;; configure.in and Makefile.am aren't in the root of the
1320 ;; source tree.
1321 (copy-recursively "build/gnuauto" ".")
1322 (setenv "AUTOMAKE" "automake --foreign")
1323 (invoke "autoreconf" "-vfi"))))))
1324 (native-inputs
1325 `(("automake" ,automake)
1326 ("autoconf" ,autoconf)
1327 ("libtool" ,libtool)))
1328 (synopsis "HTML validator and tidier")
1329 (description "HTML Tidy is a command-line tool and C library that can be
1330 used to validate and fix HTML data.")
1331 (home-page "http://tidy.sourceforge.net/")
1332 (license (license:x11-style "file:///include/tidy.h"))))
1333
1334 (define-public tinyproxy
1335 (package
1336 (name "tinyproxy")
1337 (version "1.10.0")
1338 (source (origin
1339 (method url-fetch)
1340 (uri (string-append "https://github.com/tinyproxy/tinyproxy/"
1341 "releases/download/" version "/tinyproxy-"
1342 version ".tar.xz"))
1343 (sha256
1344 (base32
1345 "10jnk6y2swld25mm47mjc0nkffyzsfysnsxwr7cs0ns1kil8ggjr"))))
1346 (build-system gnu-build-system)
1347 (arguments
1348 `(#:configure-flags
1349 (list
1350 ;; For the log file, etc.
1351 "--localstatedir=/var")
1352 #:phases
1353 (modify-phases %standard-phases
1354 (add-before 'build 'pre-build
1355 (lambda* (#:key inputs #:allow-other-keys #:rest args)
1356 ;; Uncommenting the next two lines may assist in debugging
1357 ;; (substitute* "docs/man5/Makefile" (("a2x") "a2x -v"))
1358 ;; (setenv "XML_DEBUG_CATALOG" "1")
1359 #t)))))
1360 (home-page "https://tinyproxy.github.io/")
1361 (synopsis "Light-weight HTTP/HTTPS proxy daemon")
1362 (description "Tinyproxy is a light-weight HTTP/HTTPS proxy
1363 daemon. Designed from the ground up to be fast and yet small, it is an ideal
1364 solution for use cases such as embedded deployments where a full featured HTTP
1365 proxy is required, but the system resources for a larger proxy are
1366 unavailable.")
1367 (license license:gpl2+)))
1368
1369 (define-public polipo
1370 (package
1371 (name "polipo")
1372 (version "1.1.1")
1373 (source
1374 (origin
1375 (method url-fetch)
1376 (uri (string-append
1377 "http://www.pps.univ-paris-diderot.fr/~jch/software/files/polipo/polipo-"
1378 version ".tar.gz"))
1379 (sha256
1380 (base32
1381 "05g09sg9qkkhnc2mxldm1w1xkxzs2ylybkjzs28w8ydbjc3pand2"))))
1382 (native-inputs `(("texinfo" ,texinfo)))
1383 (build-system gnu-build-system)
1384 (arguments
1385 `(#:phases (modify-phases %standard-phases
1386 (delete 'configure))
1387 #:make-flags (let ((out (assoc-ref %outputs "out")))
1388 (list (string-append "PREFIX=" out)
1389 (string-append "LOCAL_ROOT="
1390 out "/share/polipo/www")
1391 "CC=gcc"))
1392 ;; No 'check' target.
1393 #:tests? #f))
1394 (home-page "https://www.pps.univ-paris-diderot.fr/~jch/software/polipo/")
1395 (synopsis "Small caching web proxy")
1396 (description
1397 "Polipo is a small caching web proxy (web cache, HTTP proxy, and proxy
1398 server). It was primarily designed to be used by one person or a small group
1399 of people.")
1400 (license license:expat)))
1401
1402 (define-public websockify
1403 (package
1404 (name "websockify")
1405 (version "0.8.0")
1406 (source (origin
1407 (method git-fetch)
1408 (uri (git-reference
1409 (url "https://github.com/novnc/websockify.git")
1410 (commit (string-append "v" version))))
1411 (file-name (git-file-name name version))
1412 (sha256
1413 (base32
1414 "0pcic8qs0gdwrfjgfaf893jyddaw97wcjm2mmvwn0xyhmy8mbmw1"))))
1415 (build-system python-build-system)
1416 (arguments
1417 `(#:tests? #f)) ; FIXME: 2 out of 6 tests fail with "ImportError: No module
1418 ; named 'stubout'". The tests can be run by replacing the check phase with
1419 ; the command "python setup.py nosetests --verbosity=3".
1420 (native-inputs `(; Required for tests:
1421 ("python-mox3" ,python-mox3)
1422 ("python-nose" ,python-nose)))
1423 (propagated-inputs `(("python-numpy" ,python-numpy)))
1424 (home-page "https://github.com/novnc/websockify")
1425 (synopsis "WebSockets support for any application/server")
1426 (description "Websockify translates WebSockets traffic to normal socket
1427 traffic. Websockify accepts the WebSockets handshake, parses it, and then
1428 begins forwarding traffic between the client and the target in both
1429 directions.")
1430 (license license:lgpl3)))
1431
1432 (define-public wwwoffle
1433 (package
1434 (name "wwwoffle")
1435 (version "2.9j")
1436 (source (origin
1437 (method url-fetch)
1438 (uri (string-append "https://www.gedanken.org.uk/software/"
1439 "wwwoffle/download/wwwoffle-"
1440 version ".tgz"))
1441 (sha256
1442 (base32
1443 "1ihil1xq9dp21hf108khxbw6f3baq0w5c0j3af038y6lkmad4vdi"))))
1444 (build-system gnu-build-system)
1445 (arguments
1446 `(#:configure-flags '("--with-gnutls")
1447 #:tests? #f)) ; no test target
1448 (native-inputs `(("flex" ,flex)))
1449 (inputs `(("gnutls" ,gnutls)
1450 ("libcrypt" ,libgcrypt)))
1451 (home-page "https://www.gedanken.org.uk/software/wwwoffle/")
1452 (synopsis "Caching web proxy optimized for intermittent internet links")
1453 (description "WWWOFFLE is a proxy web server that is especially good for
1454 intermittent internet links. It can cache HTTP, HTTPS, FTP, and finger
1455 protocols, and supports browsing and requesting pages while offline, indexing,
1456 modifying pages and incoming and outgoing headers, monitoring pages for
1457 changes, and much more.")
1458 (license license:gpl2+)))
1459
1460 (define-public liboauth
1461 (package
1462 (name "liboauth")
1463 (version "1.0.3")
1464 (source (origin
1465 (method url-fetch)
1466 (uri (string-append "mirror://sourceforge/liboauth/liboauth-"
1467 version ".tar.gz"))
1468 (sha256
1469 (base32
1470 "07w1aq8y8wld43wmbk2q8134p3bfkp2vma78mmsfgw2jn1bh3xhd"))))
1471 (build-system gnu-build-system)
1472 (arguments '(#:configure-flags '("--enable-nss")))
1473 (native-inputs `(("pkg-config" ,pkg-config)))
1474 (propagated-inputs
1475 `(("curl" ,curl)
1476 ("nss" ,nss)))
1477 (home-page "https://sourceforge.net/projects/liboauth")
1478 (synopsis "C library implementing the OAuth API")
1479 (description
1480 "liboauth is a collection of C functions implementing the OAuth API.
1481 liboauth provides functions to escape and encode strings according to OAuth
1482 specifications and offers high-level functionality built on top to sign
1483 requests or verify signatures using either NSS or OpenSSL for calculating the
1484 hash/signatures.")
1485 ;; Source code may be distributed under either license.
1486 (license (list license:expat license:gpl2+))))
1487
1488 (define-public libyaml
1489 (package
1490 (name "libyaml")
1491 (version "0.2.4")
1492 (source
1493 (origin
1494 (method url-fetch)
1495 (uri (string-append
1496 "http://pyyaml.org/download/libyaml/yaml-"
1497 version ".tar.gz"))
1498 (sha256
1499 (base32
1500 "0mq5wf17ifcwwxq3kbimhi53jn3fg23vcynqpzxjcz3vfjlfs2nq"))))
1501 (build-system gnu-build-system)
1502 (home-page "http://pyyaml.org/wiki/LibYAML")
1503 (synopsis "YAML 1.1 parser and emitter written in C")
1504 (description
1505 "LibYAML is a YAML 1.1 parser and emitter written in C.")
1506 (license license:expat)))
1507
1508 (define-public libquvi-scripts
1509 (package
1510 (name "libquvi-scripts")
1511 (version "0.4.21")
1512 (source
1513 (origin
1514 (method url-fetch)
1515 (uri (string-append
1516 "mirror://sourceforge/quvi/" (version-major+minor version) "/"
1517 name "/" name "-" version ".tar.xz"))
1518 (sha256
1519 (base32 "0d0giry6bb57pnidymvdl7i5x9bq3ljk3g4bs294hcr5mj3cq0kw"))))
1520 (build-system gnu-build-system)
1521 (home-page "http://quvi.sourceforge.net/")
1522 (synopsis "Media stream URL parser")
1523 (description "This package contains support scripts called by libquvi to
1524 parse media stream properties.")
1525 (license license:lgpl2.1+)))
1526
1527 (define-public libquvi
1528 (package
1529 (name "libquvi")
1530 (version "0.4.1")
1531 (source
1532 (origin
1533 (method url-fetch)
1534 (uri (string-append
1535 "mirror://sourceforge/quvi/" (version-major+minor version) "/" name "/"
1536 name "-" version ".tar.xz"))
1537 (sha256
1538 (base32 "00x9gbmzc5cns0gnfag0hsphcr3cb33vbbb9s7ppvvd6bxz2z1mm"))))
1539 (build-system gnu-build-system)
1540 (native-inputs `(("pkg-config" ,pkg-config)))
1541 (inputs
1542 `(("curl" ,curl)
1543 ("cyrus-sasl" ,cyrus-sasl)
1544 ("libquvi-scripts" ,libquvi-scripts)
1545 ("lua" ,lua-5.1)
1546 ("openssl" ,openssl)
1547 ("zlib" ,zlib)))
1548 (arguments
1549 ;; Lua provides no .pc file, so add CFLAGS/LIBS manually.
1550 '(#:configure-flags
1551 (let ((lua (assoc-ref %build-inputs "lua")))
1552 (list
1553 (string-append "liblua_CFLAGS=-I" lua "/include")
1554 (string-append "liblua_LIBS=-L" lua "/libs -llua")))))
1555 (home-page "http://quvi.sourceforge.net/")
1556 (synopsis "Media stream URL parser")
1557 (description "libquvi is a library with a C API for parsing media stream
1558 URLs and extracting their actual media files.")
1559 (license license:lgpl2.1+)))
1560
1561 (define-public quvi
1562 (package
1563 (name "quvi")
1564 (version "0.4.2")
1565 (source
1566 (origin
1567 (method url-fetch)
1568 (uri (string-append
1569 "mirror://sourceforge/" name "/" (version-major+minor version)
1570 "/" name "/" name "-" version ".tar.xz"))
1571 (sha256
1572 (base32 "09lhl6dv5zpryasx7yjslfrcdcqlsbwapvd5lg7w6sm5x5n3k8ci"))))
1573 (build-system gnu-build-system)
1574 (native-inputs `(("pkg-config" ,pkg-config)))
1575 (inputs
1576 `(("curl" ,curl)
1577 ("libquvi" ,libquvi)))
1578 (home-page "http://quvi.sourceforge.net/")
1579 (synopsis "Media stream URL parser")
1580 (description "quvi is a command-line-tool suite to extract media files
1581 from streaming URLs. It is a command-line wrapper for the libquvi library.")
1582 (license license:lgpl2.1+)))
1583
1584 (define-public serf
1585 (package
1586 (name "serf")
1587 (version "1.3.9")
1588 (source
1589 (origin
1590 (method url-fetch)
1591 (uri (string-append "mirror://apache/serf/serf-"
1592 version ".tar.bz2"))
1593 (sha256
1594 (base32 "1k47gbgpp52049andr28y28nbwh9m36bbb0g8p0aka3pqlhjv72l"))))
1595 (build-system scons-build-system)
1596 (propagated-inputs
1597 `(("apr" ,apr)
1598 ("apr-util" ,apr-util)
1599 ("openssl" ,openssl)))
1600 (inputs
1601 `(;; TODO: Fix build with gss.
1602 ;;("gss" ,gss)
1603 ("zlib" ,zlib)))
1604 (arguments
1605 `(#:scons ,scons-python2
1606 #:scons-flags (list (string-append "APR=" (assoc-ref %build-inputs "apr"))
1607 (string-append "APU=" (assoc-ref %build-inputs "apr-util"))
1608 (string-append "OPENSSL=" (assoc-ref %build-inputs "openssl"))
1609 ;; (string-append "GSSAPI=" (assoc-ref %build-inputs "gss"))
1610 (string-append "ZLIB=" (assoc-ref %build-inputs "zlib"))
1611 (string-append "PREFIX=" %output))
1612 #:phases
1613 (modify-phases %standard-phases
1614 (add-after 'unpack 'scons-propagate-environment
1615 (lambda _
1616 ;; By design, SCons does not, by default, propagate
1617 ;; environment variables to subprocesses. See:
1618 ;; <http://comments.gmane.org/gmane.linux.distributions.nixos/4969>
1619 ;; Here, we modify the SConstruct file to arrange for
1620 ;; environment variables to be propagated.
1621 (substitute* "SConstruct"
1622 (("^env = Environment\\(")
1623 "env = Environment(ENV=os.environ, "))))
1624 (add-before 'check 'disable-broken-tests
1625 (lambda _
1626 ;; These tests rely on SSL certificates that expired 2017-04-18.
1627 ;; While there are newer certs available upstream, we don't want
1628 ;; this package to suddenly "expire" some time in the future.
1629 ;; https://bugs.gnu.org/26671
1630 (let ((broken-tests
1631 '("test_ssl_trust_rootca"
1632 "test_ssl_certificate_chain_with_anchor"
1633 "test_ssl_certificate_chain_all_from_server"
1634 "test_ssl_no_servercert_callback_allok"
1635 "test_ssl_large_response"
1636 "test_ssl_large_request"
1637 "test_ssl_client_certificate"
1638 "test_ssl_future_server_cert"
1639 "test_setup_ssltunnel"
1640 "test_ssltunnel_basic_auth"
1641 "test_ssltunnel_basic_auth_server_has_keepalive_off"
1642 "test_ssltunnel_basic_auth_proxy_has_keepalive_off"
1643 "test_ssltunnel_basic_auth_proxy_close_conn_on_200resp"
1644 "test_ssltunnel_digest_auth")))
1645 (for-each
1646 (lambda (test)
1647 (substitute* "test/test_context.c"
1648 (((string-append "SUITE_ADD_TEST\\(suite, " test "\\);")) "")))
1649 broken-tests)
1650 #t))))))
1651 (home-page "https://serf.apache.org/")
1652 (synopsis "High-performance asynchronous HTTP client library")
1653 (description
1654 "serf is a C-based HTTP client library built upon the Apache Portable
1655 Runtime (APR) library. It multiplexes connections, running the read/write
1656 communication asynchronously. Memory copies and transformations are kept to a
1657 minimum to provide high performance operation.")
1658 ;; Most of the code is covered by the Apache License, Version 2.0, but the
1659 ;; bundled CuTest framework uses a different non-copyleft license.
1660 (license (list license:asl2.0 (license:non-copyleft "file://test/CuTest-README.txt")))))
1661
1662 (define-public libsass
1663 (package
1664 (name "libsass")
1665 ;; When updating, check whether sassc/libsass-3.5 is still needed.
1666 (version "3.6.3")
1667 (source (origin
1668 (method git-fetch)
1669 (uri (git-reference
1670 (url "https://github.com/sass/libsass.git")
1671 (commit version)))
1672 (file-name (git-file-name name version))
1673 (sha256
1674 (base32
1675 "1vn0q343d1vxz5q0xb6f9dzjah8z6j0s6x0lwvwdd55xa8z7rsnh"))))
1676 (build-system gnu-build-system)
1677 (arguments
1678 `(#:phases
1679 (modify-phases %standard-phases
1680 (add-before 'bootstrap 'set-LIBSASS_VERSION
1681 (lambda _
1682 (setenv "LIBSASS_VERSION" ,version)
1683 #t)))))
1684 (native-inputs
1685 `(("autoconf" ,autoconf)
1686 ("automake" ,automake)
1687 ("libtool" ,libtool)))
1688 (home-page "https://sass-lang.com/libsass")
1689 (synopsis "SASS Compiler, implemented as a C/C++ library")
1690 (description
1691 "LibSass is a @acronym{SASS,Syntactically awesome style sheets} compiler
1692 library designed for portability and efficiency. To actually compile SASS
1693 stylesheets, you'll need to use another program that uses this library,
1694 @var{sassc} for example.")
1695 (license license:expat)))
1696
1697 (define-public sassc
1698 (package
1699 (name "sassc")
1700 (version "3.6.1")
1701 (source (origin
1702 (method git-fetch)
1703 (uri (git-reference
1704 (url "https://github.com/sass/sassc.git")
1705 (commit version)))
1706 (file-name (git-file-name name version))
1707 (sha256
1708 (base32
1709 "1sxm54mkhs9m4vnl7vn11y17mhzamc403hv3966j1c7p2rbzg5pv"))))
1710 (build-system gnu-build-system)
1711 (arguments
1712 `(#:make-flags
1713 (list "CC=gcc"
1714 (string-append "PREFIX=" (assoc-ref %outputs "out")))
1715 #:tests? #f ; no test suite
1716 #:phases
1717 (modify-phases %standard-phases
1718 (add-after 'unpack 'patch-Makefile
1719 (lambda _
1720 (substitute* "Makefile"
1721 (("build-shared: \\$\\(RESOURCES\\) \\$\\(OBJECTS\\) \\$\\(LIB_SHARED\\)")
1722 "build-shared: $(RESOURCES) $(OBJECTS)")
1723 (("\\$\\(SASSC_EXE\\): libsass build")
1724 "$(SASSC_EXE): build")
1725 (("install: libsass-install-\\$\\(BUILD\\) \\\\")
1726 "install: \\"))
1727 #t))
1728 ;; This phase fails for some reason.
1729 (delete 'bootstrap)
1730 ;; There is no configure script.
1731 (delete 'configure)
1732 (add-before 'build 'setup-environment
1733 (lambda _
1734 (setenv "BUILD" "shared")
1735 (setenv "SASSC_VERSION" ,version)
1736 #t)))))
1737 (inputs
1738 `(("libsass" ,libsass)))
1739 (synopsis "CSS pre-processor")
1740 (description "SassC is a compiler written in C for the CSS pre-processor
1741 language known as SASS.")
1742 (home-page "https://sass-lang.com/libsass")
1743 (license license:expat)))
1744
1745 (define-public sassc/libsass-3.5
1746 ;; Newer libsass versions suffor from a memory leak when building (some?)
1747 ;; GTK themes <https://github.com/sass/libsass/issues/3033>.
1748 (package
1749 (inherit sassc)
1750 (name "sassc")
1751 (inputs
1752 `(("libsass" ,
1753 (package
1754 (inherit libsass)
1755 (name "libsass")
1756 (version "3.5.5")
1757 (source
1758 (origin
1759 (method git-fetch)
1760 (uri (git-reference
1761 (url "https://github.com/sass/libsass.git")
1762 (commit version)))
1763 (file-name (git-file-name name version))
1764 (sha256
1765 (base32
1766 "0830pjcvhzxh6yixj82x5k5r1xnadjqzi16kp53213icbly0r9ma"))))))))
1767 (properties '((hidden? . #t)))))
1768
1769 \f
1770 (define-public perl-apache-logformat-compiler
1771 (package
1772 (name "perl-apache-logformat-compiler")
1773 (version "0.36")
1774 (source
1775 (origin
1776 (method url-fetch)
1777 (uri (string-append "mirror://cpan/authors/id/K/KA/KAZEBURO/"
1778 "Apache-LogFormat-Compiler-" version ".tar.gz"))
1779 (sha256
1780 (base32 "05xcl7j65vakx7x79jqjikyw0nzf60bc2w6hhc0q5sklxq1ral4l"))))
1781 (build-system perl-build-system)
1782 (native-inputs
1783 `(("perl-http-message" ,perl-http-message)
1784 ("perl-module-build-tiny" ,perl-module-build-tiny)
1785 ("perl-test-mocktime" ,perl-test-mocktime)
1786 ("perl-try-tiny" ,perl-try-tiny)
1787 ("perl-uri" ,perl-uri)))
1788 (propagated-inputs
1789 `(("perl-posix-strftime-compiler" ,perl-posix-strftime-compiler)))
1790 (arguments `(#:tests? #f)) ; TODO: Timezone test failures
1791 (home-page "https://metacpan.org/release/Apache-LogFormat-Compiler")
1792 (synopsis "Compile a log format string to perl-code")
1793 (description "This module provides methods to compile a log format string
1794 to perl-code, for faster generation of access_log lines.")
1795 (license license:perl-license)))
1796
1797 (define-public perl-authen-sasl
1798 (package
1799 (name "perl-authen-sasl")
1800 (version "2.16")
1801 (source
1802 (origin
1803 (method url-fetch)
1804 (uri (string-append "mirror://cpan/authors/id/G/GB/GBARR/"
1805 "Authen-SASL-" version ".tar.gz"))
1806 (sha256
1807 (base32
1808 "02afhlrdq5hh5g8b32fa79fqq5i76qzwfqqvfi9zi57h31szl536"))))
1809 (build-system perl-build-system)
1810 (arguments
1811 '(#:phases
1812 (modify-phases %standard-phases
1813 (add-after 'unpack 'set-env
1814 ;; Fix the build with Perl 5.26.0. Try removing this phase for later
1815 ;; versions of perl-authen-sasl.
1816 (lambda _ (setenv "PERL_USE_UNSAFE_INC" "1") #t)))))
1817 (propagated-inputs
1818 `(("perl-digest-hmac" ,perl-digest-hmac)
1819 ("perl-gssapi" ,perl-gssapi)))
1820 (home-page "https://metacpan.org/release/Authen-SASL")
1821 (synopsis "SASL authentication framework")
1822 (description "Authen::SASL provides an SASL authentication framework.")
1823 (license license:perl-license)))
1824
1825 (define-public perl-catalyst-action-renderview
1826 (package
1827 (name "perl-catalyst-action-renderview")
1828 (version "0.16")
1829 (source
1830 (origin
1831 (method url-fetch)
1832 (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
1833 "Catalyst-Action-RenderView-"
1834 version ".tar.gz"))
1835 (sha256
1836 (base32
1837 "0j1rrld13cjk7ks92b5hv3xw4rfm2lvmksb4rlzd8mx0a0wj0rc5"))))
1838 (build-system perl-build-system)
1839 (native-inputs
1840 `(("perl-http-request-ascgi" ,perl-http-request-ascgi)
1841 ("perl-module-install" ,perl-module-install)))
1842 (propagated-inputs
1843 `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
1844 ("perl-data-visitor" ,perl-data-visitor)
1845 ("perl-mro-compat" ,perl-mro-compat)))
1846 (home-page "https://metacpan.org/release/Catalyst-Action-RenderView")
1847 (synopsis "Sensible default Catalyst action")
1848 (description "This Catalyst action implements a sensible default end
1849 action, which will forward to the first available view.")
1850 (license license:perl-license)))
1851
1852 (define-public perl-catalyst-action-rest
1853 (package
1854 (name "perl-catalyst-action-rest")
1855 (version "1.21")
1856 (source (origin
1857 (method url-fetch)
1858 (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/"
1859 "Catalyst-Action-REST-" version ".tar.gz"))
1860 (sha256
1861 (base32
1862 "086bykggzalbjfk0islac4b48g9s2ypj7y81d6ns1lq0aax1py6c"))))
1863 (build-system perl-build-system)
1864 (native-inputs
1865 `(("perl-test-requires" ,perl-test-requires)
1866 ("perl-module-install" ,perl-module-install)))
1867 (propagated-inputs
1868 `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
1869 ("perl-class-inspector" ,perl-class-inspector)
1870 ("perl-config-general" ,perl-config-general)
1871 ("perl-cpanel-json-xs" ,perl-cpanel-json-xs)
1872 ("perl-libwww" ,perl-libwww)
1873 ("perl-moose" ,perl-moose)
1874 ("perl-mro-compat" ,perl-mro-compat)
1875 ("perl-namespace-autoclean" ,perl-namespace-autoclean)
1876 ("perl-params-validate" ,perl-params-validate)
1877 ("perl-uri-find" ,perl-uri-find)
1878 ("perl-xml-simple" ,perl-xml-simple)))
1879 (home-page "https://metacpan.org/release/Catalyst-Action-REST")
1880 (synopsis "Automated REST Method Dispatching")
1881 (description "This Action handles doing automatic method dispatching for
1882 REST requests. It takes a normal Catalyst action, and changes the dispatch to
1883 append an underscore and method name. First it will try dispatching to an
1884 action with the generated name, and failing that it will try to dispatch to a
1885 regular method.")
1886 (license license:perl-license)))
1887
1888 (define-public perl-catalyst-authentication-store-dbix-class
1889 (package
1890 (name "perl-catalyst-authentication-store-dbix-class")
1891 (version "0.1506")
1892 (source
1893 (origin
1894 (method url-fetch)
1895 (uri (string-append "mirror://cpan/authors/id/I/IL/ILMARI/"
1896 "Catalyst-Authentication-Store-DBIx-Class-"
1897 version ".tar.gz"))
1898 (sha256
1899 (base32
1900 "0i5ja7690fs9nhxcij6lw51j804sm8s06m5mvk1n8pi8jljrymvw"))))
1901 (build-system perl-build-system)
1902 (native-inputs
1903 `(("perl-catalyst-plugin-authorization-roles"
1904 ,perl-catalyst-plugin-authorization-roles)
1905 ("perl-catalyst-plugin-session-state-cookie"
1906 ,perl-catalyst-plugin-session-state-cookie)
1907 ("perl-dbd-sqlite" ,perl-dbd-sqlite)
1908 ("perl-module-install" ,perl-module-install)
1909 ("perl-test-www-mechanize-catalyst" ,perl-test-www-mechanize-catalyst)))
1910 (propagated-inputs
1911 `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
1912 ("perl-catalyst-plugin-authentication"
1913 ,perl-catalyst-plugin-authentication)
1914 ("perl-dbix-class" ,perl-dbix-class)
1915 ("perl-catalyst-model-dbic-schema" ,perl-catalyst-model-dbic-schema)))
1916 (home-page
1917 "https://metacpan.org/release/Catalyst-Authentication-Store-DBIx-Class")
1918 (synopsis "Storage class for Catalyst authentication using DBIx::Class")
1919 (description "The Catalyst::Authentication::Store::DBIx::Class class
1920 provides access to authentication information stored in a database via
1921 DBIx::Class.")
1922 (license license:perl-license)))
1923
1924 (define-public perl-catalyst-component-instancepercontext
1925 (package
1926 (name "perl-catalyst-component-instancepercontext")
1927 (version "0.001001")
1928 (source
1929 (origin
1930 (method url-fetch)
1931 (uri (string-append "mirror://cpan/authors/id/G/GR/GRODITI/"
1932 "Catalyst-Component-InstancePerContext-"
1933 version ".tar.gz"))
1934 (sha256
1935 (base32
1936 "0wfj4vnn2cvk6jh62amwlg050p37fcwdgrn9amcz24z6w4qgjqvz"))))
1937 (build-system perl-build-system)
1938 (native-inputs
1939 `(("perl-module-install" ,perl-module-install)))
1940 (propagated-inputs
1941 `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
1942 ("perl-moose" ,perl-moose)))
1943 (home-page
1944 "https://metacpan.org/release/Catalyst-Component-InstancePerContext")
1945 (synopsis "Create only one instance of Moose component per context")
1946 (description "Catalyst::Component::InstancePerContext returns a new
1947 instance of a component on each request.")
1948 (license license:perl-license)))
1949
1950 (define-public perl-catalyst-devel
1951 (package
1952 (name "perl-catalyst-devel")
1953 (version "1.40")
1954 (source
1955 (origin
1956 (method url-fetch)
1957 (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/"
1958 "Catalyst-Devel-" version ".tar.gz"))
1959 (sha256
1960 (base32 "1fqnw6cizpxnfr87rpid8w1wpi1p1lxg6imfjpixqn7s055hcpwc"))))
1961 (build-system perl-build-system)
1962 (native-inputs
1963 `(("perl-test-fatal" ,perl-test-fatal)))
1964 (propagated-inputs
1965 `(("perl-catalyst-action-renderview" ,perl-catalyst-action-renderview)
1966 ("perl-catalyst-plugin-configloader" ,perl-catalyst-plugin-configloader)
1967 ("perl-catalyst-plugin-static-simple" ,perl-catalyst-plugin-static-simple)
1968 ("perl-catalyst-runtime" ,perl-catalyst-runtime)
1969 ("perl-config-general" ,perl-config-general)
1970 ("perl-file-changenotify" ,perl-file-changenotify)
1971 ("perl-file-copy-recursive" ,perl-file-copy-recursive)
1972 ("perl-file-sharedir" ,perl-file-sharedir)
1973 ("perl-module-install" ,perl-module-install)
1974 ("perl-moose" ,perl-moose)
1975 ("perl-moosex-emulate-class-accessor-fast"
1976 ,perl-moosex-emulate-class-accessor-fast)
1977 ("perl-namespace-autoclean" ,perl-namespace-autoclean)
1978 ("perl-namespace-clean" ,perl-namespace-clean)
1979 ("perl-path-class" ,perl-path-class)
1980 ("perl-template-toolkit" ,perl-template-toolkit)))
1981 (home-page "https://metacpan.org/release/Catalyst-Devel")
1982 (synopsis "Catalyst Development Tools")
1983 (description "The Catalyst-Devel distribution includes a variety of
1984 modules useful for the development of Catalyst applications, but not required
1985 to run them. Catalyst-Devel includes the Catalyst::Helper system, which
1986 autogenerates scripts and tests; Module::Install::Catalyst, a Module::Install
1987 extension for Catalyst; and requirements for a variety of development-related
1988 modules.")
1989 (license license:perl-license)))
1990
1991 (define-public perl-catalyst-dispatchtype-regex
1992 (package
1993 (name "perl-catalyst-dispatchtype-regex")
1994 (version "5.90035")
1995 (source
1996 (origin
1997 (method url-fetch)
1998 (uri (string-append "mirror://cpan/authors/id/M/MG/MGRIMES/"
1999 "Catalyst-DispatchType-Regex-" version ".tar.gz"))
2000 (sha256
2001 (base32
2002 "06jq1lmpq88rmp9zik5gqczg234xac0hiyc3l698iif7zsgcyb80"))))
2003 (build-system perl-build-system)
2004 (native-inputs
2005 `(("perl-module-build" ,perl-module-build) ;needs Module::Build >= 0.4004
2006 ("perl-namespace-autoclean" ,perl-namespace-autoclean)
2007 ("perl-catalyst-runtime" ,perl-catalyst-runtime)))
2008 (propagated-inputs
2009 `(("perl-moose" ,perl-moose)
2010 ("perl-text-simpletable" ,perl-text-simpletable)))
2011 (home-page "https://metacpan.org/release/Catalyst-DispatchType-Regex")
2012 (synopsis "Regex DispatchType for Catalyst")
2013 (description "Dispatch type managing path-matching behaviour using
2014 regexes. Regex dispatch types have been deprecated and removed from Catalyst
2015 core. It is recommend that you use Chained methods or other techniques
2016 instead. As part of the refactoring, the dispatch priority of Regex vs Regexp
2017 vs LocalRegex vs LocalRegexp may have changed. Priority is now influenced by
2018 when the dispatch type is first seen in your application.")
2019 (license license:perl-license)))
2020
2021 (define-public perl-catalyst-model-dbic-schema
2022 (package
2023 (name "perl-catalyst-model-dbic-schema")
2024 (version "0.65")
2025 (source
2026 (origin
2027 (method url-fetch)
2028 (uri (string-append "mirror://cpan/authors/id/G/GB/GBJK/"
2029 "Catalyst-Model-DBIC-Schema-"
2030 version ".tar.gz"))
2031 (sha256
2032 (base32
2033 "1spfjcjc0b9dv3k2gbanqj1m1cqzyxb32p76dhdwizzpbvpi3a96"))))
2034 (build-system perl-build-system)
2035 (native-inputs
2036 `(("perl-dbd-sqlite" ,perl-dbd-sqlite)
2037 ("perl-module-install" ,perl-module-install)
2038 ("perl-test-exception" ,perl-test-exception)
2039 ("perl-test-requires" ,perl-test-requires)))
2040 (propagated-inputs
2041 `(("perl-carp-clan" ,perl-carp-clan)
2042 ("perl-catalyst-component-instancepercontext"
2043 ,perl-catalyst-component-instancepercontext)
2044 ("perl-catalyst-runtime" ,perl-catalyst-runtime)
2045 ("perl-catalystx-component-traits" ,perl-catalystx-component-traits)
2046 ("perl-dbix-class" ,perl-dbix-class)
2047 ("perl-dbix-class-cursor-cached" ,perl-dbix-class-cursor-cached)
2048 ("perl-dbix-class-schema-loader" ,perl-dbix-class-schema-loader)
2049 ("perl-hash-merge" ,perl-hash-merge)
2050 ("perl-list-moreutils" ,perl-list-moreutils)
2051 ("perl-module-runtime" ,perl-module-runtime)
2052 ("perl-moose" ,perl-moose)
2053 ("perl-moosex-markasmethods" ,perl-moosex-markasmethods)
2054 ("perl-moosex-nonmoose" ,perl-moosex-nonmoose)
2055 ("perl-moosex-types" ,perl-moosex-types)
2056 ("perl-moosex-types-loadableclass" ,perl-moosex-types-loadableclass)
2057 ("perl-namespace-autoclean" ,perl-namespace-autoclean)
2058 ("perl-namespace-clean" ,perl-namespace-clean)
2059 ("perl-tie-ixhash" ,perl-tie-ixhash)
2060 ("perl-try-tiny" ,perl-try-tiny)))
2061 (home-page "https://metacpan.org/release/Catalyst-Model-DBIC-Schema")
2062 (synopsis "DBIx::Class::Schema Model Class")
2063 (description "This is a Catalyst Model for DBIx::Class::Schema-based
2064 Models.")
2065 (license license:perl-license)))
2066
2067 (define-public perl-catalyst-plugin-accesslog
2068 (package
2069 (name "perl-catalyst-plugin-accesslog")
2070 (version "1.10")
2071 (source
2072 (origin
2073 (method url-fetch)
2074 (uri (string-append "mirror://cpan/authors/id/A/AR/ARODLAND/"
2075 "Catalyst-Plugin-AccessLog-" version ".tar.gz"))
2076 (sha256
2077 (base32
2078 "0811rj45q4v2y8wka3wb9d5m4vbyhcmkvddf2wz4x69awzjbhgc7"))))
2079 (build-system perl-build-system)
2080 (propagated-inputs
2081 `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
2082 ("perl-datetime" ,perl-datetime)
2083 ("perl-moose" ,perl-moose)
2084 ("perl-namespace-autoclean" ,perl-namespace-autoclean)))
2085 (home-page "https://metacpan.org/release/Catalyst-Plugin-AccessLog")
2086 (synopsis "Request logging from within Catalyst")
2087 (description "This Catalyst plugin enables you to create \"access logs\"
2088 from within a Catalyst application instead of requiring a webserver to do it
2089 for you. It will work even with Catalyst debug logging turned off.")
2090 (license license:perl-license)))
2091
2092 (define-public perl-catalyst-plugin-authentication
2093 (package
2094 (name "perl-catalyst-plugin-authentication")
2095 (version "0.10023")
2096 (source
2097 (origin
2098 (method url-fetch)
2099 (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
2100 "Catalyst-Plugin-Authentication-"
2101 version ".tar.gz"))
2102 (sha256
2103 (base32
2104 "0v6hb4r1wv3djrnqvnjcn3xx1scgqzx8nyjdg9lfc1ybvamrl0rn"))))
2105 (build-system perl-build-system)
2106 (native-inputs
2107 `(("perl-module-install" ,perl-module-install)))
2108 (propagated-inputs
2109 `(("perl-catalyst-plugin-session" ,perl-catalyst-plugin-session)
2110 ("perl-catalyst-runtime" ,perl-catalyst-runtime)
2111 ("perl-class-inspector" ,perl-class-inspector)
2112 ("perl-moose" ,perl-moose)
2113 ("perl-moosex-emulate-class-accessor-fast"
2114 ,perl-moosex-emulate-class-accessor-fast)
2115 ("perl-mro-compat" ,perl-mro-compat)
2116 ("perl-namespace-autoclean" ,perl-namespace-autoclean)
2117 ("perl-string-rewriteprefix" ,perl-string-rewriteprefix)
2118 ("perl-test-exception" ,perl-test-exception)
2119 ("perl-try-tiny" ,perl-try-tiny)))
2120 (home-page "https://metacpan.org/release/Catalyst-Plugin-Authentication")
2121 (synopsis "Infrastructure plugin for the Catalyst authentication framework")
2122 (description "The authentication plugin provides generic user support for
2123 Catalyst apps. It is the basis for both authentication (checking the user is
2124 who they claim to be), and authorization (allowing the user to do what the
2125 system authorises them to do).")
2126 (license license:perl-license)))
2127
2128 (define-public perl-catalyst-plugin-authorization-roles
2129 (package
2130 (name "perl-catalyst-plugin-authorization-roles")
2131 (version "0.09")
2132 (source
2133 (origin
2134 (method url-fetch)
2135 (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
2136 "Catalyst-Plugin-Authorization-Roles-"
2137 version ".tar.gz"))
2138 (sha256
2139 (base32
2140 "0l83lkwmq0lngwh8b1rv3r719pn8w1gdbyhjqm74rnd0wbjl8h7f"))))
2141 (build-system perl-build-system)
2142 (native-inputs
2143 `(("perl-module-install" ,perl-module-install)
2144 ("perl-test-exception" ,perl-test-exception)))
2145 (propagated-inputs
2146 `(("perl-catalyst-plugin-authentication"
2147 ,perl-catalyst-plugin-authentication)
2148 ("perl-catalyst-runtime" ,perl-catalyst-runtime)
2149 ("perl-set-object" ,perl-set-object)
2150 ("perl-universal-isa" ,perl-universal-isa)))
2151 (home-page
2152 "https://metacpan.org/release/Catalyst-Plugin-Authorization-Roles")
2153 (synopsis "Role-based authorization for Catalyst")
2154 (description "Catalyst::Plugin::Authorization::Roles provides role-based
2155 authorization for Catalyst based on Catalyst::Plugin::Authentication.")
2156 (license license:perl-license)))
2157
2158 (define-public perl-catalyst-plugin-captcha
2159 (package
2160 (name "perl-catalyst-plugin-captcha")
2161 (version "0.04")
2162 (source
2163 (origin
2164 (method url-fetch)
2165 (uri (string-append "mirror://cpan/authors/id/D/DI/DIEGOK/"
2166 "Catalyst-Plugin-Captcha-" version ".tar.gz"))
2167 (sha256
2168 (base32
2169 "0llyj3v5nx9cx46jdbbvxf1lc9s9cxq5ml22xmx3wkb201r5qgaa"))))
2170 (build-system perl-build-system)
2171 (propagated-inputs
2172 `(("perl-catalyst-plugin-session" ,perl-catalyst-plugin-session)
2173 ("perl-catalyst-runtime" ,perl-catalyst-runtime)
2174 ("perl-gd-securityimage" ,perl-gd-securityimage)
2175 ("perl-http-date" ,perl-http-date)))
2176 (home-page "https://metacpan.org/release/Catalyst-Plugin-Captcha")
2177 (synopsis "Captchas for Catalyst")
2178 (description "This plugin creates and validates Captcha images for
2179 Catalyst.")
2180 (license license:perl-license)))
2181
2182 (define-public perl-catalyst-plugin-configloader
2183 (package
2184 (name "perl-catalyst-plugin-configloader")
2185 (version "0.34")
2186 (source
2187 (origin
2188 (method url-fetch)
2189 (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
2190 "Catalyst-Plugin-ConfigLoader-"
2191 version ".tar.gz"))
2192 (sha256
2193 (base32
2194 "19j7p4v7mbx6wrmpvmrnd974apx7hdl2s095ga3b9zcbdrl77h5q"))))
2195 (build-system perl-build-system)
2196 (native-inputs
2197 `(("perl-path-class" ,perl-path-class)
2198 ("perl-module-install" ,perl-module-install)))
2199 (propagated-inputs
2200 `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
2201 ("perl-config-any" ,perl-config-any)
2202 ("perl-data-visitor" ,perl-data-visitor)
2203 ("perl-mro-compat" ,perl-mro-compat)))
2204 (home-page "https://metacpan.org/release/Catalyst-Plugin-ConfigLoader")
2205 (synopsis "Load config files of various types")
2206 (description "This module will attempt to load find and load configuration
2207 files of various types. Currently it supports YAML, JSON, XML, INI and Perl
2208 formats.")
2209 (license license:perl-license)))
2210
2211 (define-public perl-catalyst-plugin-session
2212 (package
2213 (name "perl-catalyst-plugin-session")
2214 (version "0.41")
2215 (source
2216 (origin
2217 (method url-fetch)
2218 (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/"
2219 "Catalyst-Plugin-Session-" version ".tar.gz"))
2220 (sha256
2221 (base32 "0a451997zc2vjx7rvndgx1ldbrpic8sfbddyvncynh0zr8bhlqc5"))))
2222 (build-system perl-build-system)
2223 (native-inputs
2224 `(("perl-module-install" ,perl-module-install)
2225 ("perl-test-deep" ,perl-test-deep)
2226 ("perl-test-exception" ,perl-test-exception)))
2227 (propagated-inputs
2228 `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
2229 ("perl-moose" ,perl-moose)
2230 ("perl-moosex-emulate-class-accessor-fast"
2231 ,perl-moosex-emulate-class-accessor-fast)
2232 ("perl-mro-compat" ,perl-mro-compat)
2233 ("perl-namespace-clean" ,perl-namespace-clean)
2234 ("perl-object-signature" ,perl-object-signature)
2235 ("perl-test-www-mechanize-psgi" ,perl-test-www-mechanize-psgi)))
2236 (home-page "https://metacpan.org/release/Catalyst-Plugin-Session")
2237 (synopsis "Catalyst generic session plugin")
2238 (description "This plugin links the two pieces required for session
2239 management in web applications together: the state, and the store.")
2240 (license license:perl-license)))
2241
2242 (define-public perl-catalyst-plugin-session-state-cookie
2243 (package
2244 (name "perl-catalyst-plugin-session-state-cookie")
2245 (version "0.17")
2246 (source
2247 (origin
2248 (method url-fetch)
2249 (uri (string-append "mirror://cpan/authors/id/M/MS/MSTROUT/"
2250 "Catalyst-Plugin-Session-State-Cookie-"
2251 version ".tar.gz"))
2252 (sha256
2253 (base32
2254 "1rvxbfnpf9x2pc2zgpazlcgdlr2dijmxgmcs0m5nazs0w6xikssb"))))
2255 (build-system perl-build-system)
2256 (native-inputs
2257 `(("perl-module-install" ,perl-module-install)))
2258 (propagated-inputs
2259 `(("perl-catalyst-plugin-session" ,perl-catalyst-plugin-session)
2260 ("perl-catalyst-runtime" ,perl-catalyst-runtime)
2261 ("perl-moose" ,perl-moose)
2262 ("perl-mro-compat" ,perl-mro-compat)
2263 ("perl-namespace-autoclean" ,perl-namespace-autoclean)))
2264 (home-page
2265 "https://metacpan.org/release/Catalyst-Plugin-Session-State-Cookie")
2266 (synopsis "Maintain session IDs using cookies")
2267 (description "In order for Catalyst::Plugin::Session to work, the session
2268 ID needs to be stored on the client, and the session data needs to be stored
2269 on the server. This plugin stores the session ID on the client using the
2270 cookie mechanism.")
2271 (license license:perl-license)))
2272
2273 (define-public perl-catalyst-plugin-session-store-fastmmap
2274 (package
2275 (name "perl-catalyst-plugin-session-store-fastmmap")
2276 (version "0.16")
2277 (source
2278 (origin
2279 (method url-fetch)
2280 (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
2281 "Catalyst-Plugin-Session-Store-FastMmap-"
2282 version ".tar.gz"))
2283 (sha256
2284 (base32
2285 "0x3j6zv3wr41jlwr6yb2jpmcx019ibyn11y8653ffnwhpzbpzsxs"))))
2286 (build-system perl-build-system)
2287 (propagated-inputs
2288 `(("perl-cache-fastmmap" ,perl-cache-fastmmap)
2289 ("perl-catalyst-plugin-session" ,perl-catalyst-plugin-session)
2290 ("perl-catalyst-runtime" ,perl-catalyst-runtime)
2291 ("perl-moosex-emulate-class-accessor-fast"
2292 ,perl-moosex-emulate-class-accessor-fast)
2293 ("perl-mro-compat" ,perl-mro-compat)
2294 ("perl-path-class" ,perl-path-class)))
2295 (home-page
2296 "https://metacpan.org/release/Catalyst-Plugin-Session-Store-FastMmap")
2297 (synopsis "FastMmap session storage backend")
2298 (description "Catalyst::Plugin::Session::Store::FastMmap is a fast session
2299 storage plugin for Catalyst that uses an mmap'ed file to act as a shared
2300 memory interprocess cache. It is based on Cache::FastMmap.")
2301 (license license:perl-license)))
2302
2303 (define-public perl-catalyst-plugin-stacktrace
2304 (package
2305 (name "perl-catalyst-plugin-stacktrace")
2306 (version "0.12")
2307 (source
2308 (origin
2309 (method url-fetch)
2310 (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
2311 "Catalyst-Plugin-StackTrace-" version ".tar.gz"))
2312 (sha256
2313 (base32
2314 "1b2ksz74cpigxqzf63rddar3vfmnbpwpdcbs11v0ml89pb8ar79j"))))
2315 (build-system perl-build-system)
2316 (native-inputs
2317 `(("perl-module-install" ,perl-module-install)))
2318 (propagated-inputs
2319 `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
2320 ("perl-devel-stacktrace" ,perl-devel-stacktrace)
2321 ("perl-mro-compat" ,perl-mro-compat)))
2322 (home-page "https://metacpan.org/release/Catalyst-Plugin-StackTrace")
2323 (synopsis "Stack trace on the Catalyst debug screen")
2324 (description "This plugin enhances the standard Catalyst debug screen by
2325 including a stack trace of your application up to the point where the error
2326 occurred. Each stack frame is displayed along with the package name, line
2327 number, file name, and code context surrounding the line number.")
2328 (license license:perl-license)))
2329
2330 (define-public perl-catalyst-plugin-static-simple
2331 (package
2332 (name "perl-catalyst-plugin-static-simple")
2333 (version "0.36")
2334 (source
2335 (origin
2336 (method url-fetch)
2337 (uri (string-append "mirror://cpan/authors/id/I/IL/ILMARI/"
2338 "Catalyst-Plugin-Static-Simple-" version ".tar.gz"))
2339 (sha256
2340 (base32
2341 "0m4l627p2fvzr4i6sgdxhdvsx4wpa6qmaibsbxlg5x5yjs7k7drn"))))
2342 (build-system perl-build-system)
2343 (native-inputs
2344 `(("perl-module-install" ,perl-module-install)))
2345 (propagated-inputs
2346 `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
2347 ("perl-mime-types" ,perl-mime-types)
2348 ("perl-moose" ,perl-moose)
2349 ("perl-moosex-types" ,perl-moosex-types)
2350 ("perl-namespace-autoclean" ,perl-namespace-autoclean)))
2351 (home-page "https://metacpan.org/release/Catalyst-Plugin-Static-Simple")
2352 (synopsis "Simple serving of static pages")
2353 (description "The Static::Simple plugin is designed to make serving static
2354 content in your application during development quick and easy, without
2355 requiring a single line of code from you. This plugin detects static files by
2356 looking at the file extension in the URL (such as .css or .png or .js). The
2357 plugin uses the lightweight MIME::Types module to map file extensions to
2358 IANA-registered MIME types, and will serve your static files with the correct
2359 MIME type directly to the browser, without being processed through Catalyst.")
2360 (license license:perl-license)))
2361
2362 (define-public perl-catalyst-runtime
2363 (package
2364 (name "perl-catalyst-runtime")
2365 (version "5.90124")
2366 (source
2367 (origin
2368 (method url-fetch)
2369 (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/"
2370 "Catalyst-Runtime-" version ".tar.gz"))
2371 (sha256
2372 (base32
2373 "001yk1i0xwn4v308qx15nvnp6v9qfdigdlvz1rgw5zpnq7kwnq1a"))))
2374 (build-system perl-build-system)
2375 (native-inputs
2376 `(("perl-test-fatal" ,perl-test-fatal)))
2377 (propagated-inputs
2378 `(("perl-cgi-simple" ,perl-cgi-simple)
2379 ("perl-cgi-struct" ,perl-cgi-struct)
2380 ("perl-class-c3-adopt-next" ,perl-class-c3-adopt-next)
2381 ("perl-class-date" ,perl-class-date)
2382 ("perl-class-load" ,perl-class-load)
2383 ("perl-data-dump" ,perl-data-dump)
2384 ("perl-http-body" ,perl-http-body)
2385 ("perl-http-message" ,perl-http-message)
2386 ("perl-json-maybexs" ,perl-json-maybexs)
2387 ("perl-libwww" ,perl-libwww)
2388 ("perl-module-pluggable" ,perl-module-pluggable)
2389 ("perl-moose" ,perl-moose)
2390 ("perl-moosex-emulate-class-accessor-fast"
2391 ,perl-moosex-emulate-class-accessor-fast)
2392 ("perl-moosex-getopt" ,perl-moosex-getopt)
2393 ("perl-moosex-methodattributes" ,perl-moosex-methodattributes)
2394 ("perl-namespace-clean" ,perl-namespace-clean)
2395 ("perl-path-class" ,perl-path-class)
2396 ("perl-perlio-utf8-strict" ,perl-perlio-utf8_strict)
2397 ("perl-plack" ,perl-plack)
2398 ("perl-plack-middleware-fixmissingbodyinredirect"
2399 ,perl-plack-middleware-fixmissingbodyinredirect)
2400 ("perl-plack-middleware-methodoverride"
2401 ,perl-plack-middleware-methodoverride)
2402 ("perl-plack-middleware-removeredundantbody"
2403 ,perl-plack-middleware-removeredundantbody)
2404 ("perl-plack-middleware-reverseproxy"
2405 ,perl-plack-middleware-reverseproxy)
2406 ("perl-plack-test-externalserver" ,perl-plack-test-externalserver)
2407 ("perl-safe-isa" ,perl-safe-isa)
2408 ("perl-string-rewriteprefix" ,perl-string-rewriteprefix)
2409 ("perl-text-simpletable" ,perl-text-simpletable)
2410 ("perl-tree-simple" ,perl-tree-simple)
2411 ("perl-tree-simple-visitorfactory" ,perl-tree-simple-visitorfactory)
2412 ("perl-try-tiny" ,perl-try-tiny)
2413 ("perl-uri" ,perl-uri)
2414 ("perl-uri-ws" ,perl-uri-ws)))
2415 (home-page "https://metacpan.org/release/Catalyst-Runtime")
2416 (synopsis "The Catalyst Framework Runtime")
2417 (description "Catalyst is a modern framework for making web applications.
2418 It is designed to make it easy to manage the various tasks you need to do to
2419 run an application on the web, either by doing them itself, or by letting you
2420 \"plug in\" existing Perl modules that do what you need.")
2421 (license license:perl-license)))
2422
2423 (define-public perl-catalyst-traitfor-request-proxybase
2424 (package
2425 (name "perl-catalyst-traitfor-request-proxybase")
2426 (version "0.000005")
2427 (source
2428 (origin
2429 (method url-fetch)
2430 (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
2431 "Catalyst-TraitFor-Request-ProxyBase-"
2432 version ".tar.gz"))
2433 (sha256
2434 (base32
2435 "02kir63d5cs2ipj3fn1qlmmx3gqi1xqzrxfr4pv5vjhjgsm0zgx7"))))
2436 (build-system perl-build-system)
2437 (native-inputs
2438 `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
2439 ("perl-catalystx-roleapplicator" ,perl-catalystx-roleapplicator)
2440 ("perl-http-message" ,perl-http-message)
2441 ("perl-module-install" ,perl-module-install)))
2442 (propagated-inputs
2443 `(("perl-moose" ,perl-moose)
2444 ("perl-namespace-autoclean" ,perl-namespace-autoclean)
2445 ("perl-uri" ,perl-uri)))
2446 (home-page
2447 "https://metacpan.org/release/Catalyst-TraitFor-Request-ProxyBase")
2448 (synopsis "Replace request base with value passed by HTTP proxy")
2449 (description "This module is a Moose::Role which allows you more
2450 flexibility in your application's deployment configurations when deployed
2451 behind a proxy. Using this module, the request base ($c->req->base) is
2452 replaced with the contents of the X-Request-Base header.")
2453 (license license:perl-license)))
2454
2455 (define-public perl-catalyst-view-download
2456 (package
2457 (name "perl-catalyst-view-download")
2458 (version "0.09")
2459 (source
2460 (origin
2461 (method url-fetch)
2462 (uri (string-append "mirror://cpan/authors/id/G/GA/GAUDEON/"
2463 "Catalyst-View-Download-" version ".tar.gz"))
2464 (sha256
2465 (base32
2466 "1qgq6y9iwfbhbkbgpw9czang2ami6z8jk1zlagrzdisy4igqzkvs"))))
2467 (build-system perl-build-system)
2468 (native-inputs
2469 `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
2470 ("perl-module-install" ,perl-module-install)
2471 ("perl-test-simple" ,perl-test-simple)
2472 ("perl-test-www-mechanize-catalyst" ,perl-test-www-mechanize-catalyst)
2473 ("perl-text-csv" ,perl-text-csv)
2474 ("perl-xml-simple" ,perl-xml-simple)))
2475 (home-page "https://metacpan.org/release/Catalyst-View-Download")
2476 (synopsis "Download data in many formats")
2477 (description "The purpose of this module is to provide a method for
2478 downloading data into many supportable formats. For example, downloading a
2479 table based report in a variety of formats (CSV, HTML, etc.).")
2480 (license license:perl-license)))
2481
2482 (define-public perl-catalyst-view-json
2483 (package
2484 (name "perl-catalyst-view-json")
2485 (version "0.37")
2486 (source
2487 (origin
2488 (method url-fetch)
2489 (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
2490 "Catalyst-View-JSON-" version ".tar.gz"))
2491 (sha256
2492 (base32
2493 "1v4xkzazs743sc7cd1kxkbi99cf00a4dadyyancckcbpi9p3znn5"))))
2494 (build-system perl-build-system)
2495 (native-inputs
2496 `(("perl-module-install" ,perl-module-install)
2497 ("perl-yaml" ,perl-yaml)))
2498 (inputs
2499 `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
2500 ("perl-json-maybexs" ,perl-json-maybexs)
2501 ("perl-mro-compat" ,perl-mro-compat)))
2502 (home-page "https://metacpan.org/release/Catalyst-View-JSON")
2503 (synopsis "Catalyst JSON view")
2504 (description "Catalyst::View::JSON is a Catalyst View handler that returns
2505 stash data in JSON format.")
2506 (license license:perl-license)))
2507
2508 (define-public perl-catalyst-view-tt
2509 (package
2510 (name "perl-catalyst-view-tt")
2511 (version "0.44")
2512 (source
2513 (origin
2514 (method url-fetch)
2515 (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
2516 "Catalyst-View-TT-" version ".tar.gz"))
2517 (sha256
2518 (base32
2519 "06d1zg4nbb6kcyjbnyxrkf8z4zlscxr8650d94f7187jygfl8rvh"))))
2520 (build-system perl-build-system)
2521 (propagated-inputs
2522 `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
2523 ("perl-class-accessor" ,perl-class-accessor)
2524 ("perl-data-dump" ,perl-data-dump)
2525 ("perl-mro-compat" ,perl-mro-compat)
2526 ("perl-path-class" ,perl-path-class)
2527 ("perl-template-timer" ,perl-template-timer)
2528 ("perl-template-toolkit" ,perl-template-toolkit)))
2529 (home-page "https://metacpan.org/release/Catalyst-View-TT")
2530 (synopsis "Template View Class")
2531 (description "This module is a Catalyst view class for the Template
2532 Toolkit.")
2533 (license license:perl-license)))
2534
2535 (define-public perl-catalystx-component-traits
2536 (package
2537 (name "perl-catalystx-component-traits")
2538 (version "0.19")
2539 (source
2540 (origin
2541 (method url-fetch)
2542 (uri (string-append "mirror://cpan/authors/id/R/RK/RKITOVER/"
2543 "CatalystX-Component-Traits-" version ".tar.gz"))
2544 (sha256
2545 (base32
2546 "0iq4ci8m6g2c4g01fvdl568y7pjz28f3widk986v3pyhr7ll8j88"))))
2547 (build-system perl-build-system)
2548 (native-inputs
2549 `(("perl-moose" ,perl-moose)
2550 ("perl-catalyst-runtime" ,perl-catalyst-runtime)
2551 ("perl-moosex-methodattributes" ,perl-moosex-methodattributes)))
2552 (propagated-inputs
2553 `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
2554 ("perl-class-load" ,perl-class-load)
2555 ("perl-moose" ,perl-moose)
2556 ("perl-moosex-traits-pluggable" ,perl-moosex-traits-pluggable)
2557 ("perl-namespace-autoclean" ,perl-namespace-autoclean)
2558 ("perl-list-moreutils" ,perl-list-moreutils)))
2559 (home-page "https://metacpan.org/release/CatalystX-Component-Traits")
2560 (synopsis "Trait Loading and Resolution for Catalyst Components")
2561 (description "Adds a \"COMPONENT\" in Catalyst::Component method to your
2562 Catalyst component base class that reads the optional \"traits\" parameter
2563 from app and component config and instantiates the component subclass with
2564 those traits using \"new_with_traits\" in MooseX::Traits from
2565 MooseX::Traits::Pluggable.")
2566 (license license:perl-license)))
2567
2568 (define-public perl-catalystx-roleapplicator
2569 (package
2570 (name "perl-catalystx-roleapplicator")
2571 (version "0.005")
2572 (source
2573 (origin
2574 (method url-fetch)
2575 (uri (string-append "mirror://cpan/authors/id/H/HD/HDP/"
2576 "CatalystX-RoleApplicator-" version ".tar.gz"))
2577 (sha256
2578 (base32
2579 "0vwaapxn8g5hs2xp63c4dwv9jmapmji4272fakssvgc9frklg3p2"))))
2580 (build-system perl-build-system)
2581 (propagated-inputs
2582 `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
2583 ("perl-moose" ,perl-moose)
2584 ("perl-moosex-relatedclassroles" ,perl-moosex-relatedclassroles)))
2585 (home-page "https://metacpan.org/release/CatalystX-RoleApplicator")
2586 (synopsis "Apply roles to Catalyst classes")
2587 (description "CatalystX::RoleApplicator applies roles to Catalyst
2588 application classes.")
2589 (license license:perl-license)))
2590
2591 (define-public perl-catalystx-script-server-starman
2592 (package
2593 (name "perl-catalystx-script-server-starman")
2594 (version "0.03")
2595 (source
2596 (origin
2597 (method url-fetch)
2598 (uri (string-append "mirror://cpan/authors/id/A/AB/ABRAXXA/"
2599 "CatalystX-Script-Server-Starman-"
2600 version ".tar.gz"))
2601 (sha256
2602 (base32
2603 "08jvibq4v8xjj0c3cr93h0w8w0c88ajwjn37xjy7ygxl9krlffp6"))))
2604 (build-system perl-build-system)
2605 (native-inputs
2606 `(("perl-module-install" ,perl-module-install)
2607 ("perl-test-www-mechanize-catalyst" ,perl-test-www-mechanize-catalyst)))
2608 (propagated-inputs
2609 `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
2610 ("perl-moose" ,perl-moose)
2611 ("perl-namespace-autoclean" ,perl-namespace-autoclean)
2612 ("starman" ,starman)))
2613 (home-page "https://metacpan.org/release/CatalystX-Script-Server-Starman")
2614 (synopsis "Catalyst development server with Starman")
2615 (description "This module provides a Catalyst extension to replace the
2616 development server with Starman.")
2617 (license license:perl-license)))
2618
2619 (define-public perl-cgi
2620 (package
2621 (name "perl-cgi")
2622 (version "4.47")
2623 (source
2624 (origin
2625 (method url-fetch)
2626 (uri (string-append "mirror://cpan/authors/id/L/LE/LEEJO/"
2627 "CGI-" version ".tar.gz"))
2628 (sha256
2629 (base32
2630 "1a9cylhqsm5icvbg09m21nj0xx4zy5gbk4p74npm1ch3qlryzyyr"))))
2631 (build-system perl-build-system)
2632 (native-inputs
2633 `(("perl-test-deep" ,perl-test-deep)
2634 ("perl-test-nowarnings" ,perl-test-nowarnings)
2635 ("perl-test-warn" ,perl-test-warn)))
2636 (propagated-inputs
2637 `(("perl-html-parser" ,perl-html-parser)))
2638 (home-page "https://metacpan.org/release/CGI")
2639 (synopsis "Handle Common Gateway Interface requests and responses")
2640 (description "CGI.pm is a stable, complete and mature solution for
2641 processing and preparing HTTP requests and responses. Major features include
2642 processing form submissions, file uploads, reading and writing cookies, query
2643 string generation and manipulation, and processing and preparing HTTP
2644 headers.")
2645 (license license:perl-license)))
2646
2647 (define-public perl-cgi-formbuilder
2648 (package
2649 (name "perl-cgi-formbuilder")
2650 (version "3.10")
2651 (source
2652 (origin
2653 (method url-fetch)
2654 (uri (string-append
2655 "https://cpan.metacpan.org/authors/id/B/BI/BIGPRESH/"
2656 "CGI-FormBuilder-" version ".tar.gz"))
2657 (sha256
2658 (base32
2659 "163ixq9kninqq094z2rnkg9pv3bcmvjphlww4vksfrzhq3h9pjdf"))))
2660 (build-system perl-build-system)
2661 (inputs `(("perl-cgi" ,perl-cgi)))
2662 (home-page
2663 "https://metacpan.org/release/CGI-FormBuilder")
2664 (synopsis
2665 "Generate and process stateful forms")
2666 (description
2667 "@code{CGI::FormBuilder} provides an easy way to generate and process CGI
2668 form-based applications.")
2669 (license license:perl-license)))
2670
2671 (define-public perl-cgi-session
2672 (package
2673 (name "perl-cgi-session")
2674 (version "4.48")
2675 (source
2676 (origin
2677 (method url-fetch)
2678 (uri (string-append
2679 "mirror://cpan/authors/id/M/MA/MARKSTOS/CGI-Session-"
2680 version
2681 ".tar.gz"))
2682 (sha256
2683 (base32
2684 "1xsl2pz1jrh127pq0b01yffnj4mnp9nvkp88h5mndrscq9hn8xa6"))))
2685 (build-system perl-build-system)
2686 (native-inputs
2687 `(("perl-module-build" ,perl-module-build)))
2688 (inputs `(("perl-cgi" ,perl-cgi)))
2689 (home-page
2690 "https://metacpan.org/release/CGI-Session")
2691 (synopsis
2692 "Persistent session data in CGI applications")
2693 (description
2694 "@code{CGI::Session} provides modular session management system across
2695 HTTP requests.")
2696 (license license:perl-license)))
2697
2698 (define-public perl-cgi-simple
2699 (package
2700 (name "perl-cgi-simple")
2701 (version "1.22")
2702 (source
2703 (origin
2704 (method url-fetch)
2705 (uri (string-append "mirror://cpan/authors/id/M/MA/MANWAR/"
2706 "CGI-Simple-" version ".tar.gz"))
2707 (sha256
2708 (base32 "13c7iwnnavky10ab87pi8jc1kqph03s0rhvj7myn7szhbfisc4gn"))))
2709 (build-system perl-build-system)
2710 (native-inputs
2711 `(("perl-io-stringy" ,perl-io-stringy) ; for IO::Scalar
2712 ("perl-module-build" ,perl-module-build)
2713 ("perl-test-exception" ,perl-test-exception)
2714 ("perl-test-nowarnings" ,perl-test-nowarnings)))
2715 (home-page "https://metacpan.org/release/CGI-Simple")
2716 (synopsis "CGI interface that is CGI.pm compliant")
2717 (description "CGI::Simple provides a relatively lightweight drop in
2718 replacement for CGI.pm. It shares an identical OO interface to CGI.pm for
2719 parameter parsing, file upload, cookie handling and header generation.")
2720 (license license:perl-license)))
2721
2722 (define-public perl-cgi-struct
2723 (package
2724 (name "perl-cgi-struct")
2725 (version "1.21")
2726 (source
2727 (origin
2728 (method url-fetch)
2729 (uri (string-append "mirror://cpan/authors/id/F/FU/FULLERMD/"
2730 "CGI-Struct-" version ".tar.gz"))
2731 (sha256
2732 (base32
2733 "0v4xq2qpryr7i6jngw1wpn8yr2kiib10yxp4aih90vfdznkqsgfi"))))
2734 (build-system perl-build-system)
2735 (native-inputs
2736 `(("perl-test-deep" ,perl-test-deep)))
2737 (home-page "https://metacpan.org/release/CGI-Struct")
2738 (synopsis "Build structures from CGI data")
2739 (description "This is a module for building structured data from CGI
2740 inputs, in a manner reminiscent of how PHP does.")
2741 (license license:bsd-2)))
2742
2743 (define-public perl-datetime-format-http
2744 (package
2745 (name "perl-datetime-format-http")
2746 (version "0.42")
2747 (source
2748 (origin
2749 (method url-fetch)
2750 (uri (string-append "mirror://cpan/authors/id/C/CK/CKRAS/"
2751 "DateTime-Format-HTTP-" version ".tar.gz"))
2752 (sha256
2753 (base32
2754 "0h6qqdg1yzqkdxp7hqlp0qa7d1y64nilgimxs79dys2ryjfpcknh"))))
2755 (build-system perl-build-system)
2756 (native-inputs
2757 `(("perl-module-build" ,perl-module-build)))
2758 (propagated-inputs
2759 `(("perl-datetime" ,perl-datetime)
2760 ("perl-http-date" ,perl-http-date)))
2761 (home-page "https://metacpan.org/release/DateTime-Format-HTTP")
2762 (synopsis "Date conversion routines")
2763 (description "This module provides functions that deal with the date
2764 formats used by the HTTP protocol.")
2765 (license license:perl-license)))
2766
2767 (define-public perl-digest-md5-file
2768 (package
2769 (name "perl-digest-md5-file")
2770 (version "0.08")
2771 (source
2772 (origin
2773 (method url-fetch)
2774 (uri (string-append "mirror://cpan/authors/id/D/DM/DMUEY/"
2775 "Digest-MD5-File-" version ".tar.gz"))
2776 (sha256
2777 (base32
2778 "060jzf45dlwysw5wsm7av1wvpl06xgk415kwwpvv89r6wda3md5d"))))
2779 (build-system perl-build-system)
2780 (propagated-inputs
2781 `(("perl-libwww" ,perl-libwww)))
2782 (home-page "https://metacpan.org/release/Digest-MD5-File")
2783 (synopsis "MD5 sums for files and urls")
2784 (description "Digest::MD5::File is a Perl extension for getting MD5 sums
2785 for files and urls.")
2786 (license license:perl-license)))
2787
2788 (define-public perl-encode-locale
2789 (package
2790 (name "perl-encode-locale")
2791 (version "1.05")
2792 (source (origin
2793 (method url-fetch)
2794 (uri (string-append
2795 "mirror://cpan/authors/id/G/GA/GAAS/Encode-Locale-"
2796 version ".tar.gz"))
2797 (sha256
2798 (base32
2799 "1h8fvcdg3n20c2yp7107yhdkkx78534s9hnvn7ps8hpmf4ks0vqp"))))
2800 (build-system perl-build-system)
2801 (license license:perl-license)
2802 (synopsis "Perl locale encoding determination")
2803 (description
2804 "The POSIX locale system is used to specify both the language
2805 conventions requested by the user and the preferred character set to
2806 consume and output. The Encode::Locale module looks up the charset and
2807 encoding (called a CODESET in the locale jargon) and arranges for the
2808 Encode module to know this encoding under the name \"locale\". It means
2809 bytes obtained from the environment can be converted to Unicode strings
2810 by calling Encode::encode(locale => $bytes) and converted back again
2811 with Encode::decode(locale => $string).")
2812 (home-page "https://metacpan.org/release/Encode-Locale")))
2813
2814 (define-public perl-feed-find
2815 (package
2816 (name "perl-feed-find")
2817 (version "0.07")
2818 (source (origin
2819 (method url-fetch)
2820 (uri (string-append "mirror://cpan/authors/id/B/BT/BTROTT/"
2821 "Feed-Find-" version ".tar.gz"))
2822 (sha256
2823 (base32
2824 "0sa33cm8ww55cymnl8j7b5yspi2y5xkkkgqqa4h6fs3wdqylz600"))))
2825 (build-system perl-build-system)
2826 (arguments
2827 ;; Tests expect to query files at http://stupidfool.org/perl/feeds/
2828 `(#:tests? #f
2829 #:phases
2830 (modify-phases %standard-phases
2831 (add-after 'unpack 'set-env
2832 (lambda _ (setenv "PERL_USE_UNSAFE_INC" "1"))))))
2833 (inputs
2834 `(("perl-class-errorhandler" ,perl-class-errorhandler)
2835 ("perl-html-parser" ,perl-html-parser)
2836 ("perl-libwww" ,perl-libwww)
2837 ("perl-uri" ,perl-uri)))
2838 (home-page "https://metacpan.org/release/Feed-Find")
2839 (synopsis "Syndication feed auto-discovery")
2840 (description "@code{Feed::Find} implements feed auto-discovery for finding
2841 syndication feeds, given a URI. It will discover the following feed formats:
2842 RSS 0.91, RSS 1.0, RSS 2.0, Atom.")
2843 (license license:perl-license)))
2844
2845 (define-public perl-file-listing
2846 (package
2847 (name "perl-file-listing")
2848 (version "6.04")
2849 (source (origin
2850 (method url-fetch)
2851 (uri (string-append
2852 "mirror://cpan/authors/id/G/GA/GAAS/File-Listing-"
2853 version ".tar.gz"))
2854 (sha256
2855 (base32
2856 "1xcwjlnxaiwwpn41a5yi6nz95ywh3szq5chdxiwj36kqsvy5000y"))))
2857 (build-system perl-build-system)
2858 (propagated-inputs
2859 `(("perl-http-date" ,perl-http-date)))
2860 (license license:perl-license)
2861 (synopsis "Perl directory listing parser")
2862 (description
2863 "The File::Listing module exports a single function called parse_dir(),
2864 which can be used to parse directory listings.")
2865 (home-page "https://metacpan.org/release/File-Listing")))
2866
2867 (define-public perl-finance-quote
2868 (package
2869 (name "perl-finance-quote")
2870 (version "1.47")
2871 (source
2872 (origin
2873 (method url-fetch)
2874 (uri (string-append "https://cpan.metacpan.org/authors/id/E/EC/ECOCODE/"
2875 "Finance-Quote-" version ".tar.gz"))
2876 (sha256
2877 (base32 "0gzbq85738f299jaw4nj3ljnka380j2y6yspmyl71rgfypqjvbr7"))
2878 (patches (search-patches
2879 "perl-finance-quote-unuse-mozilla-ca.patch"))))
2880 (build-system perl-build-system)
2881 (propagated-inputs
2882 `(("perl-cgi" ,perl-cgi)
2883 ("perl-datetime" ,perl-datetime)
2884 ("perl-html-parser" ,perl-html-parser)
2885 ("perl-html-tableextract" ,perl-html-tableextract)
2886 ("perl-html-tree" ,perl-html-tree)
2887 ("perl-http-cookies" ,perl-http-cookies)
2888 ("perl-http-message" ,perl-http-message)
2889 ("perl-json" ,perl-json)
2890 ("perl-libwww" ,perl-libwww)
2891 ("perl-lwp-protocol-https" ,perl-lwp-protocol-https)
2892 ("perl-uri" ,perl-uri)))
2893 (home-page "https://metacpan.org/release/Finance-Quote")
2894 (synopsis "Stock and mutual fund quotes")
2895 (description
2896 "Finance::Quote gets stock quotes from various internet sources, including
2897 Yahoo! Finance, Fidelity Investments, and the Australian Stock Exchange.")
2898 (license license:gpl2)))
2899
2900 (define-public perl-gssapi
2901 (package
2902 (name "perl-gssapi")
2903 (version "0.28")
2904 (source
2905 (origin
2906 (method url-fetch)
2907 (uri (string-append "mirror://cpan/authors/id/A/AG/AGROLMS/"
2908 "GSSAPI-" version ".tar.gz"))
2909 (sha256
2910 (base32
2911 "1mkhwxjjlhr58pd770i9gnf7zy7jj092iv6jfbnb8bvnc5xjr3vx"))))
2912 (build-system perl-build-system)
2913 (inputs `(("gssapi" ,mit-krb5)))
2914 (arguments
2915 `(#:make-maker-flags
2916 `(,(string-append "--gssapiimpl=" (assoc-ref %build-inputs "gssapi")))))
2917 (home-page "https://metacpan.org/release/GSSAPI")
2918 (synopsis "Perl extension providing access to the GSSAPIv2 library")
2919 (description "This is a Perl extension for using GSSAPI C bindings as
2920 described in RFC 2744.")
2921 (license license:perl-license)))
2922
2923 (define-public perl-html-element-extended
2924 (package
2925 (name "perl-html-element-extended")
2926 (version "1.18")
2927 (source
2928 (origin
2929 (method url-fetch)
2930 (uri (string-append "mirror://cpan/authors/id/M/MS/MSISK/"
2931 "HTML-Element-Extended-" version ".tar.gz"))
2932 (sha256
2933 (base32
2934 "0axknss8c368r5i082yhkfj8mq0w4nglfrpcxcayyzzj13qimvzk"))))
2935 (build-system perl-build-system)
2936 (propagated-inputs
2937 `(("perl-html-tree" ,perl-html-tree)))
2938 (home-page "https://metacpan.org/release/HTML-Element-Extended")
2939 (synopsis "Manipulate tables of HTML::Element")
2940 (description
2941 "HTML::Element::Extended is a Perl extension for manipulating a table
2942 composed of HTML::Element style components.")
2943 (license license:perl-license)))
2944
2945 (define-public perl-html-form
2946 (package
2947 (name "perl-html-form")
2948 (version "6.05")
2949 (source
2950 (origin
2951 (method url-fetch)
2952 (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
2953 "HTML-Form-" version ".tar.gz"))
2954 (sha256
2955 (base32 "14i4ldyvdvhdhvfhh9kiq6z853q2f84biq8vcpv1k5w2r80wdiin"))))
2956 (build-system perl-build-system)
2957 (propagated-inputs
2958 `(("perl-html-parser" ,perl-html-parser)
2959 ("perl-html-tagset" ,perl-html-tagset)
2960 ("perl-http-message" ,perl-http-message)
2961 ("perl-lwp-mediatypes" ,perl-lwp-mediatypes)
2962 ("perl-uri" ,perl-uri)))
2963 (home-page "https://metacpan.org/release/HTML-Form")
2964 (synopsis "Perl class representing an HTML form element")
2965 (description "Objects of the HTML::Form class represents a single HTML
2966 <form> ... </form> instance.")
2967 (license license:perl-license)))
2968
2969 (define-public perl-html-scrubber
2970 (package
2971 (name "perl-html-scrubber")
2972 (version "0.17")
2973 (source
2974 (origin
2975 (method url-fetch)
2976 (uri (string-append
2977 "mirror://cpan/authors/id/N/NI/NIGELM/HTML-Scrubber-"
2978 version
2979 ".tar.gz"))
2980 (sha256
2981 (base32
2982 "06p7w4zd42b2yh541mlzyqj40lwmvvn3fyqi8big4mf34la7m2jm"))))
2983 (build-system perl-build-system)
2984 (native-inputs
2985 `(("perl-module-build" ,perl-module-build)
2986 ("perl-test-cpan-meta" ,perl-test-cpan-meta)
2987 ("perl-test-differences" ,perl-test-differences)
2988 ("perl-test-eol" ,perl-test-eol)
2989 ("perl-test-memory-cycle" ,perl-test-memory-cycle)
2990 ("perl-test-notabs" ,perl-test-notabs)))
2991 (inputs
2992 `(("perl-html-parser" ,perl-html-parser)))
2993 (home-page
2994 "https://metacpan.org/release/HTML-Scrubber")
2995 (synopsis
2996 "Perl extension for scrubbing/sanitizing html")
2997 (description
2998 "@code{HTML::Scrubber} Perl extension for scrubbing/sanitizing HTML.")
2999 (license license:perl-license)))
3000
3001 (define-public perl-html-lint
3002 (package
3003 (name "perl-html-lint")
3004 (version "2.32")
3005 (source
3006 (origin
3007 (method url-fetch)
3008 (uri (string-append "mirror://cpan/authors/id/P/PE/PETDANCE/"
3009 "HTML-Lint-" version ".tar.gz"))
3010 (sha256
3011 (base32 "0lk02xpfxcg7ij4dvpsa4wjlzhmiizj0jfr3rwmdpbj69nvc93br"))))
3012 (build-system perl-build-system)
3013 (propagated-inputs
3014 `(("perl-html-parser" ,perl-html-parser)
3015 ("perl-html-tagset" ,perl-html-tagset)
3016 ("perl-libwww" ,perl-libwww)))
3017 (home-page "https://metacpan.org/release/HTML-Lint")
3018 (synopsis "Check for HTML errors in a string or file")
3019 (description "HTML::Lint is a pure-Perl HTML parser and checker for
3020 syntactic legitmacy.")
3021 (license license:artistic2.0)))
3022
3023 (define-public perl-html-tableextract
3024 (package
3025 (name "perl-html-tableextract")
3026 (version "2.13")
3027 (source
3028 (origin
3029 (method url-fetch)
3030 (uri (string-append "https://cpan.metacpan.org/authors/id/M/MS/MSISK/"
3031 "HTML-TableExtract-" version ".tar.gz"))
3032 (sha256
3033 (base32
3034 "01jimmss3q68a89696wmclvqwb2ybz6xgabpnbp6mm6jcni82z8a"))))
3035 (build-system perl-build-system)
3036 (propagated-inputs
3037 `(("perl-html-element-extended" ,perl-html-element-extended)
3038 ("perl-html-parser" ,perl-html-parser)))
3039 (home-page "https://metacpan.org/release/HTML-TableExtract")
3040 (synopsis "Extract contents from HTML tables")
3041 (description
3042 "HTML::TableExtract is a Perl module for extracting the content contained
3043 in tables within an HTML document, either as text or encoded element trees.")
3044 (license license:perl-license)))
3045
3046 (define-public perl-html-tree
3047 (package
3048 (name "perl-html-tree")
3049 (version "5.07")
3050 (source
3051 (origin
3052 (method url-fetch)
3053 (uri (string-append "mirror://cpan/authors/id/K/KE/KENTNL/"
3054 "HTML-Tree-" version ".tar.gz"))
3055 (sha256
3056 (base32
3057 "1gyvm4qlwm9y6hczkpnrdfl303ggbybr0nqxdjw09hii8yw4sdzh"))))
3058 (build-system perl-build-system)
3059 (native-inputs
3060 `(("perl-module-build" ,perl-module-build)
3061 ("perl-test-fatal" ,perl-test-fatal)))
3062 (propagated-inputs
3063 `(("perl-html-parser" ,perl-html-parser)
3064 ("perl-html-tagset" ,perl-html-tagset)
3065 ("perl-libwww" ,perl-libwww)))
3066 (home-page "https://metacpan.org/release/HTML-Tree")
3067 (synopsis "Work with HTML in a DOM-like tree structure")
3068 (description "This distribution contains a suite of modules for
3069 representing, creating, and extracting information from HTML syntax trees.")
3070 (license license:perl-license)))
3071
3072 (define-public perl-html-parser
3073 (package
3074 (name "perl-html-parser")
3075 (version "3.72")
3076 (source (origin
3077 (method url-fetch)
3078 (uri (string-append
3079 "mirror://cpan/authors/id/G/GA/GAAS/HTML-Parser-"
3080 version ".tar.gz"))
3081 (sha256
3082 (base32
3083 "12v05ywlnsi9lc17z32k9jxx3sj1viy7y1wpl7n4az76v7hwfa7c"))))
3084 (build-system perl-build-system)
3085 (inputs
3086 `(("perl-html-tagset" ,perl-html-tagset)
3087 ("perl-http-message" ,perl-http-message)))
3088 (license license:perl-license)
3089 (synopsis "Perl HTML parser class")
3090 (description
3091 "Objects of the HTML::Parser class will recognize markup and separate
3092 it from plain text (alias data content) in HTML documents. As different
3093 kinds of markup and text are recognized, the corresponding event handlers
3094 are invoked.")
3095 (home-page "https://metacpan.org/release/HTML-Parser")))
3096
3097 (define-public perl-html-tagset
3098 (package
3099 (name "perl-html-tagset")
3100 (version "3.20")
3101 (source (origin
3102 (method url-fetch)
3103 (uri (string-append
3104 "mirror://cpan/authors/id/P/PE/PETDANCE/HTML-Tagset-"
3105 version ".tar.gz"))
3106 (sha256
3107 (base32
3108 "1qh8249wgr4v9vgghq77zh1d2zs176bir223a8gh3k9nksn7vcdd"))))
3109 (build-system perl-build-system)
3110 (license license:perl-license)
3111 (synopsis "Perl data tables useful in parsing HTML")
3112 (description
3113 "The HTML::Tagset module contains several data tables useful in various
3114 kinds of HTML parsing operations.")
3115 (home-page "https://metacpan.org/release/HTML-Tagset")))
3116
3117 (define-public perl-html-template
3118 (package
3119 (name "perl-html-template")
3120 (version "2.97")
3121 (source (origin
3122 (method url-fetch)
3123 (uri (string-append "mirror://cpan/authors/id/S/SA/SAMTREGAR/"
3124 "HTML-Template-" version ".tar.gz"))
3125 (sha256
3126 (base32
3127 "17qjw8swj2q4b1ic285pndgrkmvpsqw0j68nhqzpk1daydhsyiv5"))))
3128 (build-system perl-build-system)
3129 (propagated-inputs
3130 `(("perl-cgi" ,perl-cgi)))
3131 (home-page "https://metacpan.org/release/HTML-Template")
3132 (synopsis "HTML-like templates")
3133 (description
3134 "This module attempts to make using HTML templates simple and natural.
3135 It extends standard HTML with a few new HTML-esque tags: @code{<TMPL_VAR>},
3136 @code{<TMPL_LOOP>}, @code{<TMPL_INCLUDE>}, @code{<TMPL_IF>},
3137 @code{<TMPL_ELSE>} and @code{<TMPL_UNLESS>}. The file written with HTML and
3138 these new tags is called a template. Using this module you fill in the values
3139 for the variables, loops and branches declared in the template. This allows
3140 you to separate design from the data.")
3141 (license license:perl-license)))
3142
3143 (define-public perl-http-body
3144 (package
3145 (name "perl-http-body")
3146 (version "1.22")
3147 (source
3148 (origin
3149 (method url-fetch)
3150 (uri (string-append "mirror://cpan/authors/id/G/GE/GETTY/"
3151 "HTTP-Body-" version ".tar.gz"))
3152 (sha256
3153 (base32
3154 "15vj488i62mdp4ps9k77h39prj70i7anb6b0j8nm7l9vbdc2q3gw"))))
3155 (build-system perl-build-system)
3156 (native-inputs
3157 `(("perl-test-deep" ,perl-test-deep)))
3158 (propagated-inputs
3159 `(("perl-file-temp" ,perl-file-temp)
3160 ("perl-http-message" ,perl-http-message))) ;For HTTP::Headers
3161 (home-page "https://metacpan.org/release/HTTP-Body")
3162 (synopsis "HTTP Body Parser")
3163 (description "HTTP::Body parses chunks of HTTP POST data and supports
3164 application/octet-stream, application/json, application/x-www-form-urlencoded,
3165 and multipart/form-data.")
3166 (license license:perl-license)))
3167
3168 (define-public perl-http-cookiejar
3169 (package
3170 (name "perl-http-cookiejar")
3171 (version "0.008")
3172 (source
3173 (origin
3174 (method url-fetch)
3175 (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
3176 "HTTP-CookieJar-" version ".tar.gz"))
3177 (sha256
3178 (base32
3179 "0rfw6avcralggs7bf7n86flvhaahxjnqzvpwszp0sk4z4wwy01wm"))))
3180 (build-system perl-build-system)
3181 (native-inputs
3182 `(("perl-test-deep" ,perl-test-deep)
3183 ("perl-test-requires" ,perl-test-requires)
3184 ("perl-time-mock" ,perl-time-mock)
3185 ("perl-uri" ,perl-uri)))
3186 (inputs
3187 `(("perl-time-local" ,perl-time-local)
3188 ("perl-http-date" ,perl-http-date)))
3189 (home-page "https://metacpan.org/release/HTTP-CookieJar")
3190 (synopsis "Minimalist HTTP user agent cookie jar")
3191 (description "This module implements a minimalist HTTP user agent cookie
3192 jar in conformance with RFC 6265 <http://tools.ietf.org/html/rfc6265>.")
3193 (license license:asl2.0)))
3194
3195 (define-public perl-http-cookies
3196 (package
3197 (name "perl-http-cookies")
3198 (version "6.06")
3199 (source (origin
3200 (method url-fetch)
3201 (uri (string-append
3202 "mirror://cpan/authors/id/O/OA/OALDERS/HTTP-Cookies-"
3203 version ".tar.gz"))
3204 (sha256
3205 (base32
3206 "13rnz3233vbsfariya4njiyfaj6k94j6bvlyh3dmfmh24hpqgx77"))))
3207 (build-system perl-build-system)
3208 (propagated-inputs
3209 `(("perl-http-message" ,perl-http-message)))
3210 (license license:perl-license)
3211 (synopsis "Perl HTTP cookie jars")
3212 (description
3213 "The HTTP::Cookies class is for objects that represent a cookie jar,
3214 that is, a database of all the HTTP cookies that a given LWP::UserAgent
3215 object knows about.")
3216 (home-page "https://metacpan.org/release/GAAS/HTTP-Cookies-6.01")))
3217
3218 (define-public perl-http-daemon
3219 (package
3220 (name "perl-http-daemon")
3221 (version "6.01")
3222 (source (origin
3223 (method url-fetch)
3224 (uri (string-append
3225 "mirror://cpan/authors/id/G/GA/GAAS/HTTP-Daemon-"
3226 version ".tar.gz"))
3227 (sha256
3228 (base32
3229 "1hmd2isrkilf0q0nkxms1q64kikjmcw9imbvrjgky6kh89vqdza3"))))
3230 (build-system perl-build-system)
3231 (propagated-inputs
3232 `(("perl-http-message" ,perl-http-message)
3233 ("perl-lwp-mediatypes" ,perl-lwp-mediatypes)))
3234 (license license:perl-license)
3235 (synopsis "Perl simple http server class")
3236 (description
3237 "Instances of the HTTP::Daemon class are HTTP/1.1 servers that listen
3238 on a socket for incoming requests. The HTTP::Daemon is a subclass of
3239 IO::Socket::INET, so you can perform socket operations directly on it too.")
3240 (home-page "https://metacpan.org/release/HTTP-Daemon")))
3241
3242 (define-public perl-http-date
3243 (package
3244 (name "perl-http-date")
3245 (version "6.05")
3246 (source (origin
3247 (method url-fetch)
3248 (uri (string-append
3249 "mirror://cpan/authors/id/O/OA/OALDERS/HTTP-Date-"
3250 version ".tar.gz"))
3251 (sha256
3252 (base32
3253 "0awjdbz7x0jd5pna55dwxhs3k6xp3sw6b2zg3p2yndxxvya64p9n"))))
3254 (build-system perl-build-system)
3255 (license license:perl-license)
3256 (synopsis "Perl date conversion routines")
3257 (description
3258 "The HTTP::Date module provides functions that deal with date formats
3259 used by the HTTP protocol (and then some more).")
3260 (home-page "https://metacpan.org/release/HTTP-Date")))
3261
3262 (define-public perl-http-lite
3263 (package
3264 (name "perl-http-lite")
3265 (version "2.44")
3266 (source
3267 (origin
3268 (method url-fetch)
3269 (uri (string-append
3270 "mirror://cpan/authors/id/N/NE/NEILB/HTTP-Lite-"
3271 version ".tar.gz"))
3272 (sha256
3273 (base32
3274 "0z77nflj8zdcfg70kc93glq5kmd6qxn2nf7h70x4xhfg25wkvr1q"))))
3275 (build-system perl-build-system)
3276 (native-inputs `(("perl-cgi" ,perl-cgi)))
3277 (home-page "https://metacpan.org/release/HTTP-Lite")
3278 (synopsis "Lightweight HTTP implementation")
3279 (description "@code{HTTP::Lite} is a stand-alone lightweight
3280 HTTP/1.1 implementation for perl. It is intended for use in
3281 situations where it is desirable to install the minimal number of
3282 modules to achieve HTTP support. @code{HTTP::Lite} is ideal for
3283 CGI (or mod_perl) programs or for bundling for redistribution with
3284 larger packages where only HTTP GET and POST functionality are
3285 necessary. @code{HTTP::Lite} is compliant with the Host header,
3286 necessary for name based virtual hosting, and supports proxies.
3287 Additionally, @code{HTTP::Lite} supports a callback to allow
3288 processing of request data as it arrives.")
3289 (license license:perl-license)))
3290
3291 (define-public perl-http-message
3292 (package
3293 (name "perl-http-message")
3294 (version "6.18")
3295 (source (origin
3296 (method url-fetch)
3297 (uri (string-append
3298 "mirror://cpan/authors/id/O/OA/OALDERS/HTTP-Message-"
3299 version ".tar.gz"))
3300 (sha256
3301 (base32
3302 "04lih0fn89jpyk74c4aq1rzq18h8v4zd3x0lik2r9dl8sdqd2q6h"))))
3303 (build-system perl-build-system)
3304 (native-inputs
3305 `(("perl-try-tiny" ,perl-try-tiny)))
3306 (propagated-inputs
3307 `(("perl-encode-locale" ,perl-encode-locale)
3308 ("perl-http-date" ,perl-http-date)
3309 ("perl-io-html" ,perl-io-html)
3310 ("perl-lwp-mediatypes" ,perl-lwp-mediatypes)
3311 ("perl-uri" ,perl-uri)))
3312 (license license:perl-license)
3313 (synopsis "Perl HTTP style message")
3314 (description
3315 "An HTTP::Message object contains some headers and a content body.")
3316 (home-page "https://metacpan.org/release/ETHER/HTTP-Message-6.11")))
3317
3318 (define-public perl-http-negotiate
3319 (package
3320 (name "perl-http-negotiate")
3321 (version "6.01")
3322 (source (origin
3323 (method url-fetch)
3324 (uri (string-append
3325 "mirror://cpan/authors/id/G/GA/GAAS/HTTP-Negotiate-"
3326 version ".tar.gz"))
3327 (sha256
3328 (base32
3329 "05p053vjs5g91v5cmjnny7a3xzddz5k7vnjw81wfh01ilqg9qwhw"))))
3330 (build-system perl-build-system)
3331 (propagated-inputs
3332 `(("perl-http-message" ,perl-http-message)))
3333 (license license:perl-license)
3334 (synopsis "Perl http content negotiation")
3335 (description
3336 "The HTTP::Negotiate module provides a complete implementation of the
3337 HTTP content negotiation algorithm specified in
3338 draft-ietf-http-v11-spec-00.ps chapter 12. Content negotiation allows for
3339 the selection of a preferred content representation based upon attributes
3340 of the negotiable variants and the value of the various Accept* header
3341 fields in the request.")
3342 (home-page "https://metacpan.org/release/HTTP-Negotiate")))
3343
3344 (define-public perl-http-parser
3345 (package
3346 (name "perl-http-parser")
3347 (version "0.06")
3348 (source
3349 (origin
3350 (method url-fetch)
3351 (uri (string-append "mirror://cpan/authors/id/E/ED/EDECA/"
3352 "HTTP-Parser-" version ".tar.gz"))
3353 (sha256
3354 (base32
3355 "0idwq3jk595xil65lmxz128ha7s3r2n5zknisddpgwnqrghs3igq"))))
3356 (build-system perl-build-system)
3357 (propagated-inputs
3358 `(("perl-http-message" ,perl-http-message)
3359 ("perl-uri" ,perl-uri)))
3360 (home-page "https://metacpan.org/release/HTTP-Parser")
3361 (synopsis "Parse HTTP/1.1 requests")
3362 (description "This is an HTTP request parser. It takes chunks of text as
3363 received and returns a @code{hint} as to what is required, or returns the
3364 HTTP::Request when a complete request has been read. HTTP/1.1 chunking is
3365 supported.")
3366 (license license:perl-license)))
3367
3368 (define-public perl-http-parser-xs
3369 (package
3370 (name "perl-http-parser-xs")
3371 (version "0.17")
3372 (source
3373 (origin
3374 (method url-fetch)
3375 (uri (string-append "mirror://cpan/authors/id/K/KA/KAZUHO/"
3376 "HTTP-Parser-XS-" version ".tar.gz"))
3377 (sha256
3378 (base32
3379 "02d84xq1mm53c7jl33qyb7v5w4372vydp74z6qj0vc96wcrnhkkr"))))
3380 (build-system perl-build-system)
3381 (native-inputs
3382 `(("perl-module-install" ,perl-module-install)))
3383 (home-page "https://metacpan.org/release/HTTP-Parser-XS")
3384 (synopsis "Fast HTTP request parser")
3385 (description "HTTP::Parser::XS is a fast, primitive HTTP request/response
3386 parser.")
3387 (license license:perl-license)))
3388
3389 (define-public perl-http-request-ascgi
3390 (package
3391 (name "perl-http-request-ascgi")
3392 (version "1.2")
3393 (source
3394 (origin
3395 (method url-fetch)
3396 (uri (string-append "mirror://cpan/authors/id/F/FL/FLORA/"
3397 "HTTP-Request-AsCGI-" version ".tar.gz"))
3398 (sha256
3399 (base32
3400 "1smwmiarwcgq7vjdblnb6ldi2x1s5sk5p15p7xvm5byiqq3znnwl"))))
3401 (build-system perl-build-system)
3402 (propagated-inputs
3403 `(("perl-class-accessor" ,perl-class-accessor)
3404 ("perl-http-message" ,perl-http-message)))
3405 (home-page "https://metacpan.org/release/HTTP-Request-AsCGI")
3406 (synopsis "Set up a CGI environment from an HTTP::Request")
3407 (description "This module provides a convenient way to set up a CGI
3408 environment from an HTTP::Request.")
3409 (license license:perl-license)))
3410
3411 (define-public perl-http-server-simple
3412 (package
3413 (name "perl-http-server-simple")
3414 (version "0.52")
3415 (source
3416 (origin
3417 (method url-fetch)
3418 (uri (string-append "mirror://cpan/authors/id/B/BP/BPS/"
3419 "HTTP-Server-Simple-" version ".tar.gz"))
3420 (sha256
3421 (base32
3422 "0k6bg7k6mjixfzxdkkdrhqvaqmdhjszx0zsk8g0bimiby6j9z4yq"))))
3423 (build-system perl-build-system)
3424 (propagated-inputs
3425 `(("perl-cgi" ,perl-cgi)))
3426 (arguments
3427 ;; See the discussion of a related tests issue at
3428 ;; https://lists.gnu.org/archive/html/guix-devel/2015-01/msg00346.html
3429 `(#:tests? #f
3430
3431 #:phases (modify-phases %standard-phases
3432 (add-before 'configure 'set-search-path
3433 (lambda _
3434 ;; Work around "dotless @INC" build failure.
3435 (setenv "PERL5LIB"
3436 (string-append (getcwd) ":"
3437 (getenv "PERL5LIB")))
3438 #t)))))
3439 (home-page "https://metacpan.org/release/HTTP-Server-Simple")
3440 (synopsis "Lightweight HTTP server")
3441 (description "HTTP::Server::Simple is a simple standalone HTTP daemon with
3442 no non-core module dependencies. It can be used for building a standalone
3443 http-based UI to your existing tools.")
3444 (license license:perl-license)))
3445
3446 (define-public perl-http-tiny
3447 (package
3448 (name "perl-http-tiny")
3449 (version "0.076")
3450 (source
3451 (origin
3452 (method url-fetch)
3453 (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
3454 "HTTP-Tiny-" version ".tar.gz"))
3455 (sha256
3456 (base32
3457 "11wkxxqj3ff84rgj9q2gzkdgscwp3fzj205846k9ycqinlpsmgfx"))))
3458 (build-system perl-build-system)
3459 (inputs
3460 `(("perl-http-cookiejar" ,perl-http-cookiejar)
3461 ("perl-io-socket-ip" ,perl-io-socket-ip)
3462 ("perl-io-socket-ssl" ,perl-io-socket-ssl)
3463 ("perl-mozilla-ca" ,perl-mozilla-ca)
3464 ("perl-net-ssleay" ,perl-net-ssleay)))
3465 (home-page "https://metacpan.org/release/HTTP-Tiny")
3466 (synopsis "HTTP/1.1 client")
3467 (description "This is a very simple HTTP/1.1 client, designed for doing
3468 simple requests without the overhead of a large framework like LWP::UserAgent.
3469 It supports proxies and redirection. It also correctly resumes after EINTR.")
3470 (license license:perl-license)))
3471
3472 (define-public perl-http-tinyish
3473 (package
3474 (name "perl-http-tinyish")
3475 (version "0.15")
3476 (source
3477 (origin
3478 (method url-fetch)
3479 (uri (string-append
3480 "mirror://cpan/authors/id/M/MI/MIYAGAWA/HTTP-Tinyish-"
3481 version
3482 ".tar.gz"))
3483 (sha256
3484 (base32
3485 "199sa722amvwhq0czjfb7psj3hbqmvni5vxkrm579r5943pg0rax"))))
3486 (build-system perl-build-system)
3487 (propagated-inputs
3488 `(("perl-file-which" ,perl-file-which)
3489 ("perl-ipc-run3" ,perl-ipc-run3)))
3490 (home-page "https://metacpan.org/release/HTTP-Tinyish")
3491 (synopsis "@code{HTTP::Tiny} compatible HTTP client wrappers")
3492 (description
3493 "@code{HTTP::Tinyish} is a wrapper module for @acronym{LWP,libwww-perl},
3494 @code{HTTP::Tiny}, curl and wget.
3495
3496 It provides an API compatible to HTTP::Tiny.")
3497 (license license:perl-license)))
3498
3499 (define-public perl-io-html
3500 (package
3501 (name "perl-io-html")
3502 (version "1.00")
3503 (source (origin
3504 (method url-fetch)
3505 (uri (string-append
3506 "mirror://cpan/authors/id/C/CJ/CJM/IO-HTML-"
3507 version ".tar.gz"))
3508 (sha256
3509 (base32
3510 "06nj3a0xgp5jxwxx6ayglfk2v7npf5a7gwkqsjlkapjkybarzqh4"))))
3511 (build-system perl-build-system)
3512 (license license:perl-license)
3513 (synopsis "Perl module to open an HTML file with automatic charset detection")
3514 (description
3515 "IO::HTML provides an easy way to open a file containing HTML while
3516 automatically determining its encoding. It uses the HTML5 encoding sniffing
3517 algorithm specified in section 8.2.2.1 of the draft standard.")
3518 (home-page "https://metacpan.org/release/IO-HTML")))
3519
3520 (define-public perl-io-socket-ip
3521 (package
3522 (name "perl-io-socket-ip")
3523 (version "0.39")
3524 (source
3525 (origin
3526 (method url-fetch)
3527 (uri (string-append "mirror://cpan/authors/id/P/PE/PEVANS/"
3528 "IO-Socket-IP-" version ".tar.gz"))
3529 (sha256
3530 (base32
3531 "15kv5g1yb4a345sk3r5wfr99f868lhfqkddzsgpqddvccfkhv58i"))))
3532 (build-system perl-build-system)
3533 (native-inputs `(("perl-module-build" ,perl-module-build)))
3534 (home-page "https://metacpan.org/release/IO-Socket-IP")
3535 (synopsis "Family-neutral IP socket supporting both IPv4 and IPv6")
3536 (description "This module provides a protocol-independent way to use IPv4
3537 and IPv6 sockets, intended as a replacement for IO::Socket::INET.")
3538 (license license:perl-license)))
3539
3540 (define-public perl-io-socket-ssl
3541 (package
3542 (name "perl-io-socket-ssl")
3543 (version "2.066")
3544 (source (origin
3545 (method url-fetch)
3546 (uri (string-append "mirror://cpan/authors/id/S/SU/SULLR/"
3547 "IO-Socket-SSL-" version ".tar.gz"))
3548 (sha256
3549 (base32
3550 "1kgbws7dwp2hh16qid7169dfkhmcwg7dz9ffbm6k0id5h53hciqd"))
3551 (patches (search-patches
3552 "perl-io-socket-ssl-openssl-1.0.2f-fix.patch"))))
3553 (build-system perl-build-system)
3554 (propagated-inputs
3555 `(("perl-net-ssleay" ,perl-net-ssleay)
3556 ;; for IDN support
3557 ("perl-uri" ,perl-uri)))
3558 (synopsis "Nearly transparent SSL encapsulation for IO::Socket::INET")
3559 (description
3560 "IO::Socket::SSL makes using SSL/TLS much easier by wrapping the
3561 necessary functionality into the familiar IO::Socket interface and providing
3562 secure defaults whenever possible. This way existing applications can be made
3563 SSL-aware without much effort, at least if you do blocking I/O and don't use
3564 select or poll.")
3565 (license license:perl-license)
3566 (home-page "https://github.com/noxxi/p5-io-socket-ssl")))
3567
3568 (define-public perl-libwww
3569 (package
3570 (name "perl-libwww")
3571 (version "6.41")
3572 (source (origin
3573 (method url-fetch)
3574 (uri (string-append
3575 "mirror://cpan/authors/id/O/OA/OALDERS/libwww-perl-"
3576 version ".tar.gz"))
3577 (sha256
3578 (base32
3579 "0jh67946fwd33ap3xy8df0421d2mr6lmhalhkf1p7dx2b7fil9wf"))))
3580 (build-system perl-build-system)
3581 (native-inputs
3582 `(("perl-test-fatal" ,perl-test-fatal)
3583 ("perl-test-needs" ,perl-test-needs)
3584 ("perl-test-requiresinternet" ,perl-test-requiresinternet)))
3585 (propagated-inputs
3586 `(("perl-encode-locale" ,perl-encode-locale)
3587 ("perl-file-listing" ,perl-file-listing)
3588 ("perl-html-parser" ,perl-html-parser)
3589 ("perl-http-cookies" ,perl-http-cookies)
3590 ("perl-http-daemon" ,perl-http-daemon)
3591 ("perl-http-date" ,perl-http-date)
3592 ("perl-http-message" ,perl-http-message)
3593 ("perl-http-negotiate" ,perl-http-negotiate)
3594 ("perl-net-http" ,perl-net-http)
3595 ("perl-try-tiny" ,perl-try-tiny)
3596 ("perl-uri" ,perl-uri)
3597 ("perl-www-robotrules" ,perl-www-robotrules)))
3598 (license license:perl-license)
3599 (synopsis "Perl modules for the WWW")
3600 (description
3601 "The libwww-perl collection is a set of Perl modules which provides a
3602 simple and consistent application programming interface to the
3603 World-Wide Web. The main focus of the library is to provide classes
3604 and functions that allow you to write WWW clients. The library also
3605 contains modules that are of more general use and even classes that
3606 help you implement simple HTTP servers.")
3607 (home-page "https://metacpan.org/release/libwww-perl")))
3608
3609 (define-public perl-lwp-online
3610 (package
3611 (name "perl-lwp-online")
3612 (version "1.08")
3613 (source
3614 (origin
3615 (method url-fetch)
3616 (uri (string-append
3617 "mirror://cpan/authors/id/A/AD/ADAMK/LWP-Online-"
3618 version ".tar.gz"))
3619 (sha256
3620 (base32
3621 "176f6vbk1018i0y7xj9d406ndbjgwzan2j9nihxnsahzg2vr2vz2"))))
3622 (build-system perl-build-system)
3623 (propagated-inputs
3624 `(("perl-libwww" ,perl-libwww)
3625 ("perl-uri" ,perl-uri)))
3626 (native-inputs
3627 `(("perl-module-install" ,perl-module-install)))
3628 (home-page "https://metacpan.org/release/LWP-Online")
3629 (synopsis "Checks whether your process has access to the web")
3630 (description "This module attempts to answer, as accurately as it can, one
3631 of the nastiest technical questions there is: am I on the internet?
3632
3633 A host of networking and security issues make this problem very difficult.
3634 There are firewalls, proxies (both well behaved and badly behaved). We might
3635 not have DNS. We might not have a network card at all!")
3636 (license license:perl-license)))
3637
3638 (define-public perl-lwp-mediatypes
3639 (package
3640 (name "perl-lwp-mediatypes")
3641 (version "6.04")
3642 (source (origin
3643 (method url-fetch)
3644 (uri (string-append
3645 "mirror://cpan/authors/id/O/OA/OALDERS/LWP-MediaTypes-"
3646 version ".tar.gz"))
3647 (sha256
3648 (base32
3649 "1n8rg6csv3dsvymg06cmxipimr6cb1g9r903ghm1qsmiv89cl6wg"))))
3650 (build-system perl-build-system)
3651 (native-inputs
3652 `(("perl-test-fatal" ,perl-test-fatal)))
3653 (license license:perl-license)
3654 (synopsis "Perl module to guess the media type for a file or a URL")
3655 (description
3656 "The LWP::MediaTypes module provides functions for handling media (also
3657 known as MIME) types and encodings. The mapping from file extensions to
3658 media types is defined by the media.types file. If the ~/.media.types file
3659 exists it is used instead.")
3660 (home-page "https://metacpan.org/release/LWP-MediaTypes")))
3661
3662 (define-public perl-lwp-protocol-https
3663 (package
3664 (name "perl-lwp-protocol-https")
3665 (version "6.07")
3666 (source
3667 (origin
3668 (method url-fetch)
3669 (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
3670 "LWP-Protocol-https-" version ".tar.gz"))
3671 (sha256
3672 (base32
3673 "1rxrpwylfw1afah0nk96kgkwjbl2p1a7lwx50iipg8c4rx3cjb2j"))))
3674 (build-system perl-build-system)
3675 (native-inputs
3676 ;; For tests.
3677 `(("perl-test-requiresinternet" ,perl-test-requiresinternet)))
3678 (propagated-inputs
3679 `(("perl-io-socket-ssl" ,perl-io-socket-ssl)
3680 ("perl-libwww" ,perl-libwww)
3681 ;; Users should instead make sure SSL_ca_path is set properly.
3682 ;; ("perl-mozilla-ca" ,perl-mozilla-ca)
3683 ("perl-net-http" ,perl-net-http)))
3684 (home-page "https://metacpan.org/release/LWP-Protocol-https")
3685 (synopsis "HTTPS support for LWP::UserAgent")
3686 (description "The LWP::Protocol::https module provides support for using
3687 https schemed URLs with LWP.")
3688 (license license:perl-license)))
3689
3690 (define-public perl-lwp-useragent-cached
3691 (package
3692 (name "perl-lwp-useragent-cached")
3693 (version "0.08")
3694 (source
3695 (origin
3696 (method url-fetch)
3697 (uri (string-append "mirror://cpan/authors/id/O/OL/OLEG/"
3698 "LWP-UserAgent-Cached-" version ".tar.gz"))
3699 (sha256
3700 (base32
3701 "1hw7wy7f82kl61xjwkgmhv1ixgg56dhgfr45wxn6ahc0qys5mkix"))))
3702 (build-system perl-build-system)
3703 (propagated-inputs
3704 `(("perl-libwww" ,perl-libwww)))
3705 (home-page "https://metacpan.org/release/LWP-UserAgent-Cached")
3706 (synopsis "Simple caching for LWP::UserAgent")
3707 (description "LWP::UserAgent::Cached is an LWP::UserAgent subclass with
3708 cache support. It returns responses from the local filesystem if available
3709 instead of making an HTTP request.")
3710 (license license:perl-license)))
3711
3712 (define-public perl-lwp-useragent-determined
3713 (package
3714 (name "perl-lwp-useragent-determined")
3715 (version "1.07")
3716 (source
3717 (origin
3718 (method url-fetch)
3719 (uri (string-append "mirror://cpan/authors/id/A/AL/ALEXMV/"
3720 "LWP-UserAgent-Determined-" version ".tar.gz"))
3721 (sha256
3722 (base32
3723 "0lyvbpjng7yfvyha9rp2y2c6liz5hhplmd2grc8jlsfkih7dbn06"))))
3724 (build-system perl-build-system)
3725 (propagated-inputs
3726 `(("perl-libwww" ,perl-libwww)))
3727 (home-page "https://metacpan.org/release/LWP-UserAgent-Determined")
3728 (synopsis "Virtual browser that retries errors")
3729 (description "LWP::UserAgent::Determined works just like LWP::UserAgent,
3730 except that when you use it to get a web page but run into a
3731 possibly-temporary error (like a DNS lookup timeout), it'll wait a few seconds
3732 and retry a few times.")
3733 (license license:perl-license)))
3734
3735 (define-public perl-lwpx-paranoidagent
3736 (package
3737 (name "perl-lwpx-paranoidagent")
3738 (version "1.12")
3739 (source
3740 (origin
3741 (method url-fetch)
3742 (uri (string-append
3743 "mirror://cpan/authors/id/S/SA/SAXJAZMAN/lwp/LWPx-ParanoidAgent-"
3744 version ".tar.gz"))
3745 (sha256
3746 (base32
3747 "0gfhw3jbs25yya2dryv8xvyn9myngcfcmsybj7gkq62fnznil16c"))))
3748 (build-system perl-build-system)
3749 (propagated-inputs
3750 `(("perl-libwww" ,perl-libwww)
3751 ;; Users should instead make sure SSL_ca_path is set properly.
3752 ;; ("perl-mozilla-ca" ,perl-mozilla-ca)
3753 ("perl-net-dns" ,perl-net-dns)))
3754 (home-page "https://metacpan.org/release/LWPx-ParanoidAgent")
3755 (synopsis "Security enhanced subclass of LWP::UserAgent")
3756 (description "@code{LWPx::ParanoidAgent} is a class subclassing
3757 @code{LWP::UserAgent} but paranoid against attackers. Its purpose is
3758 to vet requests for a remote resource on behalf of a possibly
3759 malicious user. The class can do the same as @code{LWP::UserAgent},
3760 except that proxy support has been removed. Support for URI schemes
3761 is limited to http and https.")
3762 (license license:perl-license)))
3763
3764 (define-public perl-net-amazon-s3
3765 (package
3766 (name "perl-net-amazon-s3")
3767 (version "0.60")
3768 (source
3769 (origin
3770 (method url-fetch)
3771 (uri (string-append "mirror://cpan/authors/id/P/PF/PFIG/"
3772 "Net-Amazon-S3-" version ".tar.gz"))
3773 (sha256
3774 (base32
3775 "10dcsq4s2kc9cb1vccx17r187c81drirc3s1hbxh3rb8489kg2b2"))
3776 (patches (search-patches
3777 "perl-net-amazon-s3-moose-warning.patch"))))
3778 (build-system perl-build-system)
3779 (native-inputs
3780 `(("perl-libwww" ,perl-libwww)
3781 ("perl-test-exception" ,perl-test-exception)))
3782 (propagated-inputs
3783 `(("perl-data-stream-bulk" ,perl-data-stream-bulk)
3784 ("perl-datetime-format-http" ,perl-datetime-format-http)
3785 ("perl-digest-hmac" ,perl-digest-hmac)
3786 ("perl-digest-md5-file" ,perl-digest-md5-file)
3787 ("perl-file-find-rule" ,perl-file-find-rule)
3788 ("perl-http-date" ,perl-http-date)
3789 ("perl-http-message" ,perl-http-message)
3790 ("perl-lwp-useragent-determined" ,perl-lwp-useragent-determined)
3791 ("perl-mime-types" ,perl-mime-types)
3792 ("perl-moose" ,perl-moose)
3793 ("perl-moosex-strictconstructor" ,perl-moosex-strictconstructor)
3794 ("perl-moosex-types-datetime-morecoercions"
3795 ,perl-moosex-types-datetime-morecoercions)
3796 ("perl-path-class" ,perl-path-class)
3797 ("perl-regexp-common" ,perl-regexp-common)
3798 ("perl-term-encoding" ,perl-term-encoding)
3799 ("perl-term-progressbar-simple" ,perl-term-progressbar-simple)
3800 ("perl-uri" ,perl-uri)
3801 ("perl-xml-libxml" ,perl-xml-libxml)))
3802 (home-page "https://metacpan.org/release/Net-Amazon-S3")
3803 (synopsis "Perl interface to Amazon S3")
3804 (description "This module provides a Perlish interface to Amazon S3.")
3805 (license license:perl-license)))
3806
3807 (define-public perl-net-http
3808 (package
3809 (name "perl-net-http")
3810 (version "6.19")
3811 (source (origin
3812 (method url-fetch)
3813 (uri (string-append
3814 "mirror://cpan/authors/id/O/OA/OALDERS/"
3815 "Net-HTTP-" version ".tar.gz"))
3816 (sha256
3817 (base32
3818 "1i1gbcwdzx74whn5vn6xbr2cp7frldfz2rfrcjp2qljr770nxdsj"))))
3819 (build-system perl-build-system)
3820 (propagated-inputs
3821 `(("perl-io-socket-ssl" ,perl-io-socket-ssl)
3822 ("perl-uri" ,perl-uri)))
3823 (license license:perl-license)
3824 (synopsis "Perl low-level HTTP connection (client)")
3825 (description
3826 "The Net::HTTP class is a low-level HTTP client. An instance of the
3827 Net::HTTP class represents a connection to an HTTP server. The HTTP protocol
3828 is described in RFC 2616. The Net::HTTP class supports HTTP/1.0 and
3829 HTTP/1.1.")
3830 (home-page "https://metacpan.org/release/Net-HTTP")))
3831
3832 (define-public perl-net-server
3833 (package
3834 (name "perl-net-server")
3835 (version "2.009")
3836 (source
3837 (origin
3838 (method url-fetch)
3839 (uri (string-append "mirror://cpan/authors/id/R/RH/RHANDOM/"
3840 "Net-Server-" version ".tar.gz"))
3841 (sha256
3842 (base32
3843 "0gw1k9gcw7habbkxvsfa2gz34brlbwcidk6khgsf1qjm0dbccrw2"))))
3844 (build-system perl-build-system)
3845 (home-page "https://metacpan.org/release/Net-Server")
3846 (synopsis "Extensible Perl server engine")
3847 (description "Net::Server is an extensible, generic Perl server engine.
3848 It attempts to be a generic server as in Net::Daemon and NetServer::Generic.
3849 It includes with it the ability to run as an inetd
3850 process (Net::Server::INET), a single connection server (Net::Server or
3851 Net::Server::Single), a forking server (Net::Server::Fork), a preforking
3852 server which maintains a constant number of preforked
3853 children (Net::Server::PreForkSimple), or as a managed preforking server which
3854 maintains the number of children based on server load (Net::Server::PreFork).
3855 In all but the inetd type, the server provides the ability to connect to one
3856 or to multiple server ports.")
3857 (license license:perl-license)))
3858
3859 (define-public perl-net-smtp-ssl
3860 (package
3861 (name "perl-net-smtp-ssl")
3862 (version "1.04")
3863 (source
3864 (origin
3865 (method url-fetch)
3866 (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
3867 "Net-SMTP-SSL-" version ".tar.gz"))
3868 (sha256
3869 (base32
3870 "001a6dcfahf7kkyirqkc8jd4fh4fkal7n7vm9c4dblqrvmdc8abv"))))
3871 (build-system perl-build-system)
3872 (propagated-inputs
3873 `(("perl-io-socket-ssl" ,perl-io-socket-ssl)))
3874 (home-page "https://metacpan.org/release/Net-SMTP-SSL")
3875 (synopsis "SSL support for Net::SMTP")
3876 (description "SSL support for Net::SMTP.")
3877 (license license:perl-license)))
3878
3879 (define-public perl-plack
3880 (package
3881 (name "perl-plack")
3882 (version "1.0033")
3883 (source
3884 (origin
3885 (method url-fetch)
3886 (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
3887 "Plack-" version ".tar.gz"))
3888 (sha256
3889 (base32
3890 "081jg0xddzpg2anmqi9i6d7vs6c8z7k557bf8xl6vgb3h95pin5w"))))
3891 (build-system perl-build-system)
3892 (native-inputs
3893 `(("perl-test-requires" ,perl-test-requires)
3894 ("perl-file-sharedir-install" ,perl-file-sharedir-install)))
3895 (propagated-inputs
3896 `(("perl-apache-logformat-compiler" ,perl-apache-logformat-compiler)
3897 ("perl-devel-stacktrace" ,perl-devel-stacktrace)
3898 ("perl-devel-stacktrace-ashtml" ,perl-devel-stacktrace-ashtml)
3899 ("perl-file-sharedir" ,perl-file-sharedir)
3900 ("perl-hash-multivalue" ,perl-hash-multivalue)
3901 ("perl-http-body" ,perl-http-body)
3902 ("perl-http-message" ,perl-http-message)
3903 ("perl-http-tiny" ,perl-http-tiny)
3904 ("perl-libwww" ,perl-libwww)
3905 ("perl-stream-buffered" ,perl-stream-buffered)
3906 ("perl-test-tcp" ,perl-test-tcp)
3907 ("perl-try-tiny" ,perl-try-tiny)
3908 ("perl-uri" ,perl-uri)))
3909 (home-page "https://metacpan.org/release/Plack")
3910 (synopsis "Perl Superglue for Web frameworks and servers (PSGI toolkit)")
3911 (description "Plack is a set of tools for using the PSGI stack. It
3912 contains middleware components, a reference server, and utilities for Web
3913 application frameworks. Plack is like Ruby's Rack or Python's Paste for
3914 WSGI.")
3915 (license license:perl-license)))
3916
3917 (define-public perl-plack-middleware-deflater
3918 (package
3919 (name "perl-plack-middleware-deflater")
3920 (version "0.12")
3921 (source
3922 (origin
3923 (method url-fetch)
3924 (uri (string-append
3925 "mirror://cpan/authors/id/K/KA/KAZEBURO/"
3926 "Plack-Middleware-Deflater-" version ".tar.gz"))
3927 (sha256
3928 (base32
3929 "0xf2visi16hgwgyp9q0cjr10ikbn474hjia5mj8mb2scvbkrbni8"))))
3930 (build-system perl-build-system)
3931 (native-inputs
3932 `(("perl-module-install" ,perl-module-install)
3933 ("perl-test-requires" ,perl-test-requires)))
3934 (propagated-inputs
3935 `(("perl-plack" ,perl-plack)))
3936 (home-page "https://metacpan.org/release/Plack-Middleware-Deflater")
3937 (synopsis "Compress response body with Gzip or Deflate")
3938 (description
3939 "Plack::Middleware::Deflater is a middleware to encode your response body
3940 in gzip or deflate, based on \"Accept-Encoding\" HTTP request header. It
3941 would save the bandwidth a little bit but should increase the Plack server
3942 load, so ideally you should handle this on the frontend reverse proxy
3943 servers.")
3944 (license license:perl-license)))
3945
3946 (define-public perl-plack-middleware-fixmissingbodyinredirect
3947 (package
3948 (name "perl-plack-middleware-fixmissingbodyinredirect")
3949 (version "0.12")
3950 (source
3951 (origin
3952 (method url-fetch)
3953 (uri (string-append "mirror://cpan/authors/id/S/SW/SWEETKID/"
3954 "Plack-Middleware-FixMissingBodyInRedirect-"
3955 version ".tar.gz"))
3956 (sha256
3957 (base32
3958 "14dkrmccq7a5vpymx5dv8032gfcvhsw2i6v5sh3c4ym5ymlx08kc"))))
3959 (build-system perl-build-system)
3960 (native-inputs
3961 `(("perl-html-parser" ,perl-html-parser) ;for HTML::Entities
3962 ("perl-http-message" ,perl-http-message)
3963 ("perl-plack" ,perl-plack))) ;for Plack::Test
3964 (home-page
3965 "https://metacpan.org/release/Plack-Middleware-FixMissingBodyInRedirect")
3966 (synopsis "Plack::Middleware which sets body for redirect response")
3967 (description "This module sets the body in redirect response, if it's not
3968 already set.")
3969 (license license:perl-license)))
3970
3971 (define-public perl-plack-middleware-methodoverride
3972 (package
3973 (name "perl-plack-middleware-methodoverride")
3974 (version "0.20")
3975 (source
3976 (origin
3977 (method url-fetch)
3978 (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
3979 "Plack-Middleware-MethodOverride-"
3980 version ".tar.gz"))
3981 (sha256
3982 (base32 "1wdmmav3rbhv49zpw311zrxxqmg1fz3f3q9src0ypgs8zcp5myyv"))))
3983 (build-system perl-build-system)
3984 (native-inputs
3985 `(("perl-module-build" ,perl-module-build)))
3986 (propagated-inputs
3987 `(("perl-plack" ,perl-plack)))
3988 (home-page "https://metacpan.org/release/Plack-Middleware-MethodOverride")
3989 (synopsis "Override REST methods to Plack apps via POST")
3990 (description "This middleware allows for POST requests that pretend to be
3991 something else: by adding either a header named X-HTTP-Method-Override to the
3992 request, or a query parameter named x-tunneled-method to the URI, the client
3993 can say what method it actually meant.")
3994 (license license:perl-license)))
3995
3996 (define-public perl-plack-middleware-removeredundantbody
3997 (package
3998 (name "perl-plack-middleware-removeredundantbody")
3999 (version "0.07")
4000 (source
4001 (origin
4002 (method url-fetch)
4003 (uri (string-append "mirror://cpan/authors/id/S/SW/SWEETKID/"
4004 "Plack-Middleware-RemoveRedundantBody-"
4005 version ".tar.gz"))
4006 (sha256
4007 (base32 "1hz3kgb5vw4r02gfk9i911f5ykvz55lrsx45bdcllk2bszal3f34"))))
4008 (build-system perl-build-system)
4009 (propagated-inputs
4010 `(("perl-plack" ,perl-plack)))
4011 (home-page
4012 "https://metacpan.org/release/Plack-Middleware-RemoveRedundantBody")
4013 (synopsis "Plack::Middleware which removes body for HTTP response")
4014 (description "This module removes the body in an HTTP response if it's not
4015 required.")
4016 (license license:perl-license)))
4017
4018 (define-public perl-plack-middleware-reverseproxy
4019 (package
4020 (name "perl-plack-middleware-reverseproxy")
4021 (version "0.16")
4022 (source
4023 (origin
4024 (method url-fetch)
4025 (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
4026 "Plack-Middleware-ReverseProxy-"
4027 version ".tar.gz"))
4028 (sha256
4029 (base32 "0a512n62pnk5ayj3zdzyj50iy1qi8nwh6ygks2h7nrh7gp9k2jc7"))))
4030 (build-system perl-build-system)
4031 (native-inputs
4032 `(("perl-module-install" ,perl-module-install)))
4033 (propagated-inputs
4034 `(("perl-plack" ,perl-plack)))
4035 (home-page "https://metacpan.org/release/Plack-Middleware-ReverseProxy")
4036 (synopsis "Supports app to run as a reverse proxy backend")
4037 (description "Plack::Middleware::ReverseProxy resets some HTTP headers,
4038 which are changed by reverse-proxy. You can specify the reverse proxy address
4039 and stop fake requests using @code{enable_if} directive in your app.psgi.")
4040 (license license:perl-license)))
4041
4042 (define-public perl-plack-test-externalserver
4043 (package
4044 (name "perl-plack-test-externalserver")
4045 (version "0.02")
4046 (source
4047 (origin
4048 (method url-fetch)
4049 (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
4050 "Plack-Test-ExternalServer-" version ".tar.gz"))
4051 (sha256
4052 (base32 "1l1yj1l25679x7cbpd27ii7s1f1ajpkspif9xqnl21hczrbmrbsv"))))
4053 (build-system perl-build-system)
4054 (propagated-inputs
4055 `(("perl-plack" ,perl-plack)))
4056 (home-page "https://metacpan.org/release/Plack-Test-ExternalServer")
4057 (synopsis "Run HTTP tests on external live servers")
4058 (description "This module allows your to run your Plack::Test tests
4059 against an external server instead of just against a local application through
4060 either mocked HTTP or a locally spawned server.")
4061 (license license:perl-license)))
4062
4063 (define-public perl-test-tcp
4064 (package
4065 (name "perl-test-tcp")
4066 (version "2.21")
4067 (source
4068 (origin
4069 (method url-fetch)
4070 (uri (string-append "mirror://cpan/authors/id/K/KA/KAZUHO/"
4071 "Test-TCP-" version ".tar.gz"))
4072 (sha256
4073 (base32 "1djnaw1yli0kcd7azchqnp59l62f6mp13q50xyrjirpaxhd51j32"))))
4074 (build-system perl-build-system)
4075 (propagated-inputs
4076 `(("perl-test-sharedfork" ,perl-test-sharedfork)))
4077 (arguments `(#:tests? #f)) ;related to signaling in t/05_sigint.t
4078 (home-page "https://metacpan.org/release/Test-TCP")
4079 (synopsis "Testing TCP programs")
4080 (description "Test::TCP is test utilities for TCP/IP programs.")
4081 (license license:perl-license)))
4082
4083 (define-public perl-test-www-mechanize
4084 (package
4085 (name "perl-test-www-mechanize")
4086 (version "1.52")
4087 (source
4088 (origin
4089 (method url-fetch)
4090 (uri (string-append "mirror://cpan/authors/id/P/PE/PETDANCE/"
4091 "Test-WWW-Mechanize-" version ".tar.gz"))
4092 (sha256
4093 (base32 "1jsywlbxhqw39ij7s8vmgff5vys58vlfaq27072awacnxc65aal4"))))
4094 (build-system perl-build-system)
4095 (propagated-inputs
4096 `(("perl-carp-assert-more" ,perl-carp-assert-more)
4097 ("perl-html-form" ,perl-html-form)
4098 ("perl-html-lint" ,perl-html-lint)
4099 ("perl-http-server-simple" ,perl-http-server-simple)
4100 ("perl-libwww" ,perl-libwww)
4101 ("perl-test-longstring" ,perl-test-longstring)
4102 ("perl-www-mechanize" ,perl-www-mechanize)))
4103 (home-page "https://metacpan.org/release/Test-WWW-Mechanize")
4104 (synopsis "Testing-specific WWW::Mechanize subclass")
4105 (description "Test::WWW::Mechanize is a subclass of the Perl module
4106 WWW::Mechanize that incorporates features for web application testing.")
4107 (license license:artistic2.0)))
4108
4109 (define-public perl-test-www-mechanize-catalyst
4110 (package
4111 (name "perl-test-www-mechanize-catalyst")
4112 (version "0.62")
4113 (source
4114 (origin
4115 (method url-fetch)
4116 (uri (string-append "mirror://cpan/authors/id/M/MS/MSTROUT/"
4117 "Test-WWW-Mechanize-Catalyst-" version ".tar.gz"))
4118 (sha256
4119 (base32 "1cdc2q16vs6fb335pzaislz2rx1ph9acaxyp7v5hv9xbwwddwfqq"))))
4120 (build-system perl-build-system)
4121 (native-inputs
4122 `(("perl-catalyst-plugin-session" ,perl-catalyst-plugin-session)
4123 ("perl-catalyst-plugin-session-state-cookie"
4124 ,perl-catalyst-plugin-session-state-cookie)
4125 ("perl-module-install" ,perl-module-install)
4126 ("perl-test-exception" ,perl-test-exception)
4127 ("perl-test-pod" ,perl-test-pod)
4128 ("perl-test-utf8" ,perl-test-utf8)))
4129 (propagated-inputs
4130 `(("perl-catalyst-runtime" ,perl-catalyst-runtime)
4131 ("perl-class-load" ,perl-class-load)
4132 ("perl-libwww" ,perl-libwww)
4133 ("perl-moose" ,perl-moose)
4134 ("perl-namespace-clean" ,perl-namespace-clean)
4135 ("perl-test-www-mechanize" ,perl-test-www-mechanize)
4136 ("perl-www-mechanize" ,perl-www-mechanize)))
4137 (home-page "https://metacpan.org/release/Test-WWW-Mechanize-Catalyst")
4138 (synopsis "Test::WWW::Mechanize for Catalyst")
4139 (description "The Test::WWW::Mechanize::Catalyst module meshes the
4140 Test::WWW:Mechanize module and the Catalyst web application framework to allow
4141 testing of Catalyst applications without needing to start up a web server.")
4142 (license license:perl-license)))
4143
4144 (define-public perl-test-www-mechanize-psgi
4145 (package
4146 (name "perl-test-www-mechanize-psgi")
4147 (version "0.38")
4148 (source
4149 (origin
4150 (method url-fetch)
4151 (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
4152 "Test-WWW-Mechanize-PSGI-" version ".tar.gz"))
4153 (sha256
4154 (base32
4155 "0fsh2i05kf1kfavv2r9kmnjl7qlyqrd11ikc0qcqzzxsqzzjkg9r"))))
4156 (build-system perl-build-system)
4157 (native-inputs
4158 `(("perl-test-pod" ,perl-test-pod)))
4159 (propagated-inputs
4160 `(("perl-plack" ,perl-plack)
4161 ("perl-test-www-mechanize" ,perl-test-www-mechanize)))
4162 (home-page "https://metacpan.org/release/Test-WWW-Mechanize-PSGI")
4163 (synopsis "Test PSGI programs using WWW::Mechanize")
4164 (description "PSGI is a specification to decouple web server environments
4165 from web application framework code. Test::WWW::Mechanize is a subclass of
4166 WWW::Mechanize that incorporates features for web application testing. The
4167 Test::WWW::Mechanize::PSGI module meshes the two to allow easy testing of PSGI
4168 applications.")
4169 (license license:perl-license)))
4170
4171 (define-public perl-uri
4172 (package
4173 (name "perl-uri")
4174 (version "1.76")
4175 (source (origin
4176 (method url-fetch)
4177 (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
4178 "URI-" version ".tar.gz"))
4179 (sha256
4180 (base32
4181 "0gj1aj18k43kmzc3y1zhj5giinf8rksacf757r475xfna0fqxjdj"))))
4182 (build-system perl-build-system)
4183 (native-inputs
4184 ;; For tests.
4185 `(("perl-test-needs" ,perl-test-needs)))
4186 (license license:perl-license)
4187 (synopsis "Perl Uniform Resource Identifiers (absolute and relative)")
4188 (description
4189 "The URI module implements the URI class. Objects of this class
4190 represent \"Uniform Resource Identifier references\" as specified in RFC 2396
4191 and updated by RFC 2732.")
4192 (home-page "https://metacpan.org/release/URI")))
4193
4194 (define-public perl-uri-fetch
4195 (package
4196 (name "perl-uri-fetch")
4197 (version "0.13")
4198 (source (origin
4199 (method url-fetch)
4200 (uri (string-append "mirror://cpan/authors/id/N/NE/NEILB/"
4201 "URI-Fetch-" version ".tar.gz"))
4202 (sha256
4203 (base32
4204 "0rw6xiqm70s218aii9id3hf8j3pz6n22xnwd8v9m1ff2bnh63c0d"))))
4205 (build-system perl-build-system)
4206 (arguments
4207 `(#:tests? #f)) ; Tests require internet connection to succeed
4208 (inputs
4209 `(("perl-class-errorhandler" ,perl-class-errorhandler)
4210 ("perl-libwww" ,perl-libwww)
4211 ("perl-uri" ,perl-uri)))
4212 (home-page "https://metacpan.org/release/URI-Fetch")
4213 (synopsis "Smart URI fetching/caching")
4214 (description "@code{URI::Fetch} is a smart client for fetching HTTP pages,
4215 notably syndication feeds (RSS, Atom, and others), in an intelligent, bandwidth-
4216 and time-saving way.")
4217 (license license:perl-license)))
4218
4219 (define-public perl-uri-find
4220 (package
4221 (name "perl-uri-find")
4222 (version "20160806")
4223 (source
4224 (origin
4225 (method url-fetch)
4226 (uri (string-append "mirror://cpan/authors/id/M/MS/MSCHWERN/"
4227 "URI-Find-" version ".tar.gz"))
4228 (sha256
4229 (base32
4230 "1mk3jv8x0mcq3ajrn9garnxd0jc7sw4pkwqi88r5apqvlljs84z2"))))
4231 (build-system perl-build-system)
4232 (native-inputs
4233 `(("perl-module-build" ,perl-module-build)))
4234 (propagated-inputs
4235 `(("perl-uri" ,perl-uri)))
4236 (home-page "https://metacpan.org/release/URI-Find")
4237 (synopsis "Find URIs in arbitrary text")
4238 (description "This module finds URIs and URLs (according to what URI.pm
4239 considers a URI) in plain text. It only finds URIs which include a
4240 scheme (http:// or the like), for something a bit less strict, consider
4241 URI::Find::Schemeless. For a command-line interface, urifind is provided.")
4242 (license license:perl-license)))
4243
4244 (define-public perl-uri-ws
4245 (package
4246 (name "perl-uri-ws")
4247 (version "0.03")
4248 (source
4249 (origin
4250 (method url-fetch)
4251 (uri (string-append "mirror://cpan/authors/id/P/PL/PLICEASE/"
4252 "URI-ws-" version ".tar.gz"))
4253 (sha256
4254 (base32
4255 "1vs1wm80sq685944g1l4a0fxcbccc00c0f9648yabdmcf90hwsvf"))))
4256 (build-system perl-build-system)
4257 (propagated-inputs
4258 `(("perl-uri" ,perl-uri)))
4259 (home-page "https://metacpan.org/release/URI-ws")
4260 (synopsis "WebSocket support for URI package")
4261 (description "With this module, the URI package provides the same set of
4262 methods for WebSocket URIs as it does for HTTP URIs.")
4263 (license license:perl-license)))
4264
4265 (define-public perl-uri-template
4266 (package
4267 (name "perl-uri-template")
4268 (version "0.24")
4269 (source (origin
4270 (method url-fetch)
4271 (uri (string-append "mirror://cpan/authors/id/B/BR/BRICAS/URI-Template-"
4272 version ".tar.gz"))
4273 (sha256
4274 (base32
4275 "1phibcmam2hklrddzj79l43va1gcqpyszbw21ynxq53ynmhjvbk8"))))
4276 (build-system perl-build-system)
4277 (inputs
4278 `(("perl-uri" ,perl-uri)))
4279 (native-inputs
4280 `(("perl-test-pod-coverage" ,perl-test-pod-coverage)
4281 ("perl-test-pod" ,perl-test-pod)
4282 ("perl-module-install" ,perl-module-install)
4283 ("perl-json" ,perl-json)))
4284 (home-page "https://metacpan.org/release/URI-Template")
4285 (synopsis "Object for handling URI templates")
4286 (description "This perl module provides a wrapper around URI templates as described in
4287 RFC 6570.")
4288 (license license:perl-license)))
4289
4290 (define-public perl-www-curl
4291 (package
4292 (name "perl-www-curl")
4293 (version "4.17")
4294 (source (origin
4295 (method url-fetch)
4296 (uri (string-append
4297 "mirror://cpan/authors/id/S/SZ/SZBALINT/WWW-Curl-"
4298 version".tar.gz"))
4299 (patches (search-patches "perl-www-curl-remove-symbol.patch"))
4300 (sha256
4301 (base32
4302 "1fmp9aib1kaps9vhs4dwxn7b15kgnlz9f714bxvqsd1j1q8spzsj"))))
4303 (build-system perl-build-system)
4304 (arguments
4305 '(#:tests? #f ;XXX: tests require network access
4306
4307 #:phases (modify-phases %standard-phases
4308 (add-before 'configure 'set-search-path
4309 (lambda _
4310 ;; Work around "dotless @INC" build failure.
4311 (setenv "PERL5LIB"
4312 (string-append (getcwd) ":"
4313 (getenv "PERL5LIB")))
4314 #t)))))
4315 (native-inputs
4316 `(("perl-module-install" ,perl-module-install)))
4317 (inputs `(("curl" ,curl)))
4318 (synopsis "Perl extension interface for libcurl")
4319 (description
4320 "This is a Perl extension interface for the libcurl file downloading
4321 library.")
4322 (license license:perl-license)
4323 (home-page "https://metacpan.org/release/WWW-Curl")))
4324
4325 (define-public perl-www-mechanize
4326 (package
4327 (name "perl-www-mechanize")
4328 (version "1.91")
4329 (source
4330 (origin
4331 (method url-fetch)
4332 (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
4333 "WWW-Mechanize-" version ".tar.gz"))
4334 (sha256
4335 (base32 "0cb14m1vhaf0mgn2fqwi5hm72xhfi77hpq2g57swgy0w83x7m27b"))))
4336 (build-system perl-build-system)
4337 (native-inputs ;only for tests
4338 `(("perl-cgi" ,perl-cgi)
4339 ("perl-test-deep" ,perl-test-deep)
4340 ("perl-test-fatal" ,perl-test-fatal)
4341 ("perl-test-output" ,perl-test-output)
4342 ("perl-test-warnings" ,perl-test-warnings)))
4343 (propagated-inputs
4344 `(("perl-html-form" ,perl-html-form)
4345 ("perl-html-parser" ,perl-html-parser)
4346 ("perl-html-tree" ,perl-html-tree)
4347 ("perl-http-message" ,perl-http-message)
4348 ("perl-http-server-simple" ,perl-http-server-simple)
4349 ("perl-libwww" ,perl-libwww)
4350 ("perl-test-warn" ,perl-test-warn)
4351 ("perl-uri" ,perl-uri)))
4352 (home-page "https://metacpan.org/release/WWW-Mechanize")
4353 (synopsis "Web browsing in a Perl object")
4354 (description "WWW::Mechanize is a Perl module for stateful programmatic
4355 web browsing, used for automating interaction with websites.")
4356 (license license:perl-license)))
4357
4358 (define-public perl-www-opensearch
4359 (package
4360 (name "perl-www-opensearch")
4361 (version "0.17")
4362 (source (origin
4363 (method url-fetch)
4364 (uri (string-append "mirror://cpan/authors/id/B/BR/BRICAS/"
4365 "WWW-OpenSearch-" version ".tar.gz"))
4366 (sha256
4367 (base32
4368 "1yxplx1q1qk2fvnzqrbk01lz26fy1lyhay51a3ky7q3jgh9p01rb"))))
4369 (build-system perl-build-system)
4370 (native-inputs
4371 `(("perl-class-errorhandler" ,perl-class-errorhandler)
4372 ("perl-datetime" ,perl-datetime)
4373 ("perl-datetime-format-mail" ,perl-datetime-format-mail)
4374 ("perl-datetime-format-w3cdtf" ,perl-datetime-format-w3cdtf)
4375 ("perl-feed-find" ,perl-feed-find)
4376 ("perl-module-install" ,perl-module-install)
4377 ("perl-module-pluggable" ,perl-module-pluggable)
4378 ("perl-uri-fetch" ,perl-uri-fetch)
4379 ("perl-test-simple" ,perl-test-simple)
4380 ("perl-xml-atom" ,perl-xml-atom)
4381 ("perl-xml-rss" ,perl-xml-rss)))
4382 (inputs
4383 `(("perl-data-page" ,perl-data-page)
4384 ("perl-libwww" ,perl-libwww)
4385 ("perl-uri" ,perl-uri)
4386 ("perl-uri-template" ,perl-uri-template)
4387 ("perl-xml-feed" ,perl-xml-feed)
4388 ("perl-xml-libxml" ,perl-xml-libxml)))
4389 (home-page "https://metacpan.org/release/WWW-OpenSearch")
4390 (synopsis "Search A9 OpenSearch compatible engines")
4391 (description
4392 "@code{WWW::OpenSearch} is a module to search @url{A9's OpenSearch,
4393 http://opensearch.a9.com} compatible search engines.")
4394 (license license:perl-license)))
4395
4396 (define-public perl-www-robotrules
4397 (package
4398 (name "perl-www-robotrules")
4399 (version "6.02")
4400 (source (origin
4401 (method url-fetch)
4402 (uri (string-append
4403 "mirror://cpan/authors/id/G/GA/GAAS/WWW-RobotRules-"
4404 version ".tar.gz"))
4405 (sha256
4406 (base32
4407 "07m50dp5n5jxv3m93i55qvnd67a6g7cvbvlik115kmc8lbkh5da6"))))
4408 (build-system perl-build-system)
4409 (propagated-inputs
4410 `(("perl-uri" ,perl-uri)))
4411 (license license:perl-license)
4412 (synopsis "Perl database of robots.txt-derived permissions")
4413 (description
4414 "The WWW::RobotRules module parses /robots.txt files as specified in
4415 \"A Standard for Robot Exclusion\", at
4416 <http://www.robotstxt.org/wc/norobots.html>. Webmasters can use the
4417 /robots.txt file to forbid conforming robots from accessing parts of
4418 their web site.")
4419 (home-page "https://metacpan.org/release/WWW-RobotRules")))
4420
4421 (define-public python-feedparser
4422 (package
4423 (name "python-feedparser")
4424 (version "5.2.1")
4425 (source
4426 (origin
4427 (method url-fetch)
4428 (uri (pypi-uri "feedparser" version ".tar.bz2"))
4429 (sha256
4430 (base32
4431 "00hb4qg2am06g81mygfi1jsbx8830024jm45g6qp9g8fr6am91yf"))))
4432 (build-system python-build-system)
4433 (arguments
4434 '(#:tests? #f))
4435 (home-page
4436 "https://github.com/kurtmckee/feedparser")
4437 (synopsis "Parse feeds in Python")
4438 (description
4439 "Universal feed parser which handles RSS 0.9x, RSS 1.0, RSS 2.0,
4440 CDF, Atom 0.3, and Atom 1.0 feeds.")
4441 (license (list license:bsd-2 ; source code
4442 license:freebsd-doc)))) ; documentation
4443
4444 (define-public python2-feedparser
4445 (package-with-python2 python-feedparser))
4446
4447 (define-public guix-data-service
4448 (let ((commit "d1c243f7fd8902f359ff06fb78dce663cf4297ce")
4449 (revision "19"))
4450 (package
4451 (name "guix-data-service")
4452 (version (string-append "0.0.1-" revision "." (string-take commit 7)))
4453 (source (origin
4454 (method git-fetch)
4455 (uri (git-reference
4456 (url "https://git.savannah.gnu.org/git/guix/data-service.git")
4457 (commit commit)))
4458 (file-name (git-file-name name version))
4459 (sha256
4460 (base32
4461 "1ji8d4vwmv7j9h7z96hvzi3zvik594yngjrdal37w13fbxy2v6sw"))))
4462 (build-system gnu-build-system)
4463 (arguments
4464 '(#:modules ((guix build utils)
4465 (guix build gnu-build-system)
4466 (ice-9 ftw)
4467 (ice-9 match)
4468 (ice-9 rdelim)
4469 (ice-9 popen))
4470 #:test-target "check-with-tmp-database"
4471 #:phases
4472 (modify-phases %standard-phases
4473 (add-before 'build 'set-GUILE_AUTO_COMPILE
4474 (lambda _
4475 ;; To avoid errors relating to guild
4476 (setenv "GUILE_AUTO_COMPILE" "0")
4477 #t))
4478 (add-after 'install 'wrap-executable
4479 (lambda* (#:key inputs outputs #:allow-other-keys)
4480 (let* ((out (assoc-ref outputs "out"))
4481 (bin (string-append out "/bin"))
4482 (guile (assoc-ref inputs "guile"))
4483 (guile-effective-version
4484 (read-line
4485 (open-pipe* OPEN_READ
4486 (string-append guile "/bin/guile")
4487 "-c" "(display (effective-version))")))
4488 (scm (string-append out "/share/guile/site/"
4489 guile-effective-version))
4490 (go (string-append out "/lib/guile/"
4491 guile-effective-version
4492 "/site-ccache")))
4493 (for-each
4494 (lambda (file)
4495 (simple-format (current-error-port)
4496 "wrapping: ~A\n"
4497 (string-append bin "/" file))
4498 (wrap-program (string-append bin "/" file)
4499 `("PATH" ":" prefix
4500 ,(cons*
4501 bin
4502 (map (lambda (input)
4503 (string-append
4504 (assoc-ref inputs input)
4505 "/bin"))
4506 '("ephemeralpg"
4507 "util-linux"
4508 "postgresql"))))
4509 `("GUILE_LOAD_PATH" ":" prefix
4510 (,scm ,(getenv "GUILE_LOAD_PATH")))
4511 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
4512 (,go ,(getenv "GUILE_LOAD_COMPILED_PATH")))))
4513 (scandir bin
4514 (match-lambda
4515 ((or "." "..") #f)
4516 (_ #t))))
4517 #t)))
4518 (delete 'strip)))) ; As the .go files aren't compatible
4519 (inputs
4520 `(("guix" ,guile3.0-guix)
4521 ("guile-fibers" ,guile3.0-fibers)
4522 ("guile-json" ,guile3.0-json)
4523 ("guile-email" ,guile3.0-email)
4524 ("guile-squee" ,guile3.0-squee)
4525 ("ephemeralpg" ,ephemeralpg)
4526 ("util-linux" ,util-linux)
4527 ("postgresql" ,postgresql-11)
4528 ("sqitch" ,sqitch)))
4529 (native-inputs
4530 `(("guile" ,guile-3.0)
4531 ("autoconf" ,autoconf)
4532 ("automake" ,automake)
4533 ("emacs-minimal" ,emacs-minimal)
4534 ("emacs-htmlize" ,emacs-htmlize)
4535 ("pkg-config" ,pkg-config)))
4536 (synopsis "Store and provide data about GNU Guix")
4537 (description
4538 "The Guix Data Service stores data about GNU Guix, and provides this
4539 through a web interface. It supports listening to the guix-commits mailing
4540 list to find out about new revisions, then loads the data from these in to a
4541 PostgreSQL database.")
4542 (home-page "http://data.guix.gnu.org/")
4543 (license license:agpl3+))))
4544
4545 (define-public gumbo-parser
4546 (package
4547 (name "gumbo-parser")
4548 (version "0.10.1")
4549 (source (origin
4550 (method git-fetch)
4551 (uri (git-reference
4552 (url "https://github.com/google/gumbo-parser")
4553 (commit (string-append "v" version))))
4554 (file-name (git-file-name name version))
4555 (sha256
4556 (base32
4557 "0xslckwdh2i0g2qjsb6rnm8mjmbagvziz0hjlf7d1lbljfms1iw1"))))
4558 (build-system gnu-build-system)
4559 (arguments
4560 `(#:tests? #f)) ;tests require bundling googletest sources
4561 ;; The release tarball lacks the generated files.
4562 (native-inputs
4563 `(("autoconf" ,autoconf)
4564 ("automake" ,automake)
4565 ("libtool" ,libtool)))
4566 (home-page "https://github.com/google/gumbo-parser")
4567 (synopsis "HTML5 parsing library")
4568 (description
4569 "Gumbo is an implementation of the HTML5 parsing algorithm implemented as
4570 a pure C99 library.")
4571 (license license:asl2.0)))
4572
4573 (define-public uwsgi
4574 (package
4575 (name "uwsgi")
4576 (version "2.0.18")
4577 (source (origin
4578 (method url-fetch)
4579 (uri (string-append "https://projects.unbit.it/downloads/uwsgi-"
4580 version ".tar.gz"))
4581 (sha256
4582 (base32
4583 "10zmk4npknigmbqcq1wmhd461dk93159px172112vyq0i19sqwj9"))))
4584 (build-system gnu-build-system)
4585 (outputs '("out" "python"))
4586 (arguments
4587 '(;; XXX: The 'check' target runs cppcheck to do static code analysis.
4588 ;; But there is no obvious way to run the real tests.
4589 #:tests? #f
4590 #:phases
4591 (modify-phases %standard-phases
4592 (replace 'configure
4593 ;; Configuration is done by writing an ini file.
4594 (lambda* (#:key outputs #:allow-other-keys)
4595 (let* ((out (assoc-ref outputs "out"))
4596 (bindir (string-append out "/bin"))
4597 (plugindir (string-append out "/lib/uwsgi")))
4598 ;; The build phase outputs files to these directories directly.
4599 (mkdir-p bindir)
4600 (mkdir-p plugindir)
4601 ;; XXX: Enable other plugins.
4602 (call-with-output-file "buildconf/guix.ini"
4603 (lambda (port)
4604 (format port "[uwsgi]
4605 yaml = libyaml
4606 bin_name = ~a/uwsgi
4607 plugin_dir = ~a
4608
4609 inherit = base
4610 plugins = cgi,python
4611 embedded_plugins =
4612 " bindir plugindir))))
4613 (setenv "PROFILE" "guix")
4614 #t))
4615 (replace 'install
4616 ;; Move plugins into their own output.
4617 (lambda* (#:key outputs #:allow-other-keys)
4618 (let* ((out (assoc-ref outputs "out"))
4619 (plugindir (string-append out "/lib/uwsgi"))
4620 (python-plugin (string-append
4621 plugindir "/python_plugin.so")))
4622 (install-file python-plugin
4623 (string-append
4624 (assoc-ref outputs "python") "/lib/uwsgi"))
4625 (delete-file python-plugin)
4626 #t))))))
4627 (native-inputs
4628 `(("pkg-config" ,pkg-config)
4629 ("python" ,python-wrapper)))
4630 (inputs
4631 `(("jansson" ,jansson)
4632 ("libxml2" ,libxml2)
4633 ("libyaml" ,libyaml)
4634 ("openssl" ,openssl)
4635 ("pcre" ,pcre)
4636 ("zlib" ,zlib)
4637 ;; For plugins.
4638 ("python" ,python)))
4639 (home-page "https://uwsgi-docs.readthedocs.org/")
4640 (synopsis "Application container server")
4641 (description
4642 "uWSGI presents a complete stack for networked/clustered web applications,
4643 implementing message/object passing, caching, RPC and process management.
4644 It uses the uwsgi protocol for all the networking/interprocess communications.")
4645 (license license:gpl2+))) ; with linking exception
4646
4647 (define-public jq
4648 (package
4649 (name "jq")
4650 (version "1.6")
4651 (source
4652 (origin
4653 (method url-fetch)
4654 (uri (string-append "https://github.com/stedolan/jq"
4655 "/releases/download/jq-" version
4656 "/jq-" version ".tar.gz"))
4657 (sha256
4658 (base32 "0wmapfskhzfwranf6515nzmm84r7kwljgfs7dg6bjgxakbicis2x"))
4659 (modules '((guix build utils)))
4660 (snippet
4661 '(begin
4662 ;; Remove bundled onigurama.
4663 (delete-file-recursively "modules")
4664 #t))))
4665 (inputs
4666 `(("oniguruma" ,oniguruma)))
4667 (native-inputs
4668 `(;; TODO fix gems to generate documentation
4669 ;;("ruby" ,ruby)
4670 ;;("bundler" ,bundler)
4671 ("valgrind" ,valgrind)))
4672 (build-system gnu-build-system)
4673 (home-page "https://stedolan.github.io/jq/")
4674 (synopsis "Command-line JSON processor")
4675 (description "jq is like sed for JSON data – you can use it to slice and
4676 filter and map and transform structured data with the same ease that sed, awk,
4677 grep and friends let you play with text. It is written in portable C. jq can
4678 mangle the data format that you have into the one that you want with very
4679 little effort, and the program to do so is often shorter and simpler than
4680 you'd expect.")
4681 (license (list license:expat license:cc-by3.0))))
4682
4683 (define-public uhttpmock
4684 (package
4685 (name "uhttpmock")
4686 (version "0.5.2")
4687 (source
4688 (origin
4689 (method url-fetch)
4690 (uri (string-append "http://tecnocode.co.uk/downloads/uhttpmock/"
4691 "uhttpmock-" version ".tar.xz"))
4692 (sha256
4693 (base32 "0glyx07kxc3s3cx5vp30kfgscl9q6bghcq1zysfyxm24r0h6j58p"))))
4694 (build-system glib-or-gtk-build-system)
4695 (native-inputs
4696 `(("gobject-introspection" ,gobject-introspection)
4697 ;; For check phase.
4698 ("glib-networking" ,glib-networking)
4699 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
4700 ("pkg-config" ,pkg-config)))
4701 (inputs
4702 `(("libsoup" ,libsoup)))
4703 (home-page "https://gitlab.com/groups/uhttpmock")
4704 (synopsis "Library for mocking web service APIs which use HTTP or HTTPS")
4705 (description
4706 "Uhttpmock is a project for mocking web service APIs which use HTTP or
4707 HTTPS. It provides a library, libuhttpmock, which implements recording and
4708 playback of HTTP request/response traces.")
4709 (license license:lgpl2.1+)))
4710
4711 (define-public woof
4712 (package
4713 (name "woof")
4714 (version "2012-05-31")
4715 (source (origin
4716 (method url-fetch)
4717 (uri (string-append
4718 "http://www.home.unix-ag.org/simon/woof-"
4719 version ".py"))
4720 (sha256
4721 (base32
4722 "0wjmjhpg6xlid33yi59j47q2qadz20sijrqsjahj30vngz856hyq"))))
4723 (build-system trivial-build-system)
4724 (arguments
4725 '(#:modules ((guix build utils))
4726 #:builder
4727 (begin
4728 (use-modules (guix build utils))
4729 (let* ((source (assoc-ref %build-inputs "source"))
4730 (out (assoc-ref %outputs "out"))
4731 (bin (string-append out "/bin"))
4732 (python (assoc-ref %build-inputs "python")))
4733 (mkdir-p bin)
4734 (with-directory-excursion bin
4735 (copy-file source "woof")
4736 (patch-shebang "woof" (list (string-append python "/bin")))
4737 (chmod "woof" #o555))
4738 #t))))
4739 (inputs `(("python" ,python-2)))
4740 (home-page "http://www.home.unix-ag.org/simon/woof.html")
4741 (synopsis "Single file web server")
4742 (description "Woof (Web Offer One File) is a small simple web server that
4743 can easily be invoked on a single file. Your partner can access the file with
4744 tools they trust (e.g. wget).")
4745 (license license:gpl2+)))
4746
4747 (define netsurf-buildsystem
4748 (package
4749 (name "netsurf-buildsystem")
4750 (version "1.9")
4751 (source
4752 (origin
4753 (method url-fetch)
4754 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
4755 "buildsystem-" version ".tar.gz"))
4756 (sha256
4757 (base32
4758 "0alsmaig9ln8dgllb3z63gq90fiz75jz0ic71fi0k0k898qix14k"))))
4759 (build-system gnu-build-system)
4760 (inputs `(("perl" ,perl)))
4761 (arguments
4762 '(#:make-flags (list (string-append "PREFIX=" %output))
4763 #:tests? #f ;no tests
4764 #:phases (modify-phases %standard-phases
4765 (delete 'configure)
4766 (delete 'build))))
4767 (home-page "https://www.netsurf-browser.org")
4768 (synopsis "Build system for the Netsurf project")
4769 (description
4770 "This package provides the shared build system for Netsurf project
4771 libraries.")
4772 (license license:expat)))
4773
4774 (define netsurf-buildsystem-arguments
4775 `(#:make-flags `("COMPONENT_TYPE=lib-shared"
4776 "CC=gcc" "BUILD_CC=gcc"
4777 ,(string-append "PREFIX=" %output)
4778 ,(string-append "NSSHARED="
4779 (assoc-ref %build-inputs
4780 "netsurf-buildsystem")
4781 "/share/netsurf-buildsystem"))
4782 #:test-target "test"
4783 #:phases (modify-phases %standard-phases
4784 (delete 'configure))))
4785
4786 (define-public libparserutils
4787 (package
4788 (name "libparserutils")
4789 (version "0.2.4")
4790 (source
4791 (origin
4792 (method url-fetch)
4793 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
4794 name "-" version "-src.tar.gz"))
4795 (sha256
4796 (base32
4797 "1n2794y2l0c8nv8z2pxwfnbn882987ifmxjv60zdxkhcndhswarj"))))
4798 (build-system gnu-build-system)
4799 (native-inputs
4800 `(("netsurf-buildsystem" ,netsurf-buildsystem)
4801 ("pkg-config" ,pkg-config)
4802 ("perl" ,perl))) ;for test harness
4803 (arguments netsurf-buildsystem-arguments)
4804 (home-page "https://www.netsurf-browser.org/projects/libparserutils/")
4805 (synopsis "Parser building library")
4806 (description
4807 "LibParserUtils is a library for building efficient parsers, written in
4808 C. It is developed as part of the NetSurf project.")
4809 (license license:expat)))
4810
4811 (define-public hubbub
4812 (package
4813 (name "hubbub")
4814 (version "0.3.7")
4815 (source
4816 (origin
4817 (method url-fetch)
4818 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
4819 "libhubbub-" version "-src.tar.gz"))
4820 (sha256
4821 (base32
4822 "1dimfyblmym98qa1b80c5jslv2zk8r44xbdrgrsrw1n9wr9y4yly"))
4823 (patches (search-patches "hubbub-sort-entities.patch"))))
4824 (build-system gnu-build-system)
4825 (native-inputs
4826 `(("netsurf-buildsystem" ,netsurf-buildsystem)
4827 ("pkg-config" ,pkg-config)
4828 ("doxygen" ,doxygen)
4829 ("json-c" ,json-c-0.12) ; check whether json-c-0.12 can be removed
4830 ("perl" ,perl)))
4831 (propagated-inputs
4832 `(("libparserutils" ,libparserutils))) ;for libhubbub.pc
4833 (arguments netsurf-buildsystem-arguments)
4834 (home-page "https://www.netsurf-browser.org/projects/hubbub/")
4835 (synopsis "HTML5 compliant parsing library")
4836 (description
4837 "Hubbub is an HTML5 compliant parsing library, written in C, which can
4838 parse both valid and invalid web content. It is developed as part of the
4839 NetSurf project.")
4840 (license license:expat)))
4841
4842 (define-public ikiwiki
4843 (package
4844 (name "ikiwiki")
4845 (version "3.20200202.3")
4846 (source
4847 (origin
4848 (method git-fetch)
4849 (uri (git-reference
4850 (url "git://git.ikiwiki.info/")
4851 (commit version)))
4852 (file-name (git-file-name name version))
4853 (sha256
4854 (base32
4855 "0fphyqzlk9y8v9s89ypsmrnbhyymzrpc2w0liy0n4knc7kk2pabq"))
4856 (snippet
4857 '(begin
4858 ;; The POT file requires write permission during the build
4859 ;; phase.
4860 (chmod "po/ikiwiki.pot" #o644)
4861 #t))))
4862 (build-system perl-build-system)
4863 (arguments
4864 `(#:phases
4865 (modify-phases %standard-phases
4866 (add-after 'patch-source-shebangs 'patch-Makefiles
4867 (lambda _
4868 (substitute* "Makefile.PL"
4869 (("SYSCONFDIR\\?=") "SYSCONFDIR?=$(PREFIX)"))
4870 (with-directory-excursion "po"
4871 (substitute* "Makefile"
4872 (("PERL5LIB=") "PERL5LIB=${PERL5LIB}:")))
4873 #t))
4874 (add-before 'build 'set-modification-times
4875 ;; The wiki '--refresh' steps, which are executed during
4876 ;; the check phase, require recent timestamps on files in
4877 ;; the 'doc' and 'underlays' directories.
4878 (lambda _
4879 (invoke "find" "doc" "underlays" "-type" "f" "-exec"
4880 "touch" "{}" "+")
4881 #t))
4882 (add-before 'check 'pre-check
4883 (lambda* (#:key inputs #:allow-other-keys)
4884 ;; Six tests use IPC::Run. For these tests the PERL5LIB
4885 ;; variable is needed in the runtime environment and also
4886 ;; in the search path list in the setup file.
4887 (substitute*
4888 '("t/aggregate-file.t" "t/git-cgi.t" "t/git-untrusted.t"
4889 "t/passwordauth.t" "t/relativity.t" "t/wrapper-environ.t")
4890 (("(.*)\"perl\"(.*)$" _ prefix suffix)
4891 (string-append prefix "qw(env), 'PERL5LIB='.$ENV{PERL5LIB}"
4892 ", qw(perl)" suffix))
4893 (("(.*) PERL5LIB=(.*) perl(.*)$" _ prefix middle suffix)
4894 (string-append prefix "), 'PERL5LIB='.$ENV{PERL5LIB}.':"
4895 middle "', qw(perl" suffix))
4896 (("(.*)setup(.* )getcwd(.*)$" _ prefix middle suffix)
4897 (string-append prefix "setup" middle
4898 "$ENV{PERL5LIB}.':'.getcwd" suffix))
4899 (("^ENV(.*): '(.*)$" _ middle suffix)
4900 (string-append "ENV" middle
4901 ": '$ENV{PERL5LIB}:" suffix)))
4902 ;; XDG_DATA_DIRS is needed by the podcast.t test.
4903 (setenv "XDG_DATA_DIRS"
4904 (string-append (assoc-ref inputs "shared-mime-info")
4905 "/share"))
4906 ;; CC is needed by IkiWiki/Wrapper.pm.
4907 (setenv "CC" "gcc")
4908 #t))
4909 (add-after 'install 'wrap-programs
4910 (lambda* (#:key outputs #:allow-other-keys)
4911 (let* ((out (assoc-ref outputs "out"))
4912 (bin (string-append out "/bin/"))
4913 (path (getenv "PERL5LIB")))
4914 (for-each (lambda (file)
4915 (wrap-program file
4916 `("PERL5LIB" ":" prefix (,path))))
4917 (find-files bin))
4918 #t))))))
4919 (native-inputs
4920 `(("which" ,which)
4921 ("gettext" ,gettext-minimal)
4922 ("subversion" ,subversion)
4923 ("git" ,git)
4924 ("bazaar" ,bazaar)
4925 ("cvs" ,cvs)
4926 ("mercurial" ,mercurial)))
4927 (inputs
4928 `(("python" ,python-wrapper)
4929 ("perl-authen-passphrase" ,perl-authen-passphrase)
4930 ("perl-cgi-simple" ,perl-cgi-simple)
4931 ("perl-db-file" ,perl-db-file)
4932 ("perl-file-mimeinfo" ,perl-file-mimeinfo)
4933 ("perl-html-tagset" ,perl-html-tagset)
4934 ("perl-image-magick" ,perl-image-magick)
4935 ("perl-ipc-run" ,perl-ipc-run)
4936 ("perl-lwpx-paranoidagent" ,perl-lwpx-paranoidagent)
4937 ("perl-xml-feed" ,perl-xml-feed)
4938 ("perl-xml-sax" ,perl-xml-sax)
4939 ("perl-xml-twig" ,perl-xml-twig)
4940 ("po4a" ,po4a)))
4941 (propagated-inputs
4942 `(("perl-cgi-formbuilder" ,perl-cgi-formbuilder)
4943 ("perl-cgi-session" ,perl-cgi-session)
4944 ("perl-html-parser" ,perl-html-parser)
4945 ("perl-html-scrubber" ,perl-html-scrubber)
4946 ("perl-html-template" ,perl-html-template)
4947 ("perl-json" ,perl-json)
4948 ("perl-mail-sendmail" ,perl-mail-sendmail)
4949 ("perl-text-markdown-discount" ,perl-text-markdown-discount)
4950 ("perl-timedate" ,perl-timedate)
4951 ("perl-uri" ,perl-uri)
4952 ("perl-xml-simple" ,perl-xml-simple)
4953 ("perl-yaml-libyaml" ,perl-yaml-libyaml)))
4954 (home-page "https://ikiwiki.info/")
4955 (synopsis "Wiki compiler, capable of generating HTML")
4956 (description
4957 "Ikiwiki is a wiki compiler, capable of generating a static set of web
4958 pages, but also incorporating dynamic features like a web based editor and
4959 commenting.")
4960 (license license:gpl2+)))
4961
4962 (define-public libwapcaplet
4963 (package
4964 (name "libwapcaplet")
4965 (version "0.4.3")
4966 (source
4967 (origin
4968 (method url-fetch)
4969 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
4970 "libwapcaplet-" version "-src.tar.gz"))
4971 (sha256
4972 (base32
4973 "0p0c2q9lsj4vs97aa7vjllfhw33zv3dpysdkjblzhib6dpfs2alv"))))
4974 (build-system gnu-build-system)
4975 (native-inputs
4976 `(("netsurf-buildsystem" ,netsurf-buildsystem)
4977 ("pkg-config" ,pkg-config)
4978 ("check" ,check))) ;for tests
4979 (arguments netsurf-buildsystem-arguments)
4980 (home-page "https://www.netsurf-browser.org/projects/libwapcaplet/")
4981 (synopsis "String internment library")
4982 (description
4983 "LibWapcaplet provides a reference counted string internment system
4984 designed to store small strings and allow rapid comparison of them. It is
4985 developed as part of the Netsurf project.")
4986 (license license:expat)))
4987
4988 (define-public libcss
4989 (package
4990 (name "libcss")
4991 (version "0.9.1")
4992 (source
4993 (origin
4994 (method url-fetch)
4995 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
4996 "libcss-" version "-src.tar.gz"))
4997 (sha256
4998 (base32
4999 "1p66sdiiqm7w4jkq23hsf08khsnmq93hshh9f9m8sbirjdpf3p6j"))))
5000 (build-system gnu-build-system)
5001 (native-inputs
5002 `(("netsurf-buildsystem" ,netsurf-buildsystem)
5003 ("pkg-config" ,pkg-config)
5004 ("perl" ,perl)))
5005 (propagated-inputs ;needed for libcss.pc
5006 `(("libparserutils" ,libparserutils)
5007 ("libwapcaplet" ,libwapcaplet)))
5008 (arguments netsurf-buildsystem-arguments)
5009 (home-page "https://www.netsurf-browser.org/projects/libcss/")
5010 (synopsis "CSS parser and selection library")
5011 (description
5012 "LibCSS is a CSS (Cascading Style Sheet) parser and selection engine,
5013 written in C. It is developed as part of the NetSurf project.")
5014 (license license:expat)))
5015
5016 (define-public libcyaml
5017 (package
5018 (name "libcyaml")
5019 (version "1.0.1")
5020 (source
5021 (origin
5022 (method git-fetch)
5023 (uri (git-reference
5024 (url "https://github.com/tlsa/libcyaml.git")
5025 (commit (string-append "v" version))))
5026 (file-name (git-file-name name version))
5027 (sha256
5028 (base32 "0h5ydyqdl8kzh526np3jsi0pm7ks16nh1hjkdsjcd6pacw7y6i6z"))))
5029 (build-system gnu-build-system)
5030 (arguments
5031 `(#:make-flags
5032 (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
5033 (string-append "CC=gcc"))
5034 #:phases
5035 (modify-phases %standard-phases
5036 (delete 'configure) ; no configure script
5037 (replace 'check
5038 (lambda _
5039 (setenv "CC" "gcc")
5040 (invoke "make" "test"))))))
5041 (inputs
5042 `(("libyaml" ,libyaml)))
5043 (native-inputs
5044 `(("pkg-config", pkg-config)))
5045 (synopsis "C library for reading and writing YAML")
5046 (description
5047 "LibCYAML is a C library written in ISO C11 for reading and writing
5048 structured YAML documents. The fundamental idea behind CYAML is to allow
5049 applications to construct schemas which describe both the permissible
5050 structure of the YAML documents to read/write, and the C data structure(s)
5051 in which the loaded data is arranged in memory.")
5052 (home-page "https://github.com/tlsa/libcyaml")
5053 (license license:isc)))
5054
5055 (define-public libdom
5056 (package
5057 (name "libdom")
5058 (version "0.4.1")
5059 (source
5060 (origin
5061 (method url-fetch)
5062 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
5063 "libdom-" version "-src.tar.gz"))
5064 (sha256
5065 (base32
5066 "0jpg5hx3y0mdxk5szd47dyijqimd2321brbqk2620pp5f4j0gvlq"))))
5067 (build-system gnu-build-system)
5068 (native-inputs
5069 `(("netsurf-buildsystem" ,netsurf-buildsystem)
5070 ("pkg-config" ,pkg-config)
5071 ("perl" ,perl) ;for test harness
5072 ("perl-libxml" ,perl-libxml)
5073 ("perl-switch" ,perl-switch)
5074 ("perl-xml-xpath" ,perl-xml-xpath)))
5075 (inputs
5076 `(("libparserutils" ,libparserutils)
5077 ("libwapcaplet" ,libwapcaplet)))
5078 (propagated-inputs
5079 `(("expat" ,expat) ;needed for headers and linking
5080 ("hubbub" ,hubbub))) ;for libdom.pc
5081 (arguments
5082 `(#:tests? #f ;TODO: re-enable. tests take a looong time.
5083 ,@netsurf-buildsystem-arguments))
5084 (home-page "https://www.netsurf-browser.org/projects/libdom/")
5085 (synopsis "Implementation of the W3C DOM")
5086 (description
5087 "LibDOM is an implementation of the W3C DOM, written in C. It is
5088 developed as part of the NetSurf project.")
5089 (license license:expat)))
5090
5091 (define-public libsvgtiny
5092 (package
5093 (name "libsvgtiny")
5094 (version "0.1.7")
5095 (source
5096 (origin
5097 (method url-fetch)
5098 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
5099 name "-" version "-src.tar.gz"))
5100 (sha256
5101 (base32
5102 "10bpkmvfpydj74im3r6kqm9vnvgib6afy0alx71q5n0w5yawy39c"))))
5103 (build-system gnu-build-system)
5104 (native-inputs
5105 `(("netsurf-buildsystem" ,netsurf-buildsystem)
5106 ("pkg-config" ,pkg-config)
5107 ("gperf" ,gperf-3.0)))
5108 (inputs
5109 `(("libwapcaplet" ,libwapcaplet)))
5110 (propagated-inputs
5111 `(("libdom" ,libdom))) ;for libsvgtiny.pc
5112 (arguments netsurf-buildsystem-arguments)
5113 (home-page "https://www.netsurf-browser.org/projects/libsvgtiny/")
5114 (synopsis "Library for parsing SVG files")
5115 (description
5116 "Libsvgtiny takes some SVG as input and returns a list of paths and texts
5117 which can be rendered easily, as defined in
5118 @url{http://www.w3.org/TR/SVGMobile/}. It is developed as part of the NetSurf
5119 project.")
5120 (license license:expat)))
5121
5122 (define-public libnsbmp
5123 (package
5124 (name "libnsbmp")
5125 (version "0.1.6")
5126 (source
5127 (origin
5128 (method url-fetch)
5129 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
5130 name "-" version "-src.tar.gz"))
5131 (sha256
5132 (base32
5133 "0krjg69a2amxjsahdgm3wmy9ngnyr3gfs2a1zhdlbvb0z1jr7i3r"))))
5134 (build-system gnu-build-system)
5135 (native-inputs
5136 `(("netsurf-buildsystem" ,netsurf-buildsystem)))
5137 (arguments netsurf-buildsystem-arguments)
5138 (home-page "https://www.netsurf-browser.org/projects/libnsbmp/")
5139 (synopsis "Decoding library for BMP and ICO files")
5140 (description
5141 "Libnsbmp is a decoding library for BMP and ICO image file formats,
5142 written in C. It is developed as part of the NetSurf project.")
5143 (license license:expat)))
5144
5145 (define-public libnsgif
5146 (package
5147 (name "libnsgif")
5148 (version "0.2.1")
5149 (source
5150 (origin
5151 (method url-fetch)
5152 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
5153 name "-" version "-src.tar.gz"))
5154 (sha256
5155 (base32
5156 "0jwshypgmx16xlsbx3d8njk8a5khazlplca5mxd3rdbhrlsabbly"))))
5157 (build-system gnu-build-system)
5158 (native-inputs
5159 `(("netsurf-buildsystem" ,netsurf-buildsystem)))
5160 (arguments netsurf-buildsystem-arguments)
5161 (home-page "https://www.netsurf-browser.org/projects/libnsgif/")
5162 (synopsis "Decoding library for GIF files")
5163 (description
5164 "Libnsgif is a decoding library for the GIF image file format, written in
5165 C. It is developed as part of the NetSurf project.")
5166 (license license:expat)))
5167
5168 (define-public libnslog
5169 (package
5170 (name "libnslog")
5171 (version "0.1.3")
5172 (source
5173 (origin
5174 (method url-fetch)
5175 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
5176 "libnslog-" version "-src.tar.gz"))
5177 (sha256
5178 (base32
5179 "1l2k0kdv9iv18svhv360vszjavhl4g09cp8a8yb719pgsylxr67w"))))
5180 (build-system gnu-build-system)
5181 (native-inputs
5182 `(("netsurf-buildsystem" ,netsurf-buildsystem)
5183 ("pkg-config" ,pkg-config)
5184 ("check" ,check) ; For tests
5185 ("bison" ,bison)
5186 ("flex" ,flex)))
5187 (arguments netsurf-buildsystem-arguments)
5188 (home-page "https://www.netsurf-browser.org/")
5189 (synopsis "Logging library")
5190 (description
5191 "Libnslog provides a category-based logging library which supports
5192 complex logging filters, multiple log levels, and provides context through to
5193 client applications. It is developed as part of the NetSurf project.")
5194 (license license:expat)))
5195
5196 (define-public libnsutils
5197 (package
5198 (name "libnsutils")
5199 (version "0.1.0")
5200 (source
5201 (origin
5202 (method url-fetch)
5203 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
5204 name "-" version "-src.tar.gz"))
5205 (sha256
5206 (base32
5207 "1w5fyy2i60a3v3if3iqcn9sy9sycx6966rcx53v85gja6hb6a33r"))))
5208 (build-system gnu-build-system)
5209 (native-inputs
5210 `(("netsurf-buildsystem" ,netsurf-buildsystem)))
5211 (arguments netsurf-buildsystem-arguments)
5212 (home-page "https://www.netsurf-browser.org/")
5213 (synopsis "Utility library for NetSurf")
5214 (description
5215 "Libnsutils provides a small number of useful utility routines. It is
5216 developed as part of the NetSurf project.")
5217 (license license:expat)))
5218
5219 (define-public libnspsl
5220 (package
5221 (name "libnspsl")
5222 (version "0.1.6")
5223 (source
5224 (origin
5225 (method url-fetch)
5226 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
5227 "libnspsl-" version "-src.tar.gz"))
5228 (sha256
5229 (base32
5230 "02q28n5i6fwqcz1nn167rb71k1q95mx38mfah6zi1lvqrc2q5ifk"))))
5231 (build-system gnu-build-system)
5232 (native-inputs
5233 `(("netsurf-buildsystem" ,netsurf-buildsystem)))
5234 (arguments netsurf-buildsystem-arguments)
5235 (home-page "https://www.netsurf-browser.org/")
5236 (synopsis "Library to generate a static Public Suffix List")
5237 (description
5238 "Libnspsl is a library to generate a static code representation of the
5239 Public Suffix List. It is developed as part of the NetSurf project.")
5240 (license license:expat)))
5241
5242 (define-public nsgenbind
5243 (package
5244 (name "nsgenbind")
5245 (version "0.8")
5246 (source
5247 (origin
5248 (method url-fetch)
5249 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
5250 "nsgenbind-" version "-src.tar.gz"))
5251 (sha256
5252 (base32
5253 "1cqwgwca49jvmijwiyaab2bwxicgxdrnlpinf8kp3nha02nm73ad"))))
5254 (build-system gnu-build-system)
5255 (native-inputs
5256 `(("netsurf-buildsystem" ,netsurf-buildsystem)
5257 ("bison" ,bison)
5258 ("flex" ,flex)))
5259 (arguments
5260 (substitute-keyword-arguments netsurf-buildsystem-arguments
5261 ((#:make-flags flags)
5262 `(delete "COMPONENT_TYPE=lib-shared" ,flags))))
5263 (home-page "https://www.netsurf-browser.org/")
5264 (synopsis "Generate JavaScript to DOM bindings")
5265 (description
5266 "@code{nsgenbind} is a tool to generate JavaScript to DOM bindings from
5267 w3c webidl files and a binding configuration file.")
5268 (license license:expat)))
5269
5270 (define-public netsurf
5271 (package
5272 (name "netsurf")
5273 (version "3.10")
5274 (source
5275 (origin
5276 (method url-fetch)
5277 (uri (string-append "https://download.netsurf-browser.org/netsurf/"
5278 "releases/source/netsurf-" version "-src.tar.gz"))
5279 (sha256
5280 (base32
5281 "0plra64c5xyiw12yx2q13brxsv8apmany97zqa2lcqckw4ll8j1n"))
5282 (patches (search-patches "netsurf-system-utf8proc.patch"
5283 "netsurf-y2038-tests.patch"
5284 "netsurf-longer-test-timeout.patch"
5285 "netsurf-message-timestamp.patch"))))
5286 (build-system glib-or-gtk-build-system)
5287 (native-inputs
5288 `(("netsurf-buildsystem" ,netsurf-buildsystem)
5289 ("nsgenbind" ,nsgenbind)
5290 ("libidn" ,libidn) ;only for tests
5291 ("check" ,check)
5292 ("perl" ,perl)
5293 ("perl-html-parser" ,perl-html-parser)
5294 ("pkg-config" ,pkg-config)
5295 ("xxd" ,xxd)))
5296 (inputs
5297 `(("curl" ,curl)
5298 ("gtk+" ,gtk+)
5299 ("openssl" ,openssl)
5300 ("utf8proc" ,utf8proc)
5301 ("libpng" ,libpng)
5302 ("libjpeg" ,libjpeg-turbo)
5303 ("libcss" ,libcss)
5304 ("libdom" ,libdom)
5305 ("libnsbmp" ,libnsbmp)
5306 ("libnsgif" ,libnsgif)
5307 ("libnslog" ,libnslog)
5308 ("libnspsl" ,libnspsl)
5309 ("libnsutils" ,libnsutils)
5310 ("libsvgtiny" ,libsvgtiny)
5311 ("miscfiles" ,miscfiles)))
5312 (arguments
5313 `(#:make-flags `("CC=gcc" "BUILD_CC=gcc"
5314 "TARGET=gtk3"
5315 ,(string-append "PREFIX=" %output)
5316 ,(string-append "NSSHARED="
5317 (assoc-ref %build-inputs
5318 "netsurf-buildsystem")
5319 "/share/netsurf-buildsystem"))
5320 #:test-target "test"
5321 #:modules ((ice-9 rdelim)
5322 (ice-9 match)
5323 (srfi srfi-1)
5324 (sxml simple)
5325 ,@%glib-or-gtk-build-system-modules)
5326 #:phases
5327 (modify-phases %standard-phases
5328 (delete 'configure)
5329 (add-after 'build 'adjust-welcome
5330 (lambda _
5331 (substitute* "frontends/gtk/res/welcome.html"
5332 ;; Close some XHTML tags.
5333 (("<(img|input)([^>]*)>" _ tag contents)
5334 (string-append "<" tag contents " />"))
5335 ;; Increase freedom.
5336 ((" open source") ", free software")
5337 ;; Prefer a more privacy-respecting default search engine.
5338 (("www.google.co.uk") "www.duckduckgo.com/html")
5339 (("Google Search") "DuckDuckGo Search")
5340 (("name=\"btnG\"") ""))
5341 ;; Remove default links so it doesn't seem we're endorsing them.
5342 (with-atomic-file-replacement "frontends/gtk/res/welcome.html"
5343 (lambda (in out)
5344 ;; Leave the DOCTYPE header as is.
5345 (display (read-line in 'concat) out)
5346 (sxml->xml
5347 (let rec ((sxml (xml->sxml in
5348 #:default-entity-handler
5349 (lambda (port name)
5350 (string-append "<ENTITY>"
5351 (symbol->string name)
5352 "</ENTITY>")))))
5353 ;; We'd like to use sxml-match here, but it can't
5354 ;; match against generic tag symbols...
5355 (match sxml
5356 (`(div (@ (class "links")) . ,rest)
5357 '())
5358 (`(ENTITY ,ent)
5359 `(*ENTITY* ,ent))
5360 ((x ...)
5361 (map rec x))
5362 (x x)))
5363 out)))
5364 #t))
5365 (add-before 'check 'patch-check
5366 (lambda* (#:key inputs #:allow-other-keys)
5367 (substitute* '("test/bloom.c" "test/hashtable.c")
5368 (("/usr/share/dict/words")
5369 (string-append (assoc-ref inputs "miscfiles") "/share/web2")))
5370 #t))
5371 (add-after 'install 'install-more
5372 (lambda* (#:key outputs #:allow-other-keys)
5373 (let* ((out (assoc-ref outputs "out"))
5374 (desktop (string-append out "/share/applications/"
5375 "netsurf.desktop")))
5376 (mkdir-p (dirname desktop))
5377 (copy-file "frontends/gtk/res/netsurf-gtk.desktop"
5378 desktop)
5379 (substitute* desktop
5380 (("netsurf-gtk") (string-append out "/bin/netsurf-gtk3"))
5381 (("netsurf.png") (string-append out "/share/netsurf/"
5382 "netsurf.xpm")))
5383 (install-file "docs/netsurf-gtk.1"
5384 (string-append out "/share/man/man1/"))
5385 #t))))))
5386 (home-page "https://www.netsurf-browser.org")
5387 (synopsis "Web browser")
5388 (description
5389 "NetSurf is a lightweight web browser that has its own layout and
5390 rendering engine entirely written from scratch. It is small and capable of
5391 handling many of the web standards in use today.")
5392 (license license:gpl2+)))
5393
5394 (define-public surfraw
5395 (package
5396 (name "surfraw")
5397 (version "2.3.0")
5398 (source
5399 (origin
5400 (method url-fetch)
5401 (uri (string-append "https://gitlab.com/surfraw/Surfraw/uploads/"
5402 "2de827b2786ef2fe43b6f07913ca7b7f/"
5403 "surfraw-" version ".tar.gz"))
5404 (sha256
5405 (base32 "099nbif0x5cbcf18snc58nx1a3q7z0v9br9p2jiq9pcc7ic2015d"))))
5406 (build-system gnu-build-system)
5407 (arguments
5408 `(#:phases
5409 (modify-phases %standard-phases
5410 (add-before 'configure 'patch-perl
5411 (lambda* (#:key inputs #:allow-other-keys)
5412 (let ((perl (assoc-ref inputs "perl")))
5413 (substitute* "surfraw.IN"
5414 (("perl -e")
5415 (string-append perl "/bin/perl -e")))
5416 #t)))
5417 (add-after 'install 'compress-elvi.1sr
5418 (lambda* (#:key outputs #:allow-other-keys)
5419 ;; The manpages of the elvis are symlinks to elvi.1sr.gz
5420 ;; but elvi.1sr does not get compressed by our manpage phase.
5421 (let* ((out (assoc-ref %outputs "out"))
5422 (man (string-append out "/share/man/man1")))
5423 (with-directory-excursion man
5424 (invoke "gzip" "elvi.1sr"))))))))
5425 (inputs
5426 `(("perl" ,perl)
5427 ("perl-www-opensearch" ,perl-www-opensearch)
5428 ("perl-html-parser" ,perl-html-parser)
5429 ("perl-libwww" ,perl-libwww)))
5430 (synopsis "Unix command line interface to the www")
5431 (description "Surfraw (Shell Users' Revolutionary Front Rage Against the Web)
5432 provides a unix command line interface to a variety of popular www search engines
5433 and similar services.")
5434 (home-page "https://surfraw.alioth.debian.org/")
5435 (license license:public-domain)))
5436
5437 (define-public darkhttpd
5438 (package
5439 (name "darkhttpd")
5440 (version "1.12")
5441 (source
5442 (origin
5443 (method url-fetch)
5444 (uri (string-append "https://unix4lyfe.org/darkhttpd/darkhttpd-"
5445 version ".tar.bz2"))
5446 (sha256
5447 (base32
5448 "0185wlyx4iqiwfigp1zvql14zw7gxfacncii3d15yaxk4av1f155"))))
5449 (build-system gnu-build-system)
5450 (arguments
5451 `(#:make-flags '("CC=gcc")
5452 #:tests? #f ; No test suite
5453 #:phases
5454 (modify-phases %standard-phases
5455 (delete 'configure)
5456 (replace 'install
5457 (lambda* (#:key outputs #:allow-other-keys)
5458 (install-file "darkhttpd"
5459 (string-append (assoc-ref outputs "out")
5460 "/bin"))
5461 #t)))))
5462 (synopsis "Simple static web server")
5463 (description "darkhttpd is a simple static web server. It is
5464 standalone and does not need inetd or ucspi-tcp. It does not need any
5465 config files---you only have to specify the www root.")
5466 (home-page "https://unix4lyfe.org/darkhttpd/")
5467 (license license:isc)))
5468
5469 (define-public goaccess
5470 (package
5471 (name "goaccess")
5472 (version "1.0.2")
5473 (source (origin
5474 (method url-fetch)
5475 (uri (string-append "http://tar.goaccess.io/goaccess-"
5476 version ".tar.gz"))
5477 (sha256
5478 (base32
5479 "1w84y61f3ldg2f28q6qlyr1scn3mcx0bsbq3i5xi5w193wh3xa2q"))
5480 (modules '((guix build utils)))
5481 (snippet '(begin
5482 (substitute* "src/error.h"
5483 (("__DATE__") "\"1970-01-01\"")
5484 (("__TIME__") "\"00:00:00\""))
5485 #t))))
5486 (build-system gnu-build-system)
5487 (inputs
5488 ;; TODO: Add dependency on geoip-tools.
5489 `(("glib" ,glib)
5490 ("ncurses" ,ncurses)))
5491 (native-inputs
5492 `(("pkg-config" ,pkg-config)))
5493 (home-page "https://goaccess.io")
5494 (synopsis "Analyze Web server logs in real time")
5495 (description
5496 "GoAccess is a real-time web log analyzer and interactive viewer that
5497 runs in a terminal or through your browser. It provides fast and valuable
5498 HTTP statistics for system administrators that require a visual server report
5499 on the fly.")
5500 (license license:x11)))
5501
5502 (define-public hitch
5503 (package
5504 (name "hitch")
5505 (version "1.5.2")
5506 (home-page "https://hitch-tls.org/")
5507 (source (origin
5508 (method url-fetch)
5509 (uri (string-append home-page "source/hitch-" version ".tar.gz"))
5510 (sha256
5511 (base32
5512 "1nnzqqigfw78nqhp81a72x1s8d6v49ayw4w5df0zzm2cb1jgv95i"))))
5513 (build-system gnu-build-system)
5514 (arguments
5515 `(#:phases (modify-phases %standard-phases
5516 (add-before 'check 'pre-check
5517 (lambda _
5518 ;; Most tests attempts to access hitch-tls.org which is
5519 ;; unavailable in the build container. Run them against
5520 ;; a dummy local web server instead.
5521 (for-each (lambda (test)
5522 (substitute* test
5523 (("\\[hitch-tls\\.org\\]:80")
5524 "[localhost]:8000")))
5525 (find-files "src/tests" "\\.sh$"))
5526 (system "python3 -m http.server &")
5527
5528 ;; The build container does not reap zombie processes,
5529 ;; causing stop_hitch to hang indefinitely while waiting
5530 ;; for the process to terminate because 'kill -0' never
5531 ;; succeeds. Use a different test to see whether the
5532 ;; process has shut down.
5533 (substitute* "src/tests/hitch_test.sh"
5534 (("kill -0 \"\\$HITCH_PID\"")
5535 "$(ps -p $HITCH_PID -o state= | grep -qv '^Z$')"))
5536 #t)))))
5537 (native-inputs
5538 `(("pkg-config" ,pkg-config)
5539
5540 ;; For tests.
5541 ("curl" ,curl)
5542 ("egrep" ,grep)
5543 ("lsof" ,lsof)
5544 ("python" ,python)))
5545 (inputs
5546 `(("libev" ,libev)
5547 ("openssl" ,openssl)))
5548 (synopsis "Scalable TLS proxy")
5549 (description
5550 "Hitch is a performant TLS proxy based on @code{libev}. It terminates
5551 SSL/TLS connections and forwards the unencrypted traffic to a backend such
5552 as a web server. It is designed to handle many thousand connections on
5553 multicore machines.")
5554 (license license:bsd-2)))
5555
5556 (define-public httptunnel
5557 (package
5558 (name "httptunnel")
5559 (version "3.3")
5560 (source
5561 (origin
5562 (method url-fetch)
5563 (uri (string-append "http://www.nocrew.org/software/httptunnel/"
5564 name "-" version ".tar.gz"))
5565 (sha256
5566 (base32
5567 "0mn5s6p68n32xzadz6ds5i6bp44dyxzkq68r1yljlv470jr84bql"))
5568 (modules '((guix build utils)))
5569 (snippet '(begin
5570 ;; Remove non-free IETF RFC documentation.
5571 (delete-file-recursively "doc")
5572 #t))))
5573 (build-system gnu-build-system)
5574 (arguments
5575 `(#:phases
5576 (modify-phases %standard-phases
5577 ;; The default configure phase tries to pass environment variables as
5578 ;; command-line arguments, which confuses the ./configure script.
5579 (replace 'configure
5580 (lambda* (#:key outputs #:allow-other-keys)
5581 (let* ((out (assoc-ref outputs "out")))
5582 (setenv "CONFIG_SHELL" (which "bash"))
5583 (invoke "./configure"
5584 (string-append "--prefix=" out))))))))
5585 (home-page "http://www.nocrew.org/software/httptunnel.html")
5586 (synopsis "Tunnel data connections through HTTP requests")
5587 (description "httptunnel creates a bidirectional virtual data connection
5588 tunnelled through HTTP (HyperText Transfer Protocol) requests. This can be
5589 useful for users behind restrictive firewalls. As long as Web traffic is
5590 allowed, even through a HTTP-only proxy, httptunnel can be combined with other
5591 tools like SSH (Secure Shell) to reach the outside world.")
5592 (license license:gpl2+)))
5593
5594 (define-public stunnel
5595 (package
5596 (name "stunnel")
5597 (version "5.56")
5598 (source
5599 (origin
5600 (method url-fetch)
5601 (uri (string-append "https://www.stunnel.org/downloads/stunnel-"
5602 version ".tar.gz"))
5603 (sha256
5604 (base32 "08kb4gi9fzqngrczykvba6xhaxhq9m4wmdbhxvgrva5rasrvz13k"))))
5605 (build-system gnu-build-system)
5606 (native-inputs
5607 ;; For tests.
5608 `(("iproute" ,iproute)
5609 ("netcat" ,netcat)
5610 ("procps" ,procps)))
5611 (inputs `(("openssl" ,openssl)))
5612 (arguments
5613 `(#:configure-flags
5614 (list (string-append "--with-ssl=" (assoc-ref %build-inputs "openssl")))
5615 #:phases
5616 (modify-phases %standard-phases
5617 (add-after 'unpack 'patch-output-directories
5618 (lambda _
5619 ;; Some (not all) Makefiles have a hard-coded incorrect docdir.
5620 (substitute* (list "Makefile.in"
5621 "doc/Makefile.in"
5622 "tools/Makefile.in")
5623 (("/doc/stunnel")
5624 (string-append "/doc/" ,name "-" ,version)))
5625 #t))
5626 (add-before 'check 'patch-tests
5627 (lambda _
5628 (substitute* "tests/make_test"
5629 (("/bin/sh ")
5630 (string-append (which "sh") " ")))
5631 #t)))))
5632 (home-page "https://www.stunnel.org")
5633 (synopsis "TLS proxy for clients or servers")
5634 (description "Stunnel is a proxy designed to add TLS encryption
5635 functionality to existing clients and servers without any changes in the
5636 programs' code. Its architecture is optimized for security, portability, and
5637 scalability (including load-balancing), making it suitable for large
5638 deployments.")
5639 (license license:gpl2+)))
5640
5641 (define-public varnish
5642 (package
5643 (name "varnish")
5644 (home-page "https://varnish-cache.org/")
5645 (version "6.4.0")
5646 (source (origin
5647 (method url-fetch)
5648 (uri (string-append home-page "_downloads/varnish-" version ".tgz"))
5649 (sha256
5650 (base32
5651 "1hkn98vbxk7rc1sd08367qn6rcv8wkxgwbmm1x46y50vi0nvldpn"))))
5652 (build-system gnu-build-system)
5653 (arguments
5654 `(#:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")
5655 ;; Use absolute path of GCC so it's found at runtime.
5656 (string-append "PTHREAD_CC="
5657 (assoc-ref %build-inputs "gcc")
5658 "/bin/gcc")
5659 "--localstatedir=/var")
5660 #:phases
5661 (modify-phases %standard-phases
5662 (add-after 'unpack 'use-absolute-file-names
5663 (lambda _
5664 (substitute* '("bin/varnishtest/vtc_varnish.c"
5665 "bin/varnishtest/vtc_process.c"
5666 "bin/varnishd/mgt/mgt_vcc.c"
5667 "bin/varnishtest/tests/u00014.vtc")
5668 (("/bin/sh") (which "sh")))
5669 (substitute* "bin/varnishd/mgt/mgt_shmem.c"
5670 (("rm -rf") (string-append (which "rm") " -rf")))
5671 (substitute* "bin/varnishtest/vtc_main.c"
5672 (("/bin/rm") (which "rm")))
5673 #t))
5674 (add-before 'install 'patch-Makefile
5675 (lambda _
5676 (substitute* "Makefile"
5677 ;; Do not create /var/varnish during install.
5678 (("^install-data-am: install-data-local") "install-data-am: "))
5679 #t))
5680 (add-after 'install 'wrap-varnishd
5681 ;; Varnish uses GCC to compile VCL, so wrap it with required GCC
5682 ;; environment variables to avoid propagating them to profiles.
5683 (lambda* (#:key inputs outputs #:allow-other-keys)
5684 (let* ((out (assoc-ref outputs "out"))
5685 (varnishd (string-append out "/sbin/varnishd"))
5686 (PATH (string-append (assoc-ref inputs "binutils") "/bin"))
5687 (LIBRARY_PATH (string-append (assoc-ref inputs "libc") "/lib")))
5688 (wrap-program varnishd
5689 ;; Add binutils to PATH so gcc finds the 'as' executable.
5690 `("PATH" ":" prefix (,PATH))
5691 ;; Make sure 'crti.o' et.al is found.
5692 `("LIBRARY_PATH" ":" prefix (,LIBRARY_PATH)))
5693 #t))))))
5694 (native-inputs
5695 `(("pkg-config" ,pkg-config)
5696 ("python-sphinx" ,python-sphinx)
5697 ("rst2man" ,python-docutils)))
5698 (inputs
5699 `(("jemalloc" ,jemalloc)
5700 ("ncurses" ,ncurses)
5701 ("pcre" ,pcre)
5702 ("python" ,python-wrapper)
5703 ("readline" ,readline)))
5704 (synopsis "Web application accelerator")
5705 (description
5706 "Varnish is a high-performance HTTP accelerator. It acts as a caching
5707 reverse proxy and load balancer. You install it in front of any server that
5708 speaks HTTP and configure it to cache the contents through an extensive
5709 configuration language.")
5710 (license (list license:bsd-2 ;main distribution
5711 license:zlib ;lib/libvgz/*
5712 license:public-domain ;bin/varnishncsa/as64.c, include/miniobj.h
5713 license:bsd-3)))) ;include/vqueue.h, lib/libvarnishcompat/daemon.c
5714
5715 (define-public varnish-modules
5716 (package
5717 (name "varnish-modules")
5718 (home-page "https://github.com/varnish/varnish-modules")
5719 (version "0.16.0")
5720 (source (origin
5721 (method url-fetch)
5722 (uri (string-append "https://github.com/varnish/varnish-modules"
5723 "/releases/download/varnish-modules-" version
5724 "/varnish-modules-" version ".tar.gz"))
5725 (sha256
5726 (base32
5727 "1ph5bplsip4rycql1c2hgbvmrwbgcrgv2ldgfp7saxxbsv5cpcds"))))
5728 (build-system gnu-build-system)
5729 (native-inputs
5730 `(("pkg-config" ,pkg-config)))
5731 (inputs
5732 `(("python" ,python)
5733 ("varnish" ,varnish)))
5734 (synopsis "Collection of Varnish modules")
5735 (description
5736 "This package provides a collection of modules (@dfn{vmods}) for the Varnish
5737 cache server, extending the @acronym{VCL, Varnish Configuration Language} with
5738 additional capabilities.")
5739 (license license:bsd-2)))
5740
5741 (define-public xinetd
5742 (package
5743 (name "xinetd")
5744 ;; This is the maintenance fork currently used by openSUSE and Debian.
5745 (version "2.3.15.4")
5746 (source
5747 (origin
5748 (method git-fetch)
5749 (uri (git-reference
5750 (url "https://github.com/openSUSE/xinetd.git")
5751 (commit version)))
5752 (file-name (git-file-name name version))
5753 (sha256
5754 (base32 "0lrp3lcj6azhjplwxws2rx40bkyp6i6bp7n77ndcisb7ninad30q"))))
5755 (build-system gnu-build-system)
5756 (arguments
5757 `(#:configure-flags '("--with-loadavg")
5758 #:tests? #f)) ; no tests
5759 (native-inputs
5760 `(("autoconf" ,autoconf)
5761 ("automake" ,automake)
5762 ("libtool" ,libtool)
5763 ("pkg-config" ,pkg-config)))
5764 (home-page "https://github.com/openSUSE/xinetd")
5765 (synopsis "Internet services daemon")
5766 (description "@code{xinetd}, a more secure replacement for @code{inetd},
5767 listens for incoming requests over a network and launches the appropriate
5768 service for that request. Requests are made using port numbers as identifiers
5769 and xinetd usually launches another daemon to handle the request. It can be
5770 used to start services with both privileged and non-privileged port numbers.")
5771 (license (license:fsf-free "file://COPYRIGHT"))))
5772
5773 (define-public tidy-html
5774 (package
5775 (name "tidy-html")
5776 (version "5.6.0")
5777 (source
5778 (origin
5779 (method git-fetch)
5780 (uri (git-reference
5781 (url "https://github.com/htacg/tidy-html5")
5782 (commit version)))
5783 (file-name (git-file-name name version))
5784 (sha256
5785 (base32
5786 "0w175c5d1babq0w1zzdzw9gl6iqbgyq58v8587s7srp05y3hwy9k"))))
5787 (build-system cmake-build-system)
5788 (outputs '("out"
5789 "static")) ; 1.3MiB of .a files
5790 (arguments
5791 `(#:tests? #f ; no tests available
5792 #:build-type "Release"
5793 #:phases
5794 (modify-phases %standard-phases
5795 (add-after 'install 'move-static-libraries
5796 (lambda* (#:key outputs #:allow-other-keys)
5797 ;; Move static libraries to the "static" output.
5798 (let* ((out (assoc-ref outputs "out"))
5799 (lib (string-append out "/lib"))
5800 (static (assoc-ref outputs "static"))
5801 (slib (string-append static "/lib")))
5802 (mkdir-p slib)
5803 (for-each (lambda (file)
5804 (install-file file slib)
5805 (delete-file file))
5806 (find-files lib "\\.a$"))
5807 #t))))))
5808 (native-inputs
5809 `(("libxslt" ,libxslt)))
5810 (home-page "http://www.html-tidy.org/")
5811 (synopsis "HTML Tidy with HTML5 support")
5812 (description
5813 "Tidy is a console application which corrects and cleans up
5814 HTML and XML documents by fixing markup errors and upgrading
5815 legacy code to modern standards.
5816
5817 Tidy also provides @code{libtidy}, a C static and dynamic library that
5818 developers can integrate into their applications to make use of the
5819 functions of Tidy.")
5820 (license license:bsd-3)))
5821
5822 (define-public hiawatha
5823 (package
5824 (name "hiawatha")
5825 (version "10.10")
5826 (source
5827 (origin
5828 (method url-fetch)
5829 (uri (string-append "https://www.hiawatha-webserver.org/files/"
5830 "hiawatha-" version ".tar.gz"))
5831 (modules '((guix build utils)))
5832 (snippet '(begin
5833 ;; We use packaged libraries, so delete the bundled copies.
5834 (for-each delete-file-recursively
5835 (list "extra/nghttp2.tgz" "mbedtls"))
5836 #t))
5837 (sha256
5838 (base32 "1nd46cx1qp5lh2kwnn2mlwk9zm8jm7pgf90xs9vpwr7saxbnzr5m"))))
5839 (build-system cmake-build-system)
5840 (arguments
5841 `(#:tests? #f ; no tests included
5842 #:configure-flags (list (string-append "-DUSE_SYSTEM_MBEDTLS=on")
5843 (string-append "-DENABLE_HTTP2=on")
5844 (string-append "-DUSE_SYSTEM_NGHTTP2=on")
5845 (string-append "-DENABLE_TOMAHAWK=on")
5846 (string-append "-DLOG_DIR=/var/log/hiawatha")
5847 (string-append "-DPID_DIR=/run")
5848 (string-append "-DWEBROOT_DIR="
5849 (assoc-ref %outputs "out")
5850 "/share/hiawatha/html")
5851 (string-append "-DWORK_DIR=/var/lib/hiawatha"))
5852 #:phases
5853 (modify-phases %standard-phases
5854 (add-after 'unpack 'install-no-empty-directories
5855 (lambda _
5856 (substitute* "CMakeLists.txt"
5857 (("install\\(DIRECTORY DESTINATION" match)
5858 (string-append "#" match)))
5859 #t))
5860 (add-after 'install 'wrap
5861 (lambda* (#:key inputs outputs #:allow-other-keys)
5862 ;; Make sure 'hiawatha' finds 'mbedtls'.
5863 (let* ((out (assoc-ref outputs "out"))
5864 (sbin (string-append out "/sbin"))
5865 (mbed (assoc-ref inputs "mbedtls-apache")))
5866 (wrap-program (string-append sbin "/hiawatha")
5867 `("PATH" ":" prefix (,mbed)))))))))
5868 (inputs
5869 ;; TODO: package "hiawatha-monitor", an optional dependency of "hiawatha".
5870 `(("libxslt" ,libxslt)
5871 ("libxml2" ,libxml2)
5872 ("mbedtls-apache" ,mbedtls-for-hiawatha)
5873 ("nghttp2" ,nghttp2 "lib")
5874 ("zlib" ,zlib)))
5875 (home-page "https://www.hiawatha-webserver.org")
5876 (synopsis "Webserver with focus on security")
5877 (description
5878 "Hiawatha has been written with security in mind.
5879 Features include the ability to stop SQL injections, XSS and CSRF attacks and
5880 exploit attempts.")
5881 (license license:gpl2)))
5882
5883 (define-public python-httpbin
5884 (package
5885 (name "python-httpbin")
5886 (version "0.5.0")
5887 (source
5888 (origin
5889 (method url-fetch)
5890 (uri (pypi-uri "httpbin" version))
5891 (sha256
5892 (base32
5893 "1dc92lnk846hpilslrqnr63x55cxll4qx88gif8fm521gv9cbyvr"))))
5894 (build-system python-build-system)
5895 (propagated-inputs
5896 `(("python-decorator" ,python-decorator)
5897 ("python-flask" ,python-flask)
5898 ("python-itsdangerous" ,python-itsdangerous)
5899 ("python-markupsafe" ,python-markupsafe)
5900 ("python-six" ,python-six)))
5901 (home-page "https://github.com/Runscope/httpbin")
5902 (synopsis "HTTP request and response service")
5903 (description "Testing an HTTP Library can become difficult sometimes.
5904 @code{RequestBin} is fantastic for testing POST requests, but doesn't let you control the
5905 response. This exists to cover all kinds of HTTP scenarios. All endpoint responses are
5906 JSON-encoded.")
5907 (license license:isc)))
5908
5909 (define-public python2-httpbin
5910 (package-with-python2 python-httpbin))
5911
5912 (define-public python-pytest-httpbin
5913 (package
5914 (name "python-pytest-httpbin")
5915 (version "0.2.3")
5916 (source
5917 (origin
5918 (method url-fetch)
5919 (uri (pypi-uri "pytest-httpbin" version))
5920 (sha256
5921 (base32
5922 "1y0v2v7xpzpyd4djwp7ad8ifnlxp8r1y6dfbxg5ckzvllkgridn5"))))
5923 (build-system python-build-system)
5924 (propagated-inputs
5925 `(("python-six" ,python-six)
5926 ("python-httpbin" ,python-httpbin)
5927 ("python-pytest" ,python-pytest)))
5928 (home-page
5929 "https://github.com/kevin1024/pytest-httpbin")
5930 (synopsis
5931 "Test your HTTP library against a local copy of httpbin")
5932 (description
5933 "@code{Pytest-httpbin} creates a @code{pytest} fixture that is dependency-injected
5934 into your tests. It automatically starts up a HTTP server in a separate thread running
5935 @code{httpbin} and provides your test with the URL in the fixture.")
5936 (license license:expat)))
5937
5938 (define-public python2-pytest-httpbin
5939 (package-with-python2 python-pytest-httpbin))
5940
5941 (define-public http-parser
5942 (package
5943 (name "http-parser")
5944 (version "2.9.4")
5945 (home-page "https://github.com/nodejs/http-parser")
5946 (source
5947 (origin
5948 (method git-fetch)
5949 (uri (git-reference (url home-page)
5950 (commit (string-append "v" version))))
5951 (sha256
5952 (base32 "1vda4dp75pjf5fcph73sy0ifm3xrssrmf927qd1x8g3q46z0cv6c"))
5953 (file-name (git-file-name name version))
5954 (patches
5955 (list
5956 (origin
5957 ;; Treat an empty port (e.g. `http://hostname:/`) when parsing
5958 ;; URLs as if no port were specified. This patch is applied
5959 ;; to Fedora's http-parser and to libgit2's bundled version.
5960 (method url-fetch)
5961 (uri (string-append
5962 "https://src.fedoraproject.org/rpms/http-parser/raw/"
5963 "e89b4c4e2874c19079a5a1a2d2ccc61b551aa289/"
5964 "f/0001-url-treat-empty-port-as-default.patch"))
5965 (sha256
5966 (base32
5967 "0pbxf2nq9pcn299k2b2ls8ldghaqln9glnp79gi57mamx4iy0f6g")))))))
5968 (build-system gnu-build-system)
5969 (arguments
5970 `(#:test-target "test"
5971 #:make-flags
5972 (list (string-append "PREFIX="
5973 (assoc-ref %outputs "out"))
5974 "library"
5975 ,@(if (%current-target-system)
5976 '()
5977 '("CC=gcc")))
5978 #:phases
5979 (modify-phases %standard-phases
5980 ,@(match (%current-system)
5981 ("armhf-linux"
5982 '((add-before 'check 'apply-assertion.patch
5983 (lambda* (#:key inputs #:allow-other-keys)
5984 (let ((patch (assoc-ref inputs "assertion.patch")))
5985 (invoke "patch" "-p1" "-i" patch)
5986 #t)))))
5987 (_ '()))
5988 ,@(if (%current-target-system)
5989 '((replace 'configure
5990 (lambda* (#:key target #:allow-other-keys)
5991 (substitute* (find-files "." "Makefile")
5992 (("CC\\?=.*$")
5993 (string-append "CC=" target "-gcc\n"))
5994 (("AR\\?=.*$")
5995 (string-append "AR=" target "-ar\n")))
5996 #t)))
5997 '((delete 'configure))))))
5998 (native-inputs
5999 `(,@(match (%current-system)
6000 ("armhf-linux"
6001 ;; A fix for <https://issues.guix.gnu.org/40604> which in turn
6002 ;; breaks i686-linux builds.
6003 `(("assertion.patch"
6004 ,@(search-patches "http-parser-fix-assertion-on-armhf.patch"))))
6005 (_ '()))))
6006 (synopsis "HTTP request/response parser for C")
6007 (description "This is a parser for HTTP messages written in C. It parses
6008 both requests and responses. The parser is designed to be used in
6009 high-performance HTTP applications. It does not make any syscalls nor
6010 allocations, it does not buffer data, it can be interrupted at anytime.
6011 Depending on your architecture, it only requires about 40 bytes of data per
6012 message stream (in a web server that is per connection).")
6013 (license license:expat)))
6014
6015 (define-public python-httpretty
6016 (package
6017 (name "python-httpretty")
6018 (version "0.9.6")
6019 (source
6020 (origin
6021 (method url-fetch)
6022 (uri (pypi-uri "httpretty" version))
6023 (sha256
6024 (base32 "1p1rb4mpngh0632xrmdfhvc8yink519yfkqz97d2ww3y0x2jvd81"))))
6025 (build-system python-build-system)
6026 (propagated-inputs
6027 `(("python-six" ,python-six)))
6028 (native-inputs
6029 `(("python-coverage" ,python-coverage)
6030 ("python-httplib2" ,python-httplib2)
6031 ("python-mock" ,python-mock)
6032 ("python-nose" ,python-nose)
6033 ("python-nose-randomly" ,python-nose-randomly)
6034 ("python-rednose" ,python-rednose)
6035 ("python-requests" ,python-requests)
6036 ("python-sure" ,python-sure)
6037 ("python-tornado" ,python-tornado)
6038 ("python-urllib3" ,python-urllib3)))
6039 (home-page "https://httpretty.readthedocs.io")
6040 (synopsis "HTTP client mock for Python")
6041 (description "@code{httpretty} is a helper for faking web requests,
6042 inspired by Ruby's @code{fakeweb}.")
6043 (license license:expat)))
6044
6045 (define-public jo
6046 (package
6047 (name "jo")
6048 (version "1.3")
6049 (source
6050 (origin
6051 (method url-fetch)
6052 (uri (string-append "https://github.com/jpmens/jo/releases/download/"
6053 version "/jo-" version ".tar.gz"))
6054 (sha256
6055 (base32
6056 "0r6yb8pjsbcqfyac4240a0sj93pb91fv385bpk395cx3f5bcj9fy"))))
6057 (build-system gnu-build-system)
6058 (home-page "https://github.com/jpmens/jo")
6059 (synopsis "Output JSON from a shell")
6060 (description "jo is a command-line utility to create JSON objects or
6061 arrays. It creates a JSON string on stdout from words provided as
6062 command-line arguments or read from stdin.")
6063 (license (list license:gpl2+
6064 license:expat)))) ; json.c, json.h
6065
6066 (define-public python-internetarchive
6067 (package
6068 (name "python-internetarchive")
6069 (version "1.8.5")
6070 (source
6071 (origin
6072 (method git-fetch)
6073 (uri (git-reference
6074 (url "https://github.com/jjjake/internetarchive")
6075 (commit (string-append "v" version))))
6076 (file-name (git-file-name name version))
6077 (sha256
6078 (base32
6079 "0ih7hplv92wbv6cmgc1gs0v35qkajwicalwcq8vcljw30plr24fp"))
6080 (modules '((guix build utils)))
6081 (snippet
6082 '(begin
6083 ;; Python 3.7 removed `_pattern_type'.
6084 (for-each (lambda (file)
6085 (chmod file #o644)
6086 (substitute* file
6087 (("^import re\n" line)
6088 (string-append line "re._pattern_type = re.Pattern\n"))))
6089 (find-files "." "\\.py$"))
6090 #t))))
6091 (build-system python-build-system)
6092 (arguments
6093 `(#:phases
6094 (modify-phases %standard-phases
6095 (delete 'check)
6096 (add-after 'install 'check
6097 (lambda* (#:key inputs outputs #:allow-other-keys)
6098 (add-installed-pythonpath inputs outputs)
6099 (setenv "PATH" (string-append (assoc-ref outputs "out") "/bin"
6100 ":" (getenv "PATH")))
6101 (invoke "py.test" "-v" "-k"
6102 (string-append
6103 ;; These tests attempt to make a connection to
6104 ;; an external web service.
6105 "not test_get_item_with_kwargs"
6106 " and not test_ia")))))))
6107 (propagated-inputs
6108 `(("python-requests" ,python-requests)
6109 ("python-jsonpatch" ,python-jsonpatch-0.4)
6110 ("python-docopt" ,python-docopt)
6111 ("python-clint" ,python-clint)
6112 ("python-six" ,python-six)
6113 ("python-schema" ,python-schema-0.5)
6114 ("python-backports-csv" ,python-backports-csv)))
6115 (native-inputs
6116 `(("python-pytest" ,python-pytest)
6117 ("python-pytest-capturelog" ,python-pytest-capturelog)
6118 ("python-responses" ,python-responses)))
6119 (home-page "https://github.com/jjjake/internetarchive")
6120 (synopsis "Command-line interface to archive.org")
6121 (description "@code{ia} is a command-line tool for using
6122 @url{archive.org} from the command-line. It also emplements the
6123 internetarchive python module for programmatic access to archive.org.")
6124 (license license:agpl3+)))
6125
6126 (define-public python-clf
6127 (let ((commit-test-clf "d01d25923c599d3261910f79fb948825b4270d07")) ; 0.5.7
6128 (package
6129 (name "python-clf")
6130 (version "0.5.7")
6131 (source
6132 (origin
6133 (method url-fetch)
6134 (uri (pypi-uri "clf" version))
6135 (sha256
6136 (base32
6137 "0zlkzqnpz7a4iavsq5vaz0nf5nr7qm5znpg1vlpz6rwnx6hikjdb"))))
6138 (build-system python-build-system)
6139 (propagated-inputs
6140 `(("python-docopt" ,python-docopt)
6141 ("python-pygments" ,python-pygments)
6142 ("python-requests" ,python-requests)
6143 ("python-nose" ,python-nose)
6144 ("python-lxml" ,python-lxml)
6145 ("python-pyaml" ,python-pyaml)))
6146 (inputs
6147 `(("test-clf"
6148 ,(origin
6149 (method url-fetch)
6150 (uri (string-append "https://raw.githubusercontent.com"
6151 "/ncrocfer/clf/" commit-test-clf
6152 "/test_clf.py"))
6153 (sha256
6154 (base32
6155 "19lr5zdzsmxgkg7wrjq1yzkiahd03wi4k3dskssyhmjls8c10nqd"))))))
6156 (arguments
6157 '(#:phases
6158 (modify-phases %standard-phases
6159 (add-after 'unpack 'get-tests
6160 (lambda _
6161 (copy-file (assoc-ref %build-inputs "test-clf") "test_clf.py")
6162 #t))
6163 (replace 'check
6164 (lambda _
6165 (invoke "nosetests"
6166 ;; These tests require an Internet connection.
6167 "--exclude=test_browse"
6168 "--exclude=test_command"
6169 "--exclude=test_search"))))))
6170 (home-page "https://github.com/ncrocfer/clf")
6171 (synopsis "Search code snippets on @url{https://commandlinefu.com}")
6172 (description "@code{clf} is a command line tool for searching code
6173 snippets on @url{https://commandlinefu.com}.")
6174 (license license:expat))))
6175
6176 (define-public python2-clf
6177 (package-with-python2 python-clf))
6178
6179 (define-public rss-bridge
6180 (package
6181 (name "rss-bridge")
6182 (version "2019-09-12")
6183 (source
6184 (origin
6185 (method git-fetch)
6186 (uri (git-reference
6187 (url "https://github.com/RSS-Bridge/rss-bridge")
6188 (commit version)))
6189 (file-name (git-file-name name version))
6190 (sha256
6191 (base32 "1mx7f3l45nqhcrng531l4cq8kpzm164hhbwn26g5akb2pamdlnra"))))
6192 (build-system trivial-build-system)
6193 (arguments
6194 '(#:modules ((guix build utils))
6195 #:builder
6196 (begin
6197 (use-modules (guix build utils)
6198 (ice-9 match))
6199 (let* ((out (assoc-ref %outputs "out"))
6200 (share-rss-bridge (string-append out "/share/rss-bridge")))
6201 (mkdir-p share-rss-bridge)
6202 (copy-recursively (assoc-ref %build-inputs "source") share-rss-bridge)
6203 #t))))
6204 (home-page "https://github.com/RSS-Bridge/rss-bridge")
6205 (synopsis "Generate Atom feeds for social networking websites")
6206 (description "rss-bridge generates Atom feeds for social networking
6207 websites lacking feeds. Supported websites include Facebook, Twitter,
6208 Instagram and YouTube.")
6209 (license (list license:public-domain
6210 license:expat)))) ; vendor/simplehtmldom/simple_html_dom.php
6211
6212 (define-public linkchecker
6213 (package
6214 (name "linkchecker")
6215 (version "9.4.0")
6216 (source
6217 (origin
6218 (method git-fetch)
6219 (uri (git-reference
6220 (url "https://github.com/linkchecker/linkchecker")
6221 (commit (string-append "v" version))))
6222 (patches
6223 (search-patches "linkchecker-tests-require-network.patch"))
6224 (file-name (git-file-name name version))
6225 (sha256
6226 (base32
6227 "03ihjmc4bqxxqv71bb43r2f23sx0xnbq1k2fsg9fw05qa5s9x187"))))
6228 (build-system python-build-system)
6229 (inputs
6230 `(("python2-dnspython" ,python2-dnspython)
6231 ("python2-pyxdg" ,python2-pyxdg)
6232 ("python2-requests" ,python2-requests)))
6233 (native-inputs
6234 `(("gettext" ,gettext-minimal)
6235 ("python2-pytest" ,python2-pytest)
6236 ("python2-miniboa" ,python2-miniboa)
6237 ("python2-parameterized" ,python2-parameterized)))
6238 (arguments
6239 `(#:python ,python-2
6240 #:phases
6241 (modify-phases %standard-phases
6242 ;; Move the 'check phase to after 'install, so that the installed
6243 ;; library can be used
6244 (delete 'check)
6245 (add-after 'install 'check
6246 (lambda* (#:key outputs #:allow-other-keys)
6247 (let ((out (assoc-ref outputs "out")))
6248 ;; Set PYTHONPATH so that the installed linkchecker is used
6249 (setenv "PYTHONPATH"
6250 (string-append out "/lib/python2.7/site-packages"
6251 ":"
6252 (getenv "PYTHONPATH")))
6253 ;; Remove this directory to avoid it being used when running
6254 ;; the tests
6255 (delete-file-recursively "linkcheck")
6256
6257 (invoke "py.test" "tests"))
6258 #t)))))
6259 (home-page "https://linkcheck.github.io/linkchecker")
6260 (synopsis "Check websites for broken links")
6261 (description "LinkChecker is a website validator. It checks for broken
6262 links in websites. It is recursive and multithreaded providing output in
6263 colored or normal text, HTML, SQL, CSV, XML or as a sitemap graph. It
6264 supports checking HTTP/1.1, HTTPS, FTP, mailto, news, nntp, telnet and local
6265 file links.")
6266 (license (list license:gpl2+
6267 license:bsd-2 ; linkcheck/better_exchook2.py
6268 license:bsd-3 ; linkcheck/colorama.py
6269 license:psfl ; linkcheck/gzip2.py
6270 license:expat)))) ; linkcheck/mem.py
6271
6272 (define-public cadaver
6273 (package
6274 (name "cadaver")
6275 (version "0.23.3")
6276 (source
6277 (origin
6278 (method url-fetch)
6279 (uri (string-append "http://www.webdav.org/cadaver/"
6280 name "-" version ".tar.gz"))
6281 (sha256
6282 (base32
6283 "1jizq69ifrjbjvz5y79wh1ny94gsdby4gdxwjad4bfih6a5fck7x"))))
6284 (build-system gnu-build-system)
6285 ;; TODO: Unbundle libneon and make build succeed with new neon.
6286 (arguments
6287 `(#:configure-flags (list "--with-ssl=openssl")
6288 #:tests? #f)) ;No tests included
6289 (native-inputs
6290 `(("gettext" ,gettext-minimal)
6291 ("pkg-config" ,pkg-config)
6292 ("intltool" ,intltool)))
6293 (inputs
6294 `(("expat" ,expat)
6295 ("openssl" ,openssl-1.0)))
6296 (home-page "http://www.webdav.org/cadaver/")
6297 (synopsis "Command-line WebDAV client")
6298 (description
6299 "Cadaver is a command-line WebDAV client for Unix. It supports
6300 file upload, download, on-screen display, namespace operations (move/copy),
6301 collection creation and deletion, and locking operations.")
6302 (license license:gpl2)))
6303
6304 (define-public python-py-ubjson
6305 (package
6306 (name "python-py-ubjson")
6307 (version "0.10.0")
6308 (source
6309 (origin
6310 (method url-fetch)
6311 (uri (pypi-uri "py-ubjson" version))
6312 (sha256
6313 (base32
6314 "03l9m9w5ip4hw0y69wlys5gzsfb7zcq3a77blj88grgiqhn5vm5n"))))
6315 (build-system python-build-system)
6316 (home-page "https://github.com/Iotic-Labs/py-ubjson")
6317 (synopsis "Universal Binary JSON encoder/decoder")
6318 (description
6319 "Py-ubjson is a Python module providing an Universal Binary JSON
6320 encoder/decoder based on the draft-12 specification for UBJSON.")
6321 (license license:asl2.0)))
6322
6323 (define-public java-tomcat
6324 (package
6325 (name "java-tomcat")
6326 (version "8.5.53")
6327 (source (origin
6328 (method url-fetch)
6329 (uri (string-append "mirror://apache/tomcat/tomcat-8/v"
6330 version "/src/apache-tomcat-" version "-src.tar.gz"))
6331 (sha256
6332 (base32
6333 "15lwq3clf21hzk7mma70sffpxjqn8ww5mjq6zhmwcp4m17m22z26"))
6334 (modules '((guix build utils)))
6335 ;; Delete bundled jars.
6336 (snippet
6337 '(begin
6338 (for-each delete-file (find-files "." "\\.jar$"))
6339 (for-each delete-file (find-files "." "\\.bat$"))
6340 #t))))
6341 (build-system ant-build-system)
6342 (inputs
6343 `(("java-commons-daemon" ,java-commons-daemon)
6344 ("java-ecj" ,java-ecj)))
6345 (arguments
6346 `(#:build-target "deploy"
6347 #:tests? #f; requires downloading some files.
6348 #:phases
6349 (modify-phases %standard-phases
6350 (add-after 'unpack 'prevent-download
6351 (lambda _
6352 ;; This directory must exist
6353 (mkdir "downloads")
6354 ;; We patch build.xml so it doesn't download any dependency, because
6355 ;; we already have all of them.
6356 (substitute* "build.xml"
6357 (("download-compile,") "")
6358 (("depends=\"validate\"") "depends=\"build-prepare\"")
6359 ((",download-validate") ""))
6360 #t))
6361 (add-after 'unpack 'strip-timestamps
6362 (lambda _
6363 (substitute* "build.xml"
6364 (("<filter token=\"YEAR\" value=.*")
6365 "<filter token=\"YEAR\" value=\"1970\"/>")
6366 (("<filter token=\"VERSION_BUILT\" value=.*")
6367 "<filter token=\"VERSION_BUILT\" value=\"Jan 1 1970 00:00:00 UTC\"/>"))
6368 #t))
6369 (add-after 'unpack 'modify-deploy
6370 (lambda _
6371 ;; The Tomcat build downloads and copies these files to the
6372 ;; bin and lib directory.
6373 ;; We instead symlink to the input (see below).
6374 (substitute* "build.xml"
6375 (("<copy tofile=\"\\$\\{tomcat.build\\}/bin/commons-daemon.jar.*") "")
6376 (("<copy file=\"\\$\\{jdt.jar\\}\" todir=\"\\$\\{tomcat.build\\}/lib\"/>")
6377 ""))
6378 #t))
6379 (add-after 'install 'symlink-commons-daemon
6380 (lambda* (#:key inputs outputs #:allow-other-keys)
6381 (let* ((commons-daemon (assoc-ref inputs "java-commons-daemon"))
6382 (files (find-files commons-daemon "commons-daemon-.*\\.jar"))
6383 (daemon-jar (car files))
6384 (out-bin (string-append (assoc-ref outputs "out") "/bin"))
6385 (target (string-append out-bin "/commons-daemon.jar")))
6386 (symlink daemon-jar target)
6387 #t)))
6388 (add-after 'install 'symlink-java-ecj
6389 (lambda* (#:key inputs outputs #:allow-other-keys)
6390 (let* ((java-ecj (assoc-ref inputs "java-ecj"))
6391 (files (find-files java-ecj "ecj.*\\.jar"))
6392 (java-ecj-jar (car files))
6393 (out-lib (string-append (assoc-ref outputs "out") "/lib"))
6394 (target (string-append out-lib "/java-ecj.jar")))
6395 (symlink java-ecj-jar target)
6396 #t)))
6397 (add-after 'unpack 'generate-properties
6398 (lambda _
6399 ;; This could have been passed to make-flags, but getcwd returns
6400 ;; a different directory then.
6401 (with-output-to-file "build.properties"
6402 (lambda _
6403 (display
6404 (string-append "base.path=" (getcwd) "/downloads\n"))))
6405 #t))
6406 (replace 'install
6407 (lambda* (#:key outputs #:allow-other-keys)
6408 (let ((out (assoc-ref outputs "out")))
6409 (copy-recursively "output/build" out))
6410 #t)))))
6411 (properties '((cpe-name . "tomcat")))
6412 (home-page "https://tomcat.apache.org")
6413 (synopsis "Java Servlet, JavaServer Pages, Java Expression Language and Java
6414 WebSocket")
6415 (description "Apache Tomcat is a free implementation of the Java
6416 Servlet, JavaServer Pages, Java Expression Language and Java WebSocket
6417 technologies.")
6418 (license license:asl2.0)))
6419
6420 (define-public java-eclipse-jetty-test-helper
6421 (package
6422 (name "java-eclipse-jetty-test-helper")
6423 (version "4.2")
6424 (source (origin
6425 (method git-fetch)
6426 (uri (git-reference
6427 (url "https://github.com/eclipse/jetty.toolchain/")
6428 (commit (string-append "jetty-test-helper-" version))))
6429 (file-name (git-file-name name version))
6430 (sha256
6431 (base32
6432 "1g7cdh03nfwbdxzvwm84ysgvw08xx7431lsjryj2gmf3lrqpizgb"))))
6433 (build-system ant-build-system)
6434 (arguments
6435 `(#:jar-name "eclipse-jetty-test-helper.jar"
6436 #:source-dir "src/main/java"
6437 #:test-dir "src/test"
6438 #:jdk ,icedtea-8
6439 #:phases
6440 (modify-phases %standard-phases
6441 (add-before 'configure 'chdir
6442 (lambda _
6443 (chdir "jetty-test-helper")
6444 #t))
6445 (add-before 'build 'fix-paths
6446 (lambda _
6447 ;; TODO:
6448 ;; This file assumes that the build directory is named "target"
6449 ;; but it is not the case with our ant-build-system. Once we have
6450 ;; maven though, we will have to rebuild this package because this
6451 ;; assumption is correct with maven-build-system.
6452 (substitute*
6453 "src/main/java/org/eclipse/jetty/toolchain/test/MavenTestingUtils.java"
6454 (("\"target\"") "\"build\"")
6455 (("\"tests\"") "\"test-classes\""))
6456 ;; Tests assume we are building with maven, so that the build
6457 ;; directory is named "target", and not "build".
6458 (with-directory-excursion "src/test/java/org/eclipse/jetty/toolchain/test"
6459 (substitute* '("FSTest.java" "OSTest.java" "TestingDirTest.java"
6460 "MavenTestingUtilsTest.java")
6461 (("target/tests") "build/test-classes")
6462 (("\"target") "\"build")))
6463 #t)))))
6464 (inputs
6465 `(("junit" ,java-junit)
6466 ("hamcrest" ,java-hamcrest-all)))
6467 (home-page "https://www.eclipse.org/jetty/")
6468 (synopsis "Helper classes for jetty tests")
6469 (description "This package contains helper classes for testing the Jetty
6470 Web Server.")
6471 ;; This program is licensed under both epl and asl.
6472 (license (list license:epl1.0 license:asl2.0))))
6473
6474 (define-public java-eclipse-jetty-perf-helper
6475 (package
6476 (inherit java-eclipse-jetty-test-helper)
6477 (name "java-eclipse-jetty-perf-helper")
6478 (arguments
6479 `(#:jar-name "eclipse-jetty-perf-helper.jar"
6480 #:source-dir "src/main/java"
6481 #:tests? #f; no tests
6482 #:jdk ,icedtea-8
6483 #:phases
6484 (modify-phases %standard-phases
6485 (add-before 'configure 'chdir
6486 (lambda _
6487 (chdir "jetty-perf-helper")
6488 #t)))))
6489 (inputs
6490 `(("hdrhistogram" ,java-hdrhistogram)))))
6491
6492 (define-public java-eclipse-jetty-util
6493 (package
6494 (name "java-eclipse-jetty-util")
6495 (version "9.4.6")
6496 (source (origin
6497 (method url-fetch)
6498 (uri (string-append "https://github.com/eclipse/jetty.project/"
6499 "archive/jetty-" version ".v20170531.tar.gz"))
6500 (sha256
6501 (base32
6502 "0x7kbdvkmgr6kbsmbwiiyv3bb0d6wk25frgvld9cf8540136z9p1"))))
6503 (build-system ant-build-system)
6504 (arguments
6505 `(#:jar-name "eclipse-jetty-util.jar"
6506 #:source-dir "src/main/java"
6507 #:test-exclude
6508 (list "**/Abstract*.java"
6509 ;; requires network
6510 "**/InetAddressSetTest.java"
6511 ;; Assumes we are using maven
6512 "**/TypeUtilTest.java"
6513 ;; Error on the style of log
6514 "**/StdErrLogTest.java")
6515 #:jdk ,icedtea-8
6516 #:phases
6517 (modify-phases %standard-phases
6518 (add-before 'configure 'chdir
6519 (lambda _
6520 (chdir "jetty-util")
6521 #t)))))
6522 (inputs
6523 `(("slf4j" ,java-slf4j-api)
6524 ("servlet" ,java-javaee-servletapi)))
6525 (native-inputs
6526 `(("junit" ,java-junit)
6527 ("hamcrest" ,java-hamcrest-all)
6528 ("perf-helper" ,java-eclipse-jetty-perf-helper)
6529 ("test-helper" ,java-eclipse-jetty-test-helper)))
6530 (home-page "https://www.eclipse.org/jetty/")
6531 (synopsis "Utility classes for Jetty")
6532 (description "The Jetty Web Server provides an HTTP server and Servlet
6533 container capable of serving static and dynamic content either from a standalone
6534 or embedded instantiation. This package provides utility classes.")
6535 (license (list license:epl1.0 license:asl2.0))))
6536
6537 ;; This version is required by maven-wagon
6538 (define-public java-eclipse-jetty-util-9.2
6539 (package
6540 (inherit java-eclipse-jetty-util)
6541 (version "9.2.22")
6542 (source (origin
6543 (method url-fetch)
6544 (uri (string-append "https://github.com/eclipse/jetty.project/"
6545 "archive/jetty-" version ".v20170606.tar.gz"))
6546 (sha256
6547 (base32
6548 "1i51qlsd7h06d35kx5rqpzbfadbcszycx1iwr6vz7qc9gf9f29la"))))
6549 (arguments
6550 `(#:jar-name "eclipse-jetty-util.jar"
6551 #:source-dir "src/main/java"
6552 #:jdk ,icedtea-8
6553 #:test-exclude
6554 (list "**/Abstract*.java"
6555 ;; requires network
6556 "**/InetAddressSetTest.java"
6557 ;; Assumes we are using maven
6558 "**/TypeUtilTest.java"
6559 ;; We don't have an implementation for slf4j
6560 "**/LogTest.java"
6561 ;; Error on the style of log
6562 "**/StdErrLogTest.java")
6563 #:phases
6564 (modify-phases %standard-phases
6565 (add-before 'configure 'chdir
6566 (lambda _
6567 (chdir "jetty-util")
6568 #t))
6569 (add-before 'build 'fix-test-sources
6570 (lambda _
6571 ;; We need to fix issues caused by changes in newer versions of
6572 ;; jetty-test-helper
6573 (let ((src "src/test/java/org/eclipse/jetty/util/resource"))
6574 (substitute* (string-append src "/AbstractFSResourceTest.java")
6575 (("testdir.getDir\\(\\)") "testdir.getPath().toFile()")
6576 (("testdir.getFile\\(\"foo\"\\)")
6577 "testdir.getPathFile(\"foo\").toFile()")
6578 (("testdir.getFile\\(name\\)")
6579 "testdir.getPathFile(name).toFile()")))
6580 #t)))))))
6581
6582 (define-public java-eclipse-jetty-io
6583 (package
6584 (inherit java-eclipse-jetty-util)
6585 (name "java-eclipse-jetty-io")
6586 (arguments
6587 `(#:jar-name "eclipse-jetty-io.jar"
6588 #:source-dir "src/main/java"
6589 #:jdk ,icedtea-8
6590 #:test-exclude (list "**/Abstract*.java"
6591 ;; Abstract class
6592 "**/EndPointTest.java")
6593 #:phases
6594 (modify-phases %standard-phases
6595 (add-before 'configure 'chdir
6596 (lambda _
6597 (chdir "jetty-io")
6598 #t)))))
6599 (inputs
6600 `(("slf4j" ,java-slf4j-api)
6601 ("servlet" ,java-javaee-servletapi)
6602 ("util" ,java-eclipse-jetty-util)))
6603 (synopsis "Jetty :: IO Utility")
6604 (description "The Jetty Web Server provides an HTTP server and Servlet
6605 container capable of serving static and dynamic content either from a standalone
6606 or embedded instantiation. This package provides IO-related utility classes.")))
6607
6608 (define-public java-eclipse-jetty-io-9.2
6609 (package
6610 (inherit java-eclipse-jetty-io)
6611 (version (package-version java-eclipse-jetty-util-9.2))
6612 (source (package-source java-eclipse-jetty-util-9.2))
6613 (inputs
6614 `(("util" ,java-eclipse-jetty-util-9.2)
6615 ,@(package-inputs java-eclipse-jetty-util-9.2)))
6616 (native-inputs
6617 `(("mockito" ,java-mockito-1)
6618 ("cglib" ,java-cglib)
6619 ("objenesis" ,java-objenesis)
6620 ("asm" ,java-asm)
6621 ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
6622
6623 (define-public java-eclipse-jetty-http
6624 (package
6625 (inherit java-eclipse-jetty-util)
6626 (name "java-eclipse-jetty-http")
6627 (arguments
6628 `(#:jar-name "eclipse-jetty-http.jar"
6629 #:source-dir "src/main/java"
6630 #:jdk ,icedtea-8
6631 #:phases
6632 (modify-phases %standard-phases
6633 (add-before 'configure 'chdir
6634 (lambda _
6635 (chdir "jetty-http")
6636 #t))
6637 (add-before 'build 'copy-resources
6638 (lambda _
6639 (mkdir-p "build/classes")
6640 (copy-recursively "src/main/resources/" "build/classes/")
6641 #t)))))
6642 (inputs
6643 `(("slf4j" ,java-slf4j-api)
6644 ("servlet" ,java-javaee-servletapi)
6645 ("io" ,java-eclipse-jetty-io)
6646 ("util" ,java-eclipse-jetty-util)))
6647 (synopsis "Jetty :: Http Utility")
6648 (description "The Jetty Web Server provides an HTTP server and Servlet
6649 container capable of serving static and dynamic content either from a standalone
6650 or embedded instantiation. This package provides HTTP-related utility classes.")))
6651
6652 (define-public java-eclipse-jetty-http-9.2
6653 (package
6654 (inherit java-eclipse-jetty-http)
6655 (version (package-version java-eclipse-jetty-util-9.2))
6656 (source (package-source java-eclipse-jetty-util-9.2))
6657 (inputs
6658 `(("util" ,java-eclipse-jetty-util-9.2)
6659 ("io" ,java-eclipse-jetty-io-9.2)
6660 ,@(package-inputs java-eclipse-jetty-util-9.2)))))
6661
6662 (define-public java-eclipse-jetty-jmx
6663 (package
6664 (inherit java-eclipse-jetty-util)
6665 (name "java-eclipse-jetty-jmx")
6666 (arguments
6667 `(#:jar-name "eclipse-jetty-jmx.jar"
6668 #:source-dir "src/main/java"
6669 #:jdk ,icedtea-8
6670 #:tests? #f; FIXME: requires com.openpojo.validation
6671 #:phases
6672 (modify-phases %standard-phases
6673 (add-before 'configure 'chdir
6674 (lambda _
6675 (chdir "jetty-jmx")
6676 #t)))))
6677 (inputs
6678 `(("slf4j" ,java-slf4j-api)
6679 ("servlet" ,java-javaee-servletapi)
6680 ("util" ,java-eclipse-jetty-util)))
6681 (synopsis "Jetty :: JMX Management")
6682 (description "The Jetty Web Server provides an HTTP server and Servlet
6683 container capable of serving static and dynamic content either from a standalone
6684 or embedded instantiation. This package provides the JMX management.")))
6685
6686 (define-public java-eclipse-jetty-jmx-9.2
6687 (package
6688 (inherit java-eclipse-jetty-jmx)
6689 (version (package-version java-eclipse-jetty-util-9.2))
6690 (source (package-source java-eclipse-jetty-util-9.2))
6691 (inputs
6692 `(("util" ,java-eclipse-jetty-util-9.2)
6693 ,@(package-inputs java-eclipse-jetty-util-9.2)))))
6694
6695 (define java-eclipse-jetty-http-test-classes
6696 (package
6697 (inherit java-eclipse-jetty-util)
6698 (name "java-eclipse-jetty-http-test-classes")
6699 (arguments
6700 `(#:jar-name "eclipse-jetty-http.jar"
6701 #:source-dir "src/test"
6702 #:tests? #f
6703 #:jdk ,icedtea-8
6704 #:phases
6705 (modify-phases %standard-phases
6706 (add-before 'configure 'chdir
6707 (lambda _
6708 (chdir "jetty-http")
6709 #t)))))
6710 (inputs
6711 `(("slf4j" ,java-slf4j-api)
6712 ("java-javaee-servletapi" ,java-javaee-servletapi)
6713 ("http" ,java-eclipse-jetty-http)
6714 ("io" ,java-eclipse-jetty-io)
6715 ("util" ,java-eclipse-jetty-util)))))
6716
6717 (define java-eclipse-jetty-http-test-classes-9.2
6718 (package
6719 (inherit java-eclipse-jetty-http-test-classes)
6720 (version (package-version java-eclipse-jetty-util-9.2))
6721 (source (package-source java-eclipse-jetty-util-9.2))
6722 (inputs
6723 `(("http" ,java-eclipse-jetty-http-9.2)
6724 ,@(package-inputs java-eclipse-jetty-http-9.2)))))
6725
6726 (define-public java-eclipse-jetty-server
6727 (package
6728 (inherit java-eclipse-jetty-util)
6729 (name "java-eclipse-jetty-server")
6730 (arguments
6731 `(#:jar-name "eclipse-jetty-server.jar"
6732 #:source-dir "src/main/java"
6733 #:jdk ,icedtea-8
6734 #:tests? #f; requires a mockito version we don't have
6735 #:phases
6736 (modify-phases %standard-phases
6737 (add-before 'configure 'chdir
6738 (lambda _
6739 (chdir "jetty-server")
6740 #t))
6741 (add-before 'build 'fix-source
6742 (lambda _
6743 ;; Explicit casts to prevent build failures
6744 (substitute* "src/main/java/org/eclipse/jetty/server/Request.java"
6745 (("append\\(LazyList")
6746 "append((CharSequence)LazyList"))
6747 (substitute*
6748 "src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java"
6749 (((string-append
6750 "Class<\\? extends EventListener> clazz = _classLoader==null"
6751 "\\?Loader.loadClass\\(ContextHandler.class,className\\):"
6752 "_classLoader.loadClass\\(className\\);"))
6753 (string-append "Class<? extends EventListener> clazz = "
6754 "(Class<? extends EventListener>) "
6755 "(_classLoader==null?Loader.loadClass("
6756 "ContextHandler.class,className):"
6757 "_classLoader.loadClass(className));")))
6758 #t)))))
6759 (inputs
6760 `(("slf4j" ,java-slf4j-api)
6761 ("servlet" ,java-javaee-servletapi)
6762 ("http" ,java-eclipse-jetty-http)
6763 ("io" ,java-eclipse-jetty-io)
6764 ("jmx" ,java-eclipse-jetty-jmx)
6765 ("util" ,java-eclipse-jetty-util)))
6766 (native-inputs
6767 `(("test-classes" ,java-eclipse-jetty-http-test-classes)
6768 ,@(package-native-inputs java-eclipse-jetty-util)))
6769 (synopsis "Core jetty server artifact")
6770 (description "The Jetty Web Server provides an HTTP server and Servlet
6771 container capable of serving static and dynamic content either from a standalone
6772 or embedded instantiation. This package provides the core jetty server
6773 artifact.")))
6774
6775 (define-public java-eclipse-jetty-server-9.2
6776 (package
6777 (inherit java-eclipse-jetty-server)
6778 (version (package-version java-eclipse-jetty-util-9.2))
6779 (source (package-source java-eclipse-jetty-util-9.2))
6780 (inputs
6781 `(("util" ,java-eclipse-jetty-util-9.2)
6782 ("jmx" ,java-eclipse-jetty-jmx-9.2)
6783 ("io" ,java-eclipse-jetty-io-9.2)
6784 ("http" ,java-eclipse-jetty-http-9.2)
6785 ,@(package-inputs java-eclipse-jetty-util-9.2)))
6786 (native-inputs
6787 `(("test-classes" ,java-eclipse-jetty-http-test-classes-9.2)
6788 ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
6789
6790 (define-public java-eclipse-jetty-security
6791 (package
6792 (inherit java-eclipse-jetty-util)
6793 (name "java-eclipse-jetty-security")
6794 (arguments
6795 `(#:jar-name "eclipse-jetty-security.jar"
6796 #:source-dir "src/main/java"
6797 #:jdk ,icedtea-8
6798 #:test-exclude (list "**/ConstraintTest.*") ; This test fails
6799 #:phases
6800 (modify-phases %standard-phases
6801 (add-before 'configure 'chdir
6802 (lambda _
6803 (chdir "jetty-security")
6804 #t)))))
6805 (inputs
6806 `(("slf4j" ,java-slf4j-api)
6807 ("servlet" ,java-javaee-servletapi)
6808 ("http" ,java-eclipse-jetty-http)
6809 ("server" ,java-eclipse-jetty-server)
6810 ("util" ,java-eclipse-jetty-util)))
6811 (native-inputs
6812 `(("io" ,java-eclipse-jetty-io)
6813 ,@(package-native-inputs java-eclipse-jetty-util)))
6814 (synopsis "Jetty security infrastructure")
6815 (description "The Jetty Web Server provides an HTTP server and Servlet
6816 container capable of serving static and dynamic content either from a standalone
6817 or embedded instantiation. This package provides the core jetty security
6818 infrastructure")))
6819
6820 (define-public java-eclipse-jetty-security-9.2
6821 (package
6822 (inherit java-eclipse-jetty-security)
6823 (version (package-version java-eclipse-jetty-util-9.2))
6824 (source (package-source java-eclipse-jetty-util-9.2))
6825 (inputs
6826 `(("util" ,java-eclipse-jetty-util-9.2)
6827 ("http" ,java-eclipse-jetty-http-9.2)
6828 ("server" ,java-eclipse-jetty-server-9.2)
6829 ,@(package-inputs java-eclipse-jetty-util-9.2)))
6830 (native-inputs
6831 `(("io" ,java-eclipse-jetty-io-9.2)
6832 ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
6833
6834 (define-public java-eclipse-jetty-servlet
6835 (package
6836 (inherit java-eclipse-jetty-util)
6837 (name "java-eclipse-jetty-servlet")
6838 (arguments
6839 `(#:jar-name "eclipse-jetty-servlet.jar"
6840 #:source-dir "src/main/java"
6841 #:jdk ,icedtea-8
6842 #:phases
6843 (modify-phases %standard-phases
6844 (add-before 'configure 'chdir
6845 (lambda _
6846 (chdir "jetty-servlet")
6847 #t)))))
6848 (inputs
6849 `(("slf4j" ,java-slf4j-api)
6850 ("java-javaee-servletapi" ,java-javaee-servletapi)
6851 ("http" ,java-eclipse-jetty-http)
6852 ("http-test" ,java-eclipse-jetty-http-test-classes)
6853 ("io" ,java-eclipse-jetty-io)
6854 ("jmx" ,java-eclipse-jetty-jmx)
6855 ("security" ,java-eclipse-jetty-security)
6856 ("server" ,java-eclipse-jetty-server)
6857 ("util" ,java-eclipse-jetty-util)))
6858 (synopsis "Jetty Servlet Container")
6859 (description "The Jetty Web Server provides an HTTP server and Servlet
6860 container capable of serving static and dynamic content either from a standalone
6861 or embedded instantiation. This package provides the core jetty servlet
6862 container.")))
6863
6864 (define-public java-eclipse-jetty-servlet-9.2
6865 (package
6866 (inherit java-eclipse-jetty-servlet)
6867 (version (package-version java-eclipse-jetty-util-9.2))
6868 (source (package-source java-eclipse-jetty-util-9.2))
6869 (arguments
6870 `(#:jar-name "eclipse-jetty-servlet.jar"
6871 #:source-dir "src/main/java"
6872 #:jdk ,icedtea-8
6873 #:tests? #f; doesn't work
6874 #:phases
6875 (modify-phases %standard-phases
6876 (add-before 'configure 'chdir
6877 (lambda _
6878 (chdir "jetty-servlet")
6879 #t)))))
6880 (inputs
6881 `(("util" ,java-eclipse-jetty-util-9.2)
6882 ("jmx" ,java-eclipse-jetty-jmx-9.2)
6883 ("io" ,java-eclipse-jetty-io-9.2)
6884 ("http" ,java-eclipse-jetty-http-9.2)
6885 ("security" ,java-eclipse-jetty-security-9.2)
6886 ("http-test" ,java-eclipse-jetty-http-test-classes-9.2)
6887 ("server" ,java-eclipse-jetty-server-9.2)
6888 ,@(package-inputs java-eclipse-jetty-util-9.2)))))
6889
6890 (define-public java-eclipse-jetty-xml
6891 (package
6892 (inherit java-eclipse-jetty-util)
6893 (name "java-eclipse-jetty-xml")
6894 (arguments
6895 `(#:jar-name "eclipse-jetty-xml.jar"
6896 #:source-dir "src/main/java"
6897 #:jdk ,icedtea-8
6898 #:tests? #f; most tests require network
6899 #:phases
6900 (modify-phases %standard-phases
6901 (add-before 'configure 'chdir
6902 (lambda _
6903 (chdir "jetty-xml")
6904 #t)))))
6905 (inputs
6906 `(("java-eclipse-jetty-util" ,java-eclipse-jetty-util)))
6907 (native-inputs
6908 `(("java-eclipse-jetty-io" ,java-eclipse-jetty-io)
6909 ,@(package-native-inputs java-eclipse-jetty-util)))))
6910
6911 (define-public java-eclipse-jetty-xml-9.2
6912 (package
6913 (inherit java-eclipse-jetty-xml)
6914 (version (package-version java-eclipse-jetty-util-9.2))
6915 (source (package-source java-eclipse-jetty-util-9.2))
6916 (arguments
6917 `(#:jar-name "eclipse-jetty-xml.jar"
6918 #:source-dir "src/main/java"
6919 #:jdk ,icedtea-8
6920 #:tests? #f; most tests require network
6921 #:phases
6922 (modify-phases %standard-phases
6923 (add-before 'configure 'chdir
6924 (lambda _
6925 (chdir "jetty-xml")
6926 #t)))))
6927 (inputs
6928 `(("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
6929 ,@(package-inputs java-eclipse-jetty-util-9.2)))
6930 (native-inputs
6931 `(("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
6932 ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
6933
6934 (define-public java-eclipse-jetty-webapp
6935 (package
6936 (inherit java-eclipse-jetty-util)
6937 (name "java-eclipse-jetty-webapp")
6938 (arguments
6939 `(#:jar-name "eclipse-jetty-webapp.jar"
6940 #:source-dir "src/main/java"
6941 #:jdk ,icedtea-8
6942 ;; One test fails
6943 #:test-exclude (list "**/WebAppContextTest.java")
6944 #:phases
6945 (modify-phases %standard-phases
6946 (add-before 'configure 'chdir
6947 (lambda _
6948 (chdir "jetty-webapp")
6949 #t)))))
6950 (inputs
6951 `(("java-eclipse-jetty-util" ,java-eclipse-jetty-util)
6952 ("java-eclipse-jetty-http" ,java-eclipse-jetty-http)
6953 ("java-eclipse-jetty-server" ,java-eclipse-jetty-server)
6954 ("java-eclipse-jetty-servlet" ,java-eclipse-jetty-servlet)
6955 ("java-eclipse-jetty-security" ,java-eclipse-jetty-security)
6956 ("java-eclipse-jetty-xml" ,java-eclipse-jetty-xml)
6957 ("java-javaee-servletapi" ,java-javaee-servletapi)))
6958 (native-inputs
6959 `(("java-eclipse-jetty-io" ,java-eclipse-jetty-io)
6960 ,@(package-native-inputs java-eclipse-jetty-util)))))
6961
6962 (define-public java-eclipse-jetty-webapp-9.2
6963 (package
6964 (inherit java-eclipse-jetty-webapp)
6965 (version (package-version java-eclipse-jetty-util-9.2))
6966 (source (package-source java-eclipse-jetty-util-9.2))
6967 (arguments
6968 `(#:jar-name "eclipse-jetty-webapp.jar"
6969 #:source-dir "src/main/java"
6970 #:jdk ,icedtea-8
6971 #:test-exclude (list "**/WebAppContextTest.java")
6972 #:phases
6973 (modify-phases %standard-phases
6974 (add-before 'configure 'chdir
6975 (lambda _
6976 (chdir "jetty-webapp")
6977 #t)))))
6978 (inputs
6979 `(("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
6980 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
6981 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
6982 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
6983 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
6984 ("java-eclipse-jetty-xml-9.2" ,java-eclipse-jetty-xml-9.2)
6985 ("java-javaee-servletapi" ,java-javaee-servletapi)
6986 ,@(package-inputs java-eclipse-jetty-util-9.2)))
6987 (native-inputs
6988 `(("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
6989 ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
6990
6991 (define-public java-jsoup
6992 (package
6993 (name "java-jsoup")
6994 (version "1.10.3")
6995 (source (origin
6996 (method git-fetch)
6997 (uri (git-reference
6998 (url "https://github.com/jhy/jsoup")
6999 (commit (string-append "jsoup-" version))))
7000 (file-name (git-file-name name version))
7001 (sha256
7002 (base32
7003 "1hdpdx0x140r5x3yc251v7dj1h4j5a7nh9k885aw9q5vvz49lkf4"))))
7004 (build-system ant-build-system)
7005 (arguments
7006 `(#:jar-name "jsoup.jar"
7007 #:source-dir "src/main/java"
7008 #:phases
7009 (modify-phases %standard-phases
7010 (add-before 'build 'copy-resources
7011 (lambda _
7012 (let ((classes-dir (string-append (getcwd) "/build/classes")))
7013 (with-directory-excursion "src/main/java"
7014 (for-each (lambda (file)
7015 (let ((dist (string-append classes-dir "/" file)))
7016 (mkdir-p (dirname dist))
7017 (copy-file file dist)))
7018 (find-files "." ".*.properties"))))
7019 #t)))))
7020 (native-inputs
7021 `(("java-junit" ,java-junit)
7022 ("java-hamcrest-core" ,java-hamcrest-core)
7023 ("java-gson" ,java-gson)))
7024 (home-page "https://jsoup.org")
7025 (synopsis "HTML parser")
7026 (description "Jsoup is a Java library for working with real-world HTML. It
7027 provides a very convenient API for extracting and manipulating data, using the
7028 best of DOM, CSS, and jQuery-like methods.")
7029 (license license:expat)))
7030
7031 (define-public java-signpost-core
7032 (package
7033 (name "java-signpost-core")
7034 (version "1.2.1.2")
7035 (source (origin
7036 (method git-fetch)
7037 (uri (git-reference
7038 (url "https://github.com/mttkay/signpost")
7039 (commit version)))
7040 (file-name (git-file-name name version))
7041 (sha256
7042 (base32
7043 "1l04yj2znch3hpyw90c4g4jan453w7d88l84bgl0c72i2kbb8z7h"))))
7044 (build-system ant-build-system)
7045 (arguments
7046 `(#:jar-name "signpost-core.jar"
7047 #:source-dir "signpost-core/src/main/java"
7048 #:test-dir "signpost-core/src/test"
7049 ;; Tests all fail with InstantiationException from mockito
7050 #:tests? #f))
7051 (propagated-inputs
7052 `(("java-commons-codec" ,java-commons-codec)))
7053 (home-page "https://github.com/mttkay/signpost")
7054 (synopsis "Lightweight client-side OAuth library for Java")
7055 (description "Signpost is the easy and intuitive solution for signing
7056 HTTP messages on the Java platform in conformance with the OAuth Core 1.0a
7057 standard. Signpost follows a modular and flexible design, allowing you to
7058 combine it with different HTTP messaging layers.")
7059 (license license:asl2.0)))
7060
7061 (define-public tidyp
7062 (package
7063 (name "tidyp")
7064 (version "1.04")
7065 (source
7066 (origin
7067 (method url-fetch)
7068 (uri (string-append "https://github.com/downloads/petdance/tidyp/tidyp-"
7069 version ".tar.gz"))
7070 (sha256
7071 (base32
7072 "0f5ky0ih4vap9c6j312jn73vn8m2bj69pl2yd3a5nmv35k9zmc10"))))
7073 (build-system gnu-build-system)
7074 ;; ./test-thing.sh tries to run ./testall.sh, which is not included.
7075 (arguments `(#:tests? #f))
7076 (home-page "http://www.tidyp.com/")
7077 (synopsis "Validate HTML")
7078 (description "Tidyp is a program that can validate your HTML, as well as
7079 modify it to be more clean and standard. tidyp does not validate HTML 5.
7080
7081 libtidyp is the library on which the program is based. It can be used by any
7082 other program that can interface to it. The Perl module @code{HTML::Tidy} is
7083 based on this library, allowing Perl programmers to easily validate HTML.")
7084 ;; See htmldoc/license.html
7085 (license license:bsd-3)))
7086
7087 (define-public perl-html-tidy
7088 (package
7089 (name "perl-html-tidy")
7090 (version "1.60")
7091 (source
7092 (origin
7093 (method url-fetch)
7094 (uri (string-append "mirror://cpan/authors/id/P/PE/PETDANCE/HTML-Tidy-"
7095 version ".tar.gz"))
7096 (sha256
7097 (base32
7098 "1iyp2fd6j75cn1xvcwl2lxr8qpjxssy2360cyqn6g3kzd1fzdyxw"))))
7099 (build-system perl-build-system)
7100 (arguments
7101 '(#:phases
7102 (modify-phases %standard-phases
7103 (add-after 'unpack 'fix-tidyp-paths
7104 (lambda* (#:key inputs #:allow-other-keys)
7105 (substitute* "Makefile.PL"
7106 (("^my \\$inc = \"" line)
7107 (string-append line
7108 "-I" (assoc-ref inputs "tidyp") "/include/tidyp "))
7109 (("-L/usr/lib")
7110 (string-append
7111 "-L" (assoc-ref inputs "tidyp") "/lib")))
7112 #t)))))
7113 (inputs
7114 `(("perl-libwww" ,perl-libwww)
7115 ("tidyp" ,tidyp)))
7116 (native-inputs
7117 `(("perl-test-exception" ,perl-test-exception)))
7118 (home-page "https://metacpan.org/release/HTML-Tidy")
7119 (synopsis "(X)HTML validation in a Perl object")
7120 (description "@code{HTML::Tidy} is an HTML checker in a handy dandy
7121 object. It's meant as a replacement for @code{HTML::Lint}, which is written
7122 in Perl but is not nearly as capable as @code{HTML::Tidy}.")
7123 (license license:artistic2.0)))
7124
7125 (define-public geomyidae
7126 (package
7127 (name "geomyidae")
7128 (version "0.34")
7129 (source
7130 (origin
7131 (method git-fetch)
7132 (uri (git-reference
7133 (url "git://r-36.net/geomyidae")
7134 (commit (string-append "v" version))))
7135 (file-name (git-file-name name version))
7136 (sha256
7137 (base32 "02afgrk36wkdkflyqr2xgh49v9zq6ma454jshk7igvhpxfb5l3ks"))))
7138 (build-system gnu-build-system)
7139 (arguments
7140 `(#:make-flags (list "CC=gcc"
7141 (string-append "PREFIX="
7142 (assoc-ref %outputs "out")))
7143 #:tests? #f ; no tests
7144 #:phases (modify-phases %standard-phases
7145 (delete 'configure))))
7146 (home-page "http://r-36.net/scm/geomyidae/file/README.html")
7147 (synopsis "Small Gopher server")
7148 (description
7149 "Geomyidae is a server for distributed hypertext protocol Gopher. Its
7150 features include:
7151
7152 @enumerate
7153 @item Gopher menus (see @file{index.gph} for an example);
7154 @item directory listings (if no @file{index.gph} was found);
7155 @item CGI support (@file{.cgi} files are executed);
7156 @item search support in CGI files;
7157 @item logging with multiple log levels.
7158 @end enumerate\n")
7159 (license license:expat)))
7160
7161 (define-public cat-avatar-generator
7162 (package
7163 (name "cat-avatar-generator")
7164 (version "1")
7165 (source (origin
7166 (method git-fetch)
7167 (uri (git-reference
7168 (url "https://framagit.org/Deevad/cat-avatar-generator.git")
7169 (commit "71c0c662742cafe8afd2d2d50ec84243113e35ad")))
7170 (file-name (string-append name "-" version))
7171 (sha256
7172 (base32
7173 "0s7b5whqsmfa57prbgl66ym551kg6ly0z14h5dgrlx4lqm70y2yw"))))
7174 (build-system trivial-build-system)
7175 (arguments
7176 `(#:modules ((guix build utils))
7177 #:builder
7178 (begin
7179 (use-modules (guix build utils)
7180 (srfi srfi-1)
7181 (srfi srfi-26))
7182
7183 (let ((source (assoc-ref %build-inputs "source"))
7184 (php-dir (string-append %output "/share/web/" ,name "/")))
7185 ;; The cache directory must not be in the store, but in a writable
7186 ;; location. The webserver will give us this location.
7187 (copy-recursively source php-dir)
7188 (substitute* (string-append php-dir "/cat-avatar-generator.php")
7189 (("\\$cachepath = .*")
7190 "if(isset($_SERVER['CACHE_DIR']))
7191 $cachepath = $_SERVER['CACHE_DIR'];
7192 else
7193 die('You need to set the CACHE_DIR variable first.');"))
7194 #t))))
7195 (home-page "https://framagit.org/Deevad/cat-avatar-generator")
7196 (synopsis "Random avatar generator")
7197 (description "Cat avatar generator is a generator of cat pictures optimised
7198 to generate random avatars, or defined avatar from a \"seed\". This is a
7199 derivation by David Revoy from the original MonsterID by Andreas Gohr.")
7200 ;; expat for the code, CC-BY 4.0 for the artwork
7201 (license (list license:expat
7202 license:cc-by4.0))))
7203
7204 (define-public nghttp2
7205 (package
7206 (name "nghttp2")
7207 (version "1.40.0")
7208 (replacement nghttp2-1.41)
7209 (source
7210 (origin
7211 (method url-fetch)
7212 (uri (string-append "https://github.com/nghttp2/nghttp2/"
7213 "releases/download/v" version "/"
7214 "nghttp2-" version ".tar.xz"))
7215 (sha256
7216 (base32
7217 "0wwhwv7cvi1vxpdjwvg0kpa4jzhszclpnwrwfcw728zz53a47z09"))))
7218 (build-system gnu-build-system)
7219 (outputs (list "out"
7220 "lib")) ; only libnghttp2
7221 (native-inputs
7222 `(("pkg-config" ,pkg-config)
7223
7224 ;; Required by tests.
7225 ("cunit" ,cunit)
7226 ("tzdata" ,tzdata-for-tests)))
7227 (inputs
7228 ;; Required to build the tools (i.e. without ‘--enable-lib-only’).
7229 `(("c-ares" ,c-ares)
7230 ("jansson" ,jansson) ; for HPACK tools
7231 ,@(if (hurd-target?) '()
7232 `(("jemalloc" ,jemalloc))) ; fight nghttpd{,x} heap fragmentation
7233 ("libev" ,libev)
7234 ("libxml2" ,libxml2) ; for ‘nghttp -a’
7235 ("openssl" ,openssl)
7236 ,@(if (hurd-target?)
7237 `(("openssl-static" ,openssl "static"))
7238 '())))
7239 (arguments
7240 `(#:configure-flags
7241 (list (string-append "--libdir=" (assoc-ref %outputs "lib") "/lib")
7242 "--enable-app" ; build all the tools
7243 "--enable-hpack-tools" ; ...all the tools
7244 "--disable-examples"
7245 "--disable-static") ; don't bother building .a files
7246 #:phases
7247 (modify-phases %standard-phases
7248 (add-after 'unpack 'break-circular-reference
7249 ;; libnghttp2.pc by default retains a reference to the ‘out’ output,
7250 ;; which is not allowed. Break this cycle. While we could install
7251 ;; only the library to ‘out’ and move everything else to a separate
7252 ;; output, this would inconvenience the majority of (human) users.
7253 (lambda* (#:key outputs #:allow-other-keys)
7254 (substitute* "lib/libnghttp2.pc.in"
7255 (("@prefix@")
7256 (assoc-ref outputs "lib")))
7257 #t))
7258 (add-before 'check 'set-timezone-directory
7259 (lambda* (#:key inputs native-inputs #:allow-other-keys)
7260 (setenv "TZDIR" (string-append
7261 (assoc-ref (or native-inputs inputs) "tzdata")
7262 "/share/zoneinfo"))
7263 #t)))))
7264 (home-page "https://nghttp2.org/")
7265 (synopsis "HTTP/2 protocol client, proxy, server, and library")
7266 (description
7267 "nghttp2 implements the Hypertext Transfer Protocol, version
7268 2 (@dfn{HTTP/2}).
7269
7270 A reusable C library provides the HTTP/2 framing layer, with several tools built
7271 on top of it:
7272
7273 @itemize
7274 @item @command{nghttp}, a command-line HTTP/2 client. It exposes many advanced
7275 and low-level aspects of the protocol and is useful for debugging.
7276 @item @command{nghttpd}, a fast, multi-threaded HTTP/2 static web server that
7277 serves files from a local directory.
7278 @item @command{nghttpx}, a fast, multi-threaded HTTP/2 reverse proxy that can be
7279 deployed in front of existing web servers that don't support HTTP/2.
7280 Both @command{nghttpd} and @command{nghttpx} can fall back to HTTP/1.1 for
7281 backwards compatibility with clients that don't speak HTTP/2.
7282 @item @command{h2load} for benchmarking (only!) your own HTTP/2 servers.
7283 @item HTTP/2 uses a header compression method called @dfn{HPACK}.
7284 nghttp2 provides a HPACK encoder and decoder as part of its public API.
7285 @item @command{deflatehd} converts JSON data or HTTP/1-style header fields to
7286 compressed JSON header blocks.
7287 @item @command{inflatehd} converts such compressed headers back to JSON pairs.
7288 @end itemize\n")
7289 (license license:expat)))
7290
7291 (define-public nghttp2-1.41 ;fixes CVE-2020-11080
7292 (package
7293 (inherit nghttp2)
7294 (version "1.41.0")
7295 (source
7296 (origin
7297 (method url-fetch)
7298 (uri (string-append "https://github.com/nghttp2/nghttp2/"
7299 "releases/download/v" version "/"
7300 "nghttp2-" version ".tar.xz"))
7301 (sha256
7302 (base32
7303 "1hk77vngjmvvzb5y1gi1aqwf6qywrc7yak08zvzb7x81qs6mphmb"))))))
7304
7305 (define-public hpcguix-web
7306 (let ((commit "9de63562b06b4aef3a3afe5ecb18d3c91e57ee74")
7307 (revision "5"))
7308 (package
7309 (name "hpcguix-web")
7310 (version (git-version "0.0.1" revision commit))
7311 (source (origin
7312 (method git-fetch)
7313 (uri (git-reference
7314 (url "https://github.com/UMCUGenetics/hpcguix-web.git")
7315 (commit commit)))
7316 (file-name (git-file-name name version))
7317 (sha256
7318 (base32
7319 "0wjgj2s7v2cyz6dx24c111rxs99i84sfvxl4ch8brnh02j2606jz"))))
7320 (build-system gnu-build-system)
7321 (arguments
7322 `(#:modules ((guix build gnu-build-system)
7323 (guix build utils)
7324 (srfi srfi-26)
7325 (ice-9 popen)
7326 (ice-9 rdelim))
7327 #:phases
7328 (modify-phases %standard-phases
7329 (add-before 'configure 'set-variables
7330 (lambda _
7331 ;; This prevents a few warnings
7332 (setenv "GUILE_AUTO_COMPILE" "0")
7333 (setenv "XDG_CACHE_HOME" (getcwd))
7334 #t))
7335 (add-after 'install 'wrap-program
7336 (lambda* (#:key inputs outputs #:allow-other-keys)
7337 (let* ((out (assoc-ref outputs "out"))
7338 (guix (assoc-ref inputs "guix"))
7339 (guile (assoc-ref inputs "guile"))
7340 (gcrypt (assoc-ref inputs "guile-gcrypt"))
7341 (git (assoc-ref inputs "guile-git"))
7342 (bs (assoc-ref inputs "guile-bytestructures"))
7343 (json (assoc-ref inputs "guile-json"))
7344 (guile-cm (assoc-ref inputs
7345 "guile-commonmark"))
7346 (deps (list guile gcrypt git bs guile-cm guix json))
7347 (effective
7348 (read-line
7349 (open-pipe* OPEN_READ
7350 (string-append guile "/bin/guile")
7351 "-c" "(display (effective-version))")))
7352 (path (string-join
7353 (map (cut string-append <>
7354 "/share/guile/site/"
7355 effective)
7356 deps)
7357 ":"))
7358 (gopath (string-join
7359 (map (cut string-append <>
7360 "/lib/guile/" effective
7361 "/site-ccache")
7362 deps)
7363 ":")))
7364 (wrap-program (string-append out "/bin/run")
7365 `("GUILE_LOAD_PATH" ":" prefix (,path))
7366 `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,gopath)))
7367
7368 #t))))))
7369 (native-inputs
7370 `(("autoconf" ,autoconf)
7371 ("automake" ,automake)
7372 ("uglify-js" ,uglify-js)
7373 ("pkg-config" ,pkg-config)))
7374 (inputs
7375 `(("guile" ,@(assoc-ref (package-native-inputs guix) "guile"))))
7376 (propagated-inputs
7377 `(("guile" ,@(assoc-ref (package-native-inputs guix) "guile"))
7378 ("guile-commonmark" ,guile-commonmark)
7379 ("guile-json" ,guile-json-4)))
7380 (home-page "https://github.com/UMCUGenetics/hpcguix-web")
7381 (synopsis "Web interface for cluster deployments of Guix")
7382 (description "Hpcguix-web provides a web interface to the list of packages
7383 provided by Guix. The list of packages is searchable and provides
7384 instructions on how to use Guix in a shared HPC environment.")
7385 (license license:agpl3+))))
7386
7387 (define-public httrack
7388 (package
7389 (name "httrack")
7390 (version "3.49.2")
7391 (source (origin
7392 (method url-fetch)
7393 (uri (string-append "https://mirror.httrack.com/historical/"
7394 "httrack-" version ".tar.gz"))
7395 (sha256
7396 (base32
7397 "09a0gm67nml86qby1k1gh7rdxamnrnzwr6l9r5iiq94favjs0xrl"))))
7398 (build-system gnu-build-system)
7399 (inputs
7400 `(("libressl" ,libressl)
7401 ("zlib" ,zlib)))
7402 (home-page "https://www.httrack.com/")
7403 (synopsis "Easy-to-use offline browser utility")
7404 (description "HTTrack allows you to download a World Wide Web site from
7405 the Internet to a local directory, building recursively all directories,
7406 getting HTML, images, and other files from the server to your computer.
7407
7408 HTTrack arranges the original site's relative link-structure. Simply open
7409 a page of the @emph{mirrored} website in your browser, and you can browse the
7410 site from link to link, as if you were viewing it online. HTTrack can also
7411 update an existing mirrored site, and resume interrupted downloads.
7412
7413 HTTrack is fully configurable, and has an integrated help system.")
7414 (license license:gpl3+)))
7415
7416 (define-public anonip
7417 (package
7418 (name "anonip")
7419 (version "1.0.0")
7420 (source (origin
7421 (method url-fetch)
7422 (uri (pypi-uri "anonip" version))
7423 (sha256
7424 (base32
7425 "0ckn9nnfhpdnz8b92q8pkysdqj6pdh71ckfqvfj0z01cq0hzbhd2"))))
7426 (build-system python-build-system)
7427 (home-page "https://github.com/DigitaleGesellschaft/Anonip")
7428 (synopsis "Anonymize IP addresses in log files")
7429 (description
7430 "Anonip masks the last bits of IPv4 and IPv6 addresses in log files.
7431 That way most of the relevant information is preserved, while the IP address
7432 does not match a particular individuum anymore.
7433
7434 Depending on your Web server, the log entries may be piped to Anonip directly
7435 or via a FIFO (named pipe). Thus the unmasked IP addresses will never be
7436 written to any file.
7437
7438 It's also possible to rewrite existing log files.
7439
7440 Anonip can also be uses as a Python module in your own Python application.")
7441 (license license:bsd-3)))
7442
7443 (define-public poussetaches
7444 (package
7445 (name "poussetaches")
7446 (version "0.0.2")
7447 (source
7448 (origin
7449 (method git-fetch)
7450 (uri (git-reference
7451 (url "https://github.com/tsileo/poussetaches")
7452 (commit version)))
7453 (file-name (git-file-name name version))
7454 (sha256
7455 (base32
7456 "0kckcwvqklavd855np9aq5js6mg84isrlwchr504yigwma0sm7hm"))))
7457 (build-system go-build-system)
7458 (propagated-inputs
7459 `(("go-github-com-robfig-cron" ,go-github-com-robfig-cron)
7460 ("go-golang-org-x-time" ,go-golang-org-x-time)))
7461 (arguments
7462 `(#:import-path "github.com/tsileo/poussetaches"))
7463 (home-page "https://github.com/tsileo/poussetaches")
7464 (synopsis "Lightweight asynchronous task execution service")
7465 (description "Poussetaches (which literally means \"push tasks\" in
7466 French) is a lightweight asynchronous task execution service that aims to
7467 replace Celery and RabbitMQ for small Python applications.
7468
7469 The app posts base64-encoded payload to poussetaches and specifies the
7470 endpoint that will be used to trigger the task. Poussetaches makes HTTP
7471 requests with the registered payload until the right status code is
7472 returned.")
7473 (license license:isc)))
7474
7475 (define-public htmlcxx
7476 (package
7477 (name "htmlcxx")
7478 (version "0.87")
7479 (source
7480 (origin
7481 (method url-fetch)
7482 (uri
7483 (string-append "mirror://sourceforge/htmlcxx/v"
7484 version "/htmlcxx-" version ".tar.gz"))
7485 (sha256
7486 (base32 "1j3mzjlczjrk4ahc43s6kzpvzypzjmqz4sillnca5yadrwwgjf2x"))))
7487 (build-system gnu-build-system)
7488 (home-page "http://htmlcxx.sourceforge.net/")
7489 (synopsis "Simple non-validating CSS1 and HTML parser for C++")
7490 (description "htmlcxx is a simple non-validating CSS1 and HTML parser for
7491 C++. Although there are several other HTML parsers available, htmlcxx has some
7492 characteristics that make it unique:
7493 @itemize
7494 @item STL like navigation of DOM tree, using excelent's tree.hh library from
7495 Kasper Peeters
7496 @item It is possible to reproduce exactly, character by character, the original
7497 document from the parse tree
7498 @item Bundled CSS parser
7499 @item Optional parsing of attributes
7500 @item C++ code that looks like C++ (not so true anymore)
7501 @item Offsets of tags/elements in the original document are stored in the nodes
7502 of the DOM tree
7503 @end itemize")
7504 (license (list license:lgpl2.0
7505 license:gpl2
7506 license:asl2.0))))
7507
7508 (define-public librocket
7509 (package
7510 (name "librocket")
7511 (version "1.3.0.0")
7512 (source
7513 (origin
7514 (method git-fetch)
7515 (uri
7516 (git-reference
7517 (url "https://github.com/libRocket/libRocket")
7518 (commit (string-append "release-" version))))
7519 (file-name (git-file-name name version))
7520 (sha256
7521 (base32 "1n6gq007vqijyfasfnfg6c8d2rc9qarl4bhzbgkz062m4h5izlfs"))))
7522 (build-system cmake-build-system)
7523 (arguments
7524 `(#:tests? #f ; No tests.
7525 #:phases
7526 (modify-phases %standard-phases
7527 (add-after 'unpack 'chdir
7528 (lambda _
7529 (chdir "Build"))))))
7530 (inputs
7531 `(("freetype" ,freetype)))
7532 (home-page "https://github.com/libRocket/libRocket") ; http://librocket.com/ is down.
7533 (synopsis "HTML/CSS user interface library")
7534 (description "libRocket is a C++ user interface package based on the HTML
7535 and CSS standards. libRocket uses the open standards XHTML1.0 and
7536 CSS2.0 (while borrowing features from HTML5 and CSS3), and extends them with
7537 features suited towards real-time applications. It is designed as a complete
7538 solution for any project's interface needs:
7539
7540 @itemize
7541 @item Dynamic layout system.
7542 @item Efficient application-wide styling, with a custom-built templating engine.
7543 @item Fully featured control set: buttons, sliders, drop-downs, etc.
7544 @item Runtime visual debugging suite.
7545 @item Easily integrated and extensible with Python or Lua scripting.
7546 @end itemize\n")
7547 (license license:expat)))