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