projects/guix·blob ruby-team · refs

10807 lines · 421.2 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013, 2015 Andreas Enge <[email protected]>
3;;; Copyright © 2013 Aljosha Papsch <[email protected]>
4;;; Copyright © 2014-2025 Ludovic Courtès <[email protected]>
5;;; Copyright © 2014, 2015, 2016 Mark H Weaver <[email protected]>
6;;; Copyright © 2015-2024 Ricardo Wurmus <[email protected]>
7;;; Copyright © 2018 Raoul Jean Pierre Bonnal <[email protected]>
8;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <[email protected]>
9;;; Copyright © 2015-2020, 2024 Eric Bavier <[email protected]>
10;;; Copyright © 2015 Eric Dvorsak <[email protected]>
11;;; Copyright © 2016 Sou Bunnbu <[email protected]>
12;;; Copyright © 2016 Jelle Licht <[email protected]>
13;;; Copyright © 2016-2025 Efraim Flashner <[email protected]>
14;;; Copyright © 2016 Rene Saavedra <[email protected]>
15;;; Copyright © 2016 Ben Woodcroft <[email protected]>
16;;; Copyright © 2016, 2023 Clément Lassieur <[email protected]>
17;;; Copyright © 2016, 2017 Nikita <[email protected]>
18;;; Copyright © 2016–2025 Arun Isaac <[email protected]>
19;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <[email protected]>
20;;; Copyright © 2016 Bake Timmons <[email protected]>
21;;; Copyright © 2017 Thomas Danckaert <[email protected]>
22;;; Copyright © 2017-2018, 2020-2023 Marius Bakke <[email protected]>
23;;; Copyright © 2017 Kei Kebreau <[email protected]>
24;;; Copyright © 2017 Petter <[email protected]>
25;;; Copyright © 2017, 2021 Pierre Langlois <[email protected]>
26;;; Copyright © 2017 Rutger Helling <[email protected]>
27;;; Copyright © 2017, 2019, 2020 Christopher Baines <[email protected]>
28;;; Copyright © 2018, 2019 Julien Lepiller <[email protected]>
29;;; Copyright © 2018 Pierre-Antoine Rouby <[email protected]>
30;;; Copyright © 2018 Gábor Boskovits <[email protected]>
31;;; Copyright © 2018 Mădălin Ionel Patrașcu <[email protected]>
32;;; Copyright © 2018 Alex Vong <[email protected]>
33;;; Copyright © 2019-2021, 2023-2025 Nicolas Goaziou <[email protected]>
34;;; Copyright © 2019, 2025 Brendan Tildesley <[email protected]>
35;;; Copyright © 2019 Alex Griffin <[email protected]>
36;;; Copyright © 2019 Hartmut Goebel <[email protected]>
37;;; Copyright © 2019 Jakob L. Kreuze <[email protected]>
38;;; Copyright © 2019 Mathieu Othacehe <[email protected]>
39;;; Copyright © 2019 Pierre-Moana Levesque <[email protected]>
40;;; Copyright © 2019, 2020 Florian Pelz <[email protected]>
41;;; Copyright © 2020 Timotej Lazar <[email protected]>
42;;; Copyright © 2020 Pierre Neidhardt <[email protected]>
43;;; Copyright © 2020, 2021, 2023, 2024, 2025 Janneke Nieuwenhuizen <[email protected]>
44;;; Copyright © 2018, 2019, 2020 Björn Höfling <[email protected]>
45;;; Copyright © 2020, 2021 Paul Garlick <[email protected]>
46;;; Copyright © 2020, 2022 Michael Rohleder <[email protected]>
47;;; Copyright © 2020, 2021 Ryan Prior <[email protected]>
48;;; Copyright © 2020 Alexandru-Sergiu Marton <[email protected]>
49;;; Copyright © 2021, 2024, 2026 Maxim Cournoyer <[email protected]>
50;;; Copyright © 2021 Stefan Reichör <[email protected]>
51;;; Copyright © 2021 la snesne <[email protected]>
52;;; Copyright © 2021 Matthew James Kraai <[email protected]>
53;;; Copyright © 2021 Sarah Morgensen <[email protected]>
54;;; Copyright © 2021 Jack Hill <[email protected]>
55;;; Copyright © 2021 Guillaume Le Vaillant <[email protected]>
56;;; Copyright © 2021, 2023 Denis 'GNUtoo' Carikli <[email protected]>
57;;; Copyright © 2021 Vinicius Monego <[email protected]>
58;;; Copyright © 2022 cage <[email protected]>
59;;; Copyright © 2022 Pradana Aumars <[email protected]>
60;;; Copyright © 2022 Petr Hodina <[email protected]>
61;;; Copyright © 2022, 2026 jgart <[email protected]>
62;;; Copyright © 2023 Paul A. Patience <[email protected]>
63;;; Copyright © 2022 Bruno Victal <[email protected]>
64;;; Copyright © 2023 David Thompson <[email protected]>
65;;; Copyright © 2023 VÖRÖSKŐI András <[email protected]>
66;;; Copyright © 2023 Christopher Howard <[email protected]>
67;;; Copyright © 2023 Felix Lechner <[email protected]>
68;;; Copyright © 2023, 2025 Evgeny Pisemsky <[email protected]>
69;;; Copyright © 2024 Tomas Volf <[email protected]>
70;;; Copyright © 2024 Zheng Junjie <[email protected]>
71;;; Copyright © 2024, 2025 Artyom V. Poptsov <[email protected]>
72;;; Copyright © 2025 Raven Hallsby <[email protected]>
73;;; Copyright © 2025 Junker <[email protected]>"
74;;; Copyright © 2025 Jake Forster <[email protected]>
75;;; Copyright © 2025 Remco van 't Veer <[email protected]>"
76;;; Copyright © 2025 Daniel Khodabakhsh <[email protected]>
77;;; Copyright © 2025 Josep Bigorra <[email protected]>
78;;; Copyright © 2025, 2026 Ashish SHUKLA <[email protected]>
79;;; Copyright © 2025 Philippe Swartvagher <[email protected]>
80;;; Copyright © 2025 pinoaffe <[email protected]>
81;;; Copyright © 2025, 2026 gemmaro <[email protected]>
82;;; Copyright © 2025 Igorj Gorjaĉev <[email protected]>
83;;; Copyright © 2026 Rodion Goritskov <[email protected]>
84;;; Copyright © 2026 Sharlatan Hellseher <[email protected]>
85;;; Copyright © 2026 Jonathan Frederickson <[email protected]>
86;;; Copyright © 2026 Nguyễn Gia Phong <[email protected]>
87;;;
88;;; This file is part of GNU Guix.
89;;;
90;;; GNU Guix is free software; you can redistribute it and/or modify it
91;;; under the terms of the GNU General Public License as published by
92;;; the Free Software Foundation; either version 3 of the License, or (at
93;;; your option) any later version.
94;;;
95;;; GNU Guix is distributed in the hope that it will be useful, but
96;;; WITHOUT ANY WARRANTY; without even the implied warranty of
97;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
98;;; GNU General Public License for more details.
99;;;
100;;; You should have received a copy of the GNU General Public License
101;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
102
103(define-module (gnu packages web)
104 #:use-module (gnu packages admin)
105 #:use-module (gnu packages apr)
106 #:use-module (gnu packages autotools)
107 #:use-module (gnu packages base)
108 #:use-module (gnu packages bash)
109 #:use-module (gnu packages bison)
110 #:use-module (gnu packages bittorrent)
111 #:use-module (gnu packages boost)
112 #:use-module (gnu packages build-tools)
113 #:use-module (gnu packages check)
114 #:use-module (gnu packages code)
115 #:use-module (gnu packages compression)
116 #:use-module (gnu packages cpp)
117 #:use-module (gnu packages crypto)
118 #:use-module (gnu packages curl)
119 #:use-module (gnu packages cyrus-sasl)
120 #:use-module (gnu packages databases)
121 #:use-module (gnu packages datastructures)
122 #:use-module (gnu packages digest)
123 #:use-module (gnu packages django)
124 #:use-module (gnu packages dns)
125 #:use-module (gnu packages docbook)
126 #:use-module (gnu packages documentation)
127 #:use-module (gnu packages emacs)
128 #:use-module (gnu packages emacs-xyz)
129 #:use-module (gnu packages file)
130 #:use-module (gnu packages fontutils)
131 #:use-module (gnu packages freedesktop)
132 #:use-module (gnu packages gcc)
133 #:use-module (gnu packages gd)
134 #:use-module (gnu packages geo)
135 #:use-module (gnu packages gettext)
136 #:use-module (gnu packages glib)
137 #:use-module (gnu packages gnome)
138 #:use-module (gnu packages gnu-doc)
139 #:use-module (gnu packages gnunet)
140 #:use-module (gnu packages gnupg)
141 #:use-module (gnu packages golang)
142 #:use-module (gnu packages golang-build)
143 #:use-module (gnu packages golang-check)
144 #:use-module (gnu packages golang-compression)
145 #:use-module (gnu packages golang-web)
146 #:use-module (gnu packages golang-xyz)
147 #:use-module (gnu packages gperf)
148 #:use-module (gnu packages graphviz)
149 #:use-module (gnu packages groff)
150 #:use-module (gnu packages gtk)
151 #:use-module (gnu packages guile)
152 #:use-module (gnu packages guile-xyz)
153 #:use-module (gnu packages icu4c)
154 #:use-module (gnu packages image)
155 #:use-module (gnu packages image-viewers)
156 #:use-module (gnu packages imagemagick)
157 #:use-module (gnu packages java)
158 #:use-module (gnu packages jemalloc)
159 #:use-module (gnu packages kde-frameworks)
160 #:use-module (gnu packages kerberos)
161 #:use-module (gnu packages less)
162 #:use-module (gnu packages libbsd)
163 #:use-module (gnu packages libevent)
164 #:use-module (gnu packages libidn)
165 #:use-module (gnu packages libunistring)
166 #:use-module (gnu packages libunwind)
167 #:use-module (gnu packages linux)
168 #:use-module (gnu packages lisp-xyz)
169 #:use-module (gnu packages llvm)
170 #:use-module (gnu packages logging)
171 #:use-module (gnu packages lsof)
172 #:use-module (gnu packages lua)
173 #:use-module (gnu packages mail)
174 #:use-module (gnu packages man)
175 #:use-module (gnu packages markup)
176 #:use-module (gnu packages ncurses)
177 #:use-module (gnu packages nettle)
178 #:use-module (gnu packages networking)
179 #:use-module (gnu packages node)
180 #:use-module (gnu packages nss)
181 #:use-module (gnu packages nss)
182 #:use-module (gnu packages openldap)
183 #:use-module (gnu packages openstack)
184 #:use-module (gnu packages package-management)
185 #:use-module (gnu packages pcre)
186 #:use-module (gnu packages perl)
187 #:use-module (gnu packages perl-check)
188 #:use-module (gnu packages perl-compression)
189 #:use-module (gnu packages pkg-config)
190 #:use-module (gnu packages prometheus)
191 #:use-module (gnu packages python)
192 #:use-module (gnu packages python-build)
193 #:use-module (gnu packages python-check)
194 #:use-module (gnu packages python-compression)
195 #:use-module (gnu packages python-crypto)
196 #:use-module (gnu packages python-web)
197 #:use-module (gnu packages python-xyz)
198 #:use-module (gnu packages qt)
199 #:use-module (gnu packages compiler-tools)
200 #:use-module (gnu packages readline)
201 #:use-module (gnu packages sdl)
202 #:use-module (gnu packages search)
203 #:use-module (gnu packages serialization)
204 #:use-module (gnu packages skribilo)
205 #:use-module (gnu packages sphinx)
206 #:use-module (gnu packages sqlite)
207 #:use-module (gnu packages tcl)
208 #:use-module (gnu packages telephony)
209 #:use-module (gnu packages texinfo)
210 #:use-module (gnu packages textutils)
211 #:use-module (gnu packages time)
212 #:use-module (gnu packages tls)
213 #:use-module (gnu packages valgrind)
214 #:use-module (gnu packages version-control)
215 #:use-module (gnu packages video)
216 #:use-module (gnu packages vim)
217 #:use-module (gnu packages wget)
218 #:use-module (gnu packages xdisorg)
219 #:use-module (gnu packages xml)
220 #:use-module (gnu packages zig)
221 #:use-module (gnu packages zig-xyz)
222 #:use-module (gnu packages)
223 #:use-module (guix build-system ant)
224 #:use-module (guix build-system cargo)
225 #:use-module (guix build-system cmake)
226 #:use-module (guix build-system copy)
227 #:use-module (guix build-system glib-or-gtk)
228 #:use-module (guix build-system gnu)
229 #:use-module (guix build-system go)
230 #:use-module (guix build-system guile)
231 #:use-module (guix build-system meson)
232 #:use-module (guix build-system node)
233 #:use-module (guix build-system perl)
234 #:use-module (guix build-system pyproject)
235 #:use-module (guix build-system qt)
236 #:use-module (guix build-system scons)
237 #:use-module (guix build-system trivial)
238 #:use-module (guix build-system zig)
239 #:use-module (guix cvs-download)
240 #:use-module (guix download)
241 #:use-module (guix fossil-download)
242 #:use-module (guix gexp)
243 #:use-module (guix git-download)
244 #:use-module (guix hg-download)
245 #:use-module ((guix licenses) #:prefix license:)
246 #:use-module (guix packages)
247 #:use-module (guix utils)
248 #:use-module (ice-9 match)
249 #:use-module ((srfi srfi-1) #:select (delete-duplicates)))
250
251(define-public qhttp
252 (package
253 (name "qhttp")
254 (version "3.1")
255 (source
256 (origin
257 (method git-fetch)
258 (uri
259 (git-reference
260 (url "https://github.com/azadkuh/qhttp")
261 (commit (string-append "version-" version))))
262 (file-name (git-file-name name version))
263 (sha256
264 (base32 "0cx23g4y4k4v9p5ph6h7gfhp8sfy1gcdv1g6bl44hppar1y0zfdq"))))
265 (build-system gnu-build-system)
266 (arguments
267 `(#:tests? #f ; no target
268 #:imported-modules
269 ((guix build copy-build-system)
270 ,@%default-gnu-imported-modules)
271 #:modules
272 (((guix build copy-build-system) #:prefix copy:)
273 (guix build gnu-build-system)
274 (guix build utils))
275 #:phases
276 (modify-phases %standard-phases
277 (add-after 'unpack 'patch-source
278 (lambda* (#:key outputs #:allow-other-keys)
279 (substitute* "commondir.pri"
280 (("\\$\\$PRJDIR/xbin")
281 (string-append (assoc-ref outputs "out") "/lib"))
282 (("-L")
283 "-lhttp_parser -L")
284 (("\\$\\$PRJDIR/3rdparty")
285 ""))
286 (substitute* "src/src.pro"
287 (("SOURCES \\+= \\$\\$PRJDIR/3rdparty/http-parser/http_parser.c")
288 "")
289 (("HEADERS \\+= \\$\\$PRJDIR/3rdparty/http-parser/http_parser.h")
290 ""))
291 (substitute* '("src/private/qhttpbase.hpp" "src/qhttpabstracts.cpp")
292 (("http-parser/http_parser.h")
293 "http_parser.h"))
294 #t))
295 (replace 'configure
296 (lambda _ (invoke "qmake")))
297 (replace 'install
298 (lambda args
299 (apply (assoc-ref copy:%standard-phases 'install)
300 #:install-plan
301 '(("src" "include"
302 #:include-regexp ("\\.hpp$")))
303 args)))
304 (add-after 'install 'remove-examples
305 (lambda* (#:key outputs #:allow-other-keys)
306 (with-directory-excursion
307 (string-append (assoc-ref outputs "out") "/lib")
308 (for-each delete-file
309 (list
310 "basic-server"
311 "helloworld"
312 "postcollector")))
313 #t)))))
314 (inputs
315 (list http-parser qtbase-5))
316 (home-page "https://github.com/azadkuh/qhttp/")
317 (synopsis "Qt-based HTTP Library")
318 (description
319 "Qhttp is a light-weight and asynchronous HTTP library
320(both server & client) in Qt5 and C++14.")
321 (license license:expat)))
322
323(define-public httpd
324 (package
325 (name "httpd")
326 (version "2.4.66")
327 (source (origin
328 (method url-fetch)
329 (uri (string-append "mirror://apache/httpd/httpd-"
330 version ".tar.bz2"))
331 (sha256
332 (base32
333 "0nm2zvy6w4g4jqsss8y6g655b3nlp969x8hbhy785fxc88mzzmwl"))))
334 (build-system gnu-build-system)
335 (native-inputs (list `(,pcre "bin"))) ;for 'pcre-config'
336 (inputs (list apr apr-util libxcrypt openssl perl)) ; needed to run bin/apxs
337 (arguments
338 (list
339 #:test-target "test"
340 #:configure-flags #~(list "--enable-rewrite"
341 "--enable-userdir"
342 "--enable-vhost-alias"
343 "--enable-ssl"
344 "--enable-mime-magic"
345 (string-append "--sysconfdir="
346 #$output
347 "/etc/httpd"))))
348 (synopsis "Featureful HTTP server")
349 (description
350 "The Apache HTTP Server Project is a collaborative software development
351effort aimed at creating a robust, commercial-grade, featureful, and
352freely-available source code implementation of an HTTP (Web) server. The
353project is jointly managed by a group of volunteers located around the world,
354using the Internet and the Web to communicate, plan, and develop the server
355and its related documentation.")
356 (license license:asl2.0)
357 (home-page "https://httpd.apache.org/")))
358
359;; A package variant that may be out of date and vulnerable. Only for use in
360;; test suites and should never be referred to by a built package.
361(define-public httpd/pinned
362 (hidden-package
363 (package
364 (inherit httpd)
365 (version "2.4.52")
366 (source (origin
367 (method url-fetch)
368 (uri (string-append "mirror://apache/httpd/httpd-"
369 version ".tar.bz2"))
370 (sha256
371 (base32
372 "1jgmfbazc2n9dnl7axhahwppyq25bvbvwx0lqplq76by97fgf9q1")))))))
373
374(define-public leafnode
375 (package
376 (name "leafnode")
377 (version "1.12.0")
378 (source (origin
379 (method url-fetch)
380 (uri (string-append "mirror://sourceforge/leafnode/leafnode/"
381 version "/leafnode-" version ".tar.gz"))
382 (sha256
383 (base32
384 "1pkryzndqaxs1ym7gs77r6x8mmzpnm5x7n2ph8ga45zn45rwwrxl"))))
385 (build-system gnu-build-system)
386 (arguments
387 (list #:phases
388 #~(modify-phases %standard-phases
389 (add-after 'unpack 'fix-tests
390 (lambda _
391 (substitute* "Makefile.am"
392 (("/bin/sh") (which "sh"))))))))
393 (native-inputs (list autoconf automake-1.16.5))
394 (inputs (list pcre2))
395 (home-page "https://sourceforge.net/projects/leafnode/")
396 (synopsis "NNTP news proxy")
397 (description
398 "Leafnode is a caching Usenet news proxy that enables online newsreaders
399to read news off-line and aggregates news from various NNTP servers into
400one.")
401 ;; Most of the code is under Expat license, with some GPL, LGPL exceptions.
402 (license license:gpl2+)))
403
404(define-public miniflux
405 (package
406 (name "miniflux")
407 (version "2.3.3")
408 (source
409 (origin
410 (method git-fetch)
411 (uri (git-reference
412 (url "https://github.com/miniflux/v2")
413 (commit version)))
414 (file-name (git-file-name name version))
415 (sha256
416 (base32 "067vyh4hmymkhk21ppqx09avgqbfxka5xfyq9i8sw9vpmfpj57yc"))))
417 (build-system go-build-system)
418 (arguments
419 (list
420 #:go go-1.26
421 #:install-source? #f
422 #:import-path "miniflux.app/v2"
423 #:build-flags
424 #~(list (string-append
425 "-ldflags= -X miniflux.app/v2/internal/version.Version="
426 #$version))
427 #:phases
428 #~(modify-phases %standard-phases
429 ;; Force disable legacy ServeMux behaviour, with which routing
430 ;; doesn't work. It is enabled automatically because we use
431 ;; GO111MODULE=off in go-build-system.
432 (add-after 'unpack 'fix-httpmuxgo121
433 (lambda _
434 (substitute* "src/miniflux.app/v2/main.go"
435 (("^package main")
436 "//go:debug httpmuxgo121=0\n\npackage main"))))
437 ;; Skipping test case that is trying to resolve a domain name
438 (add-after 'unpack 'skip-real-domain-resolve-test
439 (lambda _
440 (substitute* "src/miniflux.app/v2/internal/urllib/url_test.go"
441 (("\\{\"example.org\", \"example.org\", false\\},")
442 "// {\"example.org\", \"example.org\", false},"))))
443 (add-after 'install 'install-manpage
444 (lambda* (#:key import-path #:allow-other-keys)
445 (let ((man1 (string-append #$output "/share/man/man1/"))
446 (page (format #f "src/~a/miniflux.1" import-path)))
447 (install-file page man1))))
448 (add-after 'install-manpage 'rename-binary
449 (lambda _
450 (let ((bindir (string-append #$output "/bin/")))
451 (rename-file (string-append bindir "v2")
452 (string-append bindir "miniflux"))))))))
453 (inputs
454 (list go-github-com-andybalholm-brotli
455 go-github-com-coreos-go-oidc-v3
456 go-github-com-go-webauthn-webauthn
457 go-github-com-lib-pq
458 go-github-com-prometheus-client-golang
459 go-github-com-puerkitobio-goquery
460 go-github-com-tdewolff-minify-v2
461 go-golang-org-x-crypto
462 go-golang-org-x-image
463 go-golang-org-x-net
464 go-golang-org-x-oauth2
465 go-golang-org-x-term
466 go-golang-org-x-text))
467 (home-page "https://miniflux.app/")
468 (synopsis "Minimalist and opinionated feed reader")
469 (description
470 "Miniflux is a minimalist and opinionated feed reader:
471
472@itemize
473@item Written in Go (Golang)
474@item Works only with Postgresql
475@item Doesn't use any ORM
476@item Doesn't use any complicated framework
477@item Use only modern vanilla Javascript (ES6 and Fetch API)
478@item Single binary compiled statically without dependency
479@item The number of features is voluntarily limited
480@end itemize")
481 (license license:asl2.0)))
482
483(define-public mod-wsgi
484 (package
485 (name "mod-wsgi")
486 (version "5.0.2")
487 (source (origin
488 (method git-fetch)
489 (uri (git-reference
490 (url "https://github.com/GrahamDumpleton/mod_wsgi")
491 (commit version)))
492 (file-name (git-file-name name version))
493 (sha256
494 (base32
495 "0cb3bh682cf8v0hvlx84w44vgac0lkx8pkbnxyd8ahpqrx9r44qn"))))
496 (build-system gnu-build-system)
497 (arguments
498 (list
499 #:disallowed-references (list (this-package-native-input "httpd"))
500 #:tests? #f ; TODO: can't figure out if there are tests
501 #:make-flags #~(list (string-append "DESTDIR=" #$output)
502 "LIBEXECDIR=/modules")))
503 (native-inputs (list httpd))
504 (inputs (list python-wrapper))
505 (synopsis "Apache HTTPD module for Python WSGI applications")
506 (description
507 "The mod_wsgi module for the Apache HTTPD Server adds support for running
508applications that support the Python @acronym{WSGI, Web Server Gateway
509Interface} specification.")
510 (license license:asl2.0)
511 (home-page "https://modwsgi.readthedocs.io/")))
512
513(define-public ablorb
514 (package
515 (name "ablorb")
516 (version "0.1.1")
517 (source
518 (origin
519 (method git-fetch)
520 (uri (git-reference
521 (url "https://gitlab.gnome.org/lilyp/ablorb")
522 (commit version)))
523 (file-name (git-file-name name version))
524 (sha256
525 (base32 "1yyc52863bbqvq9si7bhwwraafa3kir6qr5xqavqbvi140d9c373"))))
526 (build-system meson-build-system)
527 (inputs (list glib gconf gnome-vfs libxml2))
528 (native-inputs (list pkg-config))
529 (home-page "https://gitlab.gnome.org/lilyp/ablorb")
530 (synopsis "Replace asset links with data URIs")
531 (description "Ablorb takes an XML file and resolves relative links,
532replacing them with data URIs.")
533 (license license:gpl3+)))
534
535(define-public monolith
536 (package
537 (name "monolith")
538 (version "2.10.1")
539 (source
540 (origin
541 (method git-fetch)
542 (uri (git-reference
543 (url "https://github.com/Y2Z/monolith")
544 (commit (string-append "v" version))))
545 (file-name (git-file-name name version))
546 (sha256
547 (base32 "1p3qbsa8cnqhzwd45h808pk0yzsfjm0ka7x8hh99gm4qzgvyngzc"))
548 (modules '((guix build utils)))
549 ;; Don't default to vendored openssl.
550 (snippet '(substitute* "Cargo.toml"
551 ((", \"vendored-openssl\"") "")))))
552 (build-system cargo-build-system)
553 (arguments
554 (list
555 #:install-source? #f))
556 (native-inputs
557 (list pkg-config))
558 (inputs
559 (cons* openssl (cargo-inputs 'monolith)))
560 (home-page "https://github.com/Y2Z/monolith")
561 (synopsis "Command line tool for saving web pages as a single HTML file")
562 (description
563 "Monolith bundles any web page into a single HTML file.
564
565Unlike conventional ``Save page as…'', Monolith not only saves the target
566document, it embeds CSS, image, and JavaScript assets all at once, producing
567a single HTML5 document.
568
569If compared to saving websites with @samp{wget -mpk}, Monolith embeds
570all assets as data URLs and therefore displays the saved page exactly
571the same, being completely separated from the Internet.")
572 (license license:unlicense)))
573
574(define-public nginx
575 (package
576 (name "nginx")
577 ;; Please update the nginx-documentation package together with this one!
578 ;; Track the ‘mainline’ branch. Upstream considers it more reliable than
579 ;; ’stable’ and recommends that “in general you deploy the NGINX mainline
580 ;; branch at all times” (https://www.nginx.com/blog/nginx-1-6-1-7-released/)
581 (version "1.31.1")
582 (source (origin
583 (method url-fetch)
584 (uri (string-append "https://nginx.org/download/nginx-"
585 version ".tar.gz"))
586 (sha256
587 (base32
588 "1g647i06lafipnz385j049a224j15i0z6qd736db0i15yawaxjlz"))))
589 (build-system gnu-build-system)
590 (inputs (list libxcrypt libxml2 libxslt openssl pcre zlib))
591 (arguments
592 (list
593 #:tests? #f ; no test target
594 #:configure-flags
595 #~(list (string-append "--conf-path=" #$output
596 "/share/nginx/conf/nginx.conf")
597 ;; These file names should be configured by the service, but at
598 ;; least set the defaults to writable locations.
599 "--error-log-path=/tmp/nginx-error.log"
600 "--http-log-path=/tmp/nginx-access.log"
601 "--pid-path=/tmp/nginx.pid"
602 "--with-http_ssl_module"
603 "--with-http_v2_module"
604 "--with-http_v3_module"
605 "--with-http_xslt_module"
606 "--with-http_gzip_static_module"
607 "--with-http_gunzip_module"
608 "--with-http_addition_module"
609 "--with-http_sub_module"
610 "--with-http_dav_module"
611 "--with-pcre-jit"
612 "--with-debug"
613 "--with-compat"
614 "--with-stream"
615 "--with-stream_ssl_module"
616 "--with-stream_ssl_preread_module"
617 "--with-http_stub_status_module"
618 ;; Even when not cross-building, we pass the
619 ;; --crossbuild option to avoid customizing for the
620 ;; kernel version on the build machine.
621 #$(let ((system "Linux") ; uname -s
622 (release "3.2.0") ; uname -r
623 ;; uname -m
624 (machine (match (or (%current-target-system)
625 (%current-system))
626 ("x86_64-linux" "x86_64")
627 ("i686-linux" "i686")
628 ("mips64el-linux" "mips64")
629 ;; Prevent errors when querying
630 ;; this package on unsupported
631 ;; platforms, e.g. when running
632 ;; "guix package --search="
633 (_ "UNSUPPORTED"))))
634 (string-append "--crossbuild="
635 system ":" release ":" machine)))
636 #:phases
637 #~(modify-phases %standard-phases
638 (add-before 'configure 'patch-/bin/sh
639 (lambda _
640 (substitute* "auto/feature"
641 (("/bin/sh") (which "sh")))))
642 (replace 'configure
643 ;; The configure script is hand-written, not from GNU autotools.
644 (lambda* (#:key configure-flags inputs #:allow-other-keys)
645 (setenv "CC" #$(cc-for-target))
646 ;; Fix ./configure test for ‘#include <libxml/parser.h>’.
647 (setenv "CFLAGS" ; CPPFLAGS is not respected
648 (string-append "-O2 -g "
649 "-I" (search-input-directory
650 inputs "/include/libxml2")))
651 (format #t "configure flags: ~s~%" configure-flags)
652 (apply invoke "./configure"
653 (string-append "--prefix=" #$output)
654 configure-flags)))
655 (add-after 'install 'install-man-page
656 (lambda _
657 (let ((man (string-append #$output "/share/man")))
658 (install-file "objs/nginx.8" (string-append man "/man8")))))
659 (add-after 'install 'move-html-doc
660 (lambda _
661 (let* ((out #$output)
662 (share (string-append out "/share/nginx")))
663 ;; Example configuration and HTML files belong in /share.
664 (mkdir-p share)
665 (rename-file (string-append out "/html")
666 (string-append share "/html"))))))))
667 (home-page "https://nginx.org")
668 (synopsis "HTTP and reverse proxy server")
669 (description
670 "Nginx (\"engine X\") is a high-performance web and reverse proxy server
671created by Igor Sysoev. It can be used both as a stand-alone web server
672and as a proxy to reduce the load on back-end HTTP or mail servers.")
673 ;; Almost all of nginx is distributed under the bsd-2 license.
674 ;; The exceptions are:
675 ;; * The 'nginx-http-push' module is covered by the expat license.
676 ;; * The 'nginx-development-kit' module is mostly covered by bsd-3,
677 ;; except for two source files which are bsd-4 licensed.
678 (license (list license:bsd-2 license:expat license:bsd-3 license:bsd-4))))
679
680(define-public nginx-documentation
681 ;; This documentation should be relevant for the current nginx package.
682 (let ((commit "857ceb30c4eb103cb1f1817c715f9c3caa0af75b")
683 (revision "0"))
684 (package
685 (name "nginx-documentation")
686 (version (git-version "1.31.1" revision commit))
687 (source
688 (origin (method git-fetch)
689 (uri (git-reference
690 (url "https://github.com/nginx/nginx.org.git")
691 (commit commit)))
692 (file-name (git-file-name name version))
693 (sha256
694 (base32
695 "0zyjjyikc65gmx24b3pbaxznqgp6mnygwcgdax1nqlv1cj30n5a0"))))
696 (build-system gnu-build-system)
697 (arguments
698 (list
699 #:tests? #f ; no test suite
700 #:phases
701 #~(modify-phases %standard-phases
702 (delete 'configure) ; no configure script
703 (replace 'build
704 (lambda _
705 (substitute* "tools/umasked.sh"
706 ((" /bin/sh") (string-append " " (which "sh"))))
707 ;; The documentation includes a banner, which makes sense on
708 ;; the NGinx website, but doesn't make much sense when
709 ;; viewing locally. Therefore, modify the CSS to remove the
710 ;; banner.
711 (substitute* "xslt/style.xslt"
712 (("#banner \\{ background: black;")
713 "#banner { display: none;"))
714 (invoke "make")))
715 (replace 'install
716 (lambda _
717 (mkdir-p #$output)
718 (copy-recursively "libxslt" #$output))))))
719 (native-inputs (list libxml2 libxslt nginx-xslscript))
720 (home-page "https://nginx.org")
721 (synopsis "Documentation for the nginx web server")
722 (description
723 "This package provides HTML documentation for the nginx web server.")
724 (license license:bsd-2))))
725
726(define-public nginx-accept-language-module
727 ;; Upstream has never made a release; use current commit instead.
728 (let ((commit "2f69842f83dac77f7d98b41a2b31b13b87aeaba7")
729 (revision "1"))
730 (package
731 (name "nginx-accept-language-module")
732 (version (git-version "0.0.0" ;upstream has no version number
733 revision commit))
734 (source
735 (origin
736 (method git-fetch)
737 (uri (git-reference
738 (url "https://github.com/giom/nginx_accept_language_module")
739 (commit commit)))
740 (file-name (git-file-name name version))
741 (sha256
742 (base32 "1hjysrl15kh5233w7apq298cc2bp4q1z5mvaqcka9pdl90m0vhbw"))))
743 (build-system gnu-build-system)
744 (inputs `(("libxcrypt" ,libxcrypt)
745 ("openssl" ,openssl)
746 ("pcre" ,pcre)
747 ("nginx-sources" ,(package-source nginx))
748 ("zlib" ,zlib)))
749 (arguments
750 `(#:tests? #f ; no test target
751 #:make-flags (list "modules")
752 #:modules ((guix build utils)
753 (guix build gnu-build-system)
754 (ice-9 popen)
755 (ice-9 regex)
756 (ice-9 textual-ports))
757 #:phases
758 (modify-phases %standard-phases
759 (add-after 'unpack 'unpack-nginx-sources
760 (lambda* (#:key inputs native-inputs #:allow-other-keys)
761 (begin
762 ;; The nginx source code is part of the module’s source.
763 (format #t "decompressing nginx source code~%")
764 (let ((tar (assoc-ref inputs "tar"))
765 (nginx-srcs (assoc-ref inputs "nginx-sources")))
766 (invoke (string-append tar "/bin/tar")
767 "xvf" nginx-srcs "--strip-components=1"))
768 #t)))
769 (add-after 'unpack 'convert-to-dynamic-module
770 (lambda _
771 (begin
772 (with-atomic-file-replacement "config"
773 (lambda (in out)
774 ;; cf. https://www.nginx.com/resources/wiki/extending/new_config/
775 (format out "ngx_module_type=HTTP~%")
776 (format out "ngx_module_name=\
777ngx_http_accept_language_module~%")
778 (let* ((str (get-string-all in))
779 (rx (make-regexp
780 "NGX_ADDON_SRCS=\"\\$NGX_ADDON_SRCS (.*)\""))
781 (m (regexp-exec rx str))
782 (srcs (match:substring m 1)))
783 (format out (string-append "ngx_module_srcs=\""
784 srcs "\"~%")))
785 (format out ". auto/module~%")
786 (format out "ngx_addon_name=$ngx_module_name~%"))))))
787 (add-before 'configure 'patch-/bin/sh
788 (lambda _
789 (substitute* "auto/feature"
790 (("/bin/sh") (which "sh")))
791 #t))
792 (replace 'configure
793 ;; This phase is largely copied from the nginx package.
794 (lambda* (#:key outputs #:allow-other-keys)
795 (let ((flags
796 (list ;; A copy of nginx’ flags follows, otherwise we
797 ;; get a binary compatibility error. FIXME: Code
798 ;; duplication is bad.
799 (string-append "--prefix=" (assoc-ref outputs "out"))
800 "--with-http_ssl_module"
801 "--with-http_v2_module"
802 "--with-pcre-jit"
803 "--with-debug"
804 "--with-compat"
805 ;; Even when not cross-building, we pass the
806 ;; --crossbuild option to avoid customizing for the
807 ;; kernel version on the build machine.
808 ,(let ((system "Linux") ; uname -s
809 (release "3.2.0") ; uname -r
810 ;; uname -m
811 (machine (match (or (%current-target-system)
812 (%current-system))
813 ("x86_64-linux" "x86_64")
814 ("i686-linux" "i686")
815 ("mips64el-linux" "mips64")
816 ;; Prevent errors when querying
817 ;; this package on unsupported
818 ;; platforms, e.g. when running
819 ;; "guix package --search="
820 (_ "UNSUPPORTED"))))
821 (string-append "--crossbuild="
822 system ":" release ":" machine))
823 ;; The following are the args described on
824 ;; <https://www.nginx.com/blog/compiling-dynamic-modules-nginx-plus>.
825 ;; Enabling --with-compat here and in the nginx package
826 ;; would ensure binary compatibility even when using
827 ;; different configure options from the main nginx
828 ;; package. This is not needed for Guix.
829 ;; "--with-compat"
830 "--add-dynamic-module=.")))
831 (setenv "CC" "gcc")
832 (format #t "environment variable `CC' set to `gcc'~%")
833 (format #t "configure flags: ~s~%" flags)
834 (apply invoke "./configure" flags)
835 #t)))
836 (replace 'install
837 (lambda* (#:key outputs #:allow-other-keys)
838 (let* ((out (assoc-ref outputs "out"))
839 (modules-dir (string-append out "/etc/nginx/modules"))
840 (doc-dir (string-append
841 out "/share/doc/nginx-accept-language-module")))
842 (mkdir-p modules-dir)
843 (copy-file "objs/ngx_http_accept_language_module.so"
844 (string-append
845 modules-dir "/ngx_http_accept_language_module.so"))
846 (mkdir-p doc-dir)
847 (copy-file "README.textile"
848 (string-append doc-dir "/README.textile"))
849 #t))))))
850 (home-page
851 "https://www.nginx.com/resources/wiki/modules/accept_language/")
852 (synopsis "Nginx module for parsing the Accept-Language HTTP header")
853 (description
854 "This nginx module parses the Accept-Language field in HTTP headers and
855chooses the most suitable locale for the user from the list of locales
856supported at your website.")
857 (license (delete-duplicates
858 (cons license:bsd-2 ;license of nginx-accept-language-module
859 ;; The module’s code is linked statically with nginx,
860 ;; therefore nginx’ other licenses may also apply to its
861 ;; binary:
862 (package-license nginx)))))))
863
864(define nginx-xslscript
865 (let ((revision 11)
866 (changeset "01dc9ba12e1b"))
867 (package
868 (name "nginx-xslscript")
869 (version
870 (simple-format #f "2014-03-31-~A-~A" revision changeset))
871 (source (origin
872 (method hg-fetch)
873 (uri (hg-reference
874 (url "https://hg.nginx.org/xslscript")
875 (changeset changeset)))
876 (file-name (string-append name "-" version))
877 (sha256
878 (base32
879 "0am8zvdx3jmiwkg5q07qjaw5r26r4i2v5i4yr8a1k0jgib6ii08g"))))
880 (build-system gnu-build-system)
881 (arguments
882 '(#:tests? #f ; No test suite
883 #:phases
884 (modify-phases %standard-phases
885 (delete 'configure)
886 (delete 'build)
887 (replace 'install
888 (lambda* (#:key outputs #:allow-other-keys)
889 (let ((out-bin (string-append
890 (assoc-ref outputs "out")
891 "/bin")))
892 (mkdir-p out-bin)
893 (copy-file "xslscript.pl"
894 (string-append
895 out-bin
896 "/xslscript.pl"))
897 #t))))))
898 (home-page "https://hg.nginx.org/xslscript")
899 (synopsis "XSLScript with NGinx specific modifications")
900 (description
901 "XSLScript is a terse notation for writing complex XSLT stylesheets.
902This is modified version, specifically intended for use with the NGinx
903documentation.")
904 (license license:bsd-2))))
905
906(define nginx-socket-cloexec
907 (package
908 (inherit nginx)
909 (name "nginx-socket-cloexec") ;required for lua-resty-shell
910 (source
911 (origin
912 (inherit (package-source nginx))
913 (patches (append (search-patches "nginx-socket-cloexec.patch")
914 (origin-patches (package-source nginx))))))))
915
916(define-public nginx-lua-module
917 (package
918 (inherit nginx)
919 (name "nginx-lua-module")
920 (version "0.10.29")
921 (source
922 (origin
923 (method git-fetch)
924 (uri (git-reference
925 (url "https://github.com/openresty/lua-nginx-module")
926 (commit (string-append "v" version))))
927 (file-name (git-file-name "lua-nginx-module" version))
928 (sha256
929 (base32 "0manlsi9n8j59sncxwb2nxrbm5v5kwc7csrpi54m35v1pg19bbfg"))))
930 (build-system gnu-build-system)
931 (inputs
932 `(("nginx-sources" ,(package-source nginx-socket-cloexec))
933 ("luajit" ,luajit)
934 ,@(package-inputs nginx)))
935 (arguments
936 (substitute-keyword-arguments
937 `(#:make-flags '("modules")
938 #:modules ((guix build utils)
939 (guix build gnu-build-system)
940 (ice-9 popen)
941 (ice-9 regex)
942 (ice-9 textual-ports))
943 ,@(package-arguments nginx)
944 #:configure-flags '("--add-dynamic-module=."))
945 ((#:phases phases)
946 #~(modify-phases #$phases
947 (add-after 'unpack 'unpack-nginx-sources
948 (lambda* (#:key inputs native-inputs #:allow-other-keys)
949 (begin
950 ;; The nginx source code is part of the module’s source.
951 (format #t "decompressing nginx source code~%")
952 (let ((tar (assoc-ref inputs "tar"))
953 (nginx-srcs (assoc-ref inputs "nginx-sources")))
954 (invoke (string-append tar "/bin/tar")
955 "xvf" nginx-srcs "--strip-components=1"))
956 #t)))
957 (add-before 'configure 'set-luajit-env
958 (lambda* (#:key inputs #:allow-other-keys)
959 (let ((luajit (assoc-ref inputs "luajit")))
960 (setenv "LUAJIT_LIB"
961 (string-append luajit "/lib"))
962 (setenv "LUAJIT_INC"
963 (string-append luajit "/include/luajit-2.1"))
964 #t)))
965 (replace 'install
966 (lambda* (#:key outputs #:allow-other-keys)
967 (let ((modules-dir (string-append (assoc-ref outputs "out")
968 "/etc/nginx/modules")))
969 (install-file "objs/ngx_http_lua_module.so" modules-dir)
970 #t)))
971 (delete 'move-html-doc)
972 (delete 'install-man-page)))))
973 (synopsis "NGINX module for Lua programming language support")
974 (description "This NGINX module provides a scripting support with Lua
975programming language.")))
976
977(define-public nginx-rtmp-module
978 (package
979 (inherit nginx)
980 (name "nginx-rtmp-module")
981 (version "1.2.2")
982 (source
983 (origin
984 (method git-fetch)
985 (uri (git-reference
986 (url "https://github.com/arut/nginx-rtmp-module")
987 (commit (string-append "v" version))))
988 (file-name (git-file-name name version))
989 (sha256
990 (base32 "0y45bswk213yhkc2v1xca2rnsxrhx8v6azxz9pvi71vvxcggqv6h"))))
991 (build-system gnu-build-system)
992 (inputs
993 `(("nginx-sources" ,(package-source nginx))
994 ,@(package-inputs nginx)))
995 (arguments
996 (substitute-keyword-arguments
997 `(#:make-flags '("modules") ;Only build this module not all of nginx.
998 ,@(package-arguments nginx))
999 ((#:configure-flags flags)
1000 #~(cons "--add-dynamic-module=." #$flags))
1001 ((#:phases phases)
1002 #~(modify-phases #$phases
1003 (add-after 'unpack 'unpack-nginx-sources
1004 (lambda _
1005 (begin
1006 ;; The nginx source code is part of the module’s source.
1007 (format #t "decompressing nginx source code~%")
1008 (invoke "tar" "xvf" #$(this-package-input "nginx-sources")
1009 ;; This package's LICENSE file would be
1010 ;; overwritten with the one from nginx when
1011 ;; unpacking the nginx source, so rename the nginx
1012 ;; one when unpacking.
1013 "--transform=s,/LICENSE$,/LICENSE.nginx,"
1014 "--strip-components=1"))))
1015 (replace 'install
1016 (lambda _
1017 (let ((modules-dir (string-append #$output
1018 "/etc/nginx/modules")))
1019 (install-file "objs/ngx_rtmp_module.so" modules-dir))))
1020 (delete 'move-html-doc)
1021 (delete 'install-man-page)))))
1022 (home-page "https://github.com/arut/nginx-rtmp-module")
1023 (synopsis "NGINX module for audio and video streaming with RTMP")
1024 (description "This NGINX module provides streaming with the @acronym{RTMP,
1025Real-Time Messaging Protocol}, @acronym{DASH, Dynamic Adaptive Streaming over HTTP},
1026and @acronym{HLS, HTTP Live Streaming} protocols. It allows NGINX to accept
1027incoming RTMP streams for recording or redistribution. It also supports
1028on-demand streaming from a file on disk and pulling from an upstream RTMP
1029stream. Remote control of the module is possible over HTTP.")
1030 (license license:bsd-2)))
1031
1032(define-public nginx-headers-more-module
1033 (package
1034 (inherit nginx)
1035 (name "nginx-headers-more-module")
1036 (version "0.38")
1037 (source
1038 (origin
1039 (method git-fetch)
1040 (uri (git-reference
1041 (url "https://github.com/openresty/headers-more-nginx-module")
1042 (commit (string-append "v" version))))
1043 (file-name (git-file-name name version))
1044 (sha256
1045 (base32 "1dbgwzkpni616nawjkrq0xid60wdgab3vciy7nr966ac6rjyiliy"))))
1046 (build-system gnu-build-system)
1047 (inputs
1048 `(("nginx-sources" ,(package-source nginx))
1049 ,@(package-inputs nginx)))
1050 (arguments
1051 (substitute-keyword-arguments
1052 `(#:make-flags '("modules") ;Only build this module not all of nginx.
1053 ,@(package-arguments nginx))
1054 ((#:configure-flags flags)
1055 #~(cons "--add-dynamic-module=." #$flags))
1056 ((#:phases phases)
1057 #~(modify-phases #$phases
1058 (add-after 'unpack 'unpack-nginx-sources
1059 (lambda _
1060 (begin
1061 ;; The nginx source code is needed to compile the module.
1062 (format #t "decompressing nginx source code~%")
1063 (invoke "tar" "xvf" #$(this-package-input "nginx-sources")
1064 ;; This package's LICENSE file would be
1065 ;; overwritten with the one from nginx when
1066 ;; unpacking the nginx source, so rename the nginx
1067 ;; one when unpacking.
1068 "--transform=s,/LICENSE$,/LICENSE.nginx,"
1069 "--strip-components=1"))))
1070 (replace 'install
1071 (lambda _
1072 (let ((modules-dir (string-append #$output
1073 "/etc/nginx/modules")))
1074 (install-file "objs/ngx_http_headers_more_filter_module.so"
1075 modules-dir))))
1076 (delete 'move-html-doc)
1077 (delete 'install-man-page)))))
1078 (home-page "https://github.com/openresty/headers-more-nginx-module")
1079 (synopsis "Set, add, and clear input and output headers in NGINX http servers")
1080 (description "This NGINX module allows adding, setting, or clearing any
1081output or input header specified.
1082
1083This is an enhanced version of the standard headers module because it provides
1084more utilities like resetting or clearing \"builtin headers\" like @code{Content-Type},
1085@code{Content-Length}, and @code{Server}.
1086
1087It also allows you to specify an optional HTTP status code criteria using the
1088@code{-s} option and an optional content type criteria using the @code{-t}
1089option while modifying the output headers with the more_set_headers and
1090more_clear_headers directives.")
1091 (license license:bsd-2)))
1092
1093(define-public nginx-module-vts
1094 (package
1095 (inherit nginx)
1096 (name "nginx-module-vts")
1097 (version "0.2.1")
1098 (source
1099 (origin
1100 (method git-fetch)
1101 (uri (git-reference
1102 (url "https://github.com/vozlt/nginx-module-vts")
1103 (commit (string-append "v" version))))
1104 (file-name (git-file-name name version))
1105 (sha256
1106 (base32 "017298vpp1ra16xyfdbsczdrz0b0y67x6adkzcc98y6gb3kg52n7"))))
1107 (build-system gnu-build-system)
1108 (inputs
1109 `(("nginx-sources" ,(package-source nginx))
1110 ,@(package-inputs nginx)))
1111 (arguments
1112 (substitute-keyword-arguments
1113 `(#:make-flags '("modules") ;Only build this module not all of nginx.
1114 ,@(package-arguments nginx))
1115 ((#:configure-flags flags)
1116 #~(cons "--add-dynamic-module=." #$flags))
1117 ((#:phases phases)
1118 #~(modify-phases #$phases
1119 (add-after 'unpack 'unpack-nginx-sources
1120 (lambda _
1121 (begin
1122 ;; The nginx source code is part of the module’s source.
1123 (format #t "decompressing nginx source code~%")
1124 (invoke "tar" "xvf" #$(this-package-input "nginx-sources")
1125 ;; This package's LICENSE file would be
1126 ;; overwritten with the one from nginx when
1127 ;; unpacking the nginx source, so rename the nginx
1128 ;; one when unpacking.
1129 "--transform=s,/LICENSE$,/LICENSE.nginx,"
1130 "--strip-components=1"))))
1131 (replace 'install
1132 (lambda _
1133 (let ((modules-dir (string-append #$output
1134 "/etc/nginx/modules")))
1135 (install-file "objs/ngx_http_vhost_traffic_status_module.so" modules-dir))))
1136 (delete 'move-html-doc)
1137 (delete 'install-man-page)))))
1138 (home-page "https://github.com/vozlt/nginx-module-vts")
1139 (synopsis "NGINX module for monitoring virtual host traffic status")
1140 (description "This NGINX module provides access to virtual host status information,
1141similar to live activity monitoring provided with NGINX plus.")
1142 (license license:bsd-2)))
1143
1144(define-public lighttpd
1145 (package
1146 (name "lighttpd")
1147 (version "1.4.82")
1148 (source (origin
1149 (method url-fetch)
1150 (uri (string-append "https://download.lighttpd.net/lighttpd/"
1151 "releases-" (version-major+minor version) ".x/"
1152 "lighttpd-" version ".tar.xz"))
1153 (sha256
1154 (base32
1155 "0qn98rib9wxhndzd8kpg0vlygnwly5j7x82f2nmndgcw3wwp9zmb"))))
1156 (build-system gnu-build-system)
1157 (arguments
1158 (list #:configure-flags
1159 #~(list "--with-krb5"
1160 "--with-ldap"
1161 "--with-libev"
1162 "--with-libunwind"
1163 "--with-openssl"
1164 "--with-pam"
1165 "--with-sasl")
1166 #:phases
1167 #~(modify-phases %standard-phases
1168 (add-after 'unpack 'embed-/bin/sh-reference
1169 (lambda* (#:key inputs #:allow-other-keys)
1170 (substitute* "src/mod_ssi.c"
1171 (("/bin/sh") (search-input-file inputs "/bin/sh")))))
1172 (add-after 'unpack 'fix-tests
1173 (lambda _
1174 (setenv "SHELL" (which "sh"))
1175 ;; gethostbyaddr fails
1176 (substitute* "tests/LightyTest.pm"
1177 (("\\{HOSTNAME\\} = \\$name;")
1178 "{HOSTNAME} = \"127.0.0.1\";"))))
1179 (add-after 'unpack 'skip-failing-tests
1180 ;; XXX It would be wonderful if you, reader, felt suddenly and
1181 ;; irresistibly compelled to investigate & fix these failures.
1182 (lambda _
1183 ;; Throws a bunch of ‘connect failed: Connection refused’.
1184 (delete-file "tests/mod-scgi.t")
1185
1186 ;; test_mod_ssi_read_fd: Assertion `cq->first' failed.
1187 (substitute* "src/t/test_mod.c"
1188 ((".*\\btest_mod_ssi\\b.*") "")))))))
1189 (inputs
1190 (list bash-minimal
1191 cyrus-sasl
1192 libev
1193 libunwind
1194 linux-pam
1195 mit-krb5
1196 openldap
1197 openssl
1198 pcre2
1199 zlib))
1200 (native-inputs
1201 (list autoconf
1202 automake
1203 libtool
1204 perl ; for tests
1205 pkg-config which))
1206 (home-page "https://www.lighttpd.net/")
1207 (synopsis "Lightweight HTTP and reverse proxy server")
1208 (description
1209 "Lighttpd is a secure, fast, compliant, and very flexible web-server that
1210has been optimized for high-performance environments. It has a very low
1211memory footprint compared to other webservers. Its features include FastCGI,
1212CGI, authentication, output compression, URL rewriting and many more.")
1213 (license license:bsd-3)))
1214
1215(define-public fcgi
1216 (package
1217 (name "fcgi")
1218 (version "2.4.2")
1219 (source
1220 (origin
1221 (method git-fetch)
1222 ;; Upstream has disappeared.
1223 (uri (git-reference
1224 (url "https://github.com/FastCGI-Archives/fcgi2")
1225 (commit version)))
1226 (file-name (git-file-name name version))
1227 (sha256
1228 (base32 "1jhz6jfwv5kawa8kajvg18nfwc1b30f38zc0lggszd1vcmrwqkz1"))))
1229 (build-system gnu-build-system)
1230 ;; Parallel building is not supported.
1231 (arguments `(#:parallel-build? #f))
1232 (native-inputs
1233 (list autoconf automake libtool))
1234 ;; This is an archived fork of the original home page, www.fastcgi.com.
1235 (home-page "https://fastcgi-archives.github.io/")
1236 (synopsis "Language-independent, high-performant extension to CGI")
1237 (description "FastCGI is a language-independent, scalable extension to CGI
1238that provides high performance without the limitations of server specific
1239APIs.")
1240 ;; This package is released under the Open Market License, a variant of
1241 ;; the Expat license, incompatible with the GPL.
1242 (license (license:non-copyleft "file://LICENSE.TERMS"))))
1243
1244(define-public kcgi
1245 (package
1246 (name "kcgi")
1247 (version "1.0.1")
1248 (source
1249 (origin
1250 (method git-fetch)
1251 (uri (git-reference
1252 (url "https://github.com/kristapsdz/kcgi")
1253 (commit
1254 (string-append "VERSION_"
1255 (string-replace-substring version "." "_")))))
1256 (file-name (git-file-name name version))
1257 (sha256
1258 (base32 "0km2295rmxlgl3livhil861h0s43bks2cqyvpf80zcqiba1ilmsw"))))
1259 (build-system gnu-build-system)
1260 (arguments
1261 (list
1262 ;; There are only regression tests which are only recommended if running
1263 ;; bleeding edge sources.
1264 #:tests? #f
1265 #:phases
1266 #~(modify-phases %standard-phases
1267 (replace 'configure
1268 (lambda* (#:key outputs #:allow-other-keys)
1269 (invoke "./configure"
1270 (string-append "CC=" #$(cc-for-target))
1271 (string-append "PREFIX=" #$output))))
1272 (replace 'build
1273 (lambda* (#:key outputs parallel-build? #:allow-other-keys)
1274 (apply invoke "bmake"
1275 (string-append "LDFLAGS=-Wl,-rpath,"
1276 #$output "/lib")
1277 (if parallel-build?
1278 (list "-j" (number->string (parallel-job-count)))
1279 '()))))
1280 (replace 'install
1281 (lambda _
1282 (invoke "bmake" "install"))))))
1283 (native-inputs
1284 (list bmake libbsd pkg-config))
1285 (inputs
1286 (list zlib))
1287 (home-page "https://kristaps.bsd.lv/kcgi/")
1288 (synopsis "Minimal CGI and FastCGI library for C/C++")
1289 (description "This package provides a CGI and FastCGI library for C/C++
1290web applications. It is minimal, secure, and auditable.")
1291 (license license:isc)))
1292
1293(define-public fcgiwrap
1294 (let ((commit "2870d2729a3930988f0041e2d78fec672e69afac")
1295 (revision "1"))
1296 (package
1297 (name "fcgiwrap")
1298 (version (git-version "1.1.0" revision commit))
1299 (source
1300 (origin
1301 (method git-fetch)
1302 (uri (git-reference
1303 ;; Upstream last updated in 2015, this forked version has better
1304 ;; socket cleanup.
1305 (url "https://github.com/flu0r1ne/fcgiwrap")
1306 (commit commit)))
1307 (file-name (git-file-name name version))
1308 (sha256
1309 (base32 "0rkpp4apfhdcrmym3pcpqlncd0r4fyr3pa45i8g6x4p38b4azmmm"))))
1310 (build-system gnu-build-system)
1311 (arguments
1312 `(#:tests? #f ; no tests included
1313 #:make-flags (list "CC=gcc")
1314 #:phases
1315 (modify-phases %standard-phases
1316 (add-after 'unpack 'fix-CFLAGS
1317 ;; Remove broken options unconditionally added to CFLAGS.
1318 (lambda _
1319 (substitute* "configure.ac"
1320 ((" -Werror") ""))
1321 #t)))))
1322 (native-inputs
1323 (list autoconf automake pkg-config))
1324 (inputs
1325 (list fcgi))
1326 (home-page "https://nginx.localdomain.pl/wiki/FcgiWrap")
1327 (synopsis "Simple server for running CGI applications over FastCGI")
1328 (description "Fcgiwrap is a simple server for running CGI applications
1329over FastCGI. It hopes to provide clean CGI support to Nginx (and other web
1330servers that may need it).")
1331 (license license:expat))))
1332
1333(define-public sogogi
1334 (let ((commit "e6fd81c8d861bfa538372a6ff10b0cf8dfcb33f9")
1335 (revision "1"))
1336 (package
1337 (name "sogogi")
1338 (version (git-version "0.0.0" revision commit))
1339 (source
1340 (origin
1341 (method git-fetch)
1342 (uri (git-reference
1343 (url "https://codeberg.org/emersion/sogogi.git")
1344 (commit commit)))
1345 (file-name (git-file-name name version))
1346 (sha256
1347 (base32 "01vw91b2r2y0q21hkhpagbiq4l04n0z56m98psk5ycds2v13v951"))))
1348 (build-system go-build-system)
1349 (arguments
1350 (list
1351 #:install-source? #f
1352 #:import-path "codeberg.org/emersion/sogogi"
1353 #:phases
1354 #~(modify-phases %standard-phases
1355 (add-after 'install 'install-man-page
1356 (lambda* (#:key import-path #:allow-other-keys)
1357 (let ((man (string-append #$output "/share/man/man")))
1358 (mkdir-p (string-append man "1"))
1359 (with-input-from-file
1360 (string-append "src/" import-path "/doc/sogogi.1.scd")
1361 (lambda _
1362 (with-output-to-file (string-append man "1/sogogi.1")
1363 (lambda _
1364 (invoke "scdoc")))))))))))
1365 (native-inputs
1366 (list go-codeberg-org-emersion-go-scfg
1367 go-github-com-emersion-go-webdav
1368 scdoc))
1369 (home-page "https://codeberg.org/emersion/sogogi")
1370 (synopsis "Minimalistic WebDav server implementation")
1371 (description
1372 "This package provides a WebDAV file server based on
1373@code{github.com/emersion/go-webdav}. The server exposes a configured local
1374filesystem to remote users via HTTP and supports defining access rights
1375on a per-user basis.")
1376 (license license:agpl3))))
1377
1378(define-public starman
1379 (package
1380 (name "starman")
1381 (version "0.4015")
1382 (source
1383 (origin
1384 (method url-fetch)
1385 (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
1386 "Starman-" version ".tar.gz"))
1387 (sha256
1388 (base32 "1y1kn4929k299fbf6sw9lxcsdlq9fvq777p6yrzk591rr9xhkx8h"))))
1389 (build-system perl-build-system)
1390 (native-inputs
1391 (list perl-libwww perl-module-build-tiny perl-test-requires))
1392 (propagated-inputs
1393 (list perl-data-dump
1394 perl-http-date
1395 perl-http-message
1396 perl-http-parser-xs
1397 perl-net-server
1398 perl-plack
1399 perl-test-tcp))
1400 (home-page "https://metacpan.org/release/Starman")
1401 (synopsis "PSGI/Plack web server")
1402 (description "Starman is a PSGI perl web server that has unique features
1403such as high performance, preforking, signal support, superdaemon awareness,
1404and UNIX socket support.")
1405 (license license:perl-license)))
1406
1407(define-public icedtea-web
1408 (package
1409 (name "icedtea-web")
1410 (version "1.6.2")
1411 (source (origin
1412 (method url-fetch)
1413 (uri (string-append
1414 "http://icedtea.wildebeest.org/download/source/"
1415 name "-" version ".tar.gz"))
1416 (sha256
1417 (base32
1418 "004kwrngyxxlrlzby4vzxjr0xcyngcdc9dfgnvi61ffnjr006ryf"))))
1419 (build-system gnu-build-system)
1420 (arguments
1421 `(#:configure-flags
1422 (list "--disable-plugin" ;NPAPI plugins are obsolete nowadays.
1423 (string-append "BIN_BASH="
1424 (search-input-file %build-inputs "/bin/bash"))
1425 (string-append "--with-jdk-home=" (assoc-ref %build-inputs "jdk")))))
1426 (outputs '("out" "doc"))
1427 (native-inputs
1428 (list pkg-config zip))
1429 (inputs
1430 `(("gtk+" ,gtk+)
1431 ("jdk" ,icedtea "jdk")))
1432 (home-page "http://icedtea.classpath.org/wiki/IcedTea-Web")
1433 (synopsis "Java Web Start")
1434 (description
1435 "IcedTea-Web is an implementation of the @dfn{Java Network Launching
1436Protocol}, also known as Java Web Start. This package provides tools and
1437libraries for working with JNLP applets.")
1438 ;; The program is mainly GPL2+, with some individual files under LGPL2.1+
1439 ;; or dual licenses.
1440 (license license:gpl2+)))
1441
1442(define-public iocaine
1443 (package
1444 (name "iocaine")
1445 (version "2.1.0")
1446 (source
1447 (origin
1448 (method url-fetch)
1449 (uri (crate-uri "iocaine" version))
1450 (file-name (string-append name "-" version ".tar.gz"))
1451 (sha256
1452 (base32 "1pd42hn5lqm3xw6id652w7sswix3l6bslcld7svqyq47gscsm3vn"))))
1453 (build-system cargo-build-system)
1454 (arguments
1455 (list
1456 #:install-source? #f
1457 #:phases
1458 #~(modify-phases %standard-phases
1459 (add-before 'build 'override-jemalloc
1460 (lambda* (#:key inputs #:allow-other-keys) ;Copied from uv
1461 (let ((jemalloc (assoc-ref inputs "jemalloc")))
1462 ;; This flag is needed when not using the bundled jemalloc.
1463 ;; https://github.com/tikv/jemallocator/issues/19
1464 (setenv
1465 "CARGO_FEATURE_UNPREFIXED_MALLOC_ON_SUPPORTED_PLATFORMS" "1")
1466 (setenv "JEMALLOC_OVERRIDE"
1467 (string-append jemalloc "/lib/libjemalloc.so"))))))))
1468 (inputs (cons* jemalloc (cargo-inputs 'iocaine)))
1469 (home-page "https://iocaine.madhouse-project.org/")
1470 (synopsis "Serves poisonous data to large language model scrapers")
1471 (description
1472 "Iocaine is an HTTP server that generates a stable endless maze of
1473Markov-babble-filled web pages. Placed behind a heavily rate-limited reverse
1474proxy, it becomes a ``tar pit'' for trapping aggressive web scrapers commonly
1475used to train large language models, and poisoning the collected data.")
1476 (license license:expat)))
1477
1478(define-public jansson
1479 (package
1480 (name "jansson")
1481 (version "2.15.0")
1482 (source (origin
1483 (method url-fetch)
1484 (uri (string-append "https://github.com/akheron/jansson"
1485 "/releases/download/v" version
1486 "/jansson-" version ".tar.bz2"))
1487 (sha256
1488 (base32
1489 "0m49glsr5v376jpyj2y0xyr11703pr4bfgipz5jk2dq0a1vcgsm7"))))
1490 (build-system gnu-build-system)
1491 (arguments
1492 (list
1493 #:configure-flags #~'("--disable-static")
1494 #:phases
1495 #~(modify-phases %standard-phases
1496 (add-after 'unpack 'patch-tests
1497 (lambda _
1498 ;; Take a fix from upstream for testing with symbol versioning:
1499 ;; https://github.com/akheron/jansson/pull/593
1500 (substitute* "test/suites/api/check-exports"
1501 (("(grep ' \\[DT\\] ' \\$test_log/symbols.*) \\| sort" _ cmd)
1502 (string-append cmd "| sed 's/@@libjansson.*//' | sort"))))))))
1503 (home-page "https://github.com/akheron/jansson")
1504 (synopsis "JSON C library")
1505 (description
1506 "Jansson is a C library for encoding, decoding and manipulating JSON
1507data.")
1508 (license license:expat)))
1509
1510(define-public json-c
1511 (package
1512 (name "json-c")
1513 (version "0.18")
1514 (source (origin
1515 (method url-fetch)
1516 (uri (string-append
1517 "https://s3.amazonaws.com/json-c_releases/releases/json-c-"
1518 version ".tar.gz"))
1519 (sha256
1520 (base32
1521 "090pn7gyicvpqq01451zhkjw1fw3h4l6v2f6mxlvhrli8x3b0sl7"))))
1522 (build-system cmake-build-system)
1523 (home-page "https://github.com/json-c/json-c/wiki")
1524 (synopsis "JSON implementation in C")
1525 (description
1526 "JSON-C implements a reference counting object model that allows you to
1527easily construct JSON objects in C, output them as JSON-formatted strings and
1528parse JSON-formatted strings back into the C representation of JSON objects.
1529It aims to conform to RFC 7159.")
1530 (license license:x11)))
1531
1532;; TODO: Remove these old versions when all dependents have been updated.
1533(define-public json-c-0.13
1534 (package
1535 (inherit json-c)
1536 (version "0.13.1")
1537 (source (origin
1538 (method url-fetch)
1539 (uri (string-append
1540 "https://s3.amazonaws.com/json-c_releases/releases/json-c-"
1541 version ".tar.gz"))
1542 (sha256
1543 (base32 "0ws8dz9nk8q2c0gbf66kg2r6mrkl7kamd3gpdv9zsyrz9n6n0zmq"))
1544 (patches (search-patches "json-c-0.13-CVE-2020-12762.patch"))
1545 (modules '((guix build utils)))
1546 (snippet
1547 '(begin
1548 ;; Somehow 'config.h.in' is older than
1549 ;; 'aclocal.m4', which would trigger a rule to
1550 ;; run 'autoheader'.
1551 (set-file-time "config.h.in"
1552 (stat "aclocal.m4"))
1553 #t))))
1554 (build-system gnu-build-system)
1555 (arguments
1556 (list
1557 #:configure-flags
1558 #~(list #$(string-append "CFLAGS=-g -O2"
1559 " -Wno-error=calloc-transposed-args"
1560 " -Wno-error=implicit-function-declaration"))))))
1561
1562(define-public json-parser
1563 (package
1564 (name "json-parser")
1565 (version "1.1.0")
1566 (source (origin
1567 ;; do not use auto-generated tarballs
1568 (method git-fetch)
1569 (uri (git-reference
1570 (url "https://github.com/udp/json-parser")
1571 (commit (string-append "v" version))))
1572 (file-name (git-file-name name version))
1573 (sha256
1574 (base32
1575 "1ls7z4fx0sq633s5bc0j1gh36sv087gmrgr7rza22wjq2d4606yf"))))
1576 ;; FIXME: we should build the python bindings in a separate package
1577 (build-system gnu-build-system)
1578 ;; the tests are written for the python bindings which are not built here
1579 (arguments '(#:tests? #f))
1580 (home-page "https://github.com/udp/json-parser")
1581 (synopsis "JSON parser written in ANSI C")
1582 (description "This package provides a very low footprint JSON parser
1583written in portable ANSI C.
1584
1585@itemize
1586@item BSD licensed with no dependencies (i.e. just drop the C file into your
1587project)
1588@item Never recurses or allocates more memory than it needs
1589@item Very simple API with operator sugar for C++
1590@end itemize")
1591 (license license:bsd-2)))
1592
1593(define-public webhook
1594 (package
1595 (name "webhook")
1596 (version "2.8.3")
1597 (source
1598 (origin
1599 (method git-fetch)
1600 (uri (git-reference
1601 (url "https://github.com/adnanh/webhook")
1602 (commit version)))
1603 (file-name (git-file-name name version))
1604 (sha256
1605 (base32 "14y68gdmy13d5jk2hlki0syrbksxs6anm5dmmpbm8chqzmb8psrz"))
1606 (modules '((guix build utils)))
1607 (snippet
1608 #~(begin
1609 (delete-file-recursively "vendor")))))
1610 (build-system go-build-system)
1611 (arguments
1612 (list
1613 #:install-source? #f
1614 #:import-path "github.com/adnanh/webhook"
1615 #:test-flags #~(list "-vet=off")
1616 #:phases
1617 #~(modify-phases %standard-phases
1618 (add-after 'unpack 'configure
1619 (lambda* (#:key inputs #:allow-other-keys)
1620 (substitute* "src/github.com/adnanh/webhook/webhook_test.go"
1621 (("/bin/echo")
1622 (search-input-file inputs "bin/echo"))
1623 (("/bin/sh")
1624 (search-input-file inputs "bin/sh"))))))))
1625 (native-inputs
1626 (list go-github-com-clbanning-mxj-v2
1627 go-github-com-coreos-go-systemd-v22
1628 go-github-com-dustin-go-humanize
1629 go-github-com-fsnotify-fsnotify
1630 go-github-com-ghodss-yaml
1631 go-github-com-go-chi-chi-v5
1632 go-github-com-gofrs-uuid-v5
1633 go-github-com-gorilla-mux
1634 go-golang-org-x-sys))
1635 (home-page "https://github.com/adnanh/webhook")
1636 (synopsis "Lightweight incoming webhook server")
1637 (description
1638 "webhook is a lightweight configurable tool to create HTTP
1639endpoints (hooks) which can execute configured commands. Data from the HTTP
1640request (such as headers, payload or query variables) can be passed on to the
1641configured commands. Hooks may also be configured to trigger only when
1642certain rules are satisfied.
1643
1644webhook aims to be minimal and do nothing more than it should do. And, that
1645is:
1646
1647@itemize
1648@item receive the request
1649@item parse the headers, payload and query variables
1650@item check if the specified rules for the hook are satisfied
1651@item and finally, pass the specified arguments to the specified command via
1652command line arguments or via environment variables.
1653@end itemize")
1654 (license (list license:expat ;; main license
1655 license:asl2.0)))) ;; internal/pidfile
1656
1657(define-public qoauth
1658 (package
1659 (name "qoauth")
1660 (version "2.0.0")
1661 (source (origin
1662 (method git-fetch)
1663 (uri (git-reference
1664 (url "https://github.com/ayoy/qoauth")
1665 (commit (string-append "v" version))))
1666 (file-name (git-file-name name version))
1667 (sha256
1668 (base32
1669 "1b2jdqs526ac635yb2whm049spcsk7almnnr6r5b4yqhq922anw3"))))
1670 (build-system gnu-build-system)
1671 (inputs
1672 (list qca qtbase-5))
1673 (arguments
1674 '(#:tests? #f ;FIXME: some tests are failing
1675 #:phases
1676 (modify-phases %standard-phases
1677 (add-after 'unpack 'patch-code
1678 (lambda _
1679 (make-file-writable "src/qoauth.pc")
1680 (substitute* "src/src.pro"
1681 (("/lib64") "/lib"))
1682 #t))
1683 (add-after 'unpack 'adjust-mkspecs-directory
1684 (lambda* (#:key outputs #:allow-other-keys)
1685 (substitute* "src/src.pro"
1686 ;; Do not attempt to install the .prf file into qtbase
1687 ;; "lib/qt5/mkspecs/features", ref <https://bugs.gnu.org/45031>.
1688 (("\\$\\$\\[QMAKE_MKSPECS\\]")
1689 (string-append (assoc-ref outputs "out") "/lib/qt5/mkspecs")))
1690 #t))
1691 (replace 'configure
1692 (lambda* (#:key inputs #:allow-other-keys)
1693 (let ((qca (assoc-ref inputs "qca")))
1694 (invoke
1695 "qmake"
1696 (string-append "PREFIX=" (assoc-ref %outputs "out"))
1697 (string-append "QMAKE_INCDIR+=" qca "/include/Qca-qt5/QtCrypto")
1698 (string-append "LIBS+=-L" qca "/lib")
1699 (string-append "LIBS+=-lqca-qt5"))))))))
1700 (home-page "https://github.com/ayoy/qoauth")
1701 (synopsis "Qt-based C++ library for OAuth authorization scheme")
1702 (description "QOAuth is an attempt to support interaction with
1703OAuth-powered network services in a Qt way, i.e. simply, clearly and
1704efficiently. It gives the application developer no more than 4 methods.")
1705 (license license:lgpl2.1+)))
1706
1707(define-public krona-tools
1708 (package
1709 (name "krona-tools")
1710 (version "2.8")
1711 (source (origin
1712 (method url-fetch)
1713 (uri (string-append
1714 "https://github.com/marbl/Krona/releases/download/v"
1715 version "/KronaTools-" version ".tar"))
1716 (sha256
1717 (base32
1718 "1h698wddb3hii68mnkby7s1x81vbhd4z1sf4ivm1lsi2nqlc1vsn"))))
1719 (build-system perl-build-system)
1720 (arguments
1721 `(#:phases
1722 (modify-phases %standard-phases
1723 ;; There is no configure or build steps.
1724 (delete 'configure)
1725 (delete 'build)
1726 ;; Install script "install.pl" expects the build directory to remain
1727 ;; after installation, creating symlinks etc., so re-implement it
1728 ;; here.
1729 (replace 'install
1730 (lambda* (#:key outputs #:allow-other-keys)
1731 (let ((bin (string-append (assoc-ref outputs "out") "/bin"))
1732 (perl (string-append (assoc-ref outputs "out")
1733 "/lib/perl5/site_perl/krona-tools/lib"))
1734 (share (string-append (assoc-ref outputs "out")
1735 "/share/krona-tools")))
1736 (mkdir-p bin)
1737 (for-each
1738 (lambda (script)
1739 (let ((executable (string-append "scripts/" script ".pl")))
1740 ;; Prefix executables with 'kt' as install script does.
1741 (copy-file executable (string-append bin "/kt" script))))
1742 '("ClassifyBLAST"
1743 "GetContigMagnitudes"
1744 "GetLCA"
1745 "GetTaxIDFromAcc"
1746 "GetTaxInfo"
1747 "ImportBLAST"
1748 "ImportDiskUsage"
1749 "ImportEC"
1750 "ImportFCP"
1751 "ImportGalaxy"
1752 "ImportKrona"
1753 "ImportMETAREP-BLAST"
1754 "ImportMETAREP-EC"
1755 "ImportMGRAST"
1756 "ImportPhymmBL"
1757 "ImportRDP"
1758 "ImportRDPComparison"
1759 "ImportTaxonomy"
1760 "ImportText"
1761 "ImportXML"))
1762 (for-each
1763 (lambda (directory)
1764 (copy-recursively directory
1765 (string-append perl "/../" directory)))
1766 (list "data" "img" "taxonomy" "src"))
1767 (install-file "lib/KronaTools.pm" perl)
1768
1769 ;; Install downloaders
1770 (substitute* "updateAccessions.sh"
1771 (("ktPath=.*") (string-append "ktPath=" share "\n")))
1772 (substitute* "updateTaxonomy.sh"
1773 (("ktPath=.*") (string-append "ktPath=" share "\n"))
1774 (("command -v curl")
1775 (string-append "command -v " (which "curl")))
1776 (("curl -s")
1777 (string-append (which "curl") " -s"))
1778 (("curl\\$timestring")
1779 (string-append (which "curl") "$timestring"))
1780 (("perl -M")
1781 (string-append (which "perl") " -M"))
1782 (("make ")
1783 (string-append (which "make") " ")))
1784 (for-each (lambda (file)
1785 (install-file file (string-append share "/scripts")))
1786 '("scripts/extractTaxonomy.pl"
1787 "scripts/accession2taxid.make"
1788 "scripts/taxonomy.make"))
1789 (for-each (lambda (file)
1790 (install-file file share))
1791 '("updateAccessions.sh"
1792 "updateTaxonomy.sh")))))
1793 (add-after 'install 'wrap-program
1794 (lambda* (#:key inputs outputs #:allow-other-keys)
1795 (let* ((out (assoc-ref outputs "out"))
1796 (path (getenv "PERL5LIB")))
1797 (for-each
1798 (lambda (executable)
1799 (wrap-program executable
1800 `("PERL5LIB" ":" prefix
1801 (,(string-append out "/lib/perl5/site_perl/krona-tools/lib")))))
1802 (find-files (string-append out "/bin/") ".*")))))
1803 (delete 'check)
1804 (add-after 'wrap-program 'check
1805 (lambda* (#:key inputs outputs #:allow-other-keys)
1806 (with-directory-excursion "data"
1807 (invoke (string-append (assoc-ref outputs "out") "/bin/ktImportText")
1808 "ec.tsv")))))))
1809 (inputs
1810 (list bash-minimal curl gnu-make perl))
1811 (home-page "https://github.com/marbl/Krona/wiki")
1812 (synopsis "Hierarchical data exploration with zoomable HTML5 pie charts")
1813 (description
1814 "Krona is a flexible tool for exploring the relative proportions of
1815hierarchical data, such as metagenomic classifications, using a radial,
1816space-filling display. It is implemented using HTML5 and JavaScript, allowing
1817charts to be explored locally or served over the Internet, requiring only a
1818current version of any major web browser.")
1819 (license license:bsd-3)))
1820
1821(define-public rapidjson
1822 ;; Last release was in 2016, but this commit is from 2023.
1823 (let ((commit "949c771b03de448bdedea80c44a4a5f65284bfeb")
1824 (revision "1"))
1825 (package
1826 (name "rapidjson")
1827 (version (git-version "1.1.0" revision commit))
1828 (source (origin
1829 (method git-fetch)
1830 (uri (git-reference
1831 (url "https://github.com/Tencent/rapidjson")
1832 (commit commit)))
1833 (file-name (git-file-name name version))
1834 (sha256
1835 (base32
1836 "1xlj0cj88ls3avwmlhd2gf5757fjpfbqx6qf49z1mzi381gcl72m"))
1837 (modules '((guix build utils)))
1838 (snippet
1839 '(begin
1840 ;; Remove code using the problematic JSON license (see
1841 ;; <https://www.gnu.org/licenses/license-list.html#JSON>).
1842 (delete-file-recursively "bin/jsonchecker")))))
1843 (build-system cmake-build-system)
1844 (arguments
1845 (list
1846 #:configure-flags
1847 (if (target-x86-32?)
1848 #~(list (string-append "-DCMAKE_CXX_FLAGS=-Wno-free-nonheap-object"
1849 " -Wno-error=array-bounds"
1850 " -Wno-error=stringop-overflow"))
1851 #~(list "-DCMAKE_CXX_FLAGS=-Wno-free-nonheap-object"))
1852 #:phases
1853 #~(modify-phases %standard-phases
1854 (add-after 'unpack 'fix-march=native
1855 (lambda _
1856 (substitute* "CMakeLists.txt"
1857 (("-m[^-]*=native") ""))))
1858 #$@(if (target-x86-32?)
1859 #~((add-after 'unpack 'skip-failing-tests
1860 (lambda _
1861 (substitute* "test/unittest/schematest.cpp"
1862 (("\"multipleOf\\.json\"," all)
1863 (string-append "/*" all "*/")))
1864 ;; XXX: Re-enable once valgrind/pinned >= 3.25.
1865 (substitute* "test/unittest/CMakeLists.txt"
1866 (("COMMAND valgrind") "COMMAND true valgrind")))))
1867 #~())
1868 (add-after 'fix-march=native 'skip-deleted-tests
1869 (lambda _
1870 (substitute* "test/unittest/CMakeLists.txt"
1871 (("jsoncheckertest.cpp") ""))))
1872 (add-after 'fix-march=native 'fix-dependencies
1873 (lambda _
1874 (substitute* "test/CMakeLists.txt"
1875 (("^find_package\\(GTestSrc\\)")
1876 "find_package(GTest REQUIRED)")
1877 ((".*GTEST_SOURCE_DIR.*") "")
1878 (("GTESTSRC_FOUND)")
1879 "GTest_FOUND)")))))))
1880 (native-inputs (list valgrind/pinned))
1881 (inputs (list googletest-1.8))
1882 (home-page "https://github.com/Tencent/rapidjson")
1883 (synopsis "JSON parser/generator for C++ with both SAX/DOM style API")
1884 (description
1885 "RapidJSON is a fast JSON parser/generator for C++ with both SAX/DOM
1886style API.")
1887 (license license:expat))))
1888
1889(define-public libjwt
1890 (package
1891 (name "libjwt")
1892 (version "1.17.2")
1893 (source
1894 (origin
1895 (method url-fetch)
1896 (uri (string-append "https://github.com/benmcollins/libjwt/releases/download/v"
1897 version "/libjwt-"
1898 version ".tar.bz2"))
1899 (sha256
1900 (base32
1901 "1bpfaa0y8bccz5hr677lkrprs07akx02k0qbf82z2c8syr24a77i"))))
1902 (build-system gnu-build-system)
1903 (inputs
1904 (list jansson openssl))
1905 (native-inputs
1906 (list check pkg-config))
1907 (home-page "https://github.com/benmcollins/libjwt")
1908 (synopsis "C @acronym{JWT, JSON Web Token} library")
1909 (description "@code{libjwt} is a @acronym{JWT, JSON Web Token} library for
1910C.")
1911 (license license:mpl2.0)))
1912
1913(define-public yajl
1914 (package
1915 (name "yajl")
1916 (version "2.1.0")
1917 (source (origin
1918 (method git-fetch)
1919 (uri (git-reference
1920 (url "https://github.com/lloyd/yajl")
1921 (commit version)))
1922 (file-name (git-file-name name version))
1923 (sha256
1924 (base32
1925 "00yj06drb6izcxfxfqlhimlrb089kka0w0x8k27pyzyiq7qzcvml"))
1926 (patches
1927 (search-patches "yajl-CVE-2023-33460.patch"))))
1928 (build-system cmake-build-system)
1929 (arguments
1930 '(#:tests? #f
1931 #:phases
1932 (modify-phases %standard-phases
1933 (add-after 'patch-source-shebangs 'patch-tests
1934 (lambda _
1935 (substitute* "test/parsing/run_tests.sh"
1936 (("`which echo`") (which "echo"))))))))
1937 (home-page "https://lloyd.github.io/yajl/")
1938 (synopsis "C library for parsing and generating JSON")
1939 (description
1940 "@acronym{YAJL, Yet Another JSON Library} is a small event-driven
1941(SAX-style) JSON parser and validating generator written in ANSI C.")
1942 (license license:isc)))
1943
1944(define-public libwebsockets
1945 (package
1946 (name "libwebsockets")
1947 (version "4.4.1")
1948 (source
1949 (origin
1950 (method git-fetch)
1951 (uri (git-reference
1952 (url "https://github.com/warmcat/libwebsockets")
1953 (commit (string-append "v" version))))
1954 (sha256
1955 (base32 "1qlrfa1vqr89yfrqpk99zkfl8k4cpdbvbdvikdbj6l5xz5z2gxsy"))
1956 (file-name (git-file-name name version))))
1957 (arguments
1958 (list
1959 #:phases
1960 #~(modify-phases %standard-phases
1961 (add-after 'unpack 'fix-test-cert-generation
1962 (lambda _
1963 (substitute* "lib/tls/CMakeLists.txt"
1964 (("-config /etc/ssl/openssl.cnf ")
1965 "")))))
1966 #:configure-flags
1967 #~'("-DLWS_CTEST_INTERNET_AVAILABLE=0")))
1968 (build-system cmake-build-system)
1969 (native-inputs (list perl)) ;to build the HTML doc
1970 (inputs (list zlib openssl))
1971 (synopsis "WebSockets library written in C")
1972 (description
1973 "Libwebsockets is a library that allows C programs to establish client
1974and server WebSockets connections---a protocol layered above HTTP that allows
1975for efficient socket-like bidirectional reliable communication channels.")
1976 (home-page "https://libwebsockets.org")
1977 (license license:expat)))
1978
1979(define-public libwebsockets-for-mosquitto
1980 (hidden-package
1981 (package
1982 (inherit libwebsockets)
1983 (arguments
1984 (substitute-keyword-arguments
1985 (package-arguments libwebsockets)
1986 ((#:configure-flags flags)
1987 ;; Mosquitto requires some tweaks for libwebsockets, see:
1988 ;; https://github.com/NixOS/nixpkgs/blob/1750f3c1c89488e2ffdd47cab9d05454dddfb734/pkgs/by-name/mo/mosquitto/package.nix#L20
1989 #~(cons* "-DLWS_WITH_EXTERNAL_POLL=ON"
1990 "-DLWS_WITH_HTTP2=OFF"
1991 #$flags)))))))
1992
1993(define-public wabt
1994 (package
1995 (name "wabt")
1996 (version "1.0.36")
1997 (source
1998 (origin
1999 (method git-fetch)
2000 (uri (git-reference
2001 (url "https://github.com/WebAssembly/wabt")
2002 (commit version)
2003 (recursive? #true)))
2004 (file-name (git-file-name name version))
2005 (sha256
2006 (base32 "1gypy9bn2nvmfa469fi6kwsyw11j0vqkxm7givs3gidjpsy1bk0a"))
2007 (modules '((guix build utils)))
2008 (snippet
2009 '(delete-file-recursively "third_party/gtest/"))))
2010 (build-system cmake-build-system)
2011 (arguments
2012 (list
2013 ;; Tests on non-x86_64 architectures are not well supported upstream.
2014 #:tests? (target-x86-64?)
2015 #:configure-flags '(list "-DUSE_SYSTEM_GTEST=ON")
2016 #:modules '((guix build cmake-build-system)
2017 ((guix build gnu-build-system) #:prefix gnu:)
2018 (guix build utils))
2019 #:phases
2020 '(modify-phases %standard-phases
2021 (add-after 'unpack 'use-gcc
2022 (lambda _ (setenv "CC" "gcc")))
2023 ;; XXX This is the only test that fails.
2024 (add-after 'unpack 'delete-broken-test
2025 (lambda _
2026 (delete-file "test/wasm2c/spec/memory_init.txt")))
2027 (replace 'check
2028 (lambda* (#:rest args)
2029 (apply (assoc-ref gnu:%standard-phases 'check)
2030 #:test-target "run-tests" args))))))
2031 (native-inputs (list python googletest))
2032 (home-page "https://github.com/WebAssembly/wabt")
2033 (synopsis "WebAssembly Binary Toolkit")
2034 (description "WABT (pronounced: wabbit) is a suite of tools for
2035WebAssembly, including:
2036
2037@enumerate
2038@item @command{wat2wasm} translates from WebAssembly text format to the
2039WebAssembly binary format
2040@item @command{wasm2wat} is the inverse; it translates from the binary format
2041back to the text format (also known as a .wat)
2042@item @command{wasm-objdump} prints information about a wasm binary, similarly
2043to @command{objdump}.
2044@item @command{wasm-interp} decodes ands run a WebAssembly binary file using a
2045stack-based interpreter
2046@item @command{wat-desugar} parses .wat text form as supported by the spec
2047interpreter (s-expressions, flat syntax, or mixed) and prints the canonical
2048flat format
2049@item @command{wasm2c} converts a WebAssembly binary file to a C source and
2050header file.
2051@end enumerate
2052
2053These tools are intended for use in (or for development of) toolchains or
2054other systems that want to manipulate WebAssembly files.")
2055 (license license:asl2.0)))
2056
2057(define-public wasi-compiler-rt
2058 (package
2059 (name "wasi-compiler-rt")
2060 (version "21.1.8")
2061 (source
2062 (origin
2063 (method git-fetch)
2064 (uri (git-reference
2065 (url "https://github.com/llvm/llvm-project")
2066 (commit (string-append "llvmorg-" version))))
2067 (file-name (string-append "llvm-project-" version "-checkout"))
2068 (sha256
2069 (base32 "0v99a90546lrd3cxgam32c0jcnwzi0ljk0ihdvd9xghzss1pq1x6"))
2070 (patches (search-patches "clang-18.0-libc-search-path.patch"
2071 "clang-17.0-link-dsymutil-latomic.patch"))))
2072 (build-system cmake-build-system)
2073 (arguments
2074 (list
2075 #:tests? #f ;requires WASM runtime to run tests
2076 #:build-type "Release"
2077 #:configure-flags
2078 #~(list (string-append "-DCMAKE_INSTALL_PREFIX=" #$output)
2079 "-DCMAKE_C_COMPILER_WORKS=ON"
2080 "-DCMAKE_CXX_COMPILER_WORKS=ON"
2081 "-DCOMPILER_RT_BAREMETAL_BUILD=ON"
2082 ;; Use the normalized target triple so clang finds the builtins
2083 ;; at lib/<target>/libclang_rt.builtins.a
2084 "-DCOMPILER_RT_OS_DIR=wasm32-unknown-wasi"
2085 "-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON"
2086 "-DCOMPILER_RT_INCLUDE_TESTS=OFF"
2087 "-DCOMPILER_RT_HAS_FPIC_FLAG=OFF"
2088 (string-append "-DCMAKE_SYSROOT="
2089 #$(this-package-input "wasi-libc")
2090 "/share/wasi-sysroot")
2091 (string-append "-DCMAKE_C_FLAGS=-fno-exceptions --target=wasm32-wasi "
2092 "-isystem "
2093 #$(this-package-input "wasi-libc")
2094 "/share/wasi-sysroot/include/wasm32-wasi")
2095 (string-append "-DCMAKE_C_COMPILER="
2096 #$(this-package-native-input "clang")
2097 "/bin/clang")
2098 (string-append "-DCMAKE_CXX_COMPILER="
2099 #$(this-package-native-input "clang")
2100 "/bin/clang++")
2101 (string-append "-DCMAKE_AR="
2102 #$(this-package-native-input "llvm")
2103 "/bin/llvm-ar")
2104 (string-append "-DCMAKE_RANLIB="
2105 #$(this-package-native-input "llvm")
2106 "/bin/llvm-ranlib")
2107 "-DCMAKE_SYSTEM_NAME=WASI"
2108 "-DCMAKE_SYSTEM_PROCESSOR=wasm32"
2109 "-DCMAKE_C_COMPILER_TARGET=wasm32-wasi"
2110 "-DCMAKE_CXX_COMPILER_TARGET=wasm32-wasi"
2111 "-DCMAKE_ASM_COMPILER_TARGET=wasm32-wasi")
2112 #:phases
2113 #~(modify-phases %standard-phases
2114 (add-after 'unpack 'change-directory
2115 (lambda _
2116 ;; Build only the builtins library from compiler-rt
2117 (chdir "compiler-rt/lib/builtins")))
2118 (add-after 'install 'create-target-symlinks
2119 (lambda _
2120 ;; Create symlinks for wasip1 and wasip2 targets
2121 (let* ((lib-dir (string-append #$output "/lib"))
2122 (wasi-dir (string-append lib-dir "/wasm32-unknown-wasi")))
2123 (symlink "wasm32-unknown-wasi"
2124 (string-append lib-dir "/wasm32-unknown-wasip1"))
2125 (symlink "wasm32-unknown-wasi"
2126 (string-append lib-dir "/wasm32-unknown-wasip2"))
2127 ;; Clang looks for libclang_rt.builtins.a but we have
2128 ;; libclang_rt.builtins-wasm32.a, so create a symlink
2129 (symlink "libclang_rt.builtins-wasm32.a"
2130 (string-append wasi-dir "/libclang_rt.builtins.a"))))))))
2131 (native-inputs
2132 (list clang-21
2133 llvm-21
2134 lld-21))
2135 (inputs
2136 (list wasi-libc))
2137 (home-page "https://compiler-rt.llvm.org")
2138 (synopsis "LLVM compiler runtime builtins for WASI")
2139 (description
2140 "This package provides the LLVM compiler runtime builtins library for the
2141WebAssembly System Interface (WASI) target. It includes software
2142implementations of arithmetic operations that are not directly supported by
2143the WebAssembly instruction set.")
2144 (license license:asl2.0))) ;with LLVM exceptions
2145
2146(define-public wasi-libc
2147 (package
2148 (name "wasi-libc")
2149 (version "28")
2150 (source
2151 (origin
2152 (method git-fetch)
2153 (uri (git-reference
2154 (url "https://github.com/WebAssembly/wasi-libc")
2155 (commit (string-append "wasi-sdk-" version))))
2156 (file-name (git-file-name name version))
2157 (sha256
2158 (base32 "1zgl5kyz4r6zxsmi3ihx1wyakhpp1dknzplbj4jb6bvnj1rzn1gg"))))
2159 (build-system gnu-build-system)
2160 (arguments
2161 (list
2162 #:tests? #f ;tests require a WASM runtime
2163 #:make-flags
2164 #~(list (string-append "CC="
2165 #$(this-package-native-input "clang")
2166 "/bin/clang")
2167 (string-append "AR="
2168 #$(this-package-native-input "llvm")
2169 "/bin/llvm-ar")
2170 (string-append "NM="
2171 #$(this-package-native-input "llvm")
2172 "/bin/llvm-nm")
2173 (string-append "SYSROOT=" #$output "/share/wasi-sysroot")
2174 (string-append "INSTALL_DIR=" #$output "/share/wasi-sysroot")
2175 ;; Provide an empty builtins library to avoid network download.
2176 ;; The real compiler-rt builtins will be provided by
2177 ;; wasi-compiler-rt.
2178 "BUILTINS_LIB=/tmp/dummy-builtins.a")
2179 #:phases
2180 #~(modify-phases %standard-phases
2181 (delete 'configure)
2182 (add-before 'build 'create-dummy-builtins
2183 (lambda _
2184 ;; Create an empty archive to satisfy the BUILTINS_LIB
2185 ;; requirement. This prevents the Makefile from trying to
2186 ;; download builtins via curl.
2187 (invoke (string-append #$(this-package-native-input "llvm")
2188 "/bin/llvm-ar")
2189 "crs" "/tmp/dummy-builtins.a")))
2190 (replace 'build
2191 (lambda* (#:key make-flags parallel-build? #:allow-other-keys)
2192 (let ((targets '("wasm32-wasi"
2193 "wasm32-wasip1-threads"
2194 "wasm32-wasip2")))
2195 (for-each
2196 (lambda (target)
2197 (format #t "Building for target: ~a~%" target)
2198 (apply invoke "make"
2199 "-j" (if parallel-build?
2200 (number->string (parallel-job-count))
2201 "1")
2202 (string-append "TARGET_TRIPLE=" target)
2203 (if (string=? target "wasm32-wasip1-threads")
2204 (cons "THREAD_MODEL=posix" make-flags)
2205 (if (string=? target "wasm32-wasip2")
2206 (cons "WASI_SNAPSHOT=p2" make-flags)
2207 make-flags))))
2208 targets))))
2209 (delete 'install))))
2210 (native-inputs (list clang-21 llvm-21 lld-21))
2211 (native-search-paths
2212 (list (search-path-specification
2213 (variable "WASI_SYSROOT")
2214 (files '("share/wasi-sysroot")))))
2215 (home-page "https://github.com/WebAssembly/wasi-libc")
2216 (synopsis "WASI C library for WebAssembly")
2217 (description
2218 "WASI Libc is a libc implementation for WebAssembly programs using the
2219WebAssembly System Interface (WASI). It provides C library functionality for
2220compiling C and C++ programs to WebAssembly that can run outside the browser.
2221The library supports multiple WASI targets including @code{wasm32-wasi},
2222@code{wasm32-wasip1-threads}, and @code{wasm32-wasip2}.")
2223 (license (list license:asl2.0 ;most files
2224 license:expat ;dlmalloc
2225 license:bsd-2)))) ;cloudlibc
2226
2227(define-public wasm3
2228 ;; Use an unreleased version with 'm3_GetTableFunction' for tic80.
2229 (let ((commit "139076a98b8321b67f850a844f558b5e91b5ac83"))
2230 (package
2231 (name "wasm3")
2232 (version (git-version "0.5.0" "1" commit))
2233 (source
2234 (origin
2235 (method git-fetch)
2236 (uri (git-reference
2237 (url "https://github.com/wasm3/wasm3")
2238 (commit commit)))
2239 (file-name (git-file-name name version))
2240 (sha256
2241 (base32 "0329kx43n0ns9qxj813239wna69qyi9ghfb1sks46f39h24q0n3x"))))
2242 (build-system cmake-build-system)
2243 (arguments
2244 ;; The default WASI option "uvwasi" causes CMake to initiate a 'git
2245 ;; clone' which cannot happen within the build container.
2246 '(#:configure-flags '("-DBUILD_WASI=simple")
2247 ;; No check target. There are tests but they require a network
2248 ;; connection to download the WebAssembly core test suite.
2249 #:tests? #f
2250 ;; There is no install target. Instead, we have to manually copy the
2251 ;; wasm3 build artifacts to the output directory.
2252 #:phases
2253 (modify-phases %standard-phases
2254 (replace 'install
2255 (lambda* (#:key outputs #:allow-other-keys)
2256 (let* ((out (assoc-ref outputs "out"))
2257 (bindir (string-append out "/bin"))
2258 (includedir (string-append out "/include"))
2259 (libdir (string-append out "/lib")))
2260 (mkdir-p bindir)
2261 (mkdir-p includedir)
2262 (mkdir-p libdir)
2263 (copy-file "wasm3" (string-append bindir "/wasm3"))
2264 (for-each (lambda (header)
2265 (copy-file header
2266 (string-append includedir "/"
2267 (basename header))))
2268 (find-files "../source/source" "\\.h$"))
2269 (copy-file "source/libm3.a"
2270 (string-append libdir "/libm3.a"))))))))
2271 (home-page "https://github.com/wasm3/wasm3")
2272 (synopsis "WebAssembly interpreter")
2273 (description "WASM3 is a fast WebAssembly interpreter.")
2274 (license license:expat))))
2275
2276(define-public wasm-micro-runtime
2277 (package
2278 (name "wasm-micro-runtime")
2279 (version "2.2.0")
2280 (source (origin
2281 (method git-fetch)
2282 (uri (git-reference
2283 (url "https://github.com/bytecodealliance/wasm-micro-runtime")
2284 (commit (string-append "WAMR-" version))))
2285 (file-name (git-file-name "WAMR" version))
2286 (sha256
2287 (base32
2288 "0nhhsvy4a9al4lnxdkmyy63a7qd0x33s5wpcsdvl93kj6klzc6a6"))))
2289 (build-system cmake-build-system)
2290 (arguments
2291 (list
2292 ;; Running the tests is difficult. The test script in
2293 ;; tests/wamr-test-suites insists on downloading and building wabt (even
2294 ;; if we provide it) and it has a hard time accepting a separately
2295 ;; provided clone of the https://github.com/WebAssembly/spec repository.
2296 ;; Future releases provide unit tests which may be easier to run.
2297 #:tests? #false
2298 #:phases
2299 '(modify-phases %standard-phases
2300 (add-after 'unpack 'chdir
2301 (lambda _
2302 (chdir "product-mini/platforms/linux"))))))
2303 (home-page "https://bytecodealliance.github.io/wamr.dev")
2304 (synopsis "WebAssembly Micro Runtime")
2305 (description "WebAssembly Micro Runtime (WAMR) is a lightweight standalone
2306WebAssembly (Wasm) runtime with small footprint, high performance and highly
2307configurable features for applications cross from embedded, IoT, edge to
2308Trusted Execution Environment (TEE), smart contract, cloud native and other
2309features.")
2310 (license license:asl2.0)))
2311
2312(define-public websocketpp
2313 (package
2314 (name "websocketpp")
2315 (version "0.8.2")
2316 (source
2317 (origin
2318 (method git-fetch)
2319 (uri (git-reference
2320 (url "https://github.com/zaphoyd/websocketpp")
2321 (commit version)))
2322 (file-name (git-file-name name version))
2323 (sha256
2324 (base32 "1ww4fhl8qf12hkv6jaild8zzsygdspxm1gqpk2f63gv1xfi31wpm"))
2325 (patches (search-patches "websocketpp-fix-for-cmake-3.15.patch"))))
2326 (build-system cmake-build-system)
2327 (inputs (list boost-1.83 openssl))
2328 (arguments '(#:parallel-tests? #f
2329 #:configure-flags '("-DBUILD_TESTS=ON")
2330 #:phases
2331 (modify-phases %standard-phases
2332 (add-after 'install 'remove-tests
2333 (lambda* (#:key outputs #:allow-other-keys)
2334 (let* ((install-dir (assoc-ref outputs "out"))
2335 (bin-dir (string-append install-dir "/bin")))
2336 (delete-file-recursively bin-dir)
2337 #t))))))
2338 (home-page "https://www.zaphoyd.com/websocketpp/")
2339 (synopsis "C++ library implementing the WebSocket protocol")
2340 (description "WebSocket++ is a C++ library that can be used to implement
2341WebSocket functionality. The goals of the project are to provide a WebSocket
2342implementation that is simple, portable, flexible, lightweight, low level, and
2343high performance.")
2344 (license license:bsd-3)))
2345
2346;; websocketpp main is not moving very fast, this version is required for later
2347;; versions of Boost. https://github.com/zaphoyd/websocketpp/pull/1164
2348(define-public websocketpp-next
2349 (let ((commit "b9aeec6eaf3d5610503439b4fae3581d9aff08e8"))
2350 (package
2351 (name "websocketpp-next")
2352 (version "0.8.2-next")
2353 (source
2354 (origin
2355 (method git-fetch)
2356 (uri (git-reference
2357 (url "https://github.com/zaphoyd/websocketpp")
2358 (commit commit)))
2359 (file-name (git-file-name name version))
2360 (sha256
2361 (base32
2362 "1z4wm5ipchmxg709n4066fl6yq5gzg7qjx2ap18bhbsx85p403mb"))
2363 (patches (search-patches
2364 "websocketpp-boost-compat.patch"))))
2365 (build-system cmake-build-system)
2366 (inputs (list boost-1.83 openssl))
2367 (arguments '(#:parallel-tests? #f
2368 #:configure-flags '("-DBUILD_TESTS=ON")
2369 #:phases
2370 (modify-phases %standard-phases
2371 (add-after 'install 'remove-tests
2372 (lambda* (#:key outputs #:allow-other-keys)
2373 (let* ((install-dir (assoc-ref outputs "out"))
2374 (bin-dir (string-append install-dir "/bin")))
2375 (delete-file-recursively bin-dir)
2376 #t))))))
2377 (home-page "https://www.zaphoyd.com/websocketpp/")
2378 (synopsis "C++ library implementing the WebSocket protocol")
2379 (description "WebSocket++ is a C++ library that can be used to implement
2380WebSocket functionality. The goals of the project are to provide a WebSocket
2381implementation that is simple, portable, flexible, lightweight, low level, and
2382high performance.")
2383 (license license:bsd-3))))
2384
2385(define-public wslay
2386 (package
2387 (name "wslay")
2388 (version "1.1.1")
2389 (source
2390 (origin
2391 (method git-fetch)
2392 (uri (git-reference
2393 (url "https://github.com/tatsuhiro-t/wslay")
2394 (commit (string-append "release-" version))))
2395 (file-name (git-file-name name version))
2396 (sha256
2397 (base32 "1w32iljg4inqf0712w5fxxhggvmjh6ipl2lnz0h36dv1xrj0d964"))))
2398 (build-system gnu-build-system)
2399 (arguments
2400 ;; Parallel builds don't reliably succeed.
2401 `(#:parallel-build? #f
2402 #:phases
2403 (modify-phases %standard-phases
2404 (add-after 'unpack 'fix-sphinx-error
2405 ;; XXX: Remove in next version: fix applied upstream. See
2406 ;; <https://github.com/tatsuhiro-t/wslay/commit/43fda1207ea5977043630500e0c8e77b98b35320>.
2407 (lambda _
2408 (substitute* "doc/sphinx/conf.py.in"
2409 (("add_stylesheet") "add_css_file")))))))
2410 (native-inputs
2411 (list autoconf
2412 automake
2413 cunit ; for tests
2414 libtool
2415 pkg-config
2416 python-sphinx))
2417 (home-page "https://tatsuhiro-t.github.io/wslay/")
2418 (synopsis "C WebSocket library")
2419 (description "@code{Wslay} is an event-based C library for the WebSocket
2420protocol version 13, described in RFC 6455. Besides a high-level API it
2421provides callbacks for sending and receiving frames directly. @code{Wslay}
2422only supports the data transfer part of WebSocket protocol and does not
2423perform the opening handshake in HTTP.")
2424 (license license:expat)))
2425
2426(define-public libpsl
2427 (package
2428 (name "libpsl")
2429 (version "0.21.5")
2430 (source (origin
2431 (method url-fetch)
2432 (uri (string-append "https://github.com/rockdaboot/libpsl/"
2433 "releases/download/" version
2434 "/libpsl-" version ".tar.gz"))
2435 (sha256
2436 (base32
2437 "0272v94h89pg4zr9h47qdzy1m28y1v6xwm7nng0g6a5ix3m9rk0x"))))
2438 (build-system gnu-build-system)
2439 (native-inputs
2440 (list pkg-config
2441 ;; For tests.
2442 python-minimal))
2443 (inputs
2444 (list libidn2 libunistring))
2445 (home-page "https://github.com/rockdaboot/libpsl")
2446 (synopsis "C library for the Publix Suffix List")
2447 (description
2448 "A \"public suffix\" is a domain name under which Internet users can
2449directly register own names.
2450
2451Browsers and other web clients can use it to avoid privacy-leaking
2452\"supercookies\", avoid privacy-leaking \"super domain\" certificates, domain
2453highlighting parts of the domain in a user interface, and sorting domain lists
2454by site.
2455
2456Libpsl has built-in PSL data for fast access, allowing to load PSL data from
2457files, checks if a given domain is a public suffix, provides immediate cookie
2458domain verification, finds the longest public part of a given domain, finds
2459the shortest private part of a given domain, works with international
2460domains (UTF-8 and IDNA2008 Punycode), is thread-safe, and handles IDNA2008
2461UTS#46.")
2462 (license license:x11)))
2463
2464(define-public esbuild
2465 (package
2466 (name "esbuild")
2467 (version "0.24.0")
2468 (source
2469 (origin
2470 (method git-fetch)
2471 (uri (git-reference
2472 (url "https://github.com/evanw/esbuild")
2473 (commit (string-append "v" version))))
2474 (file-name (git-file-name name version))
2475 (sha256
2476 (base32 "1j99m7rdql6iq3llrr8bm85hq34ssc8bmb6vhwr1ibgspjl0jd3k"))
2477 (modules '((guix build utils)))
2478 (snippet
2479 #~(begin
2480 ;; Remove prebuilt binaries
2481 (delete-file-recursively "npm")))))
2482 (build-system go-build-system)
2483 (arguments
2484 (list
2485 #:import-path "github.com/evanw/esbuild/cmd/esbuild"
2486 #:unpack-path "github.com/evanw/esbuild"
2487 #:test-flags #~(list #$(if (and (target-64bit?)
2488 ;; The -race option is not supported on
2489 ;; riscv64 and is not present in gccgo.
2490 (not (target-riscv64?))
2491 (supported-package? go))
2492 "-race" "-short"))
2493 ;; Test subdirectories are compiled from #:import-path.
2494 #:test-subdirs #~(list "../../internal/..." "../../pkg/..." )))
2495 (inputs
2496 (list go-golang-org-x-sys-for-esbuild))
2497 (home-page "https://esbuild.github.io/")
2498 (synopsis "Bundler and minifier tool for JavaScript and TypeScript")
2499 (description
2500 "The esbuild tool provides a unified bundler, transpiler and minifier.
2501It packages up JavaScript and TypeScript code, along with JSON and other data,
2502for distribution on the web.")
2503 (license license:expat)))
2504
2505(define-public tinyproxy
2506 (package
2507 (name "tinyproxy")
2508 (version "1.11.2")
2509 (source (origin
2510 (method url-fetch)
2511 (uri (string-append "https://github.com/tinyproxy/tinyproxy/"
2512 "releases/download/" version "/tinyproxy-"
2513 version ".tar.xz"))
2514 (sha256
2515 (base32
2516 "0sm2i05sq2mkyix7dsvm9abb3vr2nnciqywmwa3wk4b6f206h4ka"))))
2517 (build-system gnu-build-system)
2518 (arguments
2519 `(#:test-target "test" ; ‘make check’ silently does nothing
2520 #:configure-flags
2521 (list
2522 ;; For the log file, etc.
2523 "--localstatedir=/var")
2524 #:phases
2525 (modify-phases %standard-phases
2526 (add-before 'build 'pre-build
2527 (lambda* (#:key inputs #:allow-other-keys #:rest args)
2528 ;; Uncommenting the next two lines may assist in debugging
2529 ;; (substitute* "docs/man5/Makefile" (("a2x") "a2x -v"))
2530 ;; (setenv "XML_DEBUG_CATALOG" "1")
2531 #t)))))
2532 (native-inputs
2533 (list perl)) ; for tests
2534 (home-page "https://tinyproxy.github.io/")
2535 (synopsis "Light-weight HTTP/HTTPS proxy daemon")
2536 (description "Tinyproxy is a light-weight HTTP/HTTPS proxy
2537daemon. Designed from the ground up to be fast and yet small, it is an ideal
2538solution for use cases such as embedded deployments where a full featured HTTP
2539proxy is required, but the system resources for a larger proxy are
2540unavailable.")
2541 (license license:gpl2+)))
2542
2543(define-public polipo
2544 (package
2545 (name "polipo")
2546 (version "1.1.1")
2547 (source
2548 (origin
2549 (method url-fetch)
2550 (uri (string-append
2551 "http://www.pps.univ-paris-diderot.fr/~jch/software/files/polipo/polipo-"
2552 version ".tar.gz"))
2553 (sha256
2554 (base32
2555 "05g09sg9qkkhnc2mxldm1w1xkxzs2ylybkjzs28w8ydbjc3pand2"))))
2556 (native-inputs (list texinfo))
2557 (build-system gnu-build-system)
2558 (arguments
2559 `(#:phases (modify-phases %standard-phases
2560 (delete 'configure))
2561 #:make-flags (let ((out (assoc-ref %outputs "out")))
2562 (list (string-append "PREFIX=" out)
2563 (string-append "LOCAL_ROOT="
2564 out "/share/polipo/www")
2565 "CC=gcc"))
2566 ;; No 'check' target.
2567 #:tests? #f))
2568 (home-page "https://www.pps.univ-paris-diderot.fr/~jch/software/polipo/")
2569 (synopsis "Small caching web proxy")
2570 (description
2571 "Polipo is a small caching web proxy (web cache, HTTP proxy, and proxy
2572server). It was primarily designed to be used by one person or a small group
2573of people.")
2574 (license license:expat)))
2575
2576(define-public websockify
2577 (package
2578 (name "websockify")
2579 (version "0.13.0")
2580 (source
2581 (origin
2582 (method git-fetch)
2583 (uri (git-reference
2584 (url "https://github.com/novnc/websockify")
2585 (commit (string-append "v" version))))
2586 (file-name (git-file-name name version))
2587 (sha256
2588 (base32 "01163ikxmwmncrg7m8wy238ykjd5qif6bz85zqnk3mrvipicp7kg"))))
2589 (build-system pyproject-build-system)
2590 (native-inputs
2591 (list python-nose2
2592 python-setuptools))
2593 (inputs
2594 (list python-jwcrypto
2595 python-numpy
2596 python-redis
2597 python-requests))
2598 (home-page "https://github.com/novnc/websockify")
2599 (synopsis "WebSockets support for any application/server")
2600 (description "Websockify translates WebSockets traffic to normal socket
2601traffic. Websockify accepts the WebSockets handshake, parses it, and then
2602begins forwarding traffic between the client and the target in both
2603directions.")
2604 (license license:lgpl3)))
2605
2606(define-public microsocks
2607 (package
2608 (name "microsocks")
2609 (version "1.0.5")
2610 (source
2611 (origin
2612 (method git-fetch)
2613 (uri (git-reference
2614 (url "https://github.com/rofl0r/microsocks")
2615 (commit (string-append "v" version))))
2616 (file-name (git-file-name name version))
2617 (sha256
2618 (base32
2619 "0ffiwlkaylkm2ih7d96qvdy9s9ydqgypczs5k8iwkf5yv617dm74"))))
2620 (build-system gnu-build-system)
2621 (arguments
2622 (list
2623 #:tests? #f ;no tests
2624 #:make-flags #~(list "prefix=/"
2625 "CC=gcc"
2626 (string-append "DESTDIR=" #$output))
2627 #:phases
2628 '(modify-phases %standard-phases
2629 (delete 'configure))))
2630 (home-page "https://github.com/rofl0r/microsocks")
2631 (synopsis "Tiny and lightweight SOCKS5 server")
2632 (description "Microsocks is a small, efficient SOCKS5 server.")
2633 (license license:expat)))
2634
2635(define-public node-esbuild
2636 (package
2637 (name "node-esbuild")
2638 (version (package-version esbuild))
2639 (source
2640 (origin
2641 (inherit (package-source esbuild))
2642 (file-name (git-file-name name version))
2643 (snippet #f)
2644 (modules '())))
2645 (build-system node-build-system)
2646 (inputs (list esbuild))
2647 (arguments (list
2648 #:tests? #f
2649 #:phases #~(modify-phases %standard-phases
2650 (add-after 'unpack 'chdir (lambda _
2651 (chdir "npm/esbuild")))
2652 (add-before 'patch-dependencies 'modify-package (lambda _
2653 (modify-json
2654 (delete-fields '("optionalDependencies" "scripts")))
2655 (substitute* "../../lib/npm/node-platform.ts"
2656 (("^export var ESBUILD_BINARY_PATH:.+$")
2657 (string-append "export var ESBUILD_BINARY_PATH: string"
2658 " = process.env.ESBUILD_BINARY_PATH"
2659 " || ESBUILD_BINARY_PATH"
2660 " || path.join(__dirname, '..', 'bin', 'esbuild')")))))
2661 (replace 'build (lambda* (#:key inputs #:allow-other-keys)
2662 ; From scripts/esbuild.js
2663 (invoke
2664 "esbuild"
2665 "../../lib/npm/node.ts"
2666 "--outfile=lib/main.js"
2667 "--bundle"
2668 "--target=node10"
2669 "--define:WASM=false"
2670 (string-append "--define:ESBUILD_VERSION=\"" #$version "\"")
2671 "--external:esbuild"
2672 "--platform=node"
2673 "--log-level=warning")
2674 (copy-file "../../lib/shared/types.ts" "lib/main.d.ts")
2675 (install-file
2676 (string-append (assoc-ref inputs "esbuild") "/bin/esbuild")
2677 "bin"))))))
2678 (home-page (package-home-page esbuild))
2679 (synopsis "Node module of ESBuild")
2680 (description (package-description esbuild))
2681 (license (package-license esbuild))))
2682
2683(define-public wwwoffle
2684 (package
2685 (name "wwwoffle")
2686 (version "2.9j")
2687 (source (origin
2688 (method url-fetch)
2689 (uri (string-append "https://www.gedanken.org.uk/software/"
2690 "wwwoffle/download/wwwoffle-"
2691 version ".tgz"))
2692 (sha256
2693 (base32
2694 "1ihil1xq9dp21hf108khxbw6f3baq0w5c0j3af038y6lkmad4vdi"))))
2695 (build-system gnu-build-system)
2696 (arguments
2697 `(#:configure-flags '("--with-gnutls")
2698 #:tests? #f)) ; no test target
2699 (native-inputs (list flex))
2700 (inputs (list gnutls libgcrypt))
2701 (home-page "https://www.gedanken.org.uk/software/wwwoffle/")
2702 (synopsis "Caching web proxy optimized for intermittent internet links")
2703 (description "WWWOFFLE is a proxy web server that is especially good for
2704intermittent internet links. It can cache HTTP, HTTPS, FTP, and finger
2705protocols, and supports browsing and requesting pages while offline, indexing,
2706modifying pages and incoming and outgoing headers, monitoring pages for
2707changes, and much more.")
2708 (license license:gpl2+)))
2709
2710(define-public libjuice
2711 (package
2712 (name "libjuice")
2713 (version "1.4.2")
2714 (source (origin
2715 (method git-fetch)
2716 (uri (git-reference
2717 (url "https://github.com/paullouisageneau/libjuice")
2718 (commit (string-append "v" version))))
2719 (file-name (git-file-name name version))
2720 (sha256
2721 (base32
2722 "035kqyp5bcawzkpqpjb1qjwqf0dp2gm9h2j9py5iiahcvfjwh70i"))))
2723 (build-system cmake-build-system)
2724 (arguments (list #:tests? #f)) ; requires internet access
2725 (home-page "https://github.com/paullouisageneau/libjuice")
2726 (synopsis "UDP Interactive Connectivity Establishment library")
2727 (description "@code{libjuice} opens bidirectionnal User Datagram
2728Protocol (UDP) streams with Network Address Translator (NAT) traversal. It's a
2729simplified implementation of the Interactive Connectivity Establishment (ICE)
2730protocol, client-side and server-side, written in C without dependencies for
2731POSIX platforms.")
2732 (license license:mpl2.0)))
2733
2734(define-public libdatachannel
2735 (package
2736 (name "libdatachannel")
2737 (version "0.21.1")
2738 (source (origin
2739 (method git-fetch)
2740 (uri (git-reference
2741 (url "https://github.com/paullouisageneau/libdatachannel")
2742 (commit (string-append "v" version))))
2743 (file-name (git-file-name name version))
2744 (sha256
2745 (base32
2746 "11icbyd71dw5ywjdviq580xvad24yfsjj3c5zpjqsxc883i40dxi"))))
2747 (build-system cmake-build-system)
2748 (arguments
2749 (list #:tests? #f ; requires internet access
2750 #:configure-flags
2751 #~'("-DPREFER_SYSTEM_LIB=ON")))
2752 (inputs (list libjuice libsrtp nlohmann-json openssl plog usrsctp))
2753 (home-page "https://libdatachannel.org/")
2754 (synopsis "WebRTC Data Channels and WebSockets library")
2755 (description "@code{libdatachannel} is a standalone implementation of WebRTC
2756Data Channels, WebRTC Media Transport, and WebSockets in C++17 with C bindings
2757for POSIX platforms. WebRTC is a W3C and IETF standard enabling real-time
2758peer-to-peer data and media exchange between two devices.")
2759 (license license:mpl2.0)))
2760
2761(define-public liboauth
2762 (package
2763 (name "liboauth")
2764 (version "1.0.3")
2765 (source (origin
2766 (method url-fetch)
2767 (uri (string-append "mirror://sourceforge/liboauth/liboauth-"
2768 version ".tar.gz"))
2769 (sha256
2770 (base32
2771 "07w1aq8y8wld43wmbk2q8134p3bfkp2vma78mmsfgw2jn1bh3xhd"))))
2772 (build-system gnu-build-system)
2773 (arguments
2774 (list
2775 #:configure-flags ''("--enable-nss")
2776 #:phases
2777 #~(modify-phases %standard-phases
2778 (add-after 'unpack 'use-C-unicode-locale
2779 (lambda _
2780 (substitute* "tests/commontest.c"
2781 (("en_US\\.UTF-8")
2782 "C.UTF-8")))))))
2783 (native-inputs (list pkg-config))
2784 (propagated-inputs
2785 (list curl nss))
2786 (home-page "https://sourceforge.net/projects/liboauth")
2787 (synopsis "C library implementing the OAuth API")
2788 (description
2789 "liboauth is a collection of C functions implementing the OAuth API.
2790liboauth provides functions to escape and encode strings according to OAuth
2791specifications and offers high-level functionality built on top to sign
2792requests or verify signatures using either NSS or OpenSSL for calculating the
2793hash/signatures.")
2794 ;; Source code may be distributed under either license.
2795 (license (list license:expat license:gpl2+))))
2796
2797(define-public libquvi-scripts
2798 (package
2799 (name "libquvi-scripts")
2800 (version "0.4.21")
2801 (source
2802 (origin
2803 (method url-fetch)
2804 (uri (string-append
2805 "mirror://sourceforge/quvi/" (version-major+minor version) "/"
2806 name "/" name "-" version ".tar.xz"))
2807 (sha256
2808 (base32 "0d0giry6bb57pnidymvdl7i5x9bq3ljk3g4bs294hcr5mj3cq0kw"))))
2809 (build-system gnu-build-system)
2810 (home-page "https://quvi.sourceforge.net/")
2811 (synopsis "Media stream URL parser")
2812 (description "This package contains support scripts called by libquvi to
2813parse media stream properties.")
2814 (license license:lgpl2.1+)))
2815
2816(define-public libquvi
2817 (package
2818 (name "libquvi")
2819 (version "0.4.1")
2820 (source
2821 (origin
2822 (method url-fetch)
2823 (uri (string-append
2824 "mirror://sourceforge/quvi/" (version-major+minor version) "/" name "/"
2825 name "-" version ".tar.xz"))
2826 (sha256
2827 (base32 "00x9gbmzc5cns0gnfag0hsphcr3cb33vbbb9s7ppvvd6bxz2z1mm"))))
2828 (build-system gnu-build-system)
2829 (native-inputs (list pkg-config))
2830 (inputs
2831 (list curl
2832 cyrus-sasl
2833 libquvi-scripts
2834 lua-5.1
2835 openssl
2836 zlib))
2837 (arguments
2838 ;; Lua provides no .pc file, so add CFLAGS/LIBS manually.
2839 '(#:configure-flags
2840 (let ((lua (assoc-ref %build-inputs "lua")))
2841 (list
2842 (string-append "liblua_CFLAGS=-I" lua "/include")
2843 (string-append "liblua_LIBS=-L" lua "/libs -llua")))))
2844 (home-page "https://quvi.sourceforge.net/")
2845 (synopsis "Media stream URL parser")
2846 (description "libquvi is a library with a C API for parsing media stream
2847URLs and extracting their actual media files.")
2848 (license license:lgpl2.1+)))
2849
2850(define-public quvi
2851 (package
2852 (name "quvi")
2853 (version "0.4.2")
2854 (source
2855 (origin
2856 (method url-fetch)
2857 (uri (string-append
2858 "mirror://sourceforge/" name "/" (version-major+minor version)
2859 "/" name "/" name "-" version ".tar.xz"))
2860 (sha256
2861 (base32 "09lhl6dv5zpryasx7yjslfrcdcqlsbwapvd5lg7w6sm5x5n3k8ci"))))
2862 (build-system gnu-build-system)
2863 (native-inputs (list pkg-config))
2864 (inputs
2865 (list curl libquvi))
2866 (home-page "https://quvi.sourceforge.net/")
2867 (synopsis "Media stream URL parser")
2868 (description "quvi is a command-line-tool suite to extract media files
2869from streaming URLs. It is a command-line wrapper for the libquvi library.")
2870 (license license:lgpl2.1+)))
2871
2872(define-public serf
2873 (package
2874 (name "serf")
2875 (version "1.3.10")
2876 (source
2877 (origin
2878 (method url-fetch)
2879 (uri (string-append "mirror://apache/serf/serf-"
2880 version ".tar.bz2"))
2881 (sha256
2882 (base32 "1rk4q0fv9xs57fivjy5mxqkk5g7pvvvssxvalz6nwld2p84fz0dy"))))
2883 (build-system scons-build-system)
2884 (propagated-inputs
2885 (list apr apr-util openssl))
2886 (inputs
2887 (list ;; TODO: Fix build with gss.
2888 ;;("gss" ,gss)
2889 zlib))
2890 (arguments
2891 `(#:scons-flags (list "CFLAGS=-g -O2 -Wno-error=incompatible-pointer-types"
2892 (string-append "APR=" (assoc-ref %build-inputs "apr"))
2893 (string-append "APU=" (assoc-ref %build-inputs "apr-util"))
2894 (string-append "OPENSSL=" (assoc-ref %build-inputs "openssl"))
2895 ;; (string-append "GSSAPI=" (assoc-ref %build-inputs "gss"))
2896 (string-append "ZLIB=" (assoc-ref %build-inputs "zlib"))
2897 (string-append "PREFIX=" %output))
2898 #:phases
2899 (modify-phases %standard-phases
2900 (add-after 'unpack 'scons-propagate-environment
2901 (lambda _
2902 ;; By design, SCons does not, by default, propagate
2903 ;; environment variables to subprocesses. See:
2904 ;; <http://comments.gmane.org/gmane.linux.distributions.nixos/4969>
2905 ;; Here, we modify the SConstruct file to arrange for
2906 ;; environment variables to be propagated.
2907 (substitute* "SConstruct"
2908 (("^env = Environment\\(")
2909 "env = Environment(ENV=os.environ, "))))
2910 (add-before 'check 'disable-broken-tests
2911 (lambda _
2912 ;; These tests rely on SSL certificates that expired 2017-04-18.
2913 ;; While there are newer certs available upstream, we don't want
2914 ;; this package to suddenly "expire" some time in the future.
2915 ;; https://bugs.gnu.org/26671
2916 (let ((broken-tests
2917 '("test_ssl_trust_rootca"
2918 "test_ssl_certificate_chain_with_anchor"
2919 "test_ssl_certificate_chain_all_from_server"
2920 "test_ssl_no_servercert_callback_allok"
2921 "test_ssl_large_response"
2922 "test_ssl_large_request"
2923 "test_ssl_client_certificate"
2924 "test_ssl_future_server_cert"
2925 "test_setup_ssltunnel"
2926 "test_ssltunnel_basic_auth"
2927 "test_ssltunnel_basic_auth_server_has_keepalive_off"
2928 "test_ssltunnel_basic_auth_proxy_has_keepalive_off"
2929 "test_ssltunnel_basic_auth_proxy_close_conn_on_200resp"
2930 "test_ssltunnel_digest_auth")))
2931 (for-each
2932 (lambda (test)
2933 (substitute* "test/test_context.c"
2934 (((string-append "SUITE_ADD_TEST\\(suite, " test "\\);")) "")))
2935 broken-tests)
2936 #t))))))
2937 (home-page "https://serf.apache.org/")
2938 (synopsis "High-performance asynchronous HTTP client library")
2939 (description
2940 "serf is a C-based HTTP client library built upon the Apache Portable
2941Runtime (APR) library. It multiplexes connections, running the read/write
2942communication asynchronously. Memory copies and transformations are kept to a
2943minimum to provide high performance operation.")
2944 ;; Most of the code is covered by the Apache License, Version 2.0, but the
2945 ;; bundled CuTest framework uses a different non-copyleft license.
2946 (properties
2947 '((release-monitoring-url . "https://serf.apache.org/download")))
2948 (license (list license:asl2.0 (license:non-copyleft "file://test/CuTest-README.txt")))))
2949
2950(define-public libsass
2951 (package
2952 (name "libsass")
2953 ;; When updating, check whether sassc/libsass-3.5 is still needed.
2954 (version "3.6.4")
2955 (source (origin
2956 (method git-fetch)
2957 (uri (git-reference
2958 (url "https://github.com/sass/libsass")
2959 (commit version)))
2960 (file-name (git-file-name name version))
2961 (sha256
2962 (base32
2963 "0r8lfqvr3rjhjd8r036zd1wc9q17gyiskppcw9m13jks9an7xp4j"))))
2964 (build-system gnu-build-system)
2965 (arguments
2966 `(#:phases
2967 (modify-phases %standard-phases
2968 (add-before 'bootstrap 'set-LIBSASS_VERSION
2969 (lambda _
2970 (setenv "LIBSASS_VERSION" ,version)
2971 #t)))))
2972 (native-inputs
2973 (list autoconf automake libtool))
2974 (home-page "https://sass-lang.com/libsass")
2975 (synopsis "SASS Compiler, implemented as a C/C++ library")
2976 (description
2977 "LibSass is a @acronym{SASS,Syntactically awesome style sheets} compiler
2978library designed for portability and efficiency. To actually compile SASS
2979stylesheets, you'll need to use another program that uses this library,
2980@var{sassc} for example.")
2981 (license license:expat)))
2982
2983(define-public sassc
2984 (package
2985 (name "sassc")
2986 (version "3.6.2")
2987 (source (origin
2988 (method git-fetch)
2989 (uri (git-reference
2990 (url "https://github.com/sass/sassc")
2991 (commit version)))
2992 (file-name (git-file-name name version))
2993 (sha256
2994 (base32
2995 "0m7flrs0hz3ivib8kvsgn3d0fgkabqviadkp1dyspa6iibx3gjwd"))))
2996 (build-system gnu-build-system)
2997 (arguments
2998 `(#:make-flags
2999 (list "CC=gcc"
3000 (string-append "PREFIX=" (assoc-ref %outputs "out")))
3001 #:tests? #f ; no test suite
3002 #:phases
3003 (modify-phases %standard-phases
3004 (add-after 'unpack 'patch-Makefile
3005 (lambda _
3006 (substitute* "Makefile"
3007 (("build-shared: \\$\\(RESOURCES\\) \\$\\(OBJECTS\\) \\$\\(LIB_SHARED\\)")
3008 "build-shared: $(RESOURCES) $(OBJECTS)")
3009 (("\\$\\(SASSC_EXE\\): libsass build")
3010 "$(SASSC_EXE): build")
3011 (("install: libsass-install-\\$\\(BUILD\\) \\\\")
3012 "install: \\"))
3013 #t))
3014 ;; This phase fails because…
3015 (delete 'bootstrap)
3016 ;; …there is no configure script to be generated.
3017 (delete 'configure)
3018 (add-before 'build 'setup-environment
3019 (lambda _
3020 (setenv "BUILD" "shared")
3021 (setenv "SASSC_VERSION" ,version)
3022 #t)))))
3023 (inputs
3024 (list libsass))
3025 (synopsis "CSS pre-processor")
3026 (description "SassC is a compiler written in C for the CSS pre-processor
3027language known as SASS.")
3028 (home-page "https://sass-lang.com/libsass")
3029 (license license:expat)))
3030
3031(define-public sassc/libsass-3.5
3032 ;; Newer libsass versions suffor from a memory leak when building (some?)
3033 ;; GTK themes <https://github.com/sass/libsass/issues/3033>.
3034 (package
3035 (inherit sassc)
3036 (name "sassc")
3037 (inputs
3038 (list (package (inherit libsass)
3039 (name "libsass")
3040 (version "3.5.5")
3041 (source (origin (method git-fetch)
3042 (uri (git-reference (url
3043 "https://github.com/sass/libsass")
3044 (commit version)))
3045 (file-name (git-file-name name version))
3046 (sha256 (base32
3047 "0830pjcvhzxh6yixj82x5k5r1xnadjqzi16kp53213icbly0r9ma")))))))
3048 (properties '((hidden? . #t)))))
3049
3050(define-public guile-safsaf
3051 (let ((commit "6a7d0c85459b9eda656ce914f5bdc6e906bf00f8")
3052 (revision "1"))
3053 (package
3054 (name "guile-safsaf")
3055 (version (git-version "0.4" revision commit))
3056 (source (origin
3057 (method git-fetch)
3058 (uri (git-reference
3059 (url "https://forge.cbaines.net/cbaines/safsaf.git")
3060 (commit commit)))
3061 (sha256
3062 (base32
3063 "13b0iardpq7ybxzm79rw9b2dmzw4lbxkxiw4z9a4z1n3b2r6qbmi"))
3064 (file-name (git-file-name name version))))
3065 (build-system gnu-build-system)
3066 (native-inputs
3067 (list pkg-config
3068 autoconf
3069 automake
3070 guile-3.0-latest
3071 guile-lib
3072 guile-fibers
3073 guile-knots
3074 guile-webutils
3075 guile-documenta
3076 guile-json-4
3077 guile-gcrypt))
3078 (inputs
3079 (list guile-3.0-latest))
3080 (propagated-inputs
3081 (list guile-fibers
3082 guile-knots
3083 guile-webutils
3084 guile-json-4
3085 guile-gcrypt))
3086 (home-page "https://cbaines.codeberg.page/safsaf/")
3087 (synopsis "Web framework for GNU Guile")
3088 (description
3089 "Safsaf is a web framework for GNU Guile, built on Guile Fibers using the
3090Guile Knots web server. It features include:
3091@itemize
3092@item Request routing
3093@item Middleware for logging, CORS, CSRF protection, sessions (signed
3094cookies), security headers, trailing-slash normalization, exception handling
3095@item Request helpers for form body parsing, multipart parsing, query strings,
3096cookies
3097@item Response helpers for HTML/SXML, JSON, redirects, plain text, static
3098files with Last-Modified / Cache-Control
3099@item Server-Sent Events (SSE): streaming text/event-stream responses with
3100keepalives and Last-Event-ID replay
3101@item Declarative parameter parsing with built-in processors, CSRF
3102integration, and error inspection
3103@item Internationalisation: gettext-style t / tn helpers backed by an
3104in-Scheme catalog loaded from .po files, with a locale handler wrapper that
3105selects per-request from route params, cookie, or Accept-Language
3106@end itemize")
3107 (license license:lgpl3+))))
3108
3109
3110(define-public perl-apache-logformat-compiler
3111 (package
3112 (name "perl-apache-logformat-compiler")
3113 (version "0.36")
3114 (source
3115 (origin
3116 (method url-fetch)
3117 (uri (string-append "mirror://cpan/authors/id/K/KA/KAZEBURO/"
3118 "Apache-LogFormat-Compiler-" version ".tar.gz"))
3119 (sha256
3120 (base32 "05xcl7j65vakx7x79jqjikyw0nzf60bc2w6hhc0q5sklxq1ral4l"))))
3121 (build-system perl-build-system)
3122 (native-inputs
3123 (list perl-http-message perl-module-build-tiny perl-test-mocktime
3124 perl-try-tiny perl-uri))
3125 (propagated-inputs
3126 (list perl-posix-strftime-compiler))
3127 (arguments `(#:tests? #f)) ; TODO: Timezone test failures
3128 (home-page "https://metacpan.org/release/Apache-LogFormat-Compiler")
3129 (synopsis "Compile a log format string to perl-code")
3130 (description "This module provides methods to compile a log format string
3131to perl-code, for faster generation of access_log lines.")
3132 (license license:perl-license)))
3133
3134(define-public perl-authen-sasl
3135 (package
3136 (name "perl-authen-sasl")
3137 (version "2.16")
3138 (source
3139 (origin
3140 (method url-fetch)
3141 (uri (string-append "mirror://cpan/authors/id/G/GB/GBARR/"
3142 "Authen-SASL-" version ".tar.gz"))
3143 (sha256
3144 (base32
3145 "02afhlrdq5hh5g8b32fa79fqq5i76qzwfqqvfi9zi57h31szl536"))))
3146 (build-system perl-build-system)
3147 (arguments
3148 '(#:phases
3149 (modify-phases %standard-phases
3150 (add-after 'unpack 'set-env
3151 ;; Fix the build with Perl 5.26.0. Try removing this phase for later
3152 ;; versions of perl-authen-sasl.
3153 (lambda _ (setenv "PERL_USE_UNSAFE_INC" "1") #t)))))
3154 (propagated-inputs
3155 (list perl-digest-hmac perl-gssapi))
3156 (home-page "https://metacpan.org/release/Authen-SASL")
3157 (synopsis "SASL authentication framework")
3158 (description "Authen::SASL provides an SASL authentication framework.")
3159 (license license:perl-license)))
3160
3161(define-public perl-catalyst-action-renderview
3162 (package
3163 (name "perl-catalyst-action-renderview")
3164 (version "0.16")
3165 (source
3166 (origin
3167 (method url-fetch)
3168 (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
3169 "Catalyst-Action-RenderView-"
3170 version ".tar.gz"))
3171 (sha256
3172 (base32
3173 "0j1rrld13cjk7ks92b5hv3xw4rfm2lvmksb4rlzd8mx0a0wj0rc5"))))
3174 (build-system perl-build-system)
3175 (native-inputs
3176 (list perl-http-request-ascgi perl-module-install))
3177 (propagated-inputs
3178 (list perl-catalyst-runtime perl-data-visitor perl-mro-compat))
3179 (home-page "https://metacpan.org/release/Catalyst-Action-RenderView")
3180 (synopsis "Sensible default Catalyst action")
3181 (description "This Catalyst action implements a sensible default end
3182action, which will forward to the first available view.")
3183 (license license:perl-license)))
3184
3185(define-public perl-catalyst-action-rest
3186 (package
3187 (name "perl-catalyst-action-rest")
3188 (version "1.21")
3189 (source (origin
3190 (method url-fetch)
3191 (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/"
3192 "Catalyst-Action-REST-" version ".tar.gz"))
3193 (sha256
3194 (base32
3195 "086bykggzalbjfk0islac4b48g9s2ypj7y81d6ns1lq0aax1py6c"))))
3196 (build-system perl-build-system)
3197 (native-inputs
3198 (list perl-test-requires perl-module-install))
3199 (propagated-inputs
3200 (list perl-catalyst-runtime
3201 perl-class-inspector
3202 perl-config-general
3203 perl-cpanel-json-xs
3204 perl-libwww
3205 perl-moose
3206 perl-mro-compat
3207 perl-namespace-autoclean
3208 perl-params-validate
3209 perl-uri-find
3210 perl-xml-simple))
3211 (home-page "https://metacpan.org/release/Catalyst-Action-REST")
3212 (synopsis "Automated REST Method Dispatching")
3213 (description "This Action handles doing automatic method dispatching for
3214REST requests. It takes a normal Catalyst action, and changes the dispatch to
3215append an underscore and method name. First it will try dispatching to an
3216action with the generated name, and failing that it will try to dispatch to a
3217regular method.")
3218 (license license:perl-license)))
3219
3220(define-public perl-catalyst-authentication-store-dbix-class
3221 (package
3222 (name "perl-catalyst-authentication-store-dbix-class")
3223 (version "0.1506")
3224 (source
3225 (origin
3226 (method url-fetch)
3227 (uri (string-append "mirror://cpan/authors/id/I/IL/ILMARI/"
3228 "Catalyst-Authentication-Store-DBIx-Class-"
3229 version ".tar.gz"))
3230 (sha256
3231 (base32
3232 "0i5ja7690fs9nhxcij6lw51j804sm8s06m5mvk1n8pi8jljrymvw"))))
3233 (build-system perl-build-system)
3234 (native-inputs
3235 (list perl-catalyst-plugin-authorization-roles
3236 perl-catalyst-plugin-session-state-cookie perl-dbd-sqlite
3237 perl-module-install perl-test-www-mechanize-catalyst))
3238 (propagated-inputs
3239 (list perl-catalyst-runtime perl-catalyst-plugin-authentication
3240 perl-dbix-class perl-catalyst-model-dbic-schema))
3241 (home-page
3242 "https://metacpan.org/release/Catalyst-Authentication-Store-DBIx-Class")
3243 (synopsis "Storage class for Catalyst authentication using DBIx::Class")
3244 (description "The Catalyst::Authentication::Store::DBIx::Class class
3245provides access to authentication information stored in a database via
3246DBIx::Class.")
3247 (license license:perl-license)))
3248
3249(define-public perl-catalyst-component-instancepercontext
3250 (package
3251 (name "perl-catalyst-component-instancepercontext")
3252 (version "0.001001")
3253 (source
3254 (origin
3255 (method url-fetch)
3256 (uri (string-append "mirror://cpan/authors/id/G/GR/GRODITI/"
3257 "Catalyst-Component-InstancePerContext-"
3258 version ".tar.gz"))
3259 (sha256
3260 (base32
3261 "0wfj4vnn2cvk6jh62amwlg050p37fcwdgrn9amcz24z6w4qgjqvz"))))
3262 (build-system perl-build-system)
3263 (native-inputs
3264 (list perl-module-install))
3265 (propagated-inputs
3266 (list perl-catalyst-runtime perl-moose))
3267 (home-page
3268 "https://metacpan.org/release/Catalyst-Component-InstancePerContext")
3269 (synopsis "Create only one instance of Moose component per context")
3270 (description "Catalyst::Component::InstancePerContext returns a new
3271instance of a component on each request.")
3272 (license license:perl-license)))
3273
3274(define-public perl-catalyst-devel
3275 (package
3276 (name "perl-catalyst-devel")
3277 (version "1.42")
3278 (source
3279 (origin
3280 (method url-fetch)
3281 (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
3282 "Catalyst-Devel-" version ".tar.gz"))
3283 (sha256
3284 (base32 "1gcaqivyxwsdq87v9za1ijjibh6llirzqsbpwjbw1f5mravg1iky"))))
3285 (build-system perl-build-system)
3286 (native-inputs
3287 (list perl-file-sharedir-install perl-test-fatal))
3288 (propagated-inputs
3289 (list perl-catalyst-action-renderview
3290 perl-catalyst-plugin-configloader
3291 perl-catalyst-plugin-static-simple
3292 perl-catalyst-runtime
3293 perl-config-general
3294 perl-file-changenotify
3295 perl-file-copy-recursive
3296 perl-file-sharedir
3297 perl-module-install
3298 perl-moose
3299 perl-moosex-emulate-class-accessor-fast
3300 perl-namespace-autoclean
3301 perl-namespace-clean
3302 perl-path-class
3303 perl-template-toolkit))
3304 (home-page "https://metacpan.org/release/Catalyst-Devel")
3305 (synopsis "Catalyst Development Tools")
3306 (description "The Catalyst-Devel distribution includes a variety of
3307modules useful for the development of Catalyst applications, but not required
3308to run them. Catalyst-Devel includes the Catalyst::Helper system, which
3309autogenerates scripts and tests; Module::Install::Catalyst, a Module::Install
3310extension for Catalyst; and requirements for a variety of development-related
3311modules.")
3312 (license license:perl-license)))
3313
3314(define-public perl-catalyst-dispatchtype-regex
3315 (package
3316 (name "perl-catalyst-dispatchtype-regex")
3317 (version "5.90035")
3318 (source
3319 (origin
3320 (method url-fetch)
3321 (uri (string-append "mirror://cpan/authors/id/M/MG/MGRIMES/"
3322 "Catalyst-DispatchType-Regex-" version ".tar.gz"))
3323 (sha256
3324 (base32
3325 "06jq1lmpq88rmp9zik5gqczg234xac0hiyc3l698iif7zsgcyb80"))))
3326 (build-system perl-build-system)
3327 (native-inputs
3328 (list perl-module-build ;needs Module::Build >= 0.4004
3329 perl-namespace-autoclean perl-catalyst-runtime))
3330 (propagated-inputs
3331 (list perl-moose perl-text-simpletable))
3332 (home-page "https://metacpan.org/release/Catalyst-DispatchType-Regex")
3333 (synopsis "Regex DispatchType for Catalyst")
3334 (description "Dispatch type managing path-matching behaviour using
3335regexes. Regex dispatch types have been deprecated and removed from Catalyst
3336core. It is recommend that you use Chained methods or other techniques
3337instead. As part of the refactoring, the dispatch priority of Regex vs Regexp
3338vs LocalRegex vs LocalRegexp may have changed. Priority is now influenced by
3339when the dispatch type is first seen in your application.")
3340 (license license:perl-license)))
3341
3342(define-public perl-catalyst-model-dbic-schema
3343 (package
3344 (name "perl-catalyst-model-dbic-schema")
3345 (version "0.65")
3346 (source
3347 (origin
3348 (method url-fetch)
3349 (uri (string-append "mirror://cpan/authors/id/G/GB/GBJK/"
3350 "Catalyst-Model-DBIC-Schema-"
3351 version ".tar.gz"))
3352 (sha256
3353 (base32
3354 "1spfjcjc0b9dv3k2gbanqj1m1cqzyxb32p76dhdwizzpbvpi3a96"))))
3355 (build-system perl-build-system)
3356 (native-inputs
3357 (list perl-dbd-sqlite perl-module-install perl-test-exception
3358 perl-test-requires))
3359 (propagated-inputs
3360 (list perl-carp-clan
3361 perl-catalyst-component-instancepercontext
3362 perl-catalyst-runtime
3363 perl-catalystx-component-traits
3364 perl-dbix-class
3365 perl-dbix-class-cursor-cached
3366 perl-dbix-class-schema-loader
3367 perl-hash-merge
3368 perl-list-moreutils
3369 perl-module-runtime
3370 perl-moose
3371 perl-moosex-markasmethods
3372 perl-moosex-nonmoose
3373 perl-moosex-types
3374 perl-moosex-types-loadableclass
3375 perl-namespace-autoclean
3376 perl-namespace-clean
3377 perl-tie-ixhash
3378 perl-try-tiny))
3379 (home-page "https://metacpan.org/release/Catalyst-Model-DBIC-Schema")
3380 (synopsis "DBIx::Class::Schema Model Class")
3381 (description "This is a Catalyst Model for DBIx::Class::Schema-based
3382Models.")
3383 (license license:perl-license)))
3384
3385(define-public perl-catalyst-plugin-accesslog
3386 (package
3387 (name "perl-catalyst-plugin-accesslog")
3388 (version "1.10")
3389 (source
3390 (origin
3391 (method url-fetch)
3392 (uri (string-append "mirror://cpan/authors/id/A/AR/ARODLAND/"
3393 "Catalyst-Plugin-AccessLog-" version ".tar.gz"))
3394 (sha256
3395 (base32
3396 "0811rj45q4v2y8wka3wb9d5m4vbyhcmkvddf2wz4x69awzjbhgc7"))))
3397 (build-system perl-build-system)
3398 (propagated-inputs
3399 (list perl-catalyst-runtime perl-datetime perl-moose
3400 perl-namespace-autoclean))
3401 (home-page "https://metacpan.org/release/Catalyst-Plugin-AccessLog")
3402 (synopsis "Request logging from within Catalyst")
3403 (description "This Catalyst plugin enables you to create \"access logs\"
3404from within a Catalyst application instead of requiring a webserver to do it
3405for you. It will work even with Catalyst debug logging turned off.")
3406 (license license:perl-license)))
3407
3408(define-public perl-catalyst-plugin-authentication
3409 (package
3410 (name "perl-catalyst-plugin-authentication")
3411 (version "0.10023")
3412 (source
3413 (origin
3414 (method url-fetch)
3415 (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
3416 "Catalyst-Plugin-Authentication-"
3417 version ".tar.gz"))
3418 (sha256
3419 (base32
3420 "0v6hb4r1wv3djrnqvnjcn3xx1scgqzx8nyjdg9lfc1ybvamrl0rn"))))
3421 (build-system perl-build-system)
3422 (native-inputs
3423 (list perl-module-install))
3424 (propagated-inputs
3425 (list perl-catalyst-plugin-session
3426 perl-catalyst-runtime
3427 perl-class-inspector
3428 perl-moose
3429 perl-moosex-emulate-class-accessor-fast
3430 perl-mro-compat
3431 perl-namespace-autoclean
3432 perl-string-rewriteprefix
3433 perl-test-exception
3434 perl-try-tiny))
3435 (home-page "https://metacpan.org/release/Catalyst-Plugin-Authentication")
3436 (synopsis "Infrastructure plugin for the Catalyst authentication framework")
3437 (description "The authentication plugin provides generic user support for
3438Catalyst apps. It is the basis for both authentication (checking the user is
3439who they claim to be), and authorization (allowing the user to do what the
3440system authorises them to do).")
3441 (license license:perl-license)))
3442
3443(define-public perl-catalyst-plugin-authorization-roles
3444 (package
3445 (name "perl-catalyst-plugin-authorization-roles")
3446 (version "0.09")
3447 (source
3448 (origin
3449 (method url-fetch)
3450 (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
3451 "Catalyst-Plugin-Authorization-Roles-"
3452 version ".tar.gz"))
3453 (sha256
3454 (base32
3455 "0l83lkwmq0lngwh8b1rv3r719pn8w1gdbyhjqm74rnd0wbjl8h7f"))))
3456 (build-system perl-build-system)
3457 (native-inputs
3458 (list perl-module-install perl-test-exception))
3459 (propagated-inputs
3460 (list perl-catalyst-plugin-authentication perl-catalyst-runtime
3461 perl-set-object perl-universal-isa))
3462 (home-page
3463 "https://metacpan.org/release/Catalyst-Plugin-Authorization-Roles")
3464 (synopsis "Role-based authorization for Catalyst")
3465 (description "Catalyst::Plugin::Authorization::Roles provides role-based
3466authorization for Catalyst based on Catalyst::Plugin::Authentication.")
3467 (license license:perl-license)))
3468
3469(define-public perl-catalyst-plugin-captcha
3470 (package
3471 (name "perl-catalyst-plugin-captcha")
3472 (version "0.04")
3473 (source
3474 (origin
3475 (method url-fetch)
3476 (uri (string-append "mirror://cpan/authors/id/D/DI/DIEGOK/"
3477 "Catalyst-Plugin-Captcha-" version ".tar.gz"))
3478 (sha256
3479 (base32
3480 "0llyj3v5nx9cx46jdbbvxf1lc9s9cxq5ml22xmx3wkb201r5qgaa"))))
3481 (build-system perl-build-system)
3482 (propagated-inputs
3483 (list perl-catalyst-plugin-session perl-catalyst-runtime
3484 perl-gd-securityimage perl-http-date))
3485 (home-page "https://metacpan.org/release/Catalyst-Plugin-Captcha")
3486 (synopsis "Captchas for Catalyst")
3487 (description "This plugin creates and validates Captcha images for
3488Catalyst.")
3489 (license license:perl-license)))
3490
3491(define-public perl-catalyst-plugin-configloader
3492 (package
3493 (name "perl-catalyst-plugin-configloader")
3494 (version "0.35")
3495 (source
3496 (origin
3497 (method url-fetch)
3498 (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
3499 "Catalyst-Plugin-ConfigLoader-"
3500 version ".tar.gz"))
3501 (sha256
3502 (base32 "0w8r3bbxqnlykvra6sx3sh3wh8ylkj914xg5ql6nw11ddy56jaly"))))
3503 (build-system perl-build-system)
3504 (native-inputs
3505 (list perl-path-class perl-module-install))
3506 (propagated-inputs
3507 (list perl-catalyst-runtime perl-config-any perl-data-visitor
3508 perl-mro-compat))
3509 (home-page "https://metacpan.org/release/Catalyst-Plugin-ConfigLoader")
3510 (synopsis "Load config files of various types")
3511 (description "This module will attempt to load find and load configuration
3512files of various types. Currently it supports YAML, JSON, XML, INI and Perl
3513formats.")
3514 (license license:perl-license)))
3515
3516(define-public perl-catalyst-plugin-session
3517 (package
3518 (name "perl-catalyst-plugin-session")
3519 (version "0.41")
3520 (source
3521 (origin
3522 (method url-fetch)
3523 (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/"
3524 "Catalyst-Plugin-Session-" version ".tar.gz"))
3525 (sha256
3526 (base32 "0a451997zc2vjx7rvndgx1ldbrpic8sfbddyvncynh0zr8bhlqc5"))))
3527 (build-system perl-build-system)
3528 (native-inputs
3529 (list perl-module-install perl-test-deep perl-test-exception))
3530 (propagated-inputs
3531 (list perl-catalyst-runtime
3532 perl-moose
3533 perl-moosex-emulate-class-accessor-fast
3534 perl-mro-compat
3535 perl-namespace-clean
3536 perl-object-signature
3537 perl-test-www-mechanize-psgi))
3538 (home-page "https://metacpan.org/release/Catalyst-Plugin-Session")
3539 (synopsis "Catalyst generic session plugin")
3540 (description "This plugin links the two pieces required for session
3541management in web applications together: the state, and the store.")
3542 (license license:perl-license)))
3543
3544(define-public perl-catalyst-plugin-session-state-cookie
3545 (package
3546 (name "perl-catalyst-plugin-session-state-cookie")
3547 (version "0.17")
3548 (source
3549 (origin
3550 (method url-fetch)
3551 (uri (string-append "mirror://cpan/authors/id/M/MS/MSTROUT/"
3552 "Catalyst-Plugin-Session-State-Cookie-"
3553 version ".tar.gz"))
3554 (sha256
3555 (base32
3556 "1rvxbfnpf9x2pc2zgpazlcgdlr2dijmxgmcs0m5nazs0w6xikssb"))))
3557 (build-system perl-build-system)
3558 (native-inputs
3559 (list perl-module-install))
3560 (propagated-inputs
3561 (list perl-catalyst-plugin-session perl-catalyst-runtime perl-moose
3562 perl-mro-compat perl-namespace-autoclean))
3563 (home-page
3564 "https://metacpan.org/release/Catalyst-Plugin-Session-State-Cookie")
3565 (synopsis "Maintain session IDs using cookies")
3566 (description "In order for Catalyst::Plugin::Session to work, the session
3567ID needs to be stored on the client, and the session data needs to be stored
3568on the server. This plugin stores the session ID on the client using the
3569cookie mechanism.")
3570 (license license:perl-license)))
3571
3572(define-public perl-catalyst-plugin-session-store-fastmmap
3573 (package
3574 (name "perl-catalyst-plugin-session-store-fastmmap")
3575 (version "0.16")
3576 (source
3577 (origin
3578 (method url-fetch)
3579 (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
3580 "Catalyst-Plugin-Session-Store-FastMmap-"
3581 version ".tar.gz"))
3582 (sha256
3583 (base32
3584 "0x3j6zv3wr41jlwr6yb2jpmcx019ibyn11y8653ffnwhpzbpzsxs"))))
3585 (build-system perl-build-system)
3586 (propagated-inputs
3587 (list perl-cache-fastmmap
3588 perl-catalyst-plugin-session
3589 perl-catalyst-runtime
3590 perl-moosex-emulate-class-accessor-fast
3591 perl-mro-compat
3592 perl-path-class))
3593 (home-page
3594 "https://metacpan.org/release/Catalyst-Plugin-Session-Store-FastMmap")
3595 (synopsis "FastMmap session storage backend")
3596 (description "Catalyst::Plugin::Session::Store::FastMmap is a fast session
3597storage plugin for Catalyst that uses an mmap'ed file to act as a shared
3598memory interprocess cache. It is based on Cache::FastMmap.")
3599 (license license:perl-license)))
3600
3601(define-public perl-catalyst-plugin-stacktrace
3602 (package
3603 (name "perl-catalyst-plugin-stacktrace")
3604 (version "0.12")
3605 (source
3606 (origin
3607 (method url-fetch)
3608 (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
3609 "Catalyst-Plugin-StackTrace-" version ".tar.gz"))
3610 (sha256
3611 (base32
3612 "1b2ksz74cpigxqzf63rddar3vfmnbpwpdcbs11v0ml89pb8ar79j"))))
3613 (build-system perl-build-system)
3614 (native-inputs
3615 (list perl-module-install))
3616 (propagated-inputs
3617 (list perl-catalyst-runtime perl-devel-stacktrace perl-mro-compat))
3618 (home-page "https://metacpan.org/release/Catalyst-Plugin-StackTrace")
3619 (synopsis "Stack trace on the Catalyst debug screen")
3620 (description "This plugin enhances the standard Catalyst debug screen by
3621including a stack trace of your application up to the point where the error
3622occurred. Each stack frame is displayed along with the package name, line
3623number, file name, and code context surrounding the line number.")
3624 (license license:perl-license)))
3625
3626(define-public perl-catalyst-plugin-static-simple
3627 (package
3628 (name "perl-catalyst-plugin-static-simple")
3629 (version "0.36")
3630 (source
3631 (origin
3632 (method url-fetch)
3633 (uri (string-append "mirror://cpan/authors/id/I/IL/ILMARI/"
3634 "Catalyst-Plugin-Static-Simple-" version ".tar.gz"))
3635 (sha256
3636 (base32
3637 "0m4l627p2fvzr4i6sgdxhdvsx4wpa6qmaibsbxlg5x5yjs7k7drn"))))
3638 (build-system perl-build-system)
3639 (native-inputs
3640 (list perl-module-install))
3641 (propagated-inputs
3642 (list perl-catalyst-runtime perl-mime-types perl-moose
3643 perl-moosex-types perl-namespace-autoclean))
3644 (home-page "https://metacpan.org/release/Catalyst-Plugin-Static-Simple")
3645 (synopsis "Simple serving of static pages")
3646 (description "The Static::Simple plugin is designed to make serving static
3647content in your application during development quick and easy, without
3648requiring a single line of code from you. This plugin detects static files by
3649looking at the file extension in the URL (such as .css or .png or .js). The
3650plugin uses the lightweight MIME::Types module to map file extensions to
3651IANA-registered MIME types, and will serve your static files with the correct
3652MIME type directly to the browser, without being processed through Catalyst.")
3653 (license license:perl-license)))
3654
3655(define-public perl-catalyst-runtime
3656 (package
3657 (name "perl-catalyst-runtime")
3658 (version "5.90124")
3659 (source
3660 (origin
3661 (method url-fetch)
3662 (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/"
3663 "Catalyst-Runtime-" version ".tar.gz"))
3664 (sha256
3665 (base32
3666 "001yk1i0xwn4v308qx15nvnp6v9qfdigdlvz1rgw5zpnq7kwnq1a"))))
3667 (build-system perl-build-system)
3668 (native-inputs
3669 (list perl-test-fatal))
3670 (propagated-inputs
3671 (list perl-cgi-simple
3672 perl-cgi-struct
3673 perl-class-c3-adopt-next
3674 perl-class-date
3675 perl-class-load
3676 perl-data-dump
3677 perl-http-body
3678 perl-http-message
3679 perl-json-maybexs
3680 perl-libwww
3681 perl-module-pluggable
3682 perl-moose
3683 perl-moosex-emulate-class-accessor-fast
3684 perl-moosex-getopt
3685 perl-moosex-methodattributes
3686 perl-namespace-clean
3687 perl-path-class
3688 perl-perlio-utf8_strict
3689 perl-plack
3690 perl-plack-middleware-fixmissingbodyinredirect
3691 perl-plack-middleware-methodoverride
3692 perl-plack-middleware-removeredundantbody
3693 perl-plack-middleware-reverseproxy
3694 perl-plack-test-externalserver
3695 perl-safe-isa
3696 perl-string-rewriteprefix
3697 perl-text-simpletable
3698 perl-tree-simple
3699 perl-tree-simple-visitorfactory
3700 perl-try-tiny
3701 perl-uri
3702 perl-uri-ws))
3703 (home-page "https://metacpan.org/release/Catalyst-Runtime")
3704 (synopsis "The Catalyst Framework Runtime")
3705 (description "Catalyst is a modern framework for making web applications.
3706It is designed to make it easy to manage the various tasks you need to do to
3707run an application on the web, either by doing them itself, or by letting you
3708\"plug in\" existing Perl modules that do what you need.")
3709 (license license:perl-license)))
3710
3711(define-public perl-catalyst-traitfor-request-proxybase
3712 (package
3713 (name "perl-catalyst-traitfor-request-proxybase")
3714 (version "0.000005")
3715 (source
3716 (origin
3717 (method url-fetch)
3718 (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
3719 "Catalyst-TraitFor-Request-ProxyBase-"
3720 version ".tar.gz"))
3721 (sha256
3722 (base32
3723 "02kir63d5cs2ipj3fn1qlmmx3gqi1xqzrxfr4pv5vjhjgsm0zgx7"))))
3724 (build-system perl-build-system)
3725 (native-inputs
3726 (list perl-catalyst-runtime perl-catalystx-roleapplicator
3727 perl-http-message perl-module-install))
3728 (propagated-inputs
3729 (list perl-moose perl-namespace-autoclean perl-uri))
3730 (home-page
3731 "https://metacpan.org/release/Catalyst-TraitFor-Request-ProxyBase")
3732 (synopsis "Replace request base with value passed by HTTP proxy")
3733 (description "This module is a Moose::Role which allows you more
3734flexibility in your application's deployment configurations when deployed
3735behind a proxy. Using this module, the request base ($c->req->base) is
3736replaced with the contents of the X-Request-Base header.")
3737 (license license:perl-license)))
3738
3739(define-public perl-catalyst-view-download
3740 (package
3741 (name "perl-catalyst-view-download")
3742 (version "0.09")
3743 (source
3744 (origin
3745 (method url-fetch)
3746 (uri (string-append "mirror://cpan/authors/id/G/GA/GAUDEON/"
3747 "Catalyst-View-Download-" version ".tar.gz"))
3748 (sha256
3749 (base32
3750 "1qgq6y9iwfbhbkbgpw9czang2ami6z8jk1zlagrzdisy4igqzkvs"))))
3751 (build-system perl-build-system)
3752 (native-inputs
3753 (list perl-catalyst-runtime
3754 perl-module-install
3755 perl-test-simple
3756 perl-test-www-mechanize-catalyst
3757 perl-text-csv
3758 perl-xml-simple))
3759 (home-page "https://metacpan.org/release/Catalyst-View-Download")
3760 (synopsis "Download data in many formats")
3761 (description "The purpose of this module is to provide a method for
3762downloading data into many supportable formats. For example, downloading a
3763table based report in a variety of formats (CSV, HTML, etc.).")
3764 (license license:perl-license)))
3765
3766(define-public perl-catalyst-view-json
3767 (package
3768 (name "perl-catalyst-view-json")
3769 (version "0.37")
3770 (source
3771 (origin
3772 (method url-fetch)
3773 (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
3774 "Catalyst-View-JSON-" version ".tar.gz"))
3775 (sha256
3776 (base32
3777 "1v4xkzazs743sc7cd1kxkbi99cf00a4dadyyancckcbpi9p3znn5"))))
3778 (build-system perl-build-system)
3779 (native-inputs
3780 (list perl-module-install perl-yaml))
3781 (inputs
3782 (list perl-catalyst-runtime perl-json-maybexs perl-mro-compat))
3783 (home-page "https://metacpan.org/release/Catalyst-View-JSON")
3784 (synopsis "Catalyst JSON view")
3785 (description "Catalyst::View::JSON is a Catalyst View handler that returns
3786stash data in JSON format.")
3787 (license license:perl-license)))
3788
3789(define-public perl-catalyst-view-tt
3790 (package
3791 (name "perl-catalyst-view-tt")
3792 (version "0.45")
3793 (source
3794 (origin
3795 (method url-fetch)
3796 (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
3797 "Catalyst-View-TT-" version ".tar.gz"))
3798 (sha256
3799 (base32 "0jzgpkgq5pwq82zlb0nykdyk40dfpsyn9ilz91d0wpixgi9i5pr8"))))
3800 (build-system perl-build-system)
3801 (propagated-inputs
3802 (list perl-catalyst-runtime
3803 perl-class-accessor
3804 perl-data-dump
3805 perl-mro-compat
3806 perl-path-class
3807 perl-template-timer
3808 perl-template-toolkit))
3809 (home-page "https://metacpan.org/release/Catalyst-View-TT")
3810 (synopsis "Template View Class")
3811 (description "This module is a Catalyst view class for the Template
3812Toolkit.")
3813 (license license:perl-license)))
3814
3815(define-public perl-catalystx-component-traits
3816 (package
3817 (name "perl-catalystx-component-traits")
3818 (version "0.19")
3819 (source
3820 (origin
3821 (method url-fetch)
3822 (uri (string-append "mirror://cpan/authors/id/R/RK/RKITOVER/"
3823 "CatalystX-Component-Traits-" version ".tar.gz"))
3824 (sha256
3825 (base32
3826 "0iq4ci8m6g2c4g01fvdl568y7pjz28f3widk986v3pyhr7ll8j88"))))
3827 (build-system perl-build-system)
3828 (native-inputs
3829 (list perl-moose perl-catalyst-runtime perl-moosex-methodattributes))
3830 (propagated-inputs
3831 (list perl-catalyst-runtime
3832 perl-class-load
3833 perl-moose
3834 perl-moosex-traits-pluggable
3835 perl-namespace-autoclean
3836 perl-list-moreutils))
3837 (home-page "https://metacpan.org/release/CatalystX-Component-Traits")
3838 (synopsis "Trait Loading and Resolution for Catalyst Components")
3839 (description "Adds a \"COMPONENT\" in Catalyst::Component method to your
3840Catalyst component base class that reads the optional \"traits\" parameter
3841from app and component config and instantiates the component subclass with
3842those traits using \"new_with_traits\" in MooseX::Traits from
3843MooseX::Traits::Pluggable.")
3844 (license license:perl-license)))
3845
3846(define-public perl-catalystx-roleapplicator
3847 (package
3848 (name "perl-catalystx-roleapplicator")
3849 (version "0.005")
3850 (source
3851 (origin
3852 (method url-fetch)
3853 (uri (string-append "mirror://cpan/authors/id/H/HD/HDP/"
3854 "CatalystX-RoleApplicator-" version ".tar.gz"))
3855 (sha256
3856 (base32
3857 "0vwaapxn8g5hs2xp63c4dwv9jmapmji4272fakssvgc9frklg3p2"))))
3858 (build-system perl-build-system)
3859 (propagated-inputs
3860 (list perl-catalyst-runtime perl-moose perl-moosex-relatedclassroles))
3861 (home-page "https://metacpan.org/release/CatalystX-RoleApplicator")
3862 (synopsis "Apply roles to Catalyst classes")
3863 (description "CatalystX::RoleApplicator applies roles to Catalyst
3864application classes.")
3865 (license license:perl-license)))
3866
3867(define-public perl-catalystx-script-server-starman
3868 (package
3869 (name "perl-catalystx-script-server-starman")
3870 (version "0.03")
3871 (source
3872 (origin
3873 (method url-fetch)
3874 (uri (string-append "mirror://cpan/authors/id/A/AB/ABRAXXA/"
3875 "CatalystX-Script-Server-Starman-"
3876 version ".tar.gz"))
3877 (sha256
3878 (base32
3879 "08jvibq4v8xjj0c3cr93h0w8w0c88ajwjn37xjy7ygxl9krlffp6"))))
3880 (build-system perl-build-system)
3881 (native-inputs
3882 (list perl-module-install perl-pod-parser perl-test-www-mechanize-catalyst))
3883 (propagated-inputs
3884 (list perl-catalyst-runtime perl-moose perl-namespace-autoclean
3885 starman))
3886 (home-page "https://metacpan.org/release/CatalystX-Script-Server-Starman")
3887 (synopsis "Catalyst development server with Starman")
3888 (description "This module provides a Catalyst extension to replace the
3889development server with Starman.")
3890 (license license:perl-license)))
3891
3892(define-public perl-cgi
3893 (package
3894 (name "perl-cgi")
3895 (version "4.55")
3896 (source
3897 (origin
3898 (method url-fetch)
3899 (uri (string-append "mirror://cpan/authors/id/L/LE/LEEJO/"
3900 "CGI-" version ".tar.gz"))
3901 (sha256
3902 (base32 "1ck4ik5i0v394qgg9qah4p6x9hyls311g6iwi6ildprzn6a5x2b7"))))
3903 (build-system perl-build-system)
3904 (native-inputs
3905 (list perl-test-nowarnings perl-test-warn))
3906 (propagated-inputs
3907 (list perl-html-parser))
3908 (home-page "https://metacpan.org/release/CGI")
3909 (synopsis "Handle Common Gateway Interface requests and responses")
3910 (description "CGI.pm is a stable, complete and mature solution for
3911processing and preparing HTTP requests and responses. Major features include
3912processing form submissions, file uploads, reading and writing cookies, query
3913string generation and manipulation, and processing and preparing HTTP
3914headers.")
3915 (license license:perl-license)))
3916
3917(define-public perl-cgi-formbuilder
3918 (package
3919 (name "perl-cgi-formbuilder")
3920 (version "3.10")
3921 (source
3922 (origin
3923 (method url-fetch)
3924 (uri (string-append
3925 "https://cpan.metacpan.org/authors/id/B/BI/BIGPRESH/"
3926 "CGI-FormBuilder-" version ".tar.gz"))
3927 (sha256
3928 (base32
3929 "163ixq9kninqq094z2rnkg9pv3bcmvjphlww4vksfrzhq3h9pjdf"))))
3930 (build-system perl-build-system)
3931 (inputs (list perl-cgi))
3932 (home-page
3933 "https://metacpan.org/release/CGI-FormBuilder")
3934 (synopsis
3935 "Generate and process stateful forms")
3936 (description
3937 "@code{CGI::FormBuilder} provides an easy way to generate and process CGI
3938form-based applications.")
3939 (license license:perl-license)))
3940
3941(define-public perl-cgi-session
3942 (package
3943 (name "perl-cgi-session")
3944 (version "4.48")
3945 (source
3946 (origin
3947 (method url-fetch)
3948 (uri (string-append
3949 "mirror://cpan/authors/id/M/MA/MARKSTOS/CGI-Session-"
3950 version
3951 ".tar.gz"))
3952 (sha256
3953 (base32
3954 "1xsl2pz1jrh127pq0b01yffnj4mnp9nvkp88h5mndrscq9hn8xa6"))))
3955 (build-system perl-build-system)
3956 (native-inputs
3957 (list perl-module-build))
3958 (inputs (list perl-cgi))
3959 (home-page
3960 "https://metacpan.org/release/CGI-Session")
3961 (synopsis
3962 "Persistent session data in CGI applications")
3963 (description
3964 "@code{CGI::Session} provides modular session management system across
3965HTTP requests.")
3966 (license license:perl-license)))
3967
3968(define-public perl-cgi-simple
3969 (package
3970 (name "perl-cgi-simple")
3971 (version "1.22")
3972 (source
3973 (origin
3974 (method url-fetch)
3975 (uri (string-append "mirror://cpan/authors/id/M/MA/MANWAR/"
3976 "CGI-Simple-" version ".tar.gz"))
3977 (sha256
3978 (base32 "13c7iwnnavky10ab87pi8jc1kqph03s0rhvj7myn7szhbfisc4gn"))))
3979 (build-system perl-build-system)
3980 (native-inputs
3981 (list perl-io-stringy ; for IO::Scalar
3982 perl-module-build perl-test-exception perl-test-nowarnings))
3983 (home-page "https://metacpan.org/release/CGI-Simple")
3984 (synopsis "CGI interface that is CGI.pm compliant")
3985 (description "CGI::Simple provides a relatively lightweight drop in
3986replacement for CGI.pm. It shares an identical OO interface to CGI.pm for
3987parameter parsing, file upload, cookie handling and header generation.")
3988 (license license:perl-license)))
3989
3990(define-public perl-cgi-struct
3991 (package
3992 (name "perl-cgi-struct")
3993 (version "1.21")
3994 (source
3995 (origin
3996 (method url-fetch)
3997 (uri (string-append "mirror://cpan/authors/id/F/FU/FULLERMD/"
3998 "CGI-Struct-" version ".tar.gz"))
3999 (sha256
4000 (base32
4001 "0v4xq2qpryr7i6jngw1wpn8yr2kiib10yxp4aih90vfdznkqsgfi"))))
4002 (build-system perl-build-system)
4003 (native-inputs
4004 (list perl-test-deep))
4005 (home-page "https://metacpan.org/release/CGI-Struct")
4006 (synopsis "Build structures from CGI data")
4007 (description "This is a module for building structured data from CGI
4008inputs, in a manner reminiscent of how PHP does.")
4009 (license license:bsd-2)))
4010
4011(define-public perl-datetime-format-http
4012 (package
4013 (name "perl-datetime-format-http")
4014 (version "0.42")
4015 (source
4016 (origin
4017 (method url-fetch)
4018 (uri (string-append "mirror://cpan/authors/id/C/CK/CKRAS/"
4019 "DateTime-Format-HTTP-" version ".tar.gz"))
4020 (sha256
4021 (base32
4022 "0h6qqdg1yzqkdxp7hqlp0qa7d1y64nilgimxs79dys2ryjfpcknh"))))
4023 (build-system perl-build-system)
4024 (native-inputs
4025 (list perl-module-build))
4026 (propagated-inputs
4027 (list perl-datetime perl-http-date))
4028 (home-page "https://metacpan.org/release/DateTime-Format-HTTP")
4029 (synopsis "Date conversion routines")
4030 (description "This module provides functions that deal with the date
4031formats used by the HTTP protocol.")
4032 (license license:perl-license)))
4033
4034(define-public perl-digest-md5-file
4035 (package
4036 (name "perl-digest-md5-file")
4037 (version "0.08")
4038 (source
4039 (origin
4040 (method url-fetch)
4041 (uri (string-append "mirror://cpan/authors/id/D/DM/DMUEY/"
4042 "Digest-MD5-File-" version ".tar.gz"))
4043 (sha256
4044 (base32
4045 "060jzf45dlwysw5wsm7av1wvpl06xgk415kwwpvv89r6wda3md5d"))))
4046 (build-system perl-build-system)
4047 (propagated-inputs
4048 (list perl-libwww))
4049 (home-page "https://metacpan.org/release/Digest-MD5-File")
4050 (synopsis "MD5 sums for files and urls")
4051 (description "Digest::MD5::File is a Perl extension for getting MD5 sums
4052for files and urls.")
4053 (license license:perl-license)))
4054
4055(define-public perl-encode-locale
4056 (package
4057 (name "perl-encode-locale")
4058 (version "1.05")
4059 (source (origin
4060 (method url-fetch)
4061 (uri (string-append
4062 "mirror://cpan/authors/id/G/GA/GAAS/Encode-Locale-"
4063 version ".tar.gz"))
4064 (sha256
4065 (base32
4066 "1h8fvcdg3n20c2yp7107yhdkkx78534s9hnvn7ps8hpmf4ks0vqp"))))
4067 (build-system perl-build-system)
4068 (license license:perl-license)
4069 (synopsis "Perl locale encoding determination")
4070 (description
4071 "The POSIX locale system is used to specify both the language
4072conventions requested by the user and the preferred character set to
4073consume and output. The Encode::Locale module looks up the charset and
4074encoding (called a CODESET in the locale jargon) and arranges for the
4075Encode module to know this encoding under the name \"locale\". It means
4076bytes obtained from the environment can be converted to Unicode strings
4077by calling Encode::encode(locale => $bytes) and converted back again
4078with Encode::decode(locale => $string).")
4079 (home-page "https://metacpan.org/release/Encode-Locale")))
4080
4081(define-public perl-feed-find
4082 (package
4083 (name "perl-feed-find")
4084 (version "0.07")
4085 (source (origin
4086 (method url-fetch)
4087 (uri (string-append "mirror://cpan/authors/id/B/BT/BTROTT/"
4088 "Feed-Find-" version ".tar.gz"))
4089 (sha256
4090 (base32
4091 "0sa33cm8ww55cymnl8j7b5yspi2y5xkkkgqqa4h6fs3wdqylz600"))))
4092 (build-system perl-build-system)
4093 (arguments
4094 ;; Tests expect to query files at http://stupidfool.org/perl/feeds/
4095 `(#:tests? #f
4096 #:phases
4097 (modify-phases %standard-phases
4098 (add-after 'unpack 'set-env
4099 (lambda _ (setenv "PERL_USE_UNSAFE_INC" "1"))))))
4100 (inputs
4101 (list perl-class-errorhandler perl-html-parser perl-libwww perl-uri))
4102 (home-page "https://metacpan.org/release/Feed-Find")
4103 (synopsis "Syndication feed auto-discovery")
4104 (description "@code{Feed::Find} implements feed auto-discovery for finding
4105syndication feeds, given a URI. It will discover the following feed formats:
4106RSS 0.91, RSS 1.0, RSS 2.0, Atom.")
4107 (license license:perl-license)))
4108
4109(define-public perl-file-listing
4110 (package
4111 (name "perl-file-listing")
4112 (version "6.15")
4113 (source (origin
4114 (method url-fetch)
4115 (uri (string-append
4116 "mirror://cpan/authors/id/P/PL/PLICEASE/File-Listing-"
4117 version ".tar.gz"))
4118 (sha256
4119 (base32
4120 "033p2ckkjbxrl390x8aq4wq4fpj5aidsazkbw82mhqxrksgzpi26"))))
4121 (build-system perl-build-system)
4122 (propagated-inputs
4123 (list perl-http-date))
4124 (license license:perl-license)
4125 (synopsis "Perl directory listing parser")
4126 (description
4127 "The File::Listing module exports a single function called parse_dir(),
4128which can be used to parse directory listings.")
4129 (home-page "https://metacpan.org/release/File-Listing")))
4130
4131(define-public perl-finance-quote
4132 (package
4133 (name "perl-finance-quote")
4134 (version "1.70")
4135 (source
4136 (origin
4137 (method url-fetch)
4138 (uri (string-append "https://cpan.metacpan.org/authors/id/B/BP/BPSCHUCK/"
4139 "Finance-Quote-" version ".tar.gz"))
4140 (sha256
4141 (base32 "05bryjwc7igdpvhzkalbl068mjx484nld3rx071wjvzpg1xwh6jz"))))
4142 (build-system perl-build-system)
4143 (native-inputs
4144 (list perl-test-harness
4145 perl-date-manip
4146 perl-date-range
4147 perl-date-simple
4148 perl-datetime
4149 perl-datetime-format-iso8601
4150 perl-string-util
4151 perl-pathtools
4152 perl-test-pod
4153 perl-test-pod-coverage))
4154 (propagated-inputs
4155 (list perl-datetime
4156 perl-datetime-format-strptime
4157 perl-html-parser
4158 perl-html-tableextract
4159 perl-html-tokeparser-simple
4160 perl-html-tree
4161 perl-html-treebuilder-xpath
4162 perl-http-cookiejar
4163 perl-http-cookies
4164 perl-http-message
4165 perl-io-string
4166 perl-json
4167 perl-libwww
4168 perl-lwp-protocol-https
4169 perl-mozilla-ca
4170 perl-spreadsheet-xlsx
4171 perl-readonly
4172 perl-string-util
4173 perl-text-template
4174 perl-try-tiny
4175 perl-web-scraper
4176 perl-xml-libxml))
4177 (home-page "https://metacpan.org/release/Finance-Quote")
4178 (synopsis "Stock and mutual fund quotes")
4179 (description
4180 "The @code{Finance::Quote} module retries stock quotes from various
4181internet sources, including Yahoo! Finance, Fidelity Investments, and the
4182Australian Stock Exchange.")
4183 (license license:gpl2)))
4184
4185(define-public perl-gssapi
4186 (package
4187 (name "perl-gssapi")
4188 (version "0.28")
4189 (source
4190 (origin
4191 (method url-fetch)
4192 (uri (string-append "mirror://cpan/authors/id/A/AG/AGROLMS/"
4193 "GSSAPI-" version ".tar.gz"))
4194 (sha256
4195 (base32
4196 "1mkhwxjjlhr58pd770i9gnf7zy7jj092iv6jfbnb8bvnc5xjr3vx"))))
4197 (build-system perl-build-system)
4198 (inputs `(("gssapi" ,mit-krb5)))
4199 (arguments
4200 `(#:make-maker-flags
4201 `(,(string-append "--gssapiimpl=" (assoc-ref %build-inputs "gssapi")))))
4202 (home-page "https://metacpan.org/release/GSSAPI")
4203 (synopsis "Perl extension providing access to the GSSAPIv2 library")
4204 (description "This is a Perl extension for using GSSAPI C bindings as
4205described in RFC 2744.")
4206 (license license:perl-license)))
4207
4208(define-public perl-html-element-extended
4209 (package
4210 (name "perl-html-element-extended")
4211 (version "1.18")
4212 (source
4213 (origin
4214 (method url-fetch)
4215 (uri (string-append "mirror://cpan/authors/id/M/MS/MSISK/"
4216 "HTML-Element-Extended-" version ".tar.gz"))
4217 (sha256
4218 (base32
4219 "0axknss8c368r5i082yhkfj8mq0w4nglfrpcxcayyzzj13qimvzk"))))
4220 (build-system perl-build-system)
4221 (propagated-inputs
4222 (list perl-html-tree))
4223 (home-page "https://metacpan.org/release/HTML-Element-Extended")
4224 (synopsis "Manipulate tables of HTML::Element")
4225 (description
4226 "HTML::Element::Extended is a Perl extension for manipulating a table
4227composed of HTML::Element style components.")
4228 (license license:perl-license)))
4229
4230(define-public perl-html-form
4231 (package
4232 (name "perl-html-form")
4233 (version "6.05")
4234 (source
4235 (origin
4236 (method url-fetch)
4237 (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
4238 "HTML-Form-" version ".tar.gz"))
4239 (sha256
4240 (base32 "14i4ldyvdvhdhvfhh9kiq6z853q2f84biq8vcpv1k5w2r80wdiin"))))
4241 (build-system perl-build-system)
4242 (propagated-inputs
4243 (list perl-html-parser perl-html-tagset perl-http-message
4244 perl-lwp-mediatypes perl-uri))
4245 (home-page "https://metacpan.org/release/HTML-Form")
4246 (synopsis "Perl class representing an HTML form element")
4247 (description "Objects of the HTML::Form class represents a single HTML
4248<form> ... </form> instance.")
4249 (license license:perl-license)))
4250
4251(define-public perl-html-scrubber
4252 (package
4253 (name "perl-html-scrubber")
4254 (version "0.17")
4255 (source
4256 (origin
4257 (method url-fetch)
4258 (uri (string-append
4259 "mirror://cpan/authors/id/N/NI/NIGELM/HTML-Scrubber-"
4260 version
4261 ".tar.gz"))
4262 (sha256
4263 (base32
4264 "06p7w4zd42b2yh541mlzyqj40lwmvvn3fyqi8big4mf34la7m2jm"))))
4265 (build-system perl-build-system)
4266 (native-inputs
4267 (list perl-module-build
4268 perl-test-cpan-meta
4269 perl-test-differences
4270 perl-test-eol
4271 perl-test-memory-cycle
4272 perl-test-notabs))
4273 (inputs
4274 (list perl-html-parser))
4275 (home-page
4276 "https://metacpan.org/release/HTML-Scrubber")
4277 (synopsis
4278 "Perl extension for scrubbing/sanitizing html")
4279 (description
4280 "@code{HTML::Scrubber} Perl extension for scrubbing/sanitizing HTML.")
4281 (license license:perl-license)))
4282
4283(define-public perl-html-lint
4284 (package
4285 (name "perl-html-lint")
4286 (version "2.32")
4287 (source
4288 (origin
4289 (method url-fetch)
4290 (uri (string-append "mirror://cpan/authors/id/P/PE/PETDANCE/"
4291 "HTML-Lint-" version ".tar.gz"))
4292 (sha256
4293 (base32 "0lk02xpfxcg7ij4dvpsa4wjlzhmiizj0jfr3rwmdpbj69nvc93br"))))
4294 (build-system perl-build-system)
4295 (propagated-inputs
4296 (list perl-html-parser perl-html-tagset perl-libwww))
4297 (home-page "https://metacpan.org/release/HTML-Lint")
4298 (synopsis "Check for HTML errors in a string or file")
4299 (description "HTML::Lint is a pure-Perl HTML parser and checker for
4300syntactic legitmacy.")
4301 (license license:artistic2.0)))
4302
4303(define-public perl-html-selector-xpath
4304 (package
4305 (name "perl-html-selector-xpath")
4306 (version "0.28")
4307 (source
4308 (origin
4309 (method url-fetch)
4310 (uri (string-append
4311 "mirror://cpan/authors/id/C/CO/CORION/HTML-Selector-XPath-" version
4312 ".tar.gz"))
4313 (sha256
4314 (base32 "03wdwnrf0bvr2dw01njnz3a9mw2kl7ad7krh25j3vkyj7vq1f9s3"))))
4315 (build-system perl-build-system)
4316 (native-inputs (list perl-test-base
4317 perl-test-pod))
4318 (home-page "https://metacpan.org/release/HTML-Selector-XPath")
4319 (synopsis "CSS Selector to XPath compiler")
4320 (description "@code{HTML::Selector::XPath} is a Perl module for parsing
4321and scraping XML/HTML documents using XPath expressions.")
4322 (license license:perl-license)))
4323
4324(define-public perl-html-tableextract
4325 (package
4326 (name "perl-html-tableextract")
4327 (version "2.13")
4328 (source
4329 (origin
4330 (method url-fetch)
4331 (uri (string-append "https://cpan.metacpan.org/authors/id/M/MS/MSISK/"
4332 "HTML-TableExtract-" version ".tar.gz"))
4333 (sha256
4334 (base32
4335 "01jimmss3q68a89696wmclvqwb2ybz6xgabpnbp6mm6jcni82z8a"))))
4336 (build-system perl-build-system)
4337 (propagated-inputs
4338 (list perl-html-element-extended perl-html-parser))
4339 (home-page "https://metacpan.org/release/HTML-TableExtract")
4340 (synopsis "Extract contents from HTML tables")
4341 (description
4342 "HTML::TableExtract is a Perl module for extracting the content contained
4343in tables within an HTML document, either as text or encoded element trees.")
4344 (license license:perl-license)))
4345
4346(define-public perl-html-tokeparser-simple
4347 (package
4348 (name "perl-html-tokeparser-simple")
4349 (version "3.16")
4350 (source
4351 (origin
4352 (method url-fetch)
4353 (uri (string-append
4354 "mirror://cpan/authors/id/O/OV/OVID/HTML-TokeParser-Simple-"
4355 version ".tar.gz"))
4356 (sha256
4357 (base32 "17aa1v62sp8ycxcicwhankmj4brs6nnfclk9z7mf1rird1f164gd"))))
4358 (build-system perl-build-system)
4359 (native-inputs (list perl-module-build))
4360 (propagated-inputs (list perl-html-parser
4361 perl-html-tagset
4362 perl-sub-override))
4363 (home-page "https://metacpan.org/release/HTML-TokeParser-Simple")
4364 (synopsis "Easy to use parsing interface")
4365 (description "Provides @code{HTML::TokeParser::Simple}, a simpler interface
4366to @code{HTML::TokeParser} for parsing HTML.")
4367 (license license:perl-license)))
4368
4369(define-public perl-html-tree
4370 (package
4371 (name "perl-html-tree")
4372 (version "5.07")
4373 (source
4374 (origin
4375 (method url-fetch)
4376 (uri (string-append "mirror://cpan/authors/id/K/KE/KENTNL/"
4377 "HTML-Tree-" version ".tar.gz"))
4378 (sha256
4379 (base32
4380 "1gyvm4qlwm9y6hczkpnrdfl303ggbybr0nqxdjw09hii8yw4sdzh"))))
4381 (build-system perl-build-system)
4382 (native-inputs
4383 (list perl-module-build perl-test-fatal))
4384 (propagated-inputs
4385 (list perl-html-parser perl-html-tagset perl-libwww))
4386 (home-page "https://metacpan.org/release/HTML-Tree")
4387 (synopsis "Work with HTML in a DOM-like tree structure")
4388 (description "This distribution contains a suite of modules for
4389representing, creating, and extracting information from HTML syntax trees.")
4390 (license license:perl-license)))
4391
4392(define-public perl-html-parser
4393 (package
4394 (name "perl-html-parser")
4395 (version "3.85")
4396 (source (origin
4397 (method url-fetch)
4398 (uri (string-append
4399 "mirror://cpan/authors/id/O/OA/OALDERS/HTML-Parser-"
4400 version ".tar.gz"))
4401 (sha256
4402 (base32
4403 "0w8cisygx7mg8sdyara47rl5y1l075n29gjpmpq1q907prmblhpx"))))
4404 (build-system perl-build-system)
4405 (propagated-inputs (list perl-html-tagset
4406 perl-http-message ;for HTTP::Headers
4407 perl-uri))
4408 (license license:perl-license)
4409 (synopsis "Perl HTML parser class")
4410 (description
4411 "Objects of the HTML::Parser class will recognize markup and separate
4412it from plain text (alias data content) in HTML documents. As different
4413kinds of markup and text are recognized, the corresponding event handlers
4414are invoked.")
4415 (home-page "https://metacpan.org/release/HTML-Parser")))
4416
4417(define-public perl-html-tagset
4418 (package
4419 (name "perl-html-tagset")
4420 (version "3.20")
4421 (source (origin
4422 (method url-fetch)
4423 (uri (string-append
4424 "mirror://cpan/authors/id/P/PE/PETDANCE/HTML-Tagset-"
4425 version ".tar.gz"))
4426 (sha256
4427 (base32
4428 "1qh8249wgr4v9vgghq77zh1d2zs176bir223a8gh3k9nksn7vcdd"))))
4429 (build-system perl-build-system)
4430 (license license:perl-license)
4431 (synopsis "Perl data tables useful in parsing HTML")
4432 (description
4433 "The HTML::Tagset module contains several data tables useful in various
4434kinds of HTML parsing operations.")
4435 (home-page "https://metacpan.org/release/HTML-Tagset")))
4436
4437(define-public perl-html-template
4438 (package
4439 (name "perl-html-template")
4440 (version "2.97")
4441 (source (origin
4442 (method url-fetch)
4443 (uri (string-append "mirror://cpan/authors/id/S/SA/SAMTREGAR/"
4444 "HTML-Template-" version ".tar.gz"))
4445 (sha256
4446 (base32
4447 "17qjw8swj2q4b1ic285pndgrkmvpsqw0j68nhqzpk1daydhsyiv5"))))
4448 (build-system perl-build-system)
4449 (propagated-inputs
4450 (list perl-cgi))
4451 (home-page "https://metacpan.org/release/HTML-Template")
4452 (synopsis "HTML-like templates")
4453 (description
4454 "This module attempts to make using HTML templates simple and natural.
4455It extends standard HTML with a few new HTML-esque tags: @code{<TMPL_VAR>},
4456@code{<TMPL_LOOP>}, @code{<TMPL_INCLUDE>}, @code{<TMPL_IF>},
4457@code{<TMPL_ELSE>} and @code{<TMPL_UNLESS>}. The file written with HTML and
4458these new tags is called a template. Using this module you fill in the values
4459for the variables, loops and branches declared in the template. This allows
4460you to separate design from the data.")
4461 (license license:perl-license)))
4462
4463(define-public perl-html-treebuilder-xpath
4464 (package
4465 (name "perl-html-treebuilder-xpath")
4466 (version "0.14")
4467 (source
4468 (origin
4469 (method url-fetch)
4470 (uri (string-append
4471 "mirror://cpan/authors/id/M/MI/MIROD/HTML-TreeBuilder-XPath-"
4472 version ".tar.gz"))
4473 (sha256
4474 (base32 "1wx4i1scng20n405fp3a4vrwvvq9bvbmg977wnd5j2ja8jrbvsr5"))))
4475 (build-system perl-build-system)
4476 (propagated-inputs (list perl-html-tree perl-xml-xpathengine))
4477 (home-page "https://metacpan.org/release/HTML-TreeBuilder-XPath")
4478 (synopsis "XPath support for @code{HTML::TreeBuilder}")
4479 (description "This module implements @code{HTML::TreeBuilder::XPath} for
4480@code{HTML::TreeBuilder}, making it easy to parse documents using XPath.")
4481 (license license:perl-license)))
4482
4483(define-public perl-http-body
4484 (package
4485 (name "perl-http-body")
4486 (version "1.22")
4487 (source
4488 (origin
4489 (method url-fetch)
4490 (uri (string-append "mirror://cpan/authors/id/G/GE/GETTY/"
4491 "HTTP-Body-" version ".tar.gz"))
4492 (sha256
4493 (base32
4494 "15vj488i62mdp4ps9k77h39prj70i7anb6b0j8nm7l9vbdc2q3gw"))))
4495 (build-system perl-build-system)
4496 (native-inputs
4497 (list perl-test-deep))
4498 (propagated-inputs
4499 (list perl-file-temp perl-http-message)) ;For HTTP::Headers
4500 (home-page "https://metacpan.org/release/HTTP-Body")
4501 (synopsis "HTTP Body Parser")
4502 (description "HTTP::Body parses chunks of HTTP POST data and supports
4503application/octet-stream, application/json, application/x-www-form-urlencoded,
4504and multipart/form-data.")
4505 (license license:perl-license)))
4506
4507(define-public perl-http-cookiejar
4508 (package
4509 (name "perl-http-cookiejar")
4510 (version "0.014")
4511 (source
4512 (origin
4513 (method url-fetch)
4514 (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
4515 "HTTP-CookieJar-" version ".tar.gz"))
4516 (sha256
4517 (base32
4518 "0wvyqh69ryjkwp58xq4c83212glnk97ap0syp1ix4dpmj5ffm53h"))))
4519 (build-system perl-build-system)
4520 (native-inputs
4521 (list perl-test-deep perl-test-requires perl-time-mock perl-uri))
4522 (inputs
4523 (list perl-time-local perl-http-date))
4524 (home-page "https://metacpan.org/release/HTTP-CookieJar")
4525 (synopsis "Minimalist HTTP user agent cookie jar")
4526 (description "This module (@code{HTTP::CookieJar::LWP}) implements a minimalist
4527HTTP user agent cookie jar in conformance with
4528@uref{http://tools.ietf.org/html/rfc6265, RFC 6265}.")
4529 (license license:asl2.0)))
4530
4531(define-public perl-http-cookies
4532 (package
4533 (name "perl-http-cookies")
4534 (version "6.10")
4535 (source (origin
4536 (method url-fetch)
4537 (uri (string-append
4538 "mirror://cpan/authors/id/O/OA/OALDERS/HTTP-Cookies-"
4539 version ".tar.gz"))
4540 (sha256
4541 (base32
4542 "01vhppq18g6ppn3z9mvdfghfzibwg1sczzvnp3jbbrjw7iikcvz3"))))
4543 (build-system perl-build-system)
4544 (propagated-inputs
4545 (list perl-http-message))
4546 (license license:perl-license)
4547 (synopsis "Perl HTTP cookie jars")
4548 (description
4549 "The HTTP::Cookies class is for objects that represent a cookie jar,
4550that is, a database of all the HTTP cookies that a given LWP::UserAgent
4551object knows about.")
4552 (home-page "https://metacpan.org/release/GAAS/HTTP-Cookies-6.01")))
4553
4554(define-public perl-http-daemon
4555 (package
4556 (name "perl-http-daemon")
4557 (version "6.14")
4558 (source (origin
4559 (method url-fetch)
4560 (uri (string-append
4561 "mirror://cpan/authors/id/O/OA/OALDERS/HTTP-Daemon-"
4562 version ".tar.gz"))
4563 (sha256
4564 (base32
4565 "079fkcq2vdrzdf0bml52kz73n9gdv1xg0qf72c9v505v7izpwxph"))))
4566 (build-system perl-build-system)
4567 (native-inputs
4568 (list perl-module-build perl-test-needs))
4569 (propagated-inputs
4570 (list perl-http-message perl-lwp-mediatypes))
4571 (license license:perl-license)
4572 (synopsis "Perl simple http server class")
4573 (description
4574 "Instances of the HTTP::Daemon class are HTTP/1.1 servers that listen
4575on a socket for incoming requests. The HTTP::Daemon is a subclass of
4576IO::Socket::INET, so you can perform socket operations directly on it too.")
4577 (home-page "https://metacpan.org/release/HTTP-Daemon")))
4578
4579(define-public perl-http-date
4580 (package
4581 (name "perl-http-date")
4582 (version "6.05")
4583 (source (origin
4584 (method url-fetch)
4585 (uri (string-append
4586 "mirror://cpan/authors/id/O/OA/OALDERS/HTTP-Date-"
4587 version ".tar.gz"))
4588 (sha256
4589 (base32
4590 "0awjdbz7x0jd5pna55dwxhs3k6xp3sw6b2zg3p2yndxxvya64p9n"))))
4591 (build-system perl-build-system)
4592 (license license:perl-license)
4593 (synopsis "Perl date conversion routines")
4594 (description
4595 "The HTTP::Date module provides functions that deal with date formats
4596used by the HTTP protocol (and then some more).")
4597 (home-page "https://metacpan.org/release/HTTP-Date")))
4598
4599(define-public perl-http-lite
4600 (package
4601 (name "perl-http-lite")
4602 (version "2.44")
4603 (source
4604 (origin
4605 (method url-fetch)
4606 (uri (string-append
4607 "mirror://cpan/authors/id/N/NE/NEILB/HTTP-Lite-"
4608 version ".tar.gz"))
4609 (sha256
4610 (base32
4611 "0z77nflj8zdcfg70kc93glq5kmd6qxn2nf7h70x4xhfg25wkvr1q"))))
4612 (build-system perl-build-system)
4613 (native-inputs (list perl-cgi))
4614 (home-page "https://metacpan.org/release/HTTP-Lite")
4615 (synopsis "Lightweight HTTP implementation")
4616 (description "@code{HTTP::Lite} is a stand-alone lightweight
4617HTTP/1.1 implementation for perl. It is intended for use in
4618situations where it is desirable to install the minimal number of
4619modules to achieve HTTP support. @code{HTTP::Lite} is ideal for
4620CGI (or mod_perl) programs or for bundling for redistribution with
4621larger packages where only HTTP GET and POST functionality are
4622necessary. @code{HTTP::Lite} is compliant with the Host header,
4623necessary for name based virtual hosting, and supports proxies.
4624Additionally, @code{HTTP::Lite} supports a callback to allow
4625processing of request data as it arrives.")
4626 (license license:perl-license)))
4627
4628(define-public perl-http-message
4629 (package
4630 (name "perl-http-message")
4631 (version "6.37")
4632 (source (origin
4633 (method url-fetch)
4634 (uri (string-append
4635 "mirror://cpan/authors/id/O/OA/OALDERS/HTTP-Message-"
4636 version ".tar.gz"))
4637 (sha256
4638 (base32
4639 "00nq0xnpdba4valzgvzy3fgvck1ijrksdyzb4w9q6j72hl5dln8f"))))
4640 (build-system perl-build-system)
4641 (native-inputs
4642 (list perl-test-needs perl-try-tiny))
4643 (propagated-inputs
4644 (list perl-encode-locale perl-http-date perl-io-html
4645 perl-lwp-mediatypes perl-uri))
4646 (license license:perl-license)
4647 (synopsis "Perl HTTP style message")
4648 (description
4649 "An HTTP::Message object contains some headers and a content body.")
4650 (home-page "https://metacpan.org/release/ETHER/HTTP-Message-6.11")))
4651
4652(define-public perl-http-negotiate
4653 (package
4654 (name "perl-http-negotiate")
4655 (version "6.01")
4656 (source (origin
4657 (method url-fetch)
4658 (uri (string-append
4659 "mirror://cpan/authors/id/G/GA/GAAS/HTTP-Negotiate-"
4660 version ".tar.gz"))
4661 (sha256
4662 (base32
4663 "05p053vjs5g91v5cmjnny7a3xzddz5k7vnjw81wfh01ilqg9qwhw"))))
4664 (build-system perl-build-system)
4665 (propagated-inputs
4666 (list perl-http-message))
4667 (license license:perl-license)
4668 (synopsis "Perl http content negotiation")
4669 (description
4670 "The HTTP::Negotiate module provides a complete implementation of the
4671HTTP content negotiation algorithm specified in
4672draft-ietf-http-v11-spec-00.ps chapter 12. Content negotiation allows for
4673the selection of a preferred content representation based upon attributes
4674of the negotiable variants and the value of the various Accept* header
4675fields in the request.")
4676 (home-page "https://metacpan.org/release/HTTP-Negotiate")))
4677
4678(define-public perl-http-parser
4679 (package
4680 (name "perl-http-parser")
4681 (version "0.06")
4682 (source
4683 (origin
4684 (method url-fetch)
4685 (uri (string-append "mirror://cpan/authors/id/E/ED/EDECA/"
4686 "HTTP-Parser-" version ".tar.gz"))
4687 (sha256
4688 (base32
4689 "0idwq3jk595xil65lmxz128ha7s3r2n5zknisddpgwnqrghs3igq"))))
4690 (build-system perl-build-system)
4691 (propagated-inputs
4692 (list perl-http-message perl-uri))
4693 (home-page "https://metacpan.org/release/HTTP-Parser")
4694 (synopsis "Parse HTTP/1.1 requests")
4695 (description "This is an HTTP request parser. It takes chunks of text as
4696received and returns a @code{hint} as to what is required, or returns the
4697HTTP::Request when a complete request has been read. HTTP/1.1 chunking is
4698supported.")
4699 (license license:perl-license)))
4700
4701(define-public perl-http-parser-xs
4702 (package
4703 (name "perl-http-parser-xs")
4704 (version "0.17")
4705 (source
4706 (origin
4707 (method url-fetch)
4708 (uri (string-append "mirror://cpan/authors/id/K/KA/KAZUHO/"
4709 "HTTP-Parser-XS-" version ".tar.gz"))
4710 (sha256
4711 (base32
4712 "02d84xq1mm53c7jl33qyb7v5w4372vydp74z6qj0vc96wcrnhkkr"))))
4713 (build-system perl-build-system)
4714 (native-inputs
4715 (list perl-module-install))
4716 (home-page "https://metacpan.org/release/HTTP-Parser-XS")
4717 (synopsis "Fast HTTP request parser")
4718 (description "HTTP::Parser::XS is a fast, primitive HTTP request/response
4719parser.")
4720 (license license:perl-license)))
4721
4722(define-public perl-http-request-ascgi
4723 (package
4724 (name "perl-http-request-ascgi")
4725 (version "1.2")
4726 (source
4727 (origin
4728 (method url-fetch)
4729 (uri (string-append "mirror://cpan/authors/id/F/FL/FLORA/"
4730 "HTTP-Request-AsCGI-" version ".tar.gz"))
4731 (sha256
4732 (base32
4733 "1smwmiarwcgq7vjdblnb6ldi2x1s5sk5p15p7xvm5byiqq3znnwl"))))
4734 (build-system perl-build-system)
4735 (propagated-inputs
4736 (list perl-class-accessor perl-http-message))
4737 (home-page "https://metacpan.org/release/HTTP-Request-AsCGI")
4738 (synopsis "Set up a CGI environment from an HTTP::Request")
4739 (description "This module provides a convenient way to set up a CGI
4740environment from an HTTP::Request.")
4741 (license license:perl-license)))
4742
4743(define-public perl-http-server-simple
4744 (package
4745 (name "perl-http-server-simple")
4746 (version "0.52")
4747 (source
4748 (origin
4749 (method url-fetch)
4750 (uri (string-append "mirror://cpan/authors/id/B/BP/BPS/"
4751 "HTTP-Server-Simple-" version ".tar.gz"))
4752 (sha256
4753 (base32
4754 "0k6bg7k6mjixfzxdkkdrhqvaqmdhjszx0zsk8g0bimiby6j9z4yq"))))
4755 (build-system perl-build-system)
4756 (propagated-inputs
4757 (list perl-cgi))
4758 (arguments
4759 ;; See the discussion of a related tests issue at
4760 ;; https://lists.gnu.org/archive/html/guix-devel/2015-01/msg00346.html
4761 `(#:tests? #f
4762
4763 #:phases (modify-phases %standard-phases
4764 (add-before 'configure 'set-search-path
4765 (lambda _
4766 ;; Work around "dotless @INC" build failure.
4767 (setenv "PERL5LIB"
4768 (string-append (getcwd) ":"
4769 (getenv "PERL5LIB")))
4770 #t)))))
4771 (home-page "https://metacpan.org/release/HTTP-Server-Simple")
4772 (synopsis "Lightweight HTTP server")
4773 (description "HTTP::Server::Simple is a simple standalone HTTP daemon with
4774no non-core module dependencies. It can be used for building a standalone
4775http-based UI to your existing tools.")
4776 (license license:perl-license)))
4777
4778(define-public perl-http-tiny
4779 (package
4780 (name "perl-http-tiny")
4781 (version "0.076")
4782 (source
4783 (origin
4784 (method url-fetch)
4785 (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
4786 "HTTP-Tiny-" version ".tar.gz"))
4787 (sha256
4788 (base32
4789 "11wkxxqj3ff84rgj9q2gzkdgscwp3fzj205846k9ycqinlpsmgfx"))))
4790 (build-system perl-build-system)
4791 (inputs
4792 (list perl-http-cookiejar perl-io-socket-ip perl-io-socket-ssl
4793 perl-mozilla-ca perl-net-ssleay))
4794 (home-page "https://metacpan.org/release/HTTP-Tiny")
4795 (synopsis "HTTP/1.1 client")
4796 (description "This is a very simple HTTP/1.1 client, designed for doing
4797simple requests without the overhead of a large framework like LWP::UserAgent.
4798It supports proxies and redirection. It also correctly resumes after EINTR.")
4799 (license license:perl-license)))
4800
4801(define-public perl-http-tinyish
4802 (package
4803 (name "perl-http-tinyish")
4804 (version "0.15")
4805 (source
4806 (origin
4807 (method url-fetch)
4808 (uri (string-append
4809 "mirror://cpan/authors/id/M/MI/MIYAGAWA/HTTP-Tinyish-"
4810 version
4811 ".tar.gz"))
4812 (sha256
4813 (base32
4814 "199sa722amvwhq0czjfb7psj3hbqmvni5vxkrm579r5943pg0rax"))))
4815 (build-system perl-build-system)
4816 (propagated-inputs
4817 (list perl-file-which perl-ipc-run3))
4818 (home-page "https://metacpan.org/release/HTTP-Tinyish")
4819 (synopsis "@code{HTTP::Tiny} compatible HTTP client wrappers")
4820 (description
4821 "@code{HTTP::Tinyish} is a wrapper module for @acronym{LWP,libwww-perl},
4822@code{HTTP::Tiny}, curl and wget.
4823
4824It provides an API compatible to HTTP::Tiny.")
4825 (license license:perl-license)))
4826
4827(define-public perl-io-html
4828 (package
4829 (name "perl-io-html")
4830 (version "1.00")
4831 (source (origin
4832 (method url-fetch)
4833 (uri (string-append
4834 "mirror://cpan/authors/id/C/CJ/CJM/IO-HTML-"
4835 version ".tar.gz"))
4836 (sha256
4837 (base32
4838 "06nj3a0xgp5jxwxx6ayglfk2v7npf5a7gwkqsjlkapjkybarzqh4"))))
4839 (build-system perl-build-system)
4840 (license license:perl-license)
4841 (synopsis "Perl module to open an HTML file with automatic charset detection")
4842 (description
4843 "IO::HTML provides an easy way to open a file containing HTML while
4844automatically determining its encoding. It uses the HTML5 encoding sniffing
4845algorithm specified in section 8.2.2.1 of the draft standard.")
4846 (home-page "https://metacpan.org/release/IO-HTML")))
4847
4848(define-public perl-io-socket-ip
4849 (package
4850 (name "perl-io-socket-ip")
4851 (version "0.41")
4852 (source
4853 (origin
4854 (method url-fetch)
4855 (uri (string-append "mirror://cpan/authors/id/P/PE/PEVANS/"
4856 "IO-Socket-IP-" version ".tar.gz"))
4857 (sha256
4858 (base32 "0ihlpxrkq1xrvhnq52nhghanskic718ch8kpp642afgq72i4b6l4"))))
4859 (build-system perl-build-system)
4860 (native-inputs (list perl-module-build))
4861 (home-page "https://metacpan.org/release/IO-Socket-IP")
4862 (synopsis "Family-neutral IP socket supporting both IPv4 and IPv6")
4863 (description "This module provides a protocol-independent way to use IPv4
4864and IPv6 sockets, intended as a replacement for IO::Socket::INET.")
4865 (license license:perl-license)))
4866
4867(define-public perl-io-socket-ssl
4868 (package
4869 (name "perl-io-socket-ssl")
4870 (version "2.089")
4871 (source (origin
4872 (method url-fetch)
4873 (uri (string-append "mirror://cpan/authors/id/S/SU/SULLR/"
4874 "IO-Socket-SSL-" version ".tar.gz"))
4875 (sha256
4876 (base32
4877 "1l8l78p9sq2mj0xb4bpjn8rph0fdxi9xa6pm968px5j22qn130zn"))))
4878 (build-system perl-build-system)
4879 (propagated-inputs
4880 (list perl-net-ssleay
4881 ;; for IDN support
4882 perl-uri))
4883 (synopsis "Nearly transparent SSL encapsulation for IO::Socket::INET")
4884 (description
4885 "IO::Socket::SSL makes using SSL/TLS much easier by wrapping the
4886necessary functionality into the familiar IO::Socket interface and providing
4887secure defaults whenever possible. This way existing applications can be made
4888SSL-aware without much effort, at least if you do blocking I/O and don't use
4889select or poll.")
4890 (license license:perl-license)
4891 (home-page "https://github.com/noxxi/p5-io-socket-ssl")))
4892
4893(define-public perl-libwww
4894 (package
4895 (name "perl-libwww")
4896 (version "6.78")
4897 (source (origin
4898 (method url-fetch)
4899 (uri (string-append
4900 "mirror://cpan/authors/id/O/OA/OALDERS/libwww-perl-"
4901 version ".tar.gz"))
4902 (sha256
4903 (base32
4904 "0i4sga0hydhhvkq81skinfbpyd43pi3yr0rbzn0vpip2ak7vsf5p"))))
4905 (build-system perl-build-system)
4906 (native-inputs
4907 (list perl-http-cookiejar
4908 perl-test-fatal
4909 perl-test-leaktrace
4910 perl-test-needs
4911 perl-test-requiresinternet))
4912 (propagated-inputs
4913 (list perl-encode-locale
4914 perl-file-listing
4915 perl-html-parser
4916 perl-http-cookies
4917 perl-http-daemon
4918 perl-http-date
4919 perl-http-message
4920 perl-http-negotiate
4921 perl-net-http
4922 perl-try-tiny
4923 perl-uri
4924 perl-www-robotrules))
4925 (license license:perl-license)
4926 (synopsis "Perl modules for the WWW")
4927 (description
4928 "The libwww-perl collection is a set of Perl modules which provides a
4929simple and consistent application programming interface to the
4930World-Wide Web. The main focus of the library is to provide classes
4931and functions that allow you to write WWW clients. The library also
4932contains modules that are of more general use and even classes that
4933help you implement simple HTTP servers.")
4934 (home-page "https://metacpan.org/release/libwww-perl")))
4935
4936(define-public perl-lwp-online
4937 (package
4938 (name "perl-lwp-online")
4939 (version "1.08")
4940 (source
4941 (origin
4942 (method url-fetch)
4943 (uri (string-append
4944 "mirror://cpan/authors/id/A/AD/ADAMK/LWP-Online-"
4945 version ".tar.gz"))
4946 (sha256
4947 (base32
4948 "176f6vbk1018i0y7xj9d406ndbjgwzan2j9nihxnsahzg2vr2vz2"))))
4949 (build-system perl-build-system)
4950 (propagated-inputs
4951 (list perl-libwww perl-uri))
4952 (native-inputs
4953 (list perl-module-install))
4954 (home-page "https://metacpan.org/release/LWP-Online")
4955 (synopsis "Checks whether your process has access to the web")
4956 (description "This module attempts to answer, as accurately as it can, one
4957of the nastiest technical questions there is: am I on the internet?
4958
4959A host of networking and security issues make this problem very difficult.
4960There are firewalls, proxies (both well behaved and badly behaved). We might
4961not have DNS. We might not have a network card at all!")
4962 (license license:perl-license)))
4963
4964(define-public perl-lwp-mediatypes
4965 (package
4966 (name "perl-lwp-mediatypes")
4967 (version "6.04")
4968 (source (origin
4969 (method url-fetch)
4970 (uri (string-append
4971 "mirror://cpan/authors/id/O/OA/OALDERS/LWP-MediaTypes-"
4972 version ".tar.gz"))
4973 (sha256
4974 (base32
4975 "1n8rg6csv3dsvymg06cmxipimr6cb1g9r903ghm1qsmiv89cl6wg"))))
4976 (build-system perl-build-system)
4977 (native-inputs
4978 (list perl-test-fatal))
4979 (license license:perl-license)
4980 (synopsis "Perl module to guess the media type for a file or a URL")
4981 (description
4982 "The LWP::MediaTypes module provides functions for handling media (also
4983known as MIME) types and encodings. The mapping from file extensions to
4984media types is defined by the media.types file. If the ~/.media.types file
4985exists it is used instead.")
4986 (home-page "https://metacpan.org/release/LWP-MediaTypes")))
4987
4988(define-public perl-lwp-protocol-https
4989 (package
4990 (name "perl-lwp-protocol-https")
4991 (version "6.09")
4992 (source
4993 (origin
4994 (method url-fetch)
4995 (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
4996 "LWP-Protocol-https-" version ".tar.gz"))
4997 (sha256
4998 (base32 "14pm785cgyrnppks6ccasb2vkqifh0a8fz36nmnhc2v926jy3kqn"))))
4999 (build-system perl-build-system)
5000 (native-inputs
5001 ;; For tests.
5002 (list perl-test-requiresinternet))
5003 (propagated-inputs
5004 (list perl-io-socket-ssl perl-libwww perl-mozilla-ca perl-net-http))
5005 (home-page "https://metacpan.org/release/LWP-Protocol-https")
5006 (synopsis "HTTPS support for LWP::UserAgent")
5007 (description "The LWP::Protocol::https module provides support for using
5008https schemed URLs with LWP.")
5009 (license license:perl-license)))
5010
5011(define-public perl-lwp-useragent-cached
5012 (package
5013 (name "perl-lwp-useragent-cached")
5014 (version "0.08")
5015 (source
5016 (origin
5017 (method url-fetch)
5018 (uri (string-append "mirror://cpan/authors/id/O/OL/OLEG/"
5019 "LWP-UserAgent-Cached-" version ".tar.gz"))
5020 (sha256
5021 (base32
5022 "1hw7wy7f82kl61xjwkgmhv1ixgg56dhgfr45wxn6ahc0qys5mkix"))))
5023 (build-system perl-build-system)
5024 (propagated-inputs
5025 (list perl-libwww))
5026 (home-page "https://metacpan.org/release/LWP-UserAgent-Cached")
5027 (synopsis "Simple caching for LWP::UserAgent")
5028 (description "LWP::UserAgent::Cached is an LWP::UserAgent subclass with
5029cache support. It returns responses from the local file system, if available,
5030instead of making an HTTP request.")
5031 (license license:perl-license)))
5032
5033(define-public perl-lwp-useragent-determined
5034 (package
5035 (name "perl-lwp-useragent-determined")
5036 (version "1.07")
5037 (source
5038 (origin
5039 (method url-fetch)
5040 (uri (string-append "mirror://cpan/authors/id/A/AL/ALEXMV/"
5041 "LWP-UserAgent-Determined-" version ".tar.gz"))
5042 (sha256
5043 (base32
5044 "0lyvbpjng7yfvyha9rp2y2c6liz5hhplmd2grc8jlsfkih7dbn06"))))
5045 (build-system perl-build-system)
5046 (propagated-inputs
5047 (list perl-libwww))
5048 (home-page "https://metacpan.org/release/LWP-UserAgent-Determined")
5049 (synopsis "Virtual browser that retries errors")
5050 (description "LWP::UserAgent::Determined works just like LWP::UserAgent,
5051except that when you use it to get a web page but run into a
5052possibly-temporary error (like a DNS lookup timeout), it'll wait a few seconds
5053and retry a few times.")
5054 (license license:perl-license)))
5055
5056(define-public perl-lwpx-paranoidagent
5057 (package
5058 (name "perl-lwpx-paranoidagent")
5059 (version "1.12")
5060 (source
5061 (origin
5062 (method url-fetch)
5063 (uri (string-append
5064 "mirror://cpan/authors/id/S/SA/SAXJAZMAN/lwp/LWPx-ParanoidAgent-"
5065 version ".tar.gz"))
5066 (sha256
5067 (base32
5068 "0gfhw3jbs25yya2dryv8xvyn9myngcfcmsybj7gkq62fnznil16c"))))
5069 (build-system perl-build-system)
5070 (propagated-inputs
5071 (list perl-libwww
5072 ;; Users should instead make sure SSL_ca_path is set properly.
5073 ;; ("perl-mozilla-ca" ,perl-mozilla-ca)
5074 perl-net-dns))
5075 (home-page "https://metacpan.org/release/LWPx-ParanoidAgent")
5076 (synopsis "Security enhanced subclass of LWP::UserAgent")
5077 (description "@code{LWPx::ParanoidAgent} is a class subclassing
5078@code{LWP::UserAgent} but paranoid against attackers. Its purpose is
5079to vet requests for a remote resource on behalf of a possibly
5080malicious user. The class can do the same as @code{LWP::UserAgent},
5081except that proxy support has been removed. Support for URI schemes
5082is limited to http and https.")
5083 (license license:perl-license)))
5084
5085(define-public perl-net-amazon-s3
5086 (package
5087 (name "perl-net-amazon-s3")
5088 (version "0.60")
5089 (source
5090 (origin
5091 (method url-fetch)
5092 (uri (string-append "mirror://cpan/authors/id/P/PF/PFIG/"
5093 "Net-Amazon-S3-" version ".tar.gz"))
5094 (sha256
5095 (base32
5096 "10dcsq4s2kc9cb1vccx17r187c81drirc3s1hbxh3rb8489kg2b2"))
5097 (patches (search-patches
5098 "perl-net-amazon-s3-moose-warning.patch"))))
5099 (build-system perl-build-system)
5100 (native-inputs
5101 (list perl-libwww perl-test-exception))
5102 (propagated-inputs
5103 (list perl-data-stream-bulk
5104 perl-datetime-format-http
5105 perl-digest-hmac
5106 perl-digest-md5-file
5107 perl-file-find-rule
5108 perl-http-date
5109 perl-http-message
5110 perl-lwp-useragent-determined
5111 perl-mime-types
5112 perl-moose
5113 perl-moosex-strictconstructor
5114 perl-moosex-types-datetime-morecoercions
5115 perl-path-class
5116 perl-regexp-common
5117 perl-term-encoding
5118 perl-term-progressbar-simple
5119 perl-uri
5120 perl-xml-libxml))
5121 (home-page "https://metacpan.org/release/Net-Amazon-S3")
5122 (synopsis "Perl interface to Amazon S3")
5123 (description "This module provides a Perlish interface to Amazon S3.")
5124 (license license:perl-license)))
5125
5126(define-public perl-net-http
5127 (package
5128 (name "perl-net-http")
5129 (version "6.22")
5130 (source (origin
5131 (method url-fetch)
5132 (uri (string-append
5133 "mirror://cpan/authors/id/O/OA/OALDERS/"
5134 "Net-HTTP-" version ".tar.gz"))
5135 (sha256
5136 (base32
5137 "18m1b1274wmsl3cdfwg27pm7s1fgrrlhwy4gw4zl8da2p2jzkyk2"))))
5138 (build-system perl-build-system)
5139 (propagated-inputs
5140 (list perl-io-socket-ssl perl-uri))
5141 (license license:perl-license)
5142 (synopsis "Perl low-level HTTP connection (client)")
5143 (description
5144 "The Net::HTTP class is a low-level HTTP client. An instance of the
5145Net::HTTP class represents a connection to an HTTP server. The HTTP protocol
5146is described in RFC 2616. The Net::HTTP class supports HTTP/1.0 and
5147HTTP/1.1.")
5148 (home-page "https://metacpan.org/release/Net-HTTP")))
5149
5150(define-public perl-net-server
5151 (package
5152 (name "perl-net-server")
5153 (version "2.009")
5154 (source
5155 (origin
5156 (method url-fetch)
5157 (uri (string-append "mirror://cpan/authors/id/R/RH/RHANDOM/"
5158 "Net-Server-" version ".tar.gz"))
5159 (sha256
5160 (base32
5161 "0gw1k9gcw7habbkxvsfa2gz34brlbwcidk6khgsf1qjm0dbccrw2"))))
5162 (build-system perl-build-system)
5163 (home-page "https://metacpan.org/release/Net-Server")
5164 (synopsis "Extensible Perl server engine")
5165 (description "Net::Server is an extensible, generic Perl server engine.
5166It attempts to be a generic server as in Net::Daemon and NetServer::Generic.
5167It includes with it the ability to run as an inetd
5168process (Net::Server::INET), a single connection server (Net::Server or
5169Net::Server::Single), a forking server (Net::Server::Fork), a preforking
5170server which maintains a constant number of preforked
5171children (Net::Server::PreForkSimple), or as a managed preforking server which
5172maintains the number of children based on server load (Net::Server::PreFork).
5173In all but the inetd type, the server provides the ability to connect to one
5174or to multiple server ports.")
5175 (license license:perl-license)))
5176
5177(define-public perl-net-smtp-ssl
5178 (package
5179 (name "perl-net-smtp-ssl")
5180 (version "1.04")
5181 (source
5182 (origin
5183 (method url-fetch)
5184 (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
5185 "Net-SMTP-SSL-" version ".tar.gz"))
5186 (sha256
5187 (base32
5188 "001a6dcfahf7kkyirqkc8jd4fh4fkal7n7vm9c4dblqrvmdc8abv"))))
5189 (build-system perl-build-system)
5190 (propagated-inputs
5191 (list perl-io-socket-ssl))
5192 (home-page "https://metacpan.org/release/Net-SMTP-SSL")
5193 (synopsis "SSL support for Net::SMTP")
5194 (description "SSL support for Net::SMTP.")
5195 (license license:perl-license)))
5196
5197(define-public perl-plack
5198 (package
5199 (name "perl-plack")
5200 (version "1.0033")
5201 (source
5202 (origin
5203 (method url-fetch)
5204 (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
5205 "Plack-" version ".tar.gz"))
5206 (sha256
5207 (base32
5208 "081jg0xddzpg2anmqi9i6d7vs6c8z7k557bf8xl6vgb3h95pin5w"))))
5209 (build-system perl-build-system)
5210 (native-inputs
5211 (list perl-test-requires perl-file-sharedir-install))
5212 (propagated-inputs
5213 (list perl-apache-logformat-compiler
5214 perl-devel-stacktrace
5215 perl-devel-stacktrace-ashtml
5216 perl-file-sharedir
5217 perl-hash-multivalue
5218 perl-http-body
5219 perl-http-message
5220 perl-http-tiny
5221 perl-libwww
5222 perl-stream-buffered
5223 perl-test-tcp
5224 perl-try-tiny
5225 perl-uri))
5226 (home-page "https://metacpan.org/release/Plack")
5227 (synopsis "Perl Superglue for Web frameworks and servers (PSGI toolkit)")
5228 (description "Plack is a set of tools for using the PSGI stack. It
5229contains middleware components, a reference server, and utilities for Web
5230application frameworks. Plack is like Ruby's Rack or Python's Paste for
5231WSGI.")
5232 (license license:perl-license)))
5233
5234(define-public perl-plack-middleware-deflater
5235 (package
5236 (name "perl-plack-middleware-deflater")
5237 (version "0.12")
5238 (source
5239 (origin
5240 (method url-fetch)
5241 (uri (string-append
5242 "mirror://cpan/authors/id/K/KA/KAZEBURO/"
5243 "Plack-Middleware-Deflater-" version ".tar.gz"))
5244 (sha256
5245 (base32
5246 "0xf2visi16hgwgyp9q0cjr10ikbn474hjia5mj8mb2scvbkrbni8"))))
5247 (build-system perl-build-system)
5248 (native-inputs
5249 (list perl-module-install perl-test-requires))
5250 (propagated-inputs
5251 (list perl-plack))
5252 (home-page "https://metacpan.org/release/Plack-Middleware-Deflater")
5253 (synopsis "Compress response body with Gzip or Deflate")
5254 (description
5255 "Plack::Middleware::Deflater is a middleware to encode your response body
5256in gzip or deflate, based on \"Accept-Encoding\" HTTP request header. It
5257would save the bandwidth a little bit but should increase the Plack server
5258load, so ideally you should handle this on the frontend reverse proxy
5259servers.")
5260 (license license:perl-license)))
5261
5262(define-public perl-plack-middleware-fixmissingbodyinredirect
5263 (package
5264 (name "perl-plack-middleware-fixmissingbodyinredirect")
5265 (version "0.12")
5266 (source
5267 (origin
5268 (method url-fetch)
5269 (uri (string-append "mirror://cpan/authors/id/S/SW/SWEETKID/"
5270 "Plack-Middleware-FixMissingBodyInRedirect-"
5271 version ".tar.gz"))
5272 (sha256
5273 (base32
5274 "14dkrmccq7a5vpymx5dv8032gfcvhsw2i6v5sh3c4ym5ymlx08kc"))))
5275 (build-system perl-build-system)
5276 (native-inputs
5277 (list perl-html-parser ;for HTML::Entities
5278 perl-http-message perl-plack)) ;for Plack::Test
5279 (home-page
5280 "https://metacpan.org/release/Plack-Middleware-FixMissingBodyInRedirect")
5281 (synopsis "Plack::Middleware which sets body for redirect response")
5282 (description "This module sets the body in redirect response, if it's not
5283already set.")
5284 (license license:perl-license)))
5285
5286(define-public perl-plack-middleware-methodoverride
5287 (package
5288 (name "perl-plack-middleware-methodoverride")
5289 (version "0.20")
5290 (source
5291 (origin
5292 (method url-fetch)
5293 (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
5294 "Plack-Middleware-MethodOverride-"
5295 version ".tar.gz"))
5296 (sha256
5297 (base32 "1wdmmav3rbhv49zpw311zrxxqmg1fz3f3q9src0ypgs8zcp5myyv"))))
5298 (build-system perl-build-system)
5299 (native-inputs
5300 (list perl-module-build))
5301 (propagated-inputs
5302 (list perl-plack))
5303 (home-page "https://metacpan.org/release/Plack-Middleware-MethodOverride")
5304 (synopsis "Override REST methods to Plack apps via POST")
5305 (description "This middleware allows for POST requests that pretend to be
5306something else: by adding either a header named X-HTTP-Method-Override to the
5307request, or a query parameter named x-tunneled-method to the URI, the client
5308can say what method it actually meant.")
5309 (license license:perl-license)))
5310
5311(define-public perl-plack-middleware-removeredundantbody
5312 (package
5313 (name "perl-plack-middleware-removeredundantbody")
5314 (version "0.09")
5315 (source
5316 (origin
5317 (method url-fetch)
5318 (uri (string-append "mirror://cpan/authors/id/S/SW/SWEETKID/"
5319 "Plack-Middleware-RemoveRedundantBody-"
5320 version ".tar.gz"))
5321 (sha256
5322 (base32 "0zh83001rn5aqwpc1pn3di2h3ibzlf2dvkmkv05hnadpss9mzm40"))))
5323 (build-system perl-build-system)
5324 (propagated-inputs
5325 (list perl-plack))
5326 (home-page
5327 "https://metacpan.org/release/Plack-Middleware-RemoveRedundantBody")
5328 (synopsis "Plack::Middleware which removes body for HTTP response")
5329 (description "This module removes the body in an HTTP response if it's not
5330required.")
5331 (license license:perl-license)))
5332
5333(define-public perl-plack-middleware-reverseproxy
5334 (package
5335 (name "perl-plack-middleware-reverseproxy")
5336 (version "0.16")
5337 (source
5338 (origin
5339 (method url-fetch)
5340 (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
5341 "Plack-Middleware-ReverseProxy-"
5342 version ".tar.gz"))
5343 (sha256
5344 (base32 "0a512n62pnk5ayj3zdzyj50iy1qi8nwh6ygks2h7nrh7gp9k2jc7"))))
5345 (build-system perl-build-system)
5346 (native-inputs
5347 (list perl-module-install))
5348 (propagated-inputs
5349 (list perl-plack))
5350 (home-page "https://metacpan.org/release/Plack-Middleware-ReverseProxy")
5351 (synopsis "Supports app to run as a reverse proxy backend")
5352 (description "Plack::Middleware::ReverseProxy resets some HTTP headers,
5353which are changed by reverse-proxy. You can specify the reverse proxy address
5354and stop fake requests using @code{enable_if} directive in your app.psgi.")
5355 (license license:perl-license)))
5356
5357(define-public perl-plack-test-externalserver
5358 (package
5359 (name "perl-plack-test-externalserver")
5360 (version "0.02")
5361 (source
5362 (origin
5363 (method url-fetch)
5364 (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
5365 "Plack-Test-ExternalServer-" version ".tar.gz"))
5366 (sha256
5367 (base32 "1l1yj1l25679x7cbpd27ii7s1f1ajpkspif9xqnl21hczrbmrbsv"))))
5368 (build-system perl-build-system)
5369 (propagated-inputs
5370 (list perl-plack))
5371 (home-page "https://metacpan.org/release/Plack-Test-ExternalServer")
5372 (synopsis "Run HTTP tests on external live servers")
5373 (description "This module allows your to run your Plack::Test tests
5374against an external server instead of just against a local application through
5375either mocked HTTP or a locally spawned server.")
5376 (license license:perl-license)))
5377
5378(define-public perl-test-tcp
5379 (package
5380 (name "perl-test-tcp")
5381 (version "2.22")
5382 (source
5383 (origin
5384 (method url-fetch)
5385 (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
5386 "Test-TCP-" version ".tar.gz"))
5387 (sha256
5388 (base32 "0mvv9rqwrwlcfh8qrs0s47p85rhlnw15d4gbpyi802bddp0c6lry"))))
5389 (build-system perl-build-system)
5390 (propagated-inputs
5391 (list perl-test-sharedfork))
5392 (arguments `(#:tests? #f)) ;related to signaling in t/05_sigint.t
5393 (home-page "https://metacpan.org/release/Test-TCP")
5394 (synopsis "Testing TCP programs")
5395 (description "Test::TCP is test utilities for TCP/IP programs.")
5396 (license license:perl-license)))
5397
5398(define-public perl-test-www-mechanize
5399 (package
5400 (name "perl-test-www-mechanize")
5401 (version "1.52")
5402 (source
5403 (origin
5404 (method url-fetch)
5405 (uri (string-append "mirror://cpan/authors/id/P/PE/PETDANCE/"
5406 "Test-WWW-Mechanize-" version ".tar.gz"))
5407 (sha256
5408 (base32 "1jsywlbxhqw39ij7s8vmgff5vys58vlfaq27072awacnxc65aal4"))))
5409 (build-system perl-build-system)
5410 (propagated-inputs
5411 (list perl-carp-assert-more
5412 perl-html-form
5413 perl-html-lint
5414 perl-http-server-simple
5415 perl-libwww
5416 perl-test-longstring
5417 perl-www-mechanize))
5418 (home-page "https://metacpan.org/release/Test-WWW-Mechanize")
5419 (synopsis "Testing-specific WWW::Mechanize subclass")
5420 (description "Test::WWW::Mechanize is a subclass of the Perl module
5421WWW::Mechanize that incorporates features for web application testing.")
5422 (license license:artistic2.0)))
5423
5424(define-public perl-test-www-mechanize-catalyst
5425 (package
5426 (name "perl-test-www-mechanize-catalyst")
5427 (version "0.62")
5428 (source
5429 (origin
5430 (method url-fetch)
5431 (uri (string-append "mirror://cpan/authors/id/M/MS/MSTROUT/"
5432 "Test-WWW-Mechanize-Catalyst-" version ".tar.gz"))
5433 (sha256
5434 (base32 "1cdc2q16vs6fb335pzaislz2rx1ph9acaxyp7v5hv9xbwwddwfqq"))))
5435 (build-system perl-build-system)
5436 (native-inputs
5437 (list perl-catalyst-plugin-session
5438 perl-catalyst-plugin-session-state-cookie
5439 perl-module-install
5440 perl-test-exception
5441 perl-test-pod
5442 perl-test-utf8))
5443 (propagated-inputs
5444 (list perl-catalyst-runtime
5445 perl-class-load
5446 perl-libwww
5447 perl-moose
5448 perl-namespace-clean
5449 perl-test-www-mechanize
5450 perl-www-mechanize))
5451 (home-page "https://metacpan.org/release/Test-WWW-Mechanize-Catalyst")
5452 (synopsis "Test::WWW::Mechanize for Catalyst")
5453 (description "The Test::WWW::Mechanize::Catalyst module meshes the
5454Test::WWW:Mechanize module and the Catalyst web application framework to allow
5455testing of Catalyst applications without needing to start up a web server.")
5456 (license license:perl-license)))
5457
5458(define-public perl-test-www-mechanize-psgi
5459 (package
5460 (name "perl-test-www-mechanize-psgi")
5461 (version "0.38")
5462 (source
5463 (origin
5464 (method url-fetch)
5465 (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
5466 "Test-WWW-Mechanize-PSGI-" version ".tar.gz"))
5467 (sha256
5468 (base32
5469 "0fsh2i05kf1kfavv2r9kmnjl7qlyqrd11ikc0qcqzzxsqzzjkg9r"))))
5470 (build-system perl-build-system)
5471 (native-inputs
5472 (list perl-test-pod))
5473 (propagated-inputs
5474 (list perl-plack perl-test-www-mechanize))
5475 (home-page "https://metacpan.org/release/Test-WWW-Mechanize-PSGI")
5476 (synopsis "Test PSGI programs using WWW::Mechanize")
5477 (description "PSGI is a specification to decouple web server environments
5478from web application framework code. Test::WWW::Mechanize is a subclass of
5479WWW::Mechanize that incorporates features for web application testing. The
5480Test::WWW::Mechanize::PSGI module meshes the two to allow easy testing of PSGI
5481applications.")
5482 (license license:perl-license)))
5483
5484(define-public perl-uri
5485 (package
5486 (name "perl-uri")
5487 (version "5.05")
5488 (source (origin
5489 (method url-fetch)
5490 (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
5491 "URI-" version ".tar.gz"))
5492 (sha256
5493 (base32
5494 "1v3r3ck67w272kzfgm1nd3wb41av1hlnza56vkxxj1i7s3917hd5"))))
5495 (build-system perl-build-system)
5496 (native-inputs
5497 ;; For tests.
5498 (list perl-test-needs))
5499 (license license:perl-license)
5500 (synopsis "Perl Uniform Resource Identifiers (absolute and relative)")
5501 (description
5502 "The URI module implements the URI class. Objects of this class
5503represent \"Uniform Resource Identifier references\" as specified in RFC 2396
5504and updated by RFC 2732.")
5505 (home-page "https://metacpan.org/release/URI")))
5506
5507(define-public perl-uri-fetch
5508 (package
5509 (name "perl-uri-fetch")
5510 (version "0.15")
5511 (source (origin
5512 (method url-fetch)
5513 (uri (string-append "mirror://cpan/authors/id/N/NE/NEILB/"
5514 "URI-Fetch-" version ".tar.gz"))
5515 (sha256
5516 (base32
5517 "0355rnw3xbgfwy9fgs6zrjmrsychzmwpkc9jcd9mrbkd9kr3k7rp"))))
5518 (build-system perl-build-system)
5519 (arguments
5520 `(#:tests? #f)) ; Tests require internet connection to succeed
5521 (inputs
5522 (list perl-class-errorhandler perl-libwww perl-uri))
5523 (home-page "https://metacpan.org/release/URI-Fetch")
5524 (synopsis "Smart URI fetching/caching")
5525 (description "@code{URI::Fetch} is a smart client for fetching HTTP pages,
5526notably syndication feeds (RSS, Atom, and others), in an intelligent, bandwidth-
5527and time-saving way.")
5528 (license license:perl-license)))
5529
5530(define-public perl-uri-find
5531 (package
5532 (name "perl-uri-find")
5533 (version "20160806")
5534 (source
5535 (origin
5536 (method url-fetch)
5537 (uri (string-append "mirror://cpan/authors/id/M/MS/MSCHWERN/"
5538 "URI-Find-" version ".tar.gz"))
5539 (sha256
5540 (base32
5541 "1mk3jv8x0mcq3ajrn9garnxd0jc7sw4pkwqi88r5apqvlljs84z2"))))
5542 (build-system perl-build-system)
5543 (native-inputs
5544 (list perl-module-build))
5545 (propagated-inputs
5546 (list perl-uri))
5547 (home-page "https://metacpan.org/release/URI-Find")
5548 (synopsis "Find URIs in arbitrary text")
5549 (description "This module finds URIs and URLs (according to what URI.pm
5550considers a URI) in plain text. It only finds URIs which include a
5551scheme (http:// or the like), for something a bit less strict, consider
5552URI::Find::Schemeless. For a command-line interface, urifind is provided.")
5553 (license license:perl-license)))
5554
5555(define-public perl-uri-ws
5556 (package
5557 (name "perl-uri-ws")
5558 (version "0.03")
5559 (source
5560 (origin
5561 (method url-fetch)
5562 (uri (string-append "mirror://cpan/authors/id/P/PL/PLICEASE/"
5563 "URI-ws-" version ".tar.gz"))
5564 (sha256
5565 (base32
5566 "1vs1wm80sq685944g1l4a0fxcbccc00c0f9648yabdmcf90hwsvf"))))
5567 (build-system perl-build-system)
5568 (propagated-inputs
5569 (list perl-uri))
5570 (home-page "https://metacpan.org/release/URI-ws")
5571 (synopsis "WebSocket support for URI package")
5572 (description "With this module, the URI package provides the same set of
5573methods for WebSocket URIs as it does for HTTP URIs.")
5574 (license license:perl-license)))
5575
5576(define-public perl-web-scraper
5577 (package
5578 (name "perl-web-scraper")
5579 (version "0.38")
5580 (source
5581 (origin
5582 (method url-fetch)
5583 (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/Web-Scraper-"
5584 version ".tar.gz"))
5585 (sha256
5586 (base32 "1gs3fmbc83j34c0sig1hkpnm26ngnyi5kgq5dl8vxvkzimgnwnzr"))))
5587 (build-system perl-build-system)
5588 (native-inputs (list perl-module-build-tiny
5589 perl-test-base
5590 perl-test-requires))
5591 (propagated-inputs (list perl-html-parser
5592 perl-html-selector-xpath
5593 perl-html-tagset
5594 perl-html-tree
5595 perl-html-treebuilder-xpath
5596 perl-libwww
5597 perl-universal-require
5598 perl-uri
5599 perl-xml-xpathengine
5600 perl-yaml))
5601 (home-page "https://metacpan.org/release/Web-Scraper")
5602 (synopsis
5603 "Web Scraping toolkit using HTML and CSS Selectors or XPath expressions")
5604 (description "Perl module @code{Web::Scraper} is a toolkit for
5605traversing and scraping sites, inspired by Ruby's Scapi.")
5606 (license license:perl-license)))
5607
5608(define-public perl-uri-template
5609 (package
5610 (name "perl-uri-template")
5611 (version "0.24")
5612 (source (origin
5613 (method url-fetch)
5614 (uri (string-append "mirror://cpan/authors/id/B/BR/BRICAS/URI-Template-"
5615 version ".tar.gz"))
5616 (sha256
5617 (base32
5618 "1phibcmam2hklrddzj79l43va1gcqpyszbw21ynxq53ynmhjvbk8"))))
5619 (build-system perl-build-system)
5620 (inputs
5621 (list perl-uri))
5622 (native-inputs
5623 (list perl-test-pod-coverage perl-test-pod perl-module-install
5624 perl-json))
5625 (home-page "https://metacpan.org/release/URI-Template")
5626 (synopsis "Object for handling URI templates")
5627 (description "This perl module provides a wrapper around URI templates as described in
5628RFC 6570.")
5629 (license license:perl-license)))
5630
5631(define-public perl-www-curl
5632 (package
5633 (name "perl-www-curl")
5634 (version "4.17")
5635 (source (origin
5636 (method url-fetch)
5637 (uri (string-append
5638 "mirror://cpan/authors/id/S/SZ/SZBALINT/WWW-Curl-"
5639 version".tar.gz"))
5640 (patches (search-patches "perl-www-curl-fix-struct-void.patch"
5641 "perl-www-curl-remove-symbol.patch"))
5642 (sha256
5643 (base32
5644 "1fmp9aib1kaps9vhs4dwxn7b15kgnlz9f714bxvqsd1j1q8spzsj"))))
5645 (build-system perl-build-system)
5646 (arguments
5647 '(#:tests? #f ;XXX: tests require network access
5648 #:phases (modify-phases %standard-phases
5649 (add-before 'configure 'set-search-path
5650 (lambda _
5651 ;; Work around "dotless @INC" build failure.
5652 (setenv "PERL5LIB"
5653 (string-append (getcwd) ":"
5654 (getenv "PERL5LIB")))
5655 #t)))))
5656 (native-inputs
5657 (list perl-module-install))
5658 (inputs (list curl))
5659 (synopsis "Perl extension interface for libcurl")
5660 (description
5661 "This is a Perl extension interface for the libcurl file downloading
5662library.")
5663 (license license:perl-license)
5664 (home-page "https://metacpan.org/release/WWW-Curl")))
5665
5666(define-public perl-www-mechanize
5667 (package
5668 (name "perl-www-mechanize")
5669 (version "1.91")
5670 (source
5671 (origin
5672 (method url-fetch)
5673 (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
5674 "WWW-Mechanize-" version ".tar.gz"))
5675 (sha256
5676 (base32 "0cb14m1vhaf0mgn2fqwi5hm72xhfi77hpq2g57swgy0w83x7m27b"))))
5677 (build-system perl-build-system)
5678 (native-inputs ;only for tests
5679 (list perl-cgi perl-test-deep perl-test-fatal perl-test-output
5680 perl-test-warnings))
5681 (propagated-inputs
5682 (list perl-html-form
5683 perl-html-parser
5684 perl-html-tree
5685 perl-http-message
5686 perl-http-server-simple
5687 perl-libwww
5688 perl-test-warn
5689 perl-uri))
5690 (home-page "https://metacpan.org/release/WWW-Mechanize")
5691 (synopsis "Web browsing in a Perl object")
5692 (description "WWW::Mechanize is a Perl module for stateful programmatic
5693web browsing, used for automating interaction with websites.")
5694 (license license:perl-license)))
5695
5696(define-public perl-www-opensearch
5697 (package
5698 (name "perl-www-opensearch")
5699 (version "0.17")
5700 (source (origin
5701 (method url-fetch)
5702 (uri (string-append "mirror://cpan/authors/id/B/BR/BRICAS/"
5703 "WWW-OpenSearch-" version ".tar.gz"))
5704 (sha256
5705 (base32
5706 "1yxplx1q1qk2fvnzqrbk01lz26fy1lyhay51a3ky7q3jgh9p01rb"))))
5707 (build-system perl-build-system)
5708 (native-inputs
5709 (list perl-class-errorhandler
5710 perl-datetime
5711 perl-datetime-format-mail
5712 perl-datetime-format-w3cdtf
5713 perl-feed-find
5714 perl-module-install
5715 perl-module-pluggable
5716 perl-uri-fetch
5717 perl-test-simple
5718 perl-xml-atom
5719 perl-xml-rss))
5720 (inputs
5721 (list perl-data-page
5722 perl-libwww
5723 perl-uri
5724 perl-uri-template
5725 perl-xml-feed
5726 perl-xml-libxml))
5727 (home-page "https://metacpan.org/release/WWW-OpenSearch")
5728 (synopsis "Search A9 OpenSearch compatible engines")
5729 (description
5730 "@code{WWW::OpenSearch} is a module to search @url{A9's OpenSearch,
5731http://opensearch.a9.com} compatible search engines.")
5732 (license license:perl-license)))
5733
5734(define-public perl-www-robotrules
5735 (package
5736 (name "perl-www-robotrules")
5737 (version "6.02")
5738 (source (origin
5739 (method url-fetch)
5740 (uri (string-append
5741 "mirror://cpan/authors/id/G/GA/GAAS/WWW-RobotRules-"
5742 version ".tar.gz"))
5743 (sha256
5744 (base32
5745 "07m50dp5n5jxv3m93i55qvnd67a6g7cvbvlik115kmc8lbkh5da6"))))
5746 (build-system perl-build-system)
5747 (propagated-inputs
5748 (list perl-uri))
5749 (license license:perl-license)
5750 (synopsis "Perl database of robots.txt-derived permissions")
5751 (description
5752 "The WWW::RobotRules module parses /robots.txt files as specified in
5753\"A Standard for Robot Exclusion\", at
5754<http://www.robotstxt.org/wc/norobots.html>. Webmasters can use the
5755/robots.txt file to forbid conforming robots from accessing parts of
5756their web site.")
5757 (home-page "https://metacpan.org/release/WWW-RobotRules")))
5758
5759;; XXX: No fresh release since 2019.
5760(define-public python-lambda-4dn
5761 (package
5762 (name "python-lambda-4dn")
5763 (version "0.12.3")
5764 (source (origin
5765 (method url-fetch)
5766 (uri (pypi-uri "python-lambda-4dn" version))
5767 (sha256
5768 (base32
5769 "1p5i8wsi8q5fpq63i7n7ri1w1lnh4gpn17f88vhkbh14aah5wxj1"))))
5770 (properties '(("upstream-name" . "python-lambda-4dn")))
5771 (build-system pyproject-build-system)
5772 (arguments
5773 (list
5774 #:tests? #f ;no tests in PyPI archive
5775 #:phases
5776 #~(modify-phases %standard-phases
5777 (add-after 'unpack 'fix-pip-install
5778 (lambda _
5779 (substitute* "aws_lambda/aws_lambda.py"
5780 ;; This package uses pip to install Python packages, wrap them
5781 ;; up, and push them to AWS Lambda. We need to reset
5782 ;; GUIX_PYTHONPATH to avoid introducing package conflicts that
5783 ;; would cause pip to fail.
5784 (("(subprocess.call\\(\\[sys.executable.*'--no-cache-dir'\\])\\)" _ m)
5785 (string-append m ", env={\"GUIX_PYTHONPATH\":\""
5786 #$(this-package-input "python")
5787 "/lib/python"
5788 #$(version-major+minor
5789 (package-version (this-package-input "python")))
5790 "/site-packages/\"})"))
5791 ;; Zipfile uses the mtime of the temporary directory to build
5792 ;; a zip file. But the temp directory has a timestamp of 0,
5793 ;; and zipfile refuses to build a zip archive dated before
5794 ;; 1980. So we reset the mtime of all temp files before they
5795 ;; are added to the zip archive.
5796 (("^( +)arcname = os.path.join" line indent)
5797 (string-append indent
5798 "os.utime(os.path.join(root, file), (315619200, 315619200))\n"
5799 line))))))))
5800 (native-inputs
5801 (list python-setuptools))
5802 (inputs (list python))
5803 (propagated-inputs
5804 (list python-boto3
5805 python-botocore
5806 python-docutils
5807 python-pip ;it's imported in aws_lambda/aws_lambda.py
5808 python-virtualenv))
5809 (home-page "https://github.com/4dn-dcic/python-lambda")
5810 (synopsis
5811 "Toolkit for developing and deploying Python code in AWS Lambda")
5812 (description
5813 "This is a toolset for developing and deploying serverless Python code in
5814AWS Lambda. This is a fork of Nick Ficano's Python-lambda package. It is
5815frozen for the needs of projects at the 4D Nucleome Data Coordination and
5816Integration Center (4DN-DCIC).")
5817 (license (list license:isc license:expat))))
5818
5819(define-public python-feedparser
5820 (package
5821 (name "python-feedparser")
5822 (version "6.0.12")
5823 (source
5824 (origin
5825 (method url-fetch)
5826 (uri (pypi-uri "feedparser" version ".tar.gz"))
5827 (sha256
5828 (base32 "0a22z6jx9lhw5glfb2nxf77bq9nfa0xqs3yy3rfyzs731blnrxv4"))))
5829 (build-system pyproject-build-system)
5830 (arguments
5831 (list
5832 #:test-backend #~'custom
5833 #:test-flags #~(list "tests/runtests.py")))
5834 (native-inputs (list python-setuptools python-wheel))
5835 (propagated-inputs (list python-sgmllib3k))
5836 (home-page "https://github.com/kurtmckee/feedparser")
5837 (synopsis "Parse feeds in Python")
5838 (description
5839 "Universal feed parser which handles RSS 0.9x, RSS 1.0, RSS 2.0,
5840CDF, Atom 0.3, and Atom 1.0 feeds.")
5841 (license (list license:bsd-2 ; source code
5842 license:freebsd-doc)))) ; documentation
5843
5844(define-public python-tibanna
5845 (package
5846 (name "python-tibanna")
5847 (version "5.4.3")
5848 (source (origin
5849 (method url-fetch)
5850 (uri (pypi-uri "tibanna" version))
5851 (sha256
5852 (base32
5853 "11pbyw881qaj08syc9mwr301rm3jhy6vyci98pxin2dwvyzkgwhd"))))
5854 (build-system pyproject-build-system)
5855 (arguments
5856 ;; Tests require AWS credentials and access to the internet.
5857 (list #:tests? #false))
5858 (propagated-inputs
5859 (list python-benchmark-4dn
5860 python-boto3 python-botocore
5861 python-lambda-4dn python-tomlkit))
5862 (native-inputs
5863 (list python-poetry-core
5864 python-pytest
5865 python-pytest-mock))
5866 (home-page "https://github.com/4dn-dcic/tibanna")
5867 (synopsis "Tibanna runs portable workflows on the AWS Cloud")
5868 (description
5869 "Tibanna runs portable pipelines (in CWL/WDL and Snakemake) on the AWS
5870Cloud.")
5871 (license license:expat)))
5872
5873(define-public guix-data-service
5874 (let ((commit "029880e5633789ce96ec363a94d98aed6451430f")
5875 (revision "79"))
5876 (package
5877 (name "guix-data-service")
5878 (version (string-append "0.0.1-" revision "." (string-take commit 7)))
5879 (source (origin
5880 (method git-fetch)
5881 (uri (git-reference
5882 (url "https://codeberg.org/guix/data-service.git")
5883 (commit commit)))
5884 (file-name (git-file-name name version))
5885 (sha256
5886 (base32
5887 "1h7k30k2hrql2r5kg1qhsq5haxzs2qzzkc195aidigr2vnj7xkm0"))))
5888 (build-system gnu-build-system)
5889 (arguments
5890 (list
5891 #:modules '((guix build utils)
5892 (guix build gnu-build-system)
5893 (ice-9 ftw)
5894 (ice-9 match)
5895 (ice-9 rdelim)
5896 (ice-9 popen))
5897 #:test-target "check-with-tmp-database"
5898 #:phases
5899 #~(modify-phases %standard-phases
5900 (add-before 'build 'set-GUILE_AUTO_COMPILE
5901 (lambda _
5902 ;; To avoid warnings relating to 'guild'.
5903 (setenv "GUILE_AUTO_COMPILE" "0")))
5904 (add-after 'install 'wrap-executable
5905 (lambda* (#:key inputs outputs #:allow-other-keys)
5906 (let* ((out (assoc-ref outputs "out"))
5907 (bin (string-append out "/bin"))
5908 (guile-effective-version
5909 (read-line
5910 (open-pipe* OPEN_READ (which "guile")
5911 "-c" "(display (effective-version))")))
5912 (scm (string-append out "/share/guile/site/"
5913 guile-effective-version))
5914 (go (string-append out "/lib/guile/"
5915 guile-effective-version
5916 "/site-ccache")))
5917 (for-each
5918 (lambda (file)
5919 (simple-format (current-error-port)
5920 "wrapping: ~A\n"
5921 (string-append bin "/" file))
5922 (wrap-program (string-append bin "/" file)
5923 `("PATH" ":" prefix
5924 ,(cons*
5925 bin
5926 (map (lambda (file)
5927 (search-input-file inputs file))
5928 '("/bin/pg_tmp" ;ephemeralpg
5929 "/bin/ionice" ;util-linux
5930 "/bin/psql")))) ;postgresql
5931 `("GUILE_LOAD_PATH" ":" prefix
5932 (,scm ,(getenv "GUILE_LOAD_PATH")))
5933 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
5934 (,go ,(getenv "GUILE_LOAD_COMPILED_PATH")))))
5935 (scandir bin
5936 (match-lambda
5937 ((or "." "..") #f)
5938 (_ #t)))))))
5939 (delete 'strip)))) ; As the .go files aren't compatible
5940 (inputs
5941 (list bash-minimal
5942 ephemeralpg
5943 util-linux
5944 postgresql-13
5945 sqitch
5946 bash-minimal))
5947 (propagated-inputs
5948 (list guix
5949 guile-fibers
5950 guile-safsaf
5951 guile-knots
5952 guile-json-4
5953 guile-email
5954 guile-prometheus
5955 guile-squee
5956 guile-lzlib))
5957 (native-inputs
5958 (list guile-3.0-latest
5959 autoconf
5960 automake
5961 emacs-minimal
5962 emacs-htmlize
5963 pkg-config))
5964 (synopsis "Store and provide data about GNU Guix")
5965 (description
5966 "The Guix Data Service stores data about GNU Guix, and provides this
5967through a web interface. It supports listening to the guix-commits mailing
5968list to find out about new revisions, then loads the data from these in to a
5969PostgreSQL database.")
5970 (home-page "https://data.guix.gnu.org/")
5971 (license license:agpl3+))))
5972
5973(define-public gumbo-parser
5974 (package
5975 (name "gumbo-parser")
5976 (version "0.10.1")
5977 (source (origin
5978 (method git-fetch)
5979 (uri (git-reference
5980 (url "https://github.com/google/gumbo-parser")
5981 (commit (string-append "v" version))))
5982 (file-name (git-file-name name version))
5983 (sha256
5984 (base32
5985 "0xslckwdh2i0g2qjsb6rnm8mjmbagvziz0hjlf7d1lbljfms1iw1"))))
5986 (build-system gnu-build-system)
5987 (arguments
5988 `(#:tests? #f)) ;tests require bundling googletest sources
5989 ;; The release tarball lacks the generated files.
5990 (native-inputs
5991 (list autoconf automake libtool))
5992 (home-page "https://github.com/google/gumbo-parser")
5993 (synopsis "HTML5 parsing library")
5994 (description
5995 "Gumbo is an implementation of the HTML5 parsing algorithm implemented as
5996a pure C99 library.")
5997 (license license:asl2.0)))
5998
5999(define-public uwsgi
6000 (package
6001 (name "uwsgi")
6002 (version "2.0.31")
6003 (source (origin
6004 (method url-fetch)
6005 (uri (pypi-uri name version))
6006 (sha256
6007 (base32
6008 "0mv2qz8gjvsc4rdsqdmrjszi972jdw9vjisjls9zy1n1ri8b7y78"))))
6009 (build-system gnu-build-system)
6010 (outputs '("out" "python"))
6011 (arguments
6012 (list
6013 ;; XXX: The 'check' target runs cppcheck to do static code analysis.
6014 ;; But there is no obvious way to run the real tests.
6015 #:tests? #f
6016 #:phases
6017 #~(modify-phases %standard-phases
6018 (replace 'configure
6019 ;; Configuration is done by writing an ini file.
6020 (lambda* (#:key outputs #:allow-other-keys)
6021 (let* ((out (assoc-ref outputs "out"))
6022 (bindir (string-append out "/bin"))
6023 (plugindir (string-append out "/lib/uwsgi")))
6024 ;; The build phase outputs files to these directories directly.
6025 (mkdir-p bindir)
6026 (mkdir-p plugindir)
6027 ;; XXX: Enable other plugins.
6028 (call-with-output-file "buildconf/guix.ini"
6029 (lambda (port)
6030 (format port "[uwsgi]
6031yaml = libyaml
6032bin_name = ~a/uwsgi
6033plugin_dir = ~a
6034
6035inherit = base
6036plugins = cgi,python
6037embedded_plugins =
6038" bindir plugindir))))
6039 (setenv "PROFILE" "guix")))
6040 (replace 'install
6041 ;; Move plugins into their own output.
6042 (lambda _
6043 (let* ((plugindir (string-append #$output "/lib/uwsgi"))
6044 (python-plugin (string-append plugindir
6045 "/python_plugin.so")))
6046 (install-file python-plugin
6047 (string-append #$output:python "/lib/uwsgi"))
6048 (delete-file python-plugin)))))))
6049 (native-inputs
6050 (list pkg-config python-wrapper))
6051 (inputs
6052 (list jansson
6053 libxml2
6054 libyaml
6055 openssl
6056 pcre
6057 zlib
6058 ;; For plugins.
6059 python))
6060 (home-page "https://uwsgi-docs.readthedocs.io/")
6061 (synopsis "Application container server")
6062 (description
6063 "uWSGI presents a complete stack for networked/clustered web applications,
6064implementing message/object passing, caching, RPC and process management.
6065It uses the uwsgi protocol for all the networking/interprocess communications.")
6066 (license license:gpl2+))) ; with linking exception
6067
6068(define-public jq
6069 (package
6070 (name "jq")
6071 (version "1.8.2")
6072 (source
6073 (origin
6074 (method git-fetch)
6075 (uri (git-reference
6076 (url "https://github.com/jqlang/jq")
6077 (commit (string-append "jq-" version))))
6078 (file-name (git-file-name name version))
6079 (sha256
6080 (base32 "1m798zky0s4smpf4jxl5g0ndg8ybd9f6ca8vhld4yma1ga7r71vk"))
6081 (modules '((guix build utils)))
6082 (snippet
6083 #~(begin
6084 (delete-file "jq.1.prebuilt")
6085 (delete-file "tests/man.test")
6086 (delete-file "tests/manonig.test")
6087 ;; TODO: unbundle decnumber, which is maintained in GCC.
6088 ;; Remove bundled onigurama.
6089 (delete-file-recursively "vendor/oniguruma")
6090 (substitute* "Makefile.am"
6091 (("SUBDIRS = vendor/oniguruma") ""))))))
6092 (arguments
6093 (list #:configure-flags
6094 #~'("--enable-docs" "--disable-static")
6095 #:phases
6096 #~(modify-phases %standard-phases
6097 (add-before 'bootstrap 'unrequire-git-and-pipenv
6098 (lambda* (#:key inputs #:allow-other-keys)
6099 (substitute* "configure.ac"
6100 (("^m4_define\\(\\[jq_version\\], .*\\)")
6101 (simple-format #f "m4_define([jq_version], [~a])"
6102 #$(package-version this-package))))
6103 ;; configure tries to launch $PIPENV.
6104 (setenv "PIPENV" "true")
6105 (substitute* "Makefile.am"
6106 (("\\$\\(PIPENV\\) run python (.*\\.py)" all prog)
6107 ;; Schema validation requires python-jsonschema,
6108 ;; which transitively depends on rustc.
6109 ;; Since jq is a transitive dependency of guix,
6110 ;; skipping this static analysis helps
6111 ;; with its bootstrapping cost.
6112 (if (string=? prog "validate_manual_schema.py")
6113 "true"
6114 (string-append "python3 " prog)))))))))
6115 (inputs
6116 (list oniguruma))
6117 (native-inputs
6118 (cons*
6119 autoconf
6120 automake
6121 libtool
6122 ;; Docs dependencies:
6123 python
6124 python-lxml
6125 python-markdown
6126 python-pyyaml
6127 ;; Test dependencies:
6128 tzdata-for-tests
6129 (if (member (%current-system)
6130 (package-supported-systems valgrind/pinned))
6131 (list valgrind/pinned)
6132 '())))
6133 (build-system gnu-build-system)
6134 (home-page "https://jqlang.org")
6135 (synopsis "Command-line JSON processor")
6136 (description "jq is like sed for JSON data – you can use it to slice and
6137filter and map and transform structured data with the same ease that sed, awk,
6138grep and friends let you play with text. It is written in portable C. jq can
6139mangle the data format that you have into the one that you want with very
6140little effort, and the program to do so is often shorter and simpler than
6141you'd expect.")
6142 (properties
6143 '((lint-hidden-cve
6144 ;; CVE's with incorrectly versions limits; solved in these commits:
6145 . (list "CVE-2026-39979";2f09060afab23fe9390cce7cb860b10416e1bf5f
6146 "CVE-2026-33948" ;6374ae0bcdfe33a18eb0ae6db28493b1f34a0a5b
6147 "CVE-2026-44777")))) ;f58787c41835d9b17795730cb04925fdba25c71c
6148 (license (list license:cc-by3.0 ;docs
6149 license:x11 ;vendor/decNumber
6150 license:expat)))) ;rest
6151
6152(define-public go-jqp
6153 (package
6154 (name "go-jqp")
6155 (version "0.8.0")
6156 (source
6157 (origin
6158 (method git-fetch)
6159 (uri (git-reference
6160 (url "https://github.com/noahgorstein/jqp")
6161 (commit (string-append "v" version))))
6162 (file-name (git-file-name name version))
6163 (sha256
6164 (base32 "1j5nc3l8qzvzrfggvyh4xg3wxx4hsmkm89437sjw5gcmgscsy9d4"))))
6165 (build-system go-build-system)
6166 (arguments
6167 (list
6168 #:install-source? #f
6169 #:import-path "github.com/noahgorstein/jqp"
6170 #:embed-files #~(list ".*.xml")))
6171 (native-inputs
6172 (list go-github-com-alecthomas-chroma-v2
6173 go-github-com-atotto-clipboard
6174 go-github-com-charmbracelet-bubbles
6175 go-github-com-charmbracelet-bubbletea
6176 go-github-com-charmbracelet-lipgloss
6177 go-github-com-itchyny-gojq
6178 go-github-com-muesli-termenv
6179 go-github-com-spf13-cobra
6180 go-github-com-spf13-viper))
6181 (home-page "https://github.com/noahgorstein/jqp")
6182 (synopsis "TUI playground to experiment with jq")
6183 (description
6184 "This package provides an interactive TUI to explor the @code{jq} command
6185line utility. The command accepts an optional query argument which will be
6186executed against the input JSON or newline-delimited JSON (NDJSON).")
6187 (license license:expat)))
6188
6189(define-public pup
6190 (let ((revision "2")
6191 (commit "5a57cf111366c7c08999a34b2afd7ba36d58a96d"))
6192 (package
6193 (name "pup")
6194 (version (git-version "0.4.0" revision commit))
6195 (source
6196 (origin
6197 (method git-fetch)
6198 (uri (git-reference
6199 (url "https://github.com/ericchiang/pup")
6200 (commit commit)))
6201 (file-name (git-file-name name version))
6202 (sha256
6203 (base32 "18595sr6lh49w7ncvhp39p1ybvxfvdyx6655wr5vvfyv2ggn1rrd"))))
6204 (build-system go-build-system)
6205 (arguments
6206 (list
6207 #:install-source? #f
6208 #:import-path "github.com/ericchiang/pup"))
6209 (native-inputs
6210 (list go-github-com-fatih-color
6211 go-github-com-mattn-go-colorable
6212 go-golang-org-x-net
6213 go-golang-org-x-text))
6214 (home-page "https://github.com/ericchiang/pup")
6215 (synopsis "Parse HTML at the command line")
6216 (description
6217 "@command{pup} is a command line tool for processing HTML. It reads
6218from stdin, prints to stdout, and allows the user to filter parts of the page
6219using CSS selectors. Inspired by @command{jq}, @command{pup} aims to be a
6220fast and flexible way of exploring HTML from the terminal.")
6221 (license license:expat))))
6222
6223(define-public uhttpmock
6224 (package
6225 (name "uhttpmock")
6226 (version "0.11.0")
6227 (source
6228 (origin
6229 (method url-fetch)
6230 (uri (string-append "https://tecnocode.co.uk/downloads/uhttpmock/"
6231 "uhttpmock-" version ".tar.xz"))
6232 (sha256
6233 (base32 "1gw4g3m99j00rjd3flbxigv3qgbkafnkhf77c76hv7yy58dc1vgy"))))
6234 (build-system meson-build-system)
6235 (native-inputs
6236 (list gobject-introspection
6237 ;; For check phase.
6238 glib-networking gsettings-desktop-schemas pkg-config))
6239 (inputs (list libsoup))
6240 (arguments
6241 (list #:glib-or-gtk? #t
6242 #:configure-flags #~(list "-Dgtk_doc=false")
6243 #:phases
6244 #~(modify-phases %standard-phases
6245 (add-before 'check 'set-home-for-tests
6246 (lambda _
6247 (setenv "HOME" "/tmp"))))))
6248 (home-page "https://gitlab.com/groups/uhttpmock")
6249 (synopsis "Library for mocking web service APIs which use HTTP or HTTPS")
6250 (description
6251 "Uhttpmock is a project for mocking web service APIs which use HTTP or
6252HTTPS. It provides a library, libuhttpmock, which implements recording and
6253playback of HTTP request/response traces.")
6254 (license license:lgpl2.1+)))
6255
6256(define-public uhttpmock-with-libsoup2
6257 (package
6258 (inherit uhttpmock)
6259 (version "0.5.3")
6260 (source
6261 (origin
6262 (method url-fetch)
6263 (uri (string-append "https://tecnocode.co.uk/downloads/uhttpmock/"
6264 "uhttpmock-" version ".tar.xz"))
6265 (sha256
6266 (base32 "0bqizz69hxk8rn4z57asz1d45vizl1rj6i5k3rzxn2x3qcik514h"))))
6267 (build-system glib-or-gtk-build-system)
6268 (arguments
6269 (list #:phases
6270 #~(modify-phases %standard-phases
6271 (add-before 'check 'set-home-for-tests
6272 (lambda _
6273 (setenv "HOME" "/tmp"))))))
6274 (inputs (list libsoup-minimal-2))))
6275
6276(define-public woof
6277 (package
6278 (name "woof")
6279 (version "20220202")
6280 (source (origin
6281 (method git-fetch)
6282 (uri (git-reference
6283 (url "https://github.com/simon-budig/woof")
6284 (commit (string-append name "-" version))))
6285 (file-name (git-file-name name version))
6286 (sha256
6287 (base32
6288 "0rm8xs5dhy42jhjpx30vwnvps2rnmrh8scfr89j6dnihc6mpjkmn"))))
6289 (build-system trivial-build-system)
6290 (arguments
6291 '(#:modules ((guix build utils))
6292 #:builder
6293 (begin
6294 (use-modules (guix build utils))
6295 (let* ((source (assoc-ref %build-inputs "source"))
6296 (out (assoc-ref %outputs "out"))
6297 (bin (string-append out "/bin"))
6298 (python (assoc-ref %build-inputs "python")))
6299 (mkdir-p bin)
6300 (with-directory-excursion bin
6301 (copy-file (in-vicinity source "woof") "woof")
6302 (patch-shebang "woof" (list (string-append python "/bin"))))
6303 #t))))
6304 (inputs (list python))
6305 (home-page "http://www.home.unix-ag.org/simon/woof.html")
6306 (synopsis "Single file web server")
6307 (description "Woof (Web Offer One File) is a small simple web server that
6308can easily be invoked on a single file. Your partner can access the file with
6309tools they trust (e.g. wget).")
6310 (license license:gpl2+)))
6311
6312(define netsurf-buildsystem
6313 (package
6314 (name "netsurf-buildsystem")
6315 (version "1.10")
6316 (source
6317 (origin
6318 (method url-fetch)
6319 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6320 "buildsystem-" version ".tar.gz"))
6321 (sha256
6322 (base32
6323 "0yadmrpgvl9r08b56qiy5f77jracc7g9n4krn727fip4d7akjgix"))))
6324 (build-system gnu-build-system)
6325 (inputs `(("perl" ,perl)))
6326 (arguments
6327 '(#:make-flags (list (string-append "PREFIX=" %output))
6328 #:tests? #f ;no tests
6329 #:phases (modify-phases %standard-phases
6330 (delete 'configure)
6331 (delete 'build))))
6332 (home-page "https://www.netsurf-browser.org")
6333 (synopsis "Build system for the Netsurf project")
6334 (description
6335 "This package provides the shared build system for Netsurf project
6336libraries.")
6337 (license license:expat)))
6338
6339(define netsurf-buildsystem-arguments
6340 `(#:make-flags `("COMPONENT_TYPE=lib-shared"
6341 "CC=gcc -Wno-error=calloc-transposed-args"
6342 "BUILD_CC=gcc -Wno-error=calloc-transposed-args"
6343 ,(string-append "PREFIX=" %output)
6344 ,(string-append "NSSHARED="
6345 (assoc-ref %build-inputs
6346 "netsurf-buildsystem")
6347 "/share/netsurf-buildsystem"))
6348 #:test-target "test"
6349 #:phases (modify-phases %standard-phases
6350 (delete 'configure))))
6351
6352(define-public libparserutils
6353 (package
6354 (name "libparserutils")
6355 (version "0.2.5")
6356 (source
6357 (origin
6358 (method url-fetch)
6359 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6360 name "-" version "-src.tar.gz"))
6361 (sha256
6362 (base32
6363 "0ffi5q1jlcdl66nk3cax0mnzvhrjvvjvlx0rfasjfygi333xazii"))))
6364 (build-system gnu-build-system)
6365 (native-inputs
6366 (list netsurf-buildsystem pkg-config perl)) ;for test harness
6367 (arguments netsurf-buildsystem-arguments)
6368 (home-page "https://www.netsurf-browser.org/projects/libparserutils/")
6369 (synopsis "Parser building library")
6370 (description
6371 "LibParserUtils is a library for building efficient parsers, written in
6372C. It is developed as part of the NetSurf project.")
6373 (license license:expat)))
6374
6375(define-public hubbub
6376 (package
6377 (name "hubbub")
6378 (version "0.3.8")
6379 (source
6380 (origin
6381 (method url-fetch)
6382 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6383 "libhubbub-" version "-src.tar.gz"))
6384 (sha256
6385 (base32
6386 "19fm5h8arnsgxd4w5vr9s2fcb422acciffar3la0b36lygsydhca"))
6387 (patches (search-patches "hubbub-sort-entities.patch"))))
6388 (build-system gnu-build-system)
6389 (native-inputs
6390 (list netsurf-buildsystem
6391 pkg-config
6392 doxygen
6393 gperf
6394 json-c
6395 perl))
6396 (propagated-inputs
6397 (list libparserutils)) ;for libhubbub.pc
6398 (arguments netsurf-buildsystem-arguments)
6399 (home-page "https://www.netsurf-browser.org/projects/hubbub/")
6400 (synopsis "HTML5 compliant parsing library")
6401 (description
6402 "Hubbub is an HTML5 compliant parsing library, written in C, which can
6403parse both valid and invalid web content. It is developed as part of the
6404NetSurf project.")
6405 (license license:expat)))
6406
6407(define-public iter-vitae
6408 (package
6409 (name "iter-vitae")
6410 (version "0.5.1")
6411 (source
6412 (origin
6413 (method git-fetch)
6414 (uri (git-reference
6415 (url "https://codeberg.org/jjba23/iter-vitae.git")
6416 (commit (string-append "v" version))))
6417 (file-name (git-file-name name version))
6418 (sha256
6419 (base32 "08rak4lq732mil2q7mlqm6dh57s2k1n94isrshj3k3ahspcdl1p3"))))
6420 (arguments
6421 `(#:source-directory "src"
6422 #:phases (modify-phases %standard-phases
6423 (add-before 'build 'install-program-files
6424 (lambda* (#:key outputs #:allow-other-keys)
6425 (let ((bin (string-append (assoc-ref outputs "out")
6426 "/bin"))
6427 (share (string-append (assoc-ref outputs "out")
6428 "/share")))
6429 (install-file "resources/help.txt"
6430 (string-append share "/resources"))
6431 (install-file "resources/css/iter-vitae.olive.min.css"
6432 (string-append share "/resources/css"))
6433 (install-file "scripts/iter-vitae" bin)
6434 (install-file "scripts/log.bash"
6435 (string-append share "/scripts/"))
6436 (chmod (string-append bin "/iter-vitae") #o755)))))))
6437 (build-system guile-build-system)
6438 (native-inputs (list guile-3.0))
6439 (inputs (list guile-3.0 bash-minimal))
6440 (synopsis
6441 "Resume / @acronym{CV, Curriculum Vitae} generator written in Guile Scheme")
6442 (description
6443 "Iter Vitae is a command-line utility that allows you to generate a
6444Resume / @acronym{CV, Curriculum Vitae}, by reading a S-expression version
6445of your CV details (in Scheme code).
6446
6447With a @acronym{MVC, model-view-controller} approach,
6448it lets you separate the data from the presentation (how the document looks).
6449
6450This tool creates a web-site version of your CV (using SXML and Olive CSS),
6451and is designed for long-term use, so you can update and evolve your CV over the years.
6452The program supports multilingual content and is fully extensible.")
6453 (home-page "https://codeberg.org/jjba23/iter-vitae")
6454 (license license:agpl3+)))
6455
6456(define-public ikiwiki
6457 (package
6458 (name "ikiwiki")
6459 (version "3.20200202.4")
6460 (source
6461 (origin
6462 (method git-fetch)
6463 (uri (git-reference
6464 (url "git://git.ikiwiki.info/")
6465 (commit version)))
6466 (file-name (git-file-name name version))
6467 (sha256
6468 (base32
6469 "04ijislp7png18bg1carb71xk3sij9x5xpizfkxp6jbip6wdxsml"))
6470 (snippet
6471 '(begin
6472 ;; The POT file requires write permission during the build
6473 ;; phase.
6474 (chmod "po/ikiwiki.pot" #o644)))))
6475 (build-system perl-build-system)
6476 (arguments
6477 `(#:phases
6478 (modify-phases %standard-phases
6479 (add-after 'patch-source-shebangs 'patch-Makefiles
6480 (lambda _
6481 (substitute* "Makefile.PL"
6482 (("SYSCONFDIR\\?=") "SYSCONFDIR?=$(PREFIX)"))
6483 (with-directory-excursion "po"
6484 (substitute* "Makefile"
6485 (("PERL5LIB=") "PERL5LIB=${PERL5LIB}:")))))
6486 (add-before 'build 'set-modification-times
6487 ;; The wiki '--refresh' steps, which are executed during
6488 ;; the check phase, require recent timestamps on files in
6489 ;; the 'doc' and 'underlays' directories.
6490 (lambda _
6491 (invoke "find" "doc" "underlays" "-type" "f" "-exec"
6492 "touch" "{}" "+")))
6493 (add-before 'check 'pre-check
6494 (lambda* (#:key inputs #:allow-other-keys)
6495 ;; Six tests use IPC::Run. For these tests the PERL5LIB
6496 ;; variable is needed in the runtime environment and also
6497 ;; in the search path list in the setup file.
6498 (substitute*
6499 '("t/aggregate-file.t" "t/git-cgi.t" "t/git-untrusted.t"
6500 "t/passwordauth.t" "t/relativity.t" "t/wrapper-environ.t")
6501 (("(.*)\"perl\"(.*)$" _ prefix suffix)
6502 (string-append prefix "qw(env), 'PERL5LIB='.$ENV{PERL5LIB}"
6503 ", qw(perl)" suffix))
6504 (("(.*) PERL5LIB=(.*) perl(.*)$" _ prefix middle suffix)
6505 (string-append prefix "), 'PERL5LIB='.$ENV{PERL5LIB}.':"
6506 middle "', qw(perl" suffix))
6507 (("(.*)setup(.* )getcwd(.*)$" _ prefix middle suffix)
6508 (string-append prefix "setup" middle
6509 "$ENV{PERL5LIB}.':'.getcwd" suffix))
6510 (("^ENV(.*): '(.*)$" _ middle suffix)
6511 (string-append "ENV" middle
6512 ": '$ENV{PERL5LIB}:" suffix)))
6513 ;; rcs_getctime does not work with breezy
6514 (substitute* "t/bazaar.t"
6515 (("rcs_getctime\\(\"test2.mdwn\"\\)" all)
6516 (string-append all "//time()")))
6517 ;; XDG_DATA_DIRS is needed by the podcast.t test.
6518 (setenv "XDG_DATA_DIRS"
6519 (string-append (assoc-ref inputs "shared-mime-info")
6520 "/share"))
6521 ;; This test fails: "Cannot read from a file without refname".
6522 (rename-file "t/po.t" "t/po.t-")
6523 ;; CC is needed by IkiWiki/Wrapper.pm.
6524 (setenv "CC" "gcc")))
6525 (add-after 'install 'wrap-programs
6526 (lambda* (#:key outputs #:allow-other-keys)
6527 (let* ((out (assoc-ref outputs "out"))
6528 (bin (string-append out "/bin/"))
6529 (path (getenv "PERL5LIB")))
6530 (for-each (lambda (file)
6531 (wrap-program file
6532 `("PERL5LIB" ":" prefix (,path))))
6533 (find-files bin))))))))
6534 (native-inputs
6535 (list which
6536 gettext-minimal
6537 subversion
6538 git
6539 breezy
6540 cvs
6541 mercurial))
6542 (inputs
6543 (list bash-minimal
6544 python-wrapper
6545 perl-authen-passphrase
6546 perl-cgi-simple
6547 perl-db-file
6548 perl-file-mimeinfo
6549 perl-html-tagset
6550 perl-image-magick
6551 perl-ipc-run
6552 perl-lwpx-paranoidagent
6553 perl-xml-feed
6554 perl-xml-sax
6555 perl-xml-twig
6556 perl-yaml-tiny
6557
6558 ;; Ikiwiki loads po4a as a library, and thus needs the po4a dependencies
6559 ;; available. Duplicate them here.
6560 ;; XXX: It would be ideal to hard code these in po4a somehow.
6561 perl-syntax-keyword-try
6562 perl-xs-parse-keyword
6563 po4a))
6564 (propagated-inputs
6565 (list perl-cgi-formbuilder
6566 perl-cgi-session
6567 perl-html-parser
6568 perl-html-scrubber
6569 perl-html-template
6570 perl-json
6571 perl-mail-sendmail
6572 perl-text-markdown-discount
6573 perl-timedate
6574 perl-uri
6575 perl-xml-simple
6576 perl-yaml-libyaml))
6577 (home-page "https://ikiwiki.info/")
6578 (synopsis "Wiki compiler, capable of generating HTML")
6579 (description
6580 "Ikiwiki is a wiki compiler, capable of generating a static set of web
6581pages, but also incorporating dynamic features like a web based editor and
6582commenting.")
6583 (license license:gpl2+)))
6584
6585(define-public libwapcaplet
6586 (package
6587 (name "libwapcaplet")
6588 (version "0.4.3")
6589 (source
6590 (origin
6591 (method url-fetch)
6592 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6593 "libwapcaplet-" version "-src.tar.gz"))
6594 (sha256
6595 (base32
6596 "0p0c2q9lsj4vs97aa7vjllfhw33zv3dpysdkjblzhib6dpfs2alv"))))
6597 (build-system gnu-build-system)
6598 (native-inputs
6599 (list netsurf-buildsystem pkg-config check-0.14)) ;for tests
6600 (arguments netsurf-buildsystem-arguments)
6601 (home-page "https://www.netsurf-browser.org/projects/libwapcaplet/")
6602 (synopsis "String internment library")
6603 (description
6604 "LibWapcaplet provides a reference counted string internment system
6605designed to store small strings and allow rapid comparison of them. It is
6606developed as part of the Netsurf project.")
6607 (license license:expat)))
6608
6609(define-public libcss
6610 (package
6611 (name "libcss")
6612 (version "0.9.2")
6613 (source
6614 (origin
6615 (method url-fetch)
6616 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6617 "libcss-" version "-src.tar.gz"))
6618 (sha256
6619 (base32
6620 "0khmf5bdpkc09fpsgwzi23sihpadvyr02jx0q5h1vm9lxjxibwid"))
6621 (patches (search-patches "libcss-check-format.patch"))))
6622 (build-system gnu-build-system)
6623 (native-inputs
6624 (list netsurf-buildsystem pkg-config perl))
6625 (propagated-inputs ;needed for libcss.pc
6626 (list libparserutils libwapcaplet))
6627 (arguments netsurf-buildsystem-arguments)
6628 (home-page "https://www.netsurf-browser.org/projects/libcss/")
6629 (synopsis "CSS parser and selection library")
6630 (description
6631 "LibCSS is a CSS (Cascading Style Sheet) parser and selection engine,
6632written in C. It is developed as part of the NetSurf project.")
6633 (license license:expat)))
6634
6635(define-public libdom
6636 (package
6637 (name "libdom")
6638 (version "0.4.2") ;TODO include patch for additional tags?
6639 (source
6640 (origin
6641 (method url-fetch)
6642 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6643 "libdom-" version "-src.tar.gz"))
6644 (sha256
6645 (base32
6646 "0g0gqcglk8f8gbygbcq5ylcx84zsf0vczbm3n3118w2l2splapnh"))))
6647 (build-system gnu-build-system)
6648 (native-inputs
6649 (list netsurf-buildsystem
6650 pkg-config
6651 perl ;for test harness
6652 perl-libxml
6653 perl-switch
6654 perl-xml-xpath))
6655 (inputs
6656 (list libparserutils libwapcaplet))
6657 (propagated-inputs
6658 (list expat ;needed for headers and linking
6659 hubbub)) ;for libdom.pc
6660 (arguments
6661 `(#:tests? #f ;TODO: re-enable. tests take a looong time.
6662 ,@netsurf-buildsystem-arguments))
6663 (home-page "https://www.netsurf-browser.org/projects/libdom/")
6664 (synopsis "Implementation of the W3C DOM")
6665 (description
6666 "LibDOM is an implementation of the W3C DOM, written in C. It is
6667developed as part of the NetSurf project.")
6668 (license license:expat)))
6669
6670(define-public libsvgtiny
6671 (package
6672 (name "libsvgtiny")
6673 (version "0.1.8")
6674 (source
6675 (origin
6676 (method url-fetch)
6677 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6678 name "-" version "-src.tar.gz"))
6679 (sha256
6680 (base32
6681 "0750q884ax8wygl64wq03zdjj8h838ch3f8jdfkv4gz809zj4my3"))))
6682 (build-system gnu-build-system)
6683 (native-inputs
6684 (list netsurf-buildsystem pkg-config gperf))
6685 (inputs
6686 (list libwapcaplet))
6687 (propagated-inputs
6688 (list libdom)) ;for libsvgtiny.pc
6689 (arguments netsurf-buildsystem-arguments)
6690 (home-page "https://www.netsurf-browser.org/projects/libsvgtiny/")
6691 (synopsis "Library for parsing SVG files")
6692 (description
6693 "Libsvgtiny takes some SVG as input and returns a list of paths and texts
6694which can be rendered easily, as defined in
6695@url{http://www.w3.org/TR/SVGMobile/}. It is developed as part of the NetSurf
6696project.")
6697 (license license:expat)))
6698
6699(define-public libnsbmp
6700 (package
6701 (name "libnsbmp")
6702 (version "0.1.7")
6703 (source
6704 (origin
6705 (method url-fetch)
6706 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6707 name "-" version "-src.tar.gz"))
6708 (sha256
6709 (base32
6710 "14r2v1ich4lxn3sdwpiwq5adydrd1qlhbd8mbamalaqj59laf1sl"))))
6711 (build-system gnu-build-system)
6712 (native-inputs
6713 (list netsurf-buildsystem))
6714 (arguments netsurf-buildsystem-arguments)
6715 (home-page "https://www.netsurf-browser.org/projects/libnsbmp/")
6716 (synopsis "Decoding library for BMP and ICO files")
6717 (description
6718 "Libnsbmp is a decoding library for BMP and ICO image file formats,
6719written in C. It is developed as part of the NetSurf project.")
6720 (license license:expat)))
6721
6722(define-public libnsfb
6723 (package
6724 (name "libnsfb")
6725 (version "0.2.2")
6726 (source
6727 (origin
6728 (method url-fetch)
6729 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6730 name "-" version "-src.tar.gz"))
6731 (sha256
6732 (base32 "16m3kv8x8mlic4z73h2s3z8lqmyp0z8i30x95lzr1pslxfinqi5y"))))
6733 (build-system gnu-build-system)
6734 (native-inputs
6735 (list netsurf-buildsystem pkg-config))
6736 (inputs
6737 ;; SDL is needed to accept any (keyboard, mouse) input. Don't propagate it
6738 ;; to satisfy libnsfb.pc: netsurf is the only user and not worth the pain.
6739 (list sdl))
6740 (arguments netsurf-buildsystem-arguments)
6741 (home-page "https://www.netsurf-browser.org/projects/libnsfb/")
6742 (synopsis "Framebuffer display abstraction library")
6743 (description
6744 "LibNSFB is a framebuffer abstraction library, written in C. It is
6745developed as part of the NetSurf project and is intended to be suitable for use
6746in other projects too.
6747
6748The overall idea of the library is to provide a generic abstraction to a linear
6749section of memory which corresponds to a visible array of pixel elements on a
6750display device. Different colour depths are supported and the library provides
6751routines for tasks such as drawing onto the framebuffer and rectangle copy
6752operations.")
6753 (license license:expat)))
6754
6755(define-public libnsgif
6756 (package
6757 (name "libnsgif")
6758 (version "1.0.0")
6759 (source
6760 (origin
6761 (method url-fetch)
6762 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6763 name "-" version "-src.tar.gz"))
6764 (sha256
6765 (base32
6766 "06q69hn0nz3c6hnwmzfcldyrppkvimx3s97ql3sx4m0lyr1ch530"))))
6767 (build-system gnu-build-system)
6768 (native-inputs
6769 (list netsurf-buildsystem))
6770 (arguments netsurf-buildsystem-arguments)
6771 (home-page "https://www.netsurf-browser.org/projects/libnsgif/")
6772 (synopsis "Decoding library for GIF files")
6773 (description
6774 "Libnsgif is a decoding library for the GIF image file format, written in
6775C. It is developed as part of the NetSurf project.")
6776 (license license:expat)))
6777
6778(define-public libnslog
6779 (package
6780 (name "libnslog")
6781 (version "0.1.3")
6782 (source
6783 (origin
6784 (method url-fetch)
6785 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6786 "libnslog-" version "-src.tar.gz"))
6787 (sha256
6788 (base32
6789 "1l2k0kdv9iv18svhv360vszjavhl4g09cp8a8yb719pgsylxr67w"))))
6790 (build-system gnu-build-system)
6791 (native-inputs
6792 (list netsurf-buildsystem
6793 pkg-config
6794 check ; For tests
6795 bison
6796 flex))
6797 (arguments netsurf-buildsystem-arguments)
6798 (home-page "https://www.netsurf-browser.org/")
6799 (synopsis "Logging library")
6800 (description
6801 "Libnslog provides a category-based logging library which supports
6802complex logging filters, multiple log levels, and provides context through to
6803client applications. It is developed as part of the NetSurf project.")
6804 (license license:expat)))
6805
6806(define-public libnsutils
6807 (package
6808 (name "libnsutils")
6809 (version "0.1.1")
6810 (source
6811 (origin
6812 (method url-fetch)
6813 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6814 name "-" version "-src.tar.gz"))
6815 (sha256
6816 (base32
6817 "14pakllwf7a205d0dkvyg8jhmqfbi5sh5riw840d13j5dr9b952n"))))
6818 (build-system gnu-build-system)
6819 (native-inputs
6820 (list netsurf-buildsystem))
6821 (arguments netsurf-buildsystem-arguments)
6822 (home-page "https://www.netsurf-browser.org/")
6823 (synopsis "Utility library for NetSurf")
6824 (description
6825 "Libnsutils provides a small number of useful utility routines. It is
6826developed as part of the NetSurf project.")
6827 (license license:expat)))
6828
6829(define-public libnspsl
6830 (package
6831 (name "libnspsl")
6832 (version "0.1.7")
6833 (source
6834 (origin
6835 (method url-fetch)
6836 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6837 "libnspsl-" version "-src.tar.gz"))
6838 (sha256
6839 (base32
6840 "105cjkb622wz11z26il4j1n4ydyrrgv0nglr67aawpam5z1wx11n"))))
6841 (build-system gnu-build-system)
6842 (native-inputs
6843 (list netsurf-buildsystem))
6844 (arguments netsurf-buildsystem-arguments)
6845 (home-page "https://www.netsurf-browser.org/")
6846 (synopsis "Library to generate a static Public Suffix List")
6847 (description
6848 "Libnspsl is a library to generate a static code representation of the
6849Public Suffix List. It is developed as part of the NetSurf project.")
6850 (license license:expat)))
6851
6852(define-public nsgenbind
6853 (package
6854 (name "nsgenbind")
6855 (version "0.9")
6856 (source
6857 (origin
6858 (method url-fetch)
6859 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6860 "nsgenbind-" version "-src.tar.gz"))
6861 (sha256
6862 (base32
6863 "0p9q9ffn9hf1qrphz2qxq2xvyysn5kg2dbl8cbnkwb5wdkvf0b13"))))
6864 (build-system gnu-build-system)
6865 (native-inputs
6866 (list netsurf-buildsystem bison flex))
6867 (arguments
6868 (substitute-keyword-arguments netsurf-buildsystem-arguments
6869 ((#:make-flags flags)
6870 `(delete "COMPONENT_TYPE=lib-shared" ,flags))))
6871 (home-page "https://www.netsurf-browser.org/")
6872 (synopsis "Generate JavaScript to DOM bindings")
6873 (description
6874 "@code{nsgenbind} is a tool to generate JavaScript to DOM bindings from
6875w3c webidl files and a binding configuration file.")
6876 (license license:expat)))
6877
6878(define-public netsurf
6879 (package
6880 (name "netsurf")
6881 (version "3.11")
6882 (source
6883 (origin
6884 (method url-fetch)
6885 (uri (string-append "https://download.netsurf-browser.org/netsurf/"
6886 "releases/source/netsurf-" version "-src.tar.gz"))
6887 (sha256
6888 (base32
6889 "1chw40nx7krpy7m14bajfrcj88h98if8py0k7c2qshpfxxm652n2"))
6890 (patches (search-patches "netsurf-system-utf8proc.patch"
6891 "netsurf-y2038-tests.patch"
6892 "netsurf-longer-test-timeout.patch"
6893 "netsurf-message-timestamp.patch"))))
6894 (build-system glib-or-gtk-build-system)
6895 (arguments
6896 (list
6897 #:make-flags
6898 #~(list
6899 (string-append "CC=" #$(cc-for-target))
6900 (string-append "BUILD_CC=" #$(cc-for-target))
6901 "TARGET=gtk3"
6902 (string-append "PREFIX=" #$output)
6903 (string-append "NSSHARED="
6904 #$(this-package-native-input "netsurf-buildsystem")
6905 "/share/netsurf-buildsystem"))
6906 #:test-target "test"
6907 #:modules `((ice-9 rdelim)
6908 (ice-9 match)
6909 (srfi srfi-1)
6910 (sxml simple)
6911 ,@%glib-or-gtk-build-system-default-modules)
6912 #:phases
6913 #~(modify-phases %standard-phases
6914 (delete 'configure)
6915 (add-after 'unpack 'remove-timestamps
6916 ;; Avoid embedding timestamp for reproducible builds
6917 (lambda _
6918 (substitute* "tools/git-testament.pl"
6919 (("WT_COMPILEDATE ..$compiledate")
6920 "WT_COMPILEDATE \\\""))))
6921 (add-after 'build 'adjust-welcome
6922 (lambda _
6923 (substitute* "frontends/gtk/res/welcome.html"
6924 ;; Close some XHTML tags.
6925 (("<(img|input)([^>]*)>" _ tag contents)
6926 (string-append "<" tag contents " />"))
6927 ;; Increase freedom.
6928 ((" open source") ", free software"))
6929 (with-atomic-file-replacement "frontends/gtk/res/welcome.html"
6930 (lambda (in out)
6931 ;; Leave the DOCTYPE header as is.
6932 (display (read-line in 'concat) out)
6933 (sxml->xml
6934 (let rec
6935 ((sxml (xml->sxml in #:default-entity-handler
6936 (lambda (port name)
6937 (string-append "<ENTITY>"
6938 (symbol->string name)
6939 "</ENTITY>")))))
6940 ;; We'd like to use sxml-match here, but it can't
6941 ;; match against generic tag symbols...
6942 (match sxml
6943 ;; Remove default links so it doesn't seem we're
6944 ;; endorsing them.
6945 (`(div (@ (class "links")) . ,rest)
6946 '())
6947 ;; Prefer a more privacy-respecting default search
6948 ;; engine.
6949 (`(form . ,rest)
6950 `(form (@ (action "https://lite.duckduckgo.com/lite/")
6951 (method "post"))
6952 (div (@ (class "websearch"))
6953 (input (@ (type "text")
6954 (size "42")
6955 (name "q")
6956 (autocomplete "off")
6957 (value "")))
6958 (input (@ (type "submit")
6959 (value "DuckDuckGo Search"))))))
6960 (`(ENTITY ,ent)
6961 `(*ENTITY* ,ent))
6962 ((x ...)
6963 (map rec x))
6964 (x x)))
6965 out)))))
6966 (add-before 'check 'patch-check
6967 (lambda* (#:key inputs #:allow-other-keys)
6968 (substitute* '("test/bloom.c" "test/hashtable.c")
6969 (("/usr/share/dict/words")
6970 (search-input-file inputs "/share/web2")))))
6971 (add-after 'install 'install-more
6972 (lambda _
6973 (let* ((share (string-append #$output "/share/"))
6974 (desktop (string-append share
6975 "applications/netsurf.desktop")))
6976 (mkdir-p (dirname desktop))
6977 (copy-file "frontends/gtk/res/netsurf-gtk.desktop" desktop)
6978 (substitute* desktop
6979 (("netsurf-gtk")
6980 (string-append #$output "/bin/netsurf-gtk3"))
6981 (("netsurf.png")
6982 (string-append share "/netsurf/netsurf.xpm")))
6983 (install-file "docs/netsurf-gtk.1"
6984 (string-append share "man/man1/"))))))))
6985 (native-inputs
6986 (list netsurf-buildsystem
6987 nsgenbind
6988 libidn ;only for tests
6989 check
6990 perl
6991 perl-html-parser
6992 pkg-config
6993 xxd))
6994 (inputs
6995 (list curl
6996 gtk+
6997 openssl
6998 utf8proc
6999 libpng
7000 libjpeg-turbo
7001 libcss
7002 libdom
7003 libnsbmp
7004 libnsgif
7005 libnslog
7006 libnspsl
7007 libnsutils
7008 libsvgtiny
7009 miscfiles))
7010 (home-page "https://www.netsurf-browser.org")
7011 (synopsis "Web browser")
7012 (description
7013 "NetSurf is a lightweight web browser that has its own layout and
7014rendering engine entirely written from scratch. It is small and capable of
7015handling many of the web standards in use today.")
7016 (license license:gpl2+)))
7017
7018(define-public superhtml
7019 (package
7020 (name "superhtml")
7021 (version "0.6.2")
7022 (source (origin
7023 (method git-fetch)
7024 (uri (git-reference
7025 (url "https://github.com/kristoff-it/superhtml")
7026 (commit (string-append "v" version))))
7027 (file-name (git-file-name name version))
7028 (sha256
7029 (base32
7030 "1ii2c2ssjpg0f8yr19gi4knhly7xcbfxpwq7889b8k2mmzrxri6g"))
7031 (snippet
7032 (rename-zig-dependencies
7033 '(("known_folders" . "zig-known-folders")
7034 ("lsp_kit" . "zig-lsp-kit")
7035 ("scripty" . "zig-scripty")
7036 ("tracy" . "zig-tracy"))))))
7037 (build-system zig-build-system)
7038 (arguments (list #:zig zig-0.15
7039 #:install-source? #f))
7040 (inputs (list zig-known-folders-for-zig-0.15
7041 zig-lsp-kit-for-zig-0.15
7042 zig-scripty
7043 zig-tracy))
7044 (home-page "https://github.com/kristoff-it/superhtml")
7045 (synopsis "HTML validator, formatter, LSP, and templating language library")
7046 (description "SuperHTML is an HTML validator, formatter, @acronym{LSP,
7047Language Server Protocol}, and templating language library. It provides the
7048@command{superhtml} command that can validate and autoformat HTML files. The
7049tool can be used either directly (for example by running it on save), or
7050through a LSP client implementation.")
7051 (license license:expat)))
7052
7053(define-public surfraw
7054 (let ((commit "ebb8131c7c623ef90d3345cd9d64203693861013")
7055 (revision "0"))
7056 (package
7057 (name "surfraw")
7058 (version (git-version "2.3.0" revision commit))
7059 (source
7060 (origin
7061 (method git-fetch)
7062 (uri (git-reference
7063 (url "https://gitlab.com/surfraw/Surfraw/")
7064 (commit commit)))
7065 (file-name (git-file-name name version))
7066 (sha256
7067 (base32 "1y3qybbyv8fnfpaw76xkh1b53pd7dvx1zr9pj71df649g4kbbibs"))))
7068 (build-system gnu-build-system)
7069 (arguments
7070 `(#:phases (modify-phases %standard-phases
7071 (add-before 'configure 'patch-perl
7072 (lambda* (#:key inputs #:allow-other-keys)
7073 (let ((perl (assoc-ref inputs "perl")))
7074 (substitute* "surfraw.IN"
7075 (("perl -e")
7076 (string-append perl "/bin/perl -e"))) #t)))
7077 (add-after 'install 'compress-elvi.1sr
7078 (lambda* (#:key outputs #:allow-other-keys)
7079 ;; The manpages of the elvis are symlinks to elvi.1sr.gz
7080 ;; but elvi.1sr does not get compressed by our manpage phase.
7081 (let* ((out (assoc-ref %outputs "out"))
7082 (man (string-append out "/share/man/man1")))
7083 (with-directory-excursion man
7084 (invoke "gzip" "elvi.1sr"))))))))
7085 (native-inputs (list autoconf automake))
7086 (inputs (list perl perl-www-opensearch perl-html-parser perl-libwww))
7087 (synopsis "Unix command line interface to the www")
7088 (description
7089 "Surfraw (Shell Users' Revolutionary Front Rage Against the Web)
7090provides a unix command line interface to a variety of popular www search engines
7091and similar services.")
7092 (home-page "http://surfraw.org/")
7093 (license license:public-domain))))
7094
7095(define-public bookmarkfs
7096 (package
7097 (name "bookmarkfs")
7098 (version "0.1.4")
7099 (source (origin
7100 (method git-fetch)
7101 (uri (git-reference
7102 (url "https://codeberg.org/cismonx/bookmarkfs")
7103 (commit (string-append "v" version))))
7104 (file-name (git-file-name name version))
7105 (sha256
7106 (base32
7107 "0ad7h3ffwj7dg7c788znc8b0wr6v5xx83sans8xa6f93x9c56frm"))))
7108 (build-system gnu-build-system)
7109 (arguments (list
7110 #:tests? #f ; tests seem to not work in sandbox
7111 #:configure-flags #~(list
7112 "--enable-bookmarkfs-util"
7113 "--enable-bookmarkfs-mount"
7114 "--enable-bookmarkfs-fsck"
7115 "--enable-bookmarkfs-mkfs"
7116 "--enable-bookmarkctl"
7117 "--enable-backend-firefox"
7118 "--enable-backend-chromium"
7119 "--enable-fsck-handler-tcl")
7120 #:phases
7121 #~(modify-phases %standard-phases
7122 (add-before 'build 'patch-flush
7123 (lambda _
7124 (substitute* "src/fs_ops.c"
7125 (("fi->noflush = 1;") "fi->flush = 0;"))))
7126 (add-before 'configure 'patch-configure
7127 (lambda _
7128 (substitute* "configure"
7129 (("AX_PTHREAD") "")))))))
7130 (inputs (list fuse
7131 libseccomp
7132 nettle
7133 jansson
7134 readline
7135 tcl
7136 uriparser
7137 zlib
7138 xxhash
7139 sqlite))
7140 (native-inputs (list autoconf-2.72
7141 autoconf-archive
7142 automake
7143 libtool
7144 pkg-config))
7145 (home-page "https://www.nongnu.org/bookmarkfs/")
7146 (synopsis "FUSE filesystem based interface to the bookmark data of web browsers")
7147 (description "BookmarkFS is a FUSE-based pseudo-filesystem which provides an
7148interface to the bookmark data of web browsers.
7149
7150Currently, the following browsers (and their derivatives) are supported:
7151- @code{firefox}
7152- @code{chromium}.")
7153 (license license:gpl3+)))
7154
7155(define-public darkhttpd
7156 (package
7157 (name "darkhttpd")
7158 (version "1.17")
7159 (source
7160 (origin
7161 (method git-fetch)
7162 (uri (git-reference
7163 (url "https://github.com/emikulic/darkhttpd")
7164 (commit (string-append "v" version))))
7165 (file-name (git-file-name name version))
7166 (sha256
7167 (base32 "1i492a0g640hkpvmv3vdf8hy61kfc649y8myj7r5hva4im8l76kp"))))
7168 (build-system gnu-build-system)
7169 (arguments
7170 (list
7171 #:make-flags #~(list (string-append "CC=" #$(cc-for-target)))
7172 #:test-target "test"
7173 #:phases
7174 #~(modify-phases %standard-phases
7175 (delete 'configure) ; no configure script
7176 (replace 'install
7177 (lambda _
7178 (install-file "darkhttpd" (string-append #$output "/bin")))))))
7179 (native-inputs (list which python-minimal))
7180 (synopsis "Simple static web server")
7181 (description "darkhttpd is a simple static web server. It is
7182standalone and does not need inetd or ucspi-tcp. It does not need any
7183config files---you only have to specify the www root.")
7184 (home-page "https://unix4lyfe.org/darkhttpd/")
7185 (license license:isc)))
7186
7187(define-public goaccess
7188 (package
7189 (name "goaccess")
7190 (version "1.10.2")
7191 (source (origin
7192 (method url-fetch)
7193 (uri (string-append "http://tar.goaccess.io/goaccess-"
7194 version ".tar.gz"))
7195 (sha256
7196 (base32
7197 "03ma9v60nmqqzig76f6ilb05bjwxq7a7vp4jgly8cy9j8554idxr"))
7198 (modules '((guix build utils)))
7199 (snippet '(substitute* '("src/error.h"
7200 "src/parser.c")
7201 (("__DATE__") "\"1970-01-01\"")
7202 (("__TIME__") "\"00:00:00\"")))))
7203 (build-system gnu-build-system)
7204 (arguments
7205 (list
7206 #:configure-flags
7207 '(list "--enable-geoip=mmdb"
7208 "--enable-utf8"
7209 "--with-openssl"
7210 "--with-zlib")))
7211 (inputs
7212 (list glib ncurses libmaxminddb openssl zlib))
7213 (native-inputs
7214 (list pkg-config))
7215 (home-page "https://goaccess.io")
7216 (synopsis "Analyze Web server logs in real time")
7217 (description
7218 "GoAccess is a real-time web log analyzer and interactive viewer that
7219runs in a terminal or through your browser. It provides fast and valuable
7220HTTP statistics for system administrators that require a visual server report
7221on the fly.")
7222 (license license:x11)))
7223
7224(define-public hitch
7225 (package
7226 (name "hitch")
7227 (version "1.7.3")
7228 (home-page "https://hitch-tls.org/")
7229 (source (origin
7230 (method url-fetch)
7231 (uri (string-append home-page "source/hitch-" version ".tar.gz"))
7232 (sha256
7233 (base32
7234 "11wp50zs5irb5bj5xyanm060nlvna6ha328wqf6p2nvpbnaz86qs"))))
7235 (build-system gnu-build-system)
7236 (arguments
7237 `(#:phases (modify-phases %standard-phases
7238 (add-before 'check 'pre-check
7239 (lambda _
7240 ;; Our grep is compiled without perl regexp support. So,
7241 ;; rewrite the grep command to not use it. \t tab
7242 ;; characters are supported only in perl regexps. So,
7243 ;; put in literal tabs using printf instead.
7244 (substitute* "src/tests/test32-proxy-authority.sh"
7245 (("grep -Pq") "grep -q")
7246 (("extension:\\\\tdefault")
7247 "extension:$(printf '\\011')default"))
7248 ;; Most tests attempts to access hitch-tls.org which is
7249 ;; unavailable in the build container. Run them against
7250 ;; a dummy local web server instead.
7251 (for-each (lambda (test)
7252 (substitute* test
7253 (("\\[hitch-tls\\.org\\]:80")
7254 "[localhost]:8000")))
7255 (find-files "src/tests" "\\.sh$"))
7256 (system "python3 -m http.server &")
7257
7258 ;; The build container does not reap zombie processes,
7259 ;; causing stop_hitch to hang indefinitely while waiting
7260 ;; for the process to terminate because 'kill -0' never
7261 ;; succeeds. Use a different test to see whether the
7262 ;; process has shut down.
7263 (substitute* "src/tests/hitch_test.sh"
7264 (("kill -0 \"\\$HITCH_PID\"")
7265 "$(ps -p $HITCH_PID -o state= | grep -qv '^Z$')")))))))
7266 (native-inputs
7267 (list pkg-config
7268
7269 ;; For tests.
7270 curl
7271 grep
7272 lsof
7273 procps
7274 python))
7275 (inputs
7276 (list libev openssl))
7277 (synopsis "Scalable TLS proxy")
7278 (description
7279 "Hitch is a performant TLS proxy based on @code{libev}. It terminates
7280SSL/TLS connections and forwards the unencrypted traffic to a backend such
7281as a web server. It is designed to handle many thousand connections on
7282multicore machines.")
7283 (license license:bsd-2)))
7284
7285(define-public httptunnel
7286 (package
7287 (name "httptunnel")
7288 (version "3.3")
7289 (source
7290 (origin
7291 (method url-fetch)
7292 ;; git repository has no tags, so difficult to figure out which commit
7293 ;; corresponds to which version.
7294 (uri (string-append "https://www.nocrew.org/software/httptunnel/"
7295 name "-" version ".tar.gz"))
7296 (sha256
7297 (base32
7298 "0mn5s6p68n32xzadz6ds5i6bp44dyxzkq68r1yljlv470jr84bql"))
7299 (modules '((guix build utils)))
7300 ;; Remove non-free IETF RFC documentation.
7301 (snippet #~(delete-file-recursively "doc"))))
7302 (build-system gnu-build-system)
7303 (arguments
7304 (list
7305 #:phases
7306 #~(modify-phases %standard-phases
7307 ;; The default configure phase tries to pass environment variables as
7308 ;; command-line arguments, which confuses the ./configure script.
7309 (replace 'configure
7310 (lambda _
7311 (setenv "CONFIG_SHELL" (which "bash"))
7312 (setenv "CFLAGS" (string-append
7313 "-O2 -g "
7314 "-Wno-error=implicit-int "
7315 "-Wno-error=implicit-function-declaration"))
7316 (invoke "./configure"
7317 (string-append "--prefix=" #$output)))))))
7318 (home-page "https://www.nocrew.org/software/httptunnel.html")
7319 (synopsis "Tunnel data connections through HTTP requests")
7320 (description "httptunnel creates a bidirectional virtual data connection
7321tunnelled through HTTP (HyperText Transfer Protocol) requests. This can be
7322useful for users behind restrictive firewalls. As long as Web traffic is
7323allowed, even through a HTTP-only proxy, httptunnel can be combined with other
7324tools like SSH (Secure Shell) to reach the outside world.")
7325 (license license:gpl2+)))
7326
7327(define-public stunnel
7328 (package
7329 (name "stunnel")
7330 (version "5.75")
7331 (source
7332 (origin
7333 (method url-fetch)
7334 (uri (string-append "https://www.stunnel.org/downloads/stunnel-"
7335 version ".tar.gz"))
7336 (sha256
7337 (base32 "10snpaiq3xyijs3hxlf0qxs38f6njbxp9zllrgf78294hpnz07hc"))))
7338 (build-system gnu-build-system)
7339 (arguments
7340 (list #:configure-flags
7341 #~(list (string-append "--with-ssl="
7342 #$(this-package-input "openssl")))
7343 #:tests? (and (not (%current-target-system))
7344 (this-package-native-input "python-cryptography"))
7345 #:phases
7346 #~(modify-phases %standard-phases
7347 (add-after 'unpack 'patch-output-directories
7348 (lambda _
7349 ;; Some (not all) Makefiles have a hard-coded incorrect docdir.
7350 (substitute* (list "Makefile.in"
7351 "doc/Makefile.in"
7352 "tools/Makefile.in")
7353 (("/doc/stunnel")
7354 (string-append "/doc/" #$name "-" #$version)))))
7355 (add-after 'install 'prune-documentation
7356 (lambda _
7357 (let* ((doc (string-append #$output "/share/doc/"
7358 #$name "-" #$version)))
7359 (for-each delete-file (find-files doc "^INSTALL"))))))))
7360 (native-inputs
7361 ;; For tests.
7362 (if (supported-package? python-cryptography)
7363 (list iproute
7364 netcat
7365 procps
7366 python
7367 python-cryptography)
7368 '()))
7369 (inputs (list openssl perl))
7370 (home-page "https://www.stunnel.org")
7371 (synopsis "TLS proxy for clients or servers")
7372 (description "Stunnel is a proxy designed to add TLS encryption
7373functionality to existing clients and servers without any changes in the
7374programs' code. Its architecture is optimized for security, portability, and
7375scalability (including load-balancing), making it suitable for large
7376deployments.")
7377 (license license:gpl2+)))
7378
7379(define-public varnish
7380 (package
7381 (name "varnish")
7382 (home-page "https://varnish-cache.org/")
7383 (version "7.6.0")
7384 (source (origin
7385 (method url-fetch)
7386 (uri (string-append home-page "_downloads/varnish-" version ".tgz"))
7387 (sha256
7388 (base32
7389 "0p2xf4a8bk2w8j9q20fazrc93fwcfhw8zcvdd8ssbahvlg2q78mb"))))
7390 (build-system gnu-build-system)
7391 (arguments
7392 (append
7393 (if (target-x86-32?)
7394 '(#:make-flags
7395 (list "CFLAGS+=-fexcess-precision=standard"))
7396 '())
7397 (list
7398 #:configure-flags
7399 #~(list (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib")
7400 (string-append "CC=" #$(cc-for-target))
7401 ;; Use absolute path of GCC so it's found at runtime.
7402 (string-append "PTHREAD_CC="
7403 (search-input-file %build-inputs
7404 "/bin/gcc"))
7405 "--localstatedir=/var")
7406 #:phases
7407 #~(modify-phases %standard-phases
7408 (add-after 'unpack 'use-absolute-file-names
7409 (lambda _
7410 (substitute* '("bin/varnishtest/vtc_varnish.c"
7411 "bin/varnishtest/vtc_process.c"
7412 "bin/varnishtest/vtc_haproxy.c"
7413 "bin/varnishtest/tests/u00014.vtc"
7414 "bin/varnishd/mgt/mgt_vcc.c")
7415 (("/bin/sh") (which "bash")))
7416 (let* ((rm (which "rm")))
7417 (substitute* "bin/varnishd/mgt/mgt_shmem.c"
7418 (("rm -rf") (string-append rm " -rf")))
7419 (substitute* "bin/varnishtest/vtc_main.c"
7420 (("/bin/rm") rm))
7421 (substitute* "bin/varnishd/mgt/mgt_main.c"
7422 (("rm -rf") (string-append rm " -rf"))))
7423 (substitute* "bin/varnishtest/tests/u00000.vtc"
7424 (("/bin/echo") (which "echo")))))
7425 (add-after 'unpack 'remove-failing-tests
7426 (lambda _
7427 ;; This test seems to fail because of
7428 ;; Failed: Servname not supported for ai_socktype
7429 (delete-file "bin/varnishtest/tests/b00085.vtc")))
7430 (add-before 'install 'patch-Makefile
7431 (lambda _
7432 (substitute* "Makefile"
7433 ;; Do not create /var/varnish during install.
7434 (("^install-data-am: install-data-local")
7435 "install-data-am: "))))
7436 (add-after 'install 'wrap-varnishd
7437 ;; Varnish uses GCC to compile VCL, so wrap it with required GCC
7438 ;; environment variables to avoid propagating them to profiles.
7439 (lambda* (#:key inputs #:allow-other-keys)
7440 (wrap-program (string-append #$output "/sbin/varnishd")
7441 ;; Add binutils to PATH so gcc finds the 'as' executable.
7442 `("PATH" ":" prefix (,(dirname (which "as"))))
7443 ;; Make sure 'crti.o' et.al is found.
7444 `("LIBRARY_PATH" ":" prefix
7445 (,(dirname
7446 (search-input-file inputs "lib/libc.so")))))))))))
7447 (native-inputs
7448 (list pkg-config
7449 python-sphinx
7450 python-docutils))
7451 (inputs
7452 (list bash-minimal
7453 coreutils-minimal
7454 jemalloc
7455 ncurses
7456 pcre2
7457 python-minimal
7458 readline))
7459 (synopsis "Web application accelerator")
7460 (description
7461 "Varnish is a high-performance HTTP accelerator. It acts as a caching
7462reverse proxy and load balancer. You install it in front of any server that
7463speaks HTTP and configure it to cache the contents through an extensive
7464configuration language.")
7465 (properties
7466 '((release-monitoring-url . "https://varnish-cache.org/releases/index.html")))
7467 (license (list license:bsd-2 ;main distribution
7468 license:zlib ;lib/libvgz/*
7469 license:public-domain ;bin/varnishncsa/as64.c, include/miniobj.h
7470 license:bsd-3)))) ;include/vqueue.h, lib/libvarnishcompat/daemon.c
7471
7472(define-public varnish-modules
7473 (package
7474 (name "varnish-modules")
7475 (home-page "https://github.com/varnish/varnish-modules")
7476 (version "0.25.0")
7477 (source (origin
7478 (method git-fetch)
7479 (uri (git-reference (url home-page) (commit version)))
7480 (file-name (git-file-name name version))
7481 (sha256
7482 (base32
7483 "1jan3lwynp14awh6jk4zc052lm8m02vqms8ryc7zmjnm5jifdzlv"))))
7484 (build-system gnu-build-system)
7485 (native-inputs
7486 (list pkg-config
7487 ;; For bootstrapping.
7488 autoconf
7489 automake
7490 libtool
7491 ;; For generating manuals.
7492 python-docutils))
7493 (inputs
7494 (list python varnish))
7495 (synopsis "Collection of Varnish modules")
7496 (description
7497 "This package provides a collection of modules (@dfn{vmods}) for the Varnish
7498cache server, extending the @acronym{VCL, Varnish Configuration Language} with
7499additional capabilities.")
7500 (license license:bsd-2)))
7501
7502(define-public xinetd
7503 (package
7504 (name "xinetd")
7505 ;; This is the maintenance fork currently used by openSUSE and Debian.
7506 (version "2.3.15.4")
7507 (source
7508 (origin
7509 (method git-fetch)
7510 (uri (git-reference
7511 (url "https://github.com/openSUSE/xinetd")
7512 (commit version)))
7513 (file-name (git-file-name name version))
7514 (sha256
7515 (base32 "0lrp3lcj6azhjplwxws2rx40bkyp6i6bp7n77ndcisb7ninad30q"))))
7516 (build-system gnu-build-system)
7517 (arguments
7518 `(#:configure-flags '("--with-loadavg")
7519 #:tests? #f)) ; no tests
7520 (native-inputs
7521 (list autoconf automake libtool pkg-config))
7522 (home-page "https://github.com/openSUSE/xinetd")
7523 (synopsis "Internet services daemon")
7524 (description "@code{xinetd}, a more secure replacement for @code{inetd},
7525listens for incoming requests over a network and launches the appropriate
7526service for that request. Requests are made using port numbers as identifiers
7527and xinetd usually launches another daemon to handle the request. It can be
7528used to start services with both privileged and non-privileged port numbers.")
7529 (license (license:fsf-free "file://COPYRIGHT"))))
7530
7531(define-public tidy-html
7532 (package
7533 (name "tidy-html")
7534 (version "5.8.0")
7535 (source
7536 (origin
7537 (method git-fetch)
7538 (uri (git-reference
7539 (url "https://github.com/htacg/tidy-html5")
7540 (commit version)))
7541 (file-name (git-file-name name version))
7542 (sha256
7543 (base32
7544 "1vd50q6xqxvidaclinsm89p6r0494wj72j1gpk32vkkhhx15cddz"))))
7545 (build-system cmake-build-system)
7546 (outputs '("out"
7547 "static")) ; 1.3MiB of .a files
7548 (arguments
7549 `(#:tests? #f ; no tests available
7550 #:build-type "Release"
7551 #:phases
7552 (modify-phases %standard-phases
7553 (add-after 'install 'move-static-libraries
7554 (lambda* (#:key outputs #:allow-other-keys)
7555 ;; Move static libraries to the "static" output.
7556 (let* ((out (assoc-ref outputs "out"))
7557 (lib (string-append out "/lib"))
7558 (static (assoc-ref outputs "static"))
7559 (slib (string-append static "/lib")))
7560 (mkdir-p slib)
7561 (for-each (lambda (file)
7562 (install-file file slib)
7563 (delete-file file))
7564 (find-files lib "\\.a$"))
7565 #t))))))
7566 (native-inputs
7567 (list libxslt))
7568 (home-page "https://www.html-tidy.org/")
7569 (synopsis "HTML Tidy with HTML5 support")
7570 (description
7571 "Tidy is a console application which corrects and cleans up
7572HTML and XML documents by fixing markup errors and upgrading
7573legacy code to modern standards.
7574
7575Tidy also provides @code{libtidy}, a C static and dynamic library that
7576developers can integrate into their applications to make use of the
7577functions of Tidy.")
7578 (license license:bsd-3)))
7579
7580(define-public hiawatha
7581 (package
7582 (name "hiawatha")
7583 (version "11.2")
7584 (source
7585 (origin
7586 (method url-fetch)
7587 (uri (string-append "https://www.hiawatha-webserver.org/files/"
7588 "hiawatha-" version ".tar.gz"))
7589 (sha256
7590 (base32 "1i8vrxbvpcj6yxmshbg19gm9g8vrxds6pdra0sgld4vzj9v4zilr"))))
7591 (build-system cmake-build-system)
7592 (arguments
7593 `(#:tests? #f ; no tests included
7594 #:configure-flags (list (string-append "-DUSE_SYSTEM_MBEDTLS=on")
7595 (string-append "-DENABLE_HTTP2=on")
7596 (string-append "-DUSE_SYSTEM_NGHTTP2=on")
7597 (string-append "-DENABLE_TOMAHAWK=on")
7598 (string-append "-DLOG_DIR=/var/log/hiawatha")
7599 (string-append "-DPID_DIR=/run")
7600 (string-append "-DWEBROOT_DIR="
7601 (assoc-ref %outputs "out")
7602 "/share/hiawatha/html")
7603 (string-append "-DWORK_DIR=/var/lib/hiawatha"))
7604 #:phases
7605 (modify-phases %standard-phases
7606 (add-after 'unpack 'install-no-empty-directories
7607 (lambda _
7608 (substitute* "CMakeLists.txt"
7609 (("install\\(DIRECTORY DESTINATION" match)
7610 (string-append "#" match)))
7611 #t))
7612 (add-after 'install 'wrap
7613 (lambda* (#:key inputs outputs #:allow-other-keys)
7614 ;; Make sure 'hiawatha' finds 'mbedtls'.
7615 (let* ((out (assoc-ref outputs "out"))
7616 (sbin (string-append out "/sbin"))
7617 (mbed (assoc-ref inputs "mbedtls")))
7618 (wrap-program (string-append sbin "/hiawatha")
7619 `("PATH" ":" prefix (,mbed)))))))))
7620 (inputs
7621 ;; TODO: package "hiawatha-monitor", an optional dependency of "hiawatha".
7622 (list bash-minimal libxcrypt libxslt libxml2 mbedtls-for-hiawatha
7623 `(,nghttp2 "lib") zlib))
7624 (home-page "https://www.hiawatha-webserver.org")
7625 (synopsis "Webserver with focus on security")
7626 (description
7627 "Hiawatha has been written with security in mind.
7628Features include the ability to stop SQL injections, XSS and CSRF attacks and
7629exploit attempts.")
7630 (license license:gpl2)))
7631
7632(define-public python-httpbin
7633 (package
7634 (name "python-httpbin")
7635 (version "0.10.2")
7636 (source
7637 (origin
7638 (method url-fetch)
7639 (uri (pypi-uri "httpbin" version))
7640 (sha256
7641 (base32 "1a8pcf6411pqkpl3c5z93wml0nw4xb6j9dnjl976ij31h9llh8b3"))))
7642 (build-system pyproject-build-system)
7643 (native-inputs
7644 (list python-pytest
7645 python-setuptools))
7646 (propagated-inputs
7647 (list python-brotlicffi
7648 python-decorator
7649 python-flasgger
7650 python-flask
7651 python-greenlet
7652 python-itsdangerous
7653 python-markupsafe
7654 python-six
7655 python-werkzeug))
7656 ;; The archive in PyPI points to a fork of
7657 ;; <https://github.com/postmanlabs/httpbin> which is unmaintained for 6y,
7658 ;; where <https://github.com/Runscope/httpbin> rediects to. See
7659 ;; <https://github.com/postmanlabs/httpbin/issues/719>
7660 (home-page "https://github.com/psf/httpbin")
7661 (synopsis "HTTP request and response service")
7662 (description
7663 "Testing an HTTP Library can become difficult sometimes.
7664@code{RequestBin} is fantastic for testing POST requests, but doesn't let you
7665control the response. This exists to cover all kinds of HTTP scenarios. All
7666endpoint responses are JSON-encoded.")
7667 (license license:isc)))
7668
7669(define-public python-pytest-httpbin
7670 ;; TODO: Move to (gnu packages python-check).
7671 (package
7672 (name "python-pytest-httpbin")
7673 (version "2.1.0")
7674 (source
7675 (origin
7676 (method git-fetch)
7677 (uri (git-reference
7678 (url "https://github.com/kevin1024/pytest-httpbin")
7679 (commit (string-append "v" version))))
7680 (file-name (git-file-name name version))
7681 (sha256
7682 (base32 "1d5r21mr6cfwfqgjfrh35sjidkaq4nbihp34y0n29ag943ar8i40"))))
7683 (build-system pyproject-build-system)
7684 (native-inputs
7685 (list python-pytest-bootstrap
7686 python-requests
7687 python-setuptools))
7688 (propagated-inputs
7689 (list python-httpbin))
7690 (home-page "https://github.com/kevin1024/pytest-httpbin")
7691 (synopsis "Test your HTTP library against a local copy of httpbin")
7692 (description
7693 "@code{Pytest-httpbin} creates a @code{pytest} fixture that is
7694dependency-injected into your tests. It automatically starts up a HTTP server
7695in a separate thread running @code{httpbin} and provides your test with the
7696URL in the fixture.")
7697 (license license:expat)))
7698
7699(define-public http-parser
7700 (let ((commit "ec8b5ee63f0e51191ea43bb0c6eac7bfbff3141d")
7701 (revision "1"))
7702 (package
7703 (name "http-parser")
7704 (version (git-version "2.9.4" revision commit))
7705 (home-page "https://github.com/nodejs/http-parser")
7706 (source
7707 (origin
7708 (method git-fetch)
7709 (uri (git-reference (url home-page)
7710 (commit commit)))
7711 (sha256
7712 (base32 "0f297hrbx0kvy3qwgm9rhmbnjww6iljlcz9grsc9d4km1qj1071i"))
7713 (file-name (git-file-name name version))
7714 (patches
7715 (append
7716 (search-patches "http-parser-CVE-2020-8287.patch")
7717 (list
7718 (origin
7719 ;; Treat an empty port (e.g. `http://hostname:/`) when parsing
7720 ;; URLs as if no port were specified. This patch is applied
7721 ;; to Fedora's http-parser and to libgit2's bundled version.
7722 (method url-fetch)
7723 (uri (string-append
7724 "https://src.fedoraproject.org/rpms/http-parser/raw/"
7725 "e89b4c4e2874c19079a5a1a2d2ccc61b551aa289/"
7726 "f/0001-url-treat-empty-port-as-default.patch"))
7727 (sha256
7728 (base32
7729 "0pbxf2nq9pcn299k2b2ls8ldghaqln9glnp79gi57mamx4iy0f6g"))))))
7730 (modules '((guix build utils)))
7731 (snippet
7732 '(begin
7733 ;; This assertion fails when building for i686-linux.
7734 (substitute* "test.c"
7735 (("assert\\(sizeof\\(http_parser\\) == 32\\);")
7736 "assert(1);"))
7737 #t))))
7738 (build-system gnu-build-system)
7739 (arguments
7740 `(#:test-target "test"
7741 #:make-flags
7742 (list (string-append "PREFIX="
7743 (assoc-ref %outputs "out"))
7744 "library"
7745 ,@(if (%current-target-system)
7746 '()
7747 '("CC=gcc")))
7748 #:phases
7749 (modify-phases %standard-phases
7750 ,@(if (%current-target-system)
7751 '((replace 'configure
7752 (lambda* (#:key target #:allow-other-keys)
7753 (substitute* (find-files "." "Makefile")
7754 (("CC\\?=.*$")
7755 (string-append "CC=" target "-gcc\n"))
7756 (("AR\\?=.*$")
7757 (string-append "AR=" target "-ar\n")))
7758 #t)))
7759 '((delete 'configure))))))
7760 (synopsis "HTTP request/response parser for C")
7761 (description "This is a parser for HTTP messages written in C. It
7762parses both requests and responses. The parser is designed to be used in
7763high-performance HTTP applications. It does not make any syscalls nor
7764allocations, it does not buffer data, it can be interrupted at anytime.
7765Depending on your architecture, it only requires about 40 bytes of data per
7766message stream (in a web server that is per connection).")
7767 (license license:expat))))
7768
7769(define-public llhttp
7770 (package
7771 (name "llhttp")
7772 (version "9.1.3")
7773 (source (origin
7774 (method git-fetch)
7775 (uri (git-reference
7776 (url "https://github.com/nodejs/llhttp")
7777 (commit (string-append "release/v" version))))
7778 (file-name (git-file-name name version))
7779 (sha256
7780 (base32
7781 "1nkv64c5fs8x6n5f9f6g28w5hvg776p55cwa0f82ni548nx279s1"))))
7782 (build-system cmake-build-system)
7783 (arguments (list #:tests? #f)) ;FIXME: tests depend on node-mocha
7784 (home-page "https://github.com/nodejs/llhttp")
7785 (synopsis "Port of http_parser to llparse")
7786 (description "@code{llparse} is a port of @code{http_parser} to
7787@code{llparse} which aims making it more maintainable, verifiable and
7788efficient where possible.")
7789 (license license:expat)))
7790
7791(define-public jo
7792 (package
7793 (name "jo")
7794 (version "1.9")
7795 (source
7796 (origin
7797 (method url-fetch)
7798 (uri (string-append "https://github.com/jpmens/jo/releases/download/"
7799 version "/jo-" version ".tar.gz"))
7800 (sha256
7801 (base32 "17y73657z5v792ik3plcvk9f5g5h2yawv6afahhkq42159pwv581"))))
7802 (build-system gnu-build-system)
7803 (home-page "https://github.com/jpmens/jo")
7804 (synopsis "Output JSON from a shell")
7805 (description "@command{jo} is a command-line utility to create JSON objects
7806or arrays. It creates a JSON string on stdout from words provided as
7807command-line arguments or read from stdin.")
7808 (license (list license:gpl2+
7809 license:expat)))) ; json.c, json.h
7810
7811(define-public python-internetarchive
7812 (package
7813 (name "python-internetarchive")
7814 (version "5.11.1")
7815 (source
7816 (origin
7817 (method git-fetch)
7818 (uri (git-reference
7819 (url "https://github.com/jjjake/internetarchive")
7820 (commit (string-append "v" version))))
7821 (file-name (git-file-name name version))
7822 (sha256
7823 (base32
7824 "1l71qyhmhfwyb4zqprkg4585wsbarnryhbk6rh5idh835yj17d1b"))))
7825 (build-system pyproject-build-system)
7826 (arguments
7827 (list
7828 #:test-flags
7829 ;; Run only the offline test suite.
7830 '(list "-m" "not network")))
7831 (propagated-inputs
7832 (list python-jsonpatch
7833 python-requests
7834 python-schema
7835 python-tqdm
7836 python-urllib3))
7837 (native-inputs
7838 (list nss-certs-for-test
7839 python-pytest
7840 python-responses
7841 python-setuptools
7842 python-wheel))
7843 (home-page "https://github.com/jjjake/internetarchive")
7844 (synopsis "Command-line interface to archive.org")
7845 (description "@code{ia} is a command-line tool for using
7846@url{archive.org} from the command-line. It also implements the
7847internetarchive python module for programmatic access to archive.org.")
7848 (license license:agpl3+)))
7849
7850(define-public python-clf
7851 (let ((commit-test-clf "d01d25923c599d3261910f79fb948825b4270d07")) ; 0.5.7
7852 (package
7853 (name "python-clf")
7854 (version "0.5.7")
7855 (source
7856 (origin
7857 (method url-fetch)
7858 (uri (pypi-uri "clf" version))
7859 (sha256
7860 (base32
7861 "0zlkzqnpz7a4iavsq5vaz0nf5nr7qm5znpg1vlpz6rwnx6hikjdb"))))
7862 (build-system pyproject-build-system)
7863 (arguments
7864 (list
7865 #:test-flags
7866 #~(list
7867 ;; These tests require an Internet connection.
7868 "--exclude=test_browse"
7869 "--exclude=test_command"
7870 "--exclude=test_search")
7871 #:phases
7872 #~(modify-phases %standard-phases
7873 (add-after 'unpack 'get-tests
7874 (lambda* (#:key inputs #:allow-other-keys)
7875 (copy-file (assoc-ref inputs "test-clf") "test_clf.py"))))))
7876 (propagated-inputs
7877 (list python-docopt
7878 python-pygments
7879 python-requests))
7880 (inputs
7881 `(("test-clf"
7882 ,(origin
7883 (method url-fetch)
7884 (uri (string-append "https://raw.githubusercontent.com"
7885 "/ncrocfer/clf/" commit-test-clf
7886 "/test_clf.py"))
7887 (sha256
7888 (base32
7889 "19lr5zdzsmxgkg7wrjq1yzkiahd03wi4k3dskssyhmjls8c10nqd"))))))
7890 (native-inputs (list python-pynose python-setuptools))
7891 (home-page "https://github.com/ncrocfer/clf")
7892 (synopsis "Search code snippets on @url{https://commandlinefu.com}")
7893 (description "@code{clf} is a command line tool for searching code
7894snippets on @url{https://commandlinefu.com}.")
7895 (license license:expat))))
7896
7897(define-public nntpit
7898 (let ((commit "c0d654736460d174a680b2e06c3a81ce883fc09a")
7899 (revision "0"))
7900 (package
7901 (name "nntpit")
7902 (version (git-version "0" revision commit))
7903 (source (origin
7904 (method git-fetch)
7905 (uri (git-reference
7906 (url "https://github.com/taviso/nntpit")
7907 (commit commit)))
7908 (file-name (git-file-name name version))
7909 (sha256
7910 (base32
7911 "1kkdh2qpkfw97hzw9jsxy5jzmhhv8261bj63mvr5c9qwlp6qs46g"))))
7912 (build-system gnu-build-system)
7913 (native-inputs (list autoconf automake glib pkg-config))
7914 (inputs (list curl json-c libev))
7915 (synopsis "Minimal reddit2nntp gateway server")
7916 (description
7917 "This is a simple reddit2nntp gateway server that lets you use a newsreader
7918 to follow discussions on reddit. The intention is for you to run it locally,
7919 tell your newsreader to connect to localhost, and subreddits will appear as newsgroups!")
7920 (home-page "https://github.com/taviso/nntpit")
7921 (license license:expat))))
7922
7923(define-public rdrview
7924 (package
7925 (name "rdrview")
7926 (version "0.1.5")
7927 (source
7928 (origin
7929 (method git-fetch)
7930 (uri (git-reference
7931 (url "https://github.com/eafer/rdrview")
7932 (commit (string-append "v" version))))
7933 (file-name (git-file-name name version))
7934 (sha256
7935 (base32 "115qc7qpq899jzkna28brjni0m2a50g1li52kg9pqykgsp15f6z4"))))
7936 (build-system gnu-build-system)
7937 (arguments
7938 (list
7939 #:tests? #f ;they seem to require user input.
7940 #:make-flags
7941 #~(list (string-append "CC=" #$(cc-for-target))
7942 (string-append "PREFIX=" #$output))
7943 #:phases
7944 #~(modify-phases %standard-phases
7945 (delete 'configure))))
7946 (inputs (list curl libseccomp libxml2))
7947 (home-page "https://github.com/eafer/rdrview")
7948 (synopsis "Firefox reader view as a command line tool")
7949 (description
7950 "@code{rdrview} is command line tool to extract the main content from a
7951webpage, as done by the reader view feature of most modern browsers.")
7952 (license license:apsl2)))
7953
7954(define-public rss-bridge
7955 (package
7956 (name "rss-bridge")
7957 (version "2020-11-10")
7958 (source
7959 (origin
7960 (method git-fetch)
7961 (uri (git-reference
7962 (url "https://github.com/RSS-Bridge/rss-bridge")
7963 (commit version)))
7964 (file-name (git-file-name name version))
7965 (sha256
7966 (base32 "1mir6mcm37sbdrhl5kgs6schpp3l4r5mfamhiic0yfbz4hqwmg44"))))
7967 (build-system copy-build-system)
7968 (arguments
7969 '(#:install-plan
7970 '(("." "share/rss-bridge"))
7971 #:phases
7972 (modify-phases %standard-phases
7973 ;;Change paths to not use source directory.
7974 (add-before 'install 'patch-paths
7975 (lambda _
7976 (substitute* "lib/rssbridge.php"
7977 (("PATH_ROOT . 'cache/'")
7978 "'/var/cache/rss-bridge/'")
7979 (("PATH_ROOT . 'whitelist.txt'")
7980 "'/etc/rss-bridge/whitelist.txt'")
7981 (("PATH_ROOT . 'config.ini.php'")
7982 "'/etc/rss-bridge/config.ini.php'")))))))
7983 (home-page "https://github.com/RSS-Bridge/rss-bridge")
7984 (synopsis "Generate Atom feeds for social networking websites")
7985 (description "rss-bridge generates Atom feeds for social networking
7986websites lacking feeds. Supported websites include Facebook, Twitter,
7987Instagram and YouTube.")
7988 (license (list license:public-domain
7989 license:expat)))) ; vendor/simplehtmldom/simple_html_dom.php
7990
7991(define-public linkchecker
7992 (package
7993 (name "linkchecker")
7994 (version "10.5.0")
7995 (source
7996 (origin
7997 (method git-fetch)
7998 (uri (git-reference
7999 (url "https://github.com/linkchecker/linkchecker")
8000 (commit (string-append "v" version))))
8001 (file-name (git-file-name name version))
8002 (sha256
8003 (base32 "19giahk5bs2r2ay54cc6b2ba5hr3lszn5a89m7zmwb0bk9655z56"))))
8004 (build-system pyproject-build-system)
8005 (arguments
8006 (list
8007 #:test-flags
8008 #~(list
8009 ;; OSError: Command ... '-m', 'linkcheck', '-V']' returned non-zero
8010 ;; exit status 2.
8011 "--deselect=tests/test_linkchecker.py::TestLinkchecker::test_linkchecker"
8012 ;; FileNotFoundError: [Errno 2] No such file or directory: 'msgfmt'
8013 "--deselect=tests/test_po.py::TestPo::test_pos")))
8014 (native-inputs
8015 (list python-hatch-vcs
8016 python-hatchling
8017 python-pytest
8018 python-setuptools-scm))
8019 (inputs
8020 (list python-beautifulsoup4
8021 python-dnspython
8022 python-requests))
8023 (home-page "https://linkchecker.github.io/linkchecker/")
8024 (synopsis "Check websites for broken links")
8025 (description "LinkChecker is a website validator. It checks for broken
8026links in websites. It is recursive and multithreaded providing output in
8027colored or normal text, HTML, SQL, CSV, XML or as a sitemap graph. It
8028supports checking HTTP/1.1, HTTPS, FTP, mailto, news, nntp, telnet and local
8029file links.")
8030 (license (list license:gpl2+
8031 license:bsd-2 ; linkcheck/better_exchook2.py
8032 license:bsd-3 ; linkcheck/colorama.py
8033 license:psfl ; linkcheck/gzip2.py
8034 license:expat)))) ; linkcheck/mem.py
8035
8036(define-public castor
8037 (package
8038 (name "castor")
8039 (version "0.9.0")
8040 (source
8041 (origin
8042 (method git-fetch)
8043 (uri (git-reference
8044 (url "https://git.sr.ht/~julienxx/castor")
8045 (commit version)))
8046 (file-name (git-file-name name version))
8047 (sha256
8048 (base32 "1gda77ya2qbmjxfbw3yfr64inm8xw8243iwnfsgwwiwl35pw70n9"))))
8049 (build-system cargo-build-system)
8050 (arguments
8051 (list
8052 #:phases
8053 #~(modify-phases %standard-phases
8054 (add-after 'unpack 'relax-cargo-requirements
8055 (lambda _
8056 (substitute* "Cargo.toml" (("~") ""))))
8057 (add-after 'install 'install-data
8058 (lambda _
8059 (invoke "make" (string-append "PREFIX=" #$output)
8060 "copy-data"))))
8061 #:parallel-tests? #f ; As per the Makefile
8062 #:install-source? #f))
8063 (native-inputs
8064 (list pkg-config))
8065 (inputs
8066 (cons* at-spi2-core
8067 cairo
8068 gdk-pixbuf
8069 gtk+
8070 openssl
8071 pango
8072 (cargo-inputs 'castor)))
8073 (home-page "https://git.sr.ht/~julienxx/castor")
8074 (synopsis "Graphical client for plain-text protocols")
8075 (description
8076 "Castor is a graphical client for plain-text protocols written in
8077Rust with GTK. It currently supports the Gemini, Gopher and Finger
8078protocols.")
8079 (license license:expat)))
8080
8081(define-public civetweb
8082 (package
8083 (name "civetweb")
8084 (version "1.16")
8085 (source
8086 (origin
8087 (method git-fetch)
8088 (uri (git-reference
8089 (url "https://github.com/civetweb/civetweb")
8090 (commit (string-append "v" version))))
8091 (file-name (git-file-name name version))
8092 (sha256
8093 (base32 "1rdajgr0243ma8sg7qn03v6f8pnbj9w2dghi751zrdg1d1zzjxkr"))))
8094 (build-system cmake-build-system)
8095 (arguments
8096 (list
8097 #:tests? #f
8098 #:configure-flags
8099 #~(list "-DBUILD_SHARED_LIBS=ON"
8100 "-DCIVETWEB_ENABLE_CXX=ON"
8101 "-DCIVETWEB_ENABLE_ZLIB=ON"
8102 ;; The tests rely on downloading their fork of Check.
8103 "-DCIVETWEB_BUILD_TESTING=OFF")))
8104 (inputs (list zlib))
8105 (home-page "https://github.com/civetweb/civetweb")
8106 (synopsis "C/C++ embeddable web server")
8107 (description
8108 "CivetWeb is a web server with optional @acronym{CGI, Common Gateway
8109Interface} and @acronym{SSL, Secure Sockets Layer} support. It can be
8110embedded into C/C++ applications or used as a standalone web server.")
8111 (license license:expat)))
8112
8113(define-public copyparty
8114 (package
8115 (name "copyparty")
8116 (version "1.20.16")
8117 (source
8118 (origin
8119 (method git-fetch)
8120 (uri (git-reference
8121 (url "https://github.com/9001/copyparty")
8122 (commit (string-append "v" version))))
8123 (sha256
8124 (base32 "01jhj8kb6xh50401qfrcgbyvq6xyngjnqxaj0f6hi1vmy78kq9j4"))
8125 (modules '((guix build utils)))
8126 (snippet
8127 ;; The modules in this directory are meant to be de-vendorable.
8128 #~(delete-file-recursively "copyparty/stolen"))))
8129 (build-system pyproject-build-system)
8130 (arguments
8131 (list #:test-backend #~'unittest))
8132 (native-inputs
8133 (list python-setuptools))
8134 (propagated-inputs
8135 (list python-dnslib
8136 python-ifaddr
8137 python-jinja2
8138 python-mfusepy
8139 python-qrcodegen))
8140 (home-page "https://github.com/9001/copyparty")
8141 (synopsis "Portable file server")
8142 (description
8143 "@code{copyparty} is a file server featuring fast, resumable uploads,
8144deduplication, WebDAV, FTP/TFTP, SMP/CIFS, upnp/zeroconf/mdns, video
8145thumbnails, audio streaming with transcoding, search, and account-based access
8146control.")
8147 (license license:expat)))
8148
8149(define-public python-py-ubjson
8150 (package
8151 (name "python-py-ubjson")
8152 (version "0.16.1")
8153 (source
8154 (origin
8155 (method git-fetch)
8156 (uri (git-reference
8157 (url "https://github.com/Iotic-Labs/py-ubjson/")
8158 (commit (string-append "v" version))))
8159 (file-name (git-file-name name version))
8160 (sha256
8161 (base32 "1frn97xfa88zrfmpnvdk1pc03yihlchhph99bhjayvzlfcrhm5v3"))
8162 (patches
8163 (search-patches "python-py-ubjson-recursion-test.patch"))))
8164 (build-system pyproject-build-system)
8165 (arguments (list #:test-backend #~'unittest))
8166 (native-inputs (list python-setuptools))
8167 (home-page "https://github.com/Iotic-Labs/py-ubjson")
8168 (synopsis "Universal Binary JSON encoder/decoder")
8169 (description
8170 "Py-ubjson is a Python module providing an Universal Binary JSON
8171encoder/decoder based on the draft-12 specification for UBJSON.")
8172 (license license:asl2.0)))
8173
8174(define-public java-tomcat
8175 (package
8176 (name "java-tomcat")
8177 (version "8.5.63")
8178 (source (origin
8179 (method url-fetch)
8180 (uri (string-append "mirror://apache/tomcat/tomcat-8/v"
8181 version "/src/apache-tomcat-" version "-src.tar.gz"))
8182 (sha256
8183 (base32
8184 "1wr6mpgbk2gs18vp8mdggiq6vifj68a875dd1fkdf7cs31q54rns"))
8185 (modules '((guix build utils)))
8186 ;; Delete bundled jars.
8187 (snippet
8188 '(begin
8189 (for-each delete-file (find-files "." "\\.jar$"))
8190 (for-each delete-file (find-files "." "\\.bat$"))
8191 #t))))
8192 (build-system ant-build-system)
8193 (inputs
8194 (list java-commons-daemon java-ecj))
8195 (arguments
8196 `(#:build-target "deploy"
8197 #:tests? #f; requires downloading some files.
8198 #:phases
8199 (modify-phases %standard-phases
8200 (add-after 'unpack 'prevent-download
8201 (lambda _
8202 ;; This directory must exist
8203 (mkdir "downloads")
8204 ;; We patch build.xml so it doesn't download any dependency, because
8205 ;; we already have all of them.
8206 (substitute* "build.xml"
8207 (("download-compile,") "")
8208 (("depends=\"validate\"") "depends=\"build-prepare\"")
8209 ((",download-validate") ""))
8210 #t))
8211 (add-after 'unpack 'strip-timestamps
8212 (lambda _
8213 (substitute* "build.xml"
8214 (("<filter token=\"YEAR\" value=.*")
8215 "<filter token=\"YEAR\" value=\"1970\"/>")
8216 (("<filter token=\"VERSION_BUILT\" value=.*")
8217 "<filter token=\"VERSION_BUILT\" value=\"Jan 1 1970 00:00:00 UTC\"/>"))
8218 #t))
8219 (add-after 'unpack 'modify-deploy
8220 (lambda _
8221 ;; The Tomcat build downloads and copies these files to the
8222 ;; bin and lib directory.
8223 ;; We instead symlink to the input (see below).
8224 (substitute* "build.xml"
8225 (("<copy tofile=\"\\$\\{tomcat.build\\}/bin/commons-daemon.jar.*") "")
8226 (("<copy file=\"\\$\\{jdt.jar\\}\" todir=\"\\$\\{tomcat.build\\}/lib\"/>")
8227 ""))
8228 #t))
8229 (add-after 'install 'symlink-commons-daemon
8230 (lambda* (#:key inputs outputs #:allow-other-keys)
8231 (let* ((commons-daemon (assoc-ref inputs "java-commons-daemon"))
8232 (files (find-files commons-daemon "commons-daemon-.*\\.jar"))
8233 (daemon-jar (car files))
8234 (out-bin (string-append (assoc-ref outputs "out") "/bin"))
8235 (target (string-append out-bin "/commons-daemon.jar")))
8236 (symlink daemon-jar target)
8237 #t)))
8238 (add-after 'install 'symlink-java-ecj
8239 (lambda* (#:key inputs outputs #:allow-other-keys)
8240 (let* ((java-ecj (assoc-ref inputs "java-ecj"))
8241 (files (find-files java-ecj "ecj.*\\.jar"))
8242 (java-ecj-jar (car files))
8243 (out-lib (string-append (assoc-ref outputs "out") "/lib"))
8244 (target (string-append out-lib "/java-ecj.jar")))
8245 (symlink java-ecj-jar target)
8246 #t)))
8247 (add-after 'unpack 'generate-properties
8248 (lambda _
8249 ;; This could have been passed to make-flags, but getcwd returns
8250 ;; a different directory then.
8251 (with-output-to-file "build.properties"
8252 (lambda _
8253 (display
8254 (string-append "base.path=" (getcwd) "/downloads\n"))))
8255 #t))
8256 (replace 'install
8257 (lambda* (#:key outputs #:allow-other-keys)
8258 (let ((out (assoc-ref outputs "out")))
8259 (copy-recursively "output/build" out))
8260 #t)))))
8261 (properties '((cpe-name . "tomcat")))
8262 (home-page "https://tomcat.apache.org")
8263 (synopsis "Java Servlet, JavaServer Pages, Java Expression Language and Java
8264WebSocket")
8265 (description "Apache Tomcat is a free implementation of the Java
8266Servlet, JavaServer Pages, Java Expression Language and Java WebSocket
8267technologies.")
8268 (license license:asl2.0)))
8269
8270(define-public java-eclipse-jetty-test-helper
8271 (package
8272 (name "java-eclipse-jetty-test-helper")
8273 (version "4.2")
8274 (source (origin
8275 (method git-fetch)
8276 (uri (git-reference
8277 (url "https://github.com/eclipse/jetty.toolchain/")
8278 (commit (string-append "jetty-test-helper-" version))))
8279 (file-name (git-file-name name version))
8280 (sha256
8281 (base32
8282 "1g7cdh03nfwbdxzvwm84ysgvw08xx7431lsjryj2gmf3lrqpizgb"))))
8283 (build-system ant-build-system)
8284 (arguments
8285 `(#:jar-name "eclipse-jetty-test-helper.jar"
8286 #:source-dir "src/main/java"
8287 #:test-dir "src/test"
8288 #:jdk ,icedtea-8
8289 #:phases
8290 (modify-phases %standard-phases
8291 (add-before 'configure 'chdir
8292 (lambda _
8293 (chdir "jetty-test-helper")
8294 #t))
8295 (add-before 'build 'fix-paths
8296 (lambda _
8297 ;; TODO:
8298 ;; This file assumes that the build directory is named "target"
8299 ;; but it is not the case with our ant-build-system. Once we have
8300 ;; maven though, we will have to rebuild this package because this
8301 ;; assumption is correct with maven-build-system.
8302 (substitute*
8303 "src/main/java/org/eclipse/jetty/toolchain/test/MavenTestingUtils.java"
8304 (("\"target\"") "\"build\"")
8305 (("\"tests\"") "\"test-classes\""))
8306 ;; Tests assume we are building with maven, so that the build
8307 ;; directory is named "target", and not "build".
8308 (with-directory-excursion "src/test/java/org/eclipse/jetty/toolchain/test"
8309 (substitute* '("FSTest.java" "OSTest.java" "TestingDirTest.java"
8310 "MavenTestingUtilsTest.java")
8311 (("target/tests") "build/test-classes")
8312 (("\"target") "\"build")))
8313 #t)))))
8314 (inputs
8315 `(("junit" ,java-junit)
8316 ("hamcrest" ,java-hamcrest-all)))
8317 (home-page "https://www.eclipse.org/jetty/")
8318 (synopsis "Helper classes for jetty tests")
8319 (description "This package contains helper classes for testing the Jetty
8320Web Server.")
8321 ;; This program is licensed under both epl and asl.
8322 (license (list license:epl1.0 license:asl2.0))))
8323
8324(define-public java-eclipse-jetty-perf-helper
8325 (package
8326 (inherit java-eclipse-jetty-test-helper)
8327 (name "java-eclipse-jetty-perf-helper")
8328 (arguments
8329 `(#:jar-name "eclipse-jetty-perf-helper.jar"
8330 #:source-dir "src/main/java"
8331 #:tests? #f; no tests
8332 #:jdk ,icedtea-8
8333 #:phases
8334 (modify-phases %standard-phases
8335 (add-before 'configure 'chdir
8336 (lambda _
8337 (chdir "jetty-perf-helper")
8338 #t)))))
8339 (inputs
8340 `(("hdrhistogram" ,java-hdrhistogram)))))
8341
8342(define-public java-eclipse-jetty-util
8343 (package
8344 (name "java-eclipse-jetty-util")
8345 (version "9.4.39")
8346 (source (origin
8347 (method url-fetch)
8348 (uri (string-append "https://github.com/eclipse/jetty.project/"
8349 "archive/jetty-" version ".v20210325.tar.gz"))
8350 (sha256
8351 (base32
8352 "0b4hy4zmdmfbqk9bzmxk7v75y2ysqiappkip4z3hb9lxjvjh0b19"))))
8353 (build-system ant-build-system)
8354 (arguments
8355 `(#:jar-name "eclipse-jetty-util.jar"
8356 #:source-dir "src/main/java"
8357 #:tests? #f; require junit 5
8358 #:test-exclude
8359 (list "**/Abstract*.java"
8360 ;; requires network
8361 "**/InetAddressSetTest.java"
8362 ;; Assumes we are using maven
8363 "**/TypeUtilTest.java"
8364 ;; Error on the style of log
8365 "**/StdErrLogTest.java")
8366 #:jdk ,icedtea-8
8367 #:phases
8368 (modify-phases %standard-phases
8369 (add-before 'configure 'chdir
8370 (lambda _
8371 (chdir "jetty-util")
8372 #t)))))
8373 (inputs
8374 `(("slf4j" ,java-slf4j-api)
8375 ("servlet" ,java-javaee-servletapi)))
8376 (home-page "https://www.eclipse.org/jetty/")
8377 (synopsis "Utility classes for Jetty")
8378 (description "The Jetty Web Server provides an HTTP server and Servlet
8379container capable of serving static and dynamic content either from a standalone
8380or embedded instantiation. This package provides utility classes.")
8381 (license (list license:epl1.0 license:asl2.0))))
8382
8383;; This version is required by maven-wagon
8384(define-public java-eclipse-jetty-util-9.2
8385 (package
8386 (inherit java-eclipse-jetty-util)
8387 (version "9.2.22")
8388 (source (origin
8389 (method url-fetch)
8390 (uri (string-append "https://github.com/eclipse/jetty.project/"
8391 "archive/jetty-" version ".v20170606.tar.gz"))
8392 (sha256
8393 (base32
8394 "1i51qlsd7h06d35kx5rqpzbfadbcszycx1iwr6vz7qc9gf9f29la"))))
8395 (arguments
8396 `(#:jar-name "eclipse-jetty-util.jar"
8397 #:source-dir "src/main/java"
8398 #:jdk ,icedtea-8
8399 #:test-exclude
8400 (list "**/Abstract*.java"
8401 ;; requires network
8402 "**/InetAddressSetTest.java"
8403 ;; Assumes we are using maven
8404 "**/TypeUtilTest.java"
8405 ;; We don't have an implementation for slf4j
8406 "**/LogTest.java"
8407 ;; Error on the style of log
8408 "**/StdErrLogTest.java")
8409 #:phases
8410 (modify-phases %standard-phases
8411 (add-before 'configure 'chdir
8412 (lambda _
8413 (chdir "jetty-util")
8414 #t))
8415 (add-before 'build 'fix-test-sources
8416 (lambda _
8417 ;; We need to fix issues caused by changes in newer versions of
8418 ;; jetty-test-helper
8419 (let ((src "src/test/java/org/eclipse/jetty/util/resource"))
8420 (substitute* (string-append src "/AbstractFSResourceTest.java")
8421 (("testdir.getDir\\(\\)") "testdir.getPath().toFile()")
8422 (("testdir.getFile\\(\"foo\"\\)")
8423 "testdir.getPathFile(\"foo\").toFile()")
8424 (("testdir.getFile\\(name\\)")
8425 "testdir.getPathFile(name).toFile()")))
8426 #t)))))
8427 (native-inputs
8428 `(("java-junit" ,java-junit)
8429 ("java-hamcrest-all" ,java-hamcrest-all)
8430 ("perf-helper" ,java-eclipse-jetty-perf-helper)
8431 ("test-helper" ,java-eclipse-jetty-test-helper)))))
8432
8433(define-public java-eclipse-jetty-io
8434 (package
8435 (inherit java-eclipse-jetty-util)
8436 (name "java-eclipse-jetty-io")
8437 (arguments
8438 `(#:jar-name "eclipse-jetty-io.jar"
8439 #:source-dir "src/main/java"
8440 #:jdk ,icedtea-8
8441 #:tests? #f; require junit 5
8442 #:test-exclude (list "**/Abstract*.java"
8443 ;; Abstract class
8444 "**/EndPointTest.java")
8445 #:phases
8446 (modify-phases %standard-phases
8447 (add-before 'configure 'chdir
8448 (lambda _
8449 (chdir "jetty-io")
8450 #t)))))
8451 (inputs
8452 `(("slf4j" ,java-slf4j-api)
8453 ("servlet" ,java-javaee-servletapi)
8454 ("util" ,java-eclipse-jetty-util)))
8455 (synopsis "Jetty :: IO Utility")
8456 (description "The Jetty Web Server provides an HTTP server and Servlet
8457container capable of serving static and dynamic content either from a standalone
8458or embedded instantiation. This package provides IO-related utility classes.")))
8459
8460(define-public java-eclipse-jetty-io-9.2
8461 (package
8462 (inherit java-eclipse-jetty-io)
8463 (version (package-version java-eclipse-jetty-util-9.2))
8464 (source (package-source java-eclipse-jetty-util-9.2))
8465 (inputs
8466 `(("util" ,java-eclipse-jetty-util-9.2)
8467 ,@(package-inputs java-eclipse-jetty-util-9.2)))
8468 (native-inputs
8469 `(("mockito" ,java-mockito-1)
8470 ("cglib" ,java-cglib)
8471 ("objenesis" ,java-objenesis)
8472 ("asm" ,java-asm)
8473 ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
8474
8475(define-public java-eclipse-jetty-http
8476 (package
8477 (inherit java-eclipse-jetty-util)
8478 (name "java-eclipse-jetty-http")
8479 (arguments
8480 `(#:jar-name "eclipse-jetty-http.jar"
8481 #:source-dir "src/main/java"
8482 #:jdk ,icedtea-8
8483 #:tests? #f; require junit 5
8484 #:phases
8485 (modify-phases %standard-phases
8486 (add-before 'configure 'chdir
8487 (lambda _
8488 (chdir "jetty-http")
8489 #t))
8490 (add-before 'build 'copy-resources
8491 (lambda _
8492 (mkdir-p "build/classes")
8493 (copy-recursively "src/main/resources/" "build/classes/")
8494 #t)))))
8495 (inputs
8496 `(("slf4j" ,java-slf4j-api)
8497 ("servlet" ,java-javaee-servletapi)
8498 ("io" ,java-eclipse-jetty-io)
8499 ("util" ,java-eclipse-jetty-util)))
8500 (synopsis "Jetty :: Http Utility")
8501 (description "The Jetty Web Server provides an HTTP server and Servlet
8502container capable of serving static and dynamic content either from a standalone
8503or embedded instantiation. This package provides HTTP-related utility classes.")))
8504
8505(define-public java-eclipse-jetty-http-9.2
8506 (package
8507 (inherit java-eclipse-jetty-http)
8508 (version (package-version java-eclipse-jetty-util-9.2))
8509 (source (package-source java-eclipse-jetty-util-9.2))
8510 (inputs
8511 `(("util" ,java-eclipse-jetty-util-9.2)
8512 ("io" ,java-eclipse-jetty-io-9.2)
8513 ,@(package-inputs java-eclipse-jetty-util-9.2)))))
8514
8515(define-public java-eclipse-jetty-jmx
8516 (package
8517 (inherit java-eclipse-jetty-util)
8518 (name "java-eclipse-jetty-jmx")
8519 (arguments
8520 `(#:jar-name "eclipse-jetty-jmx.jar"
8521 #:source-dir "src/main/java"
8522 #:jdk ,icedtea-8
8523 #:tests? #f; FIXME: requires com.openpojo.validation
8524 #:phases
8525 (modify-phases %standard-phases
8526 (add-before 'configure 'chdir
8527 (lambda _
8528 (chdir "jetty-jmx")
8529 #t)))))
8530 (inputs
8531 `(("slf4j" ,java-slf4j-api)
8532 ("servlet" ,java-javaee-servletapi)
8533 ("util" ,java-eclipse-jetty-util)))
8534 (synopsis "Jetty :: JMX Management")
8535 (description "The Jetty Web Server provides an HTTP server and Servlet
8536container capable of serving static and dynamic content either from a standalone
8537or embedded instantiation. This package provides the JMX management.")))
8538
8539(define-public java-eclipse-jetty-jmx-9.2
8540 (package
8541 (inherit java-eclipse-jetty-jmx)
8542 (version (package-version java-eclipse-jetty-util-9.2))
8543 (source (package-source java-eclipse-jetty-util-9.2))
8544 (inputs
8545 `(("util" ,java-eclipse-jetty-util-9.2)
8546 ,@(package-inputs java-eclipse-jetty-util-9.2)))))
8547
8548(define java-eclipse-jetty-http-test-classes
8549 (package
8550 (inherit java-eclipse-jetty-util)
8551 (name "java-eclipse-jetty-http-test-classes")
8552 (arguments
8553 `(#:jar-name "eclipse-jetty-http.jar"
8554 #:source-dir "src/test"
8555 #:tests? #f
8556 #:jdk ,icedtea-8
8557 #:phases
8558 (modify-phases %standard-phases
8559 (add-before 'configure 'chdir
8560 (lambda _
8561 (chdir "jetty-http")
8562 #t)))))
8563 (inputs
8564 `(("slf4j" ,java-slf4j-api)
8565 ("java-javaee-servletapi" ,java-javaee-servletapi)
8566 ("http" ,java-eclipse-jetty-http)
8567 ("io" ,java-eclipse-jetty-io)
8568 ("util" ,java-eclipse-jetty-util)))))
8569
8570(define java-eclipse-jetty-http-test-classes-9.2
8571 (package
8572 (inherit java-eclipse-jetty-http-test-classes)
8573 (version (package-version java-eclipse-jetty-util-9.2))
8574 (source (package-source java-eclipse-jetty-util-9.2))
8575 (inputs
8576 `(("http" ,java-eclipse-jetty-http-9.2)
8577 ,@(package-inputs java-eclipse-jetty-http-9.2)))
8578 (native-inputs (package-native-inputs java-eclipse-jetty-util-9.2))))
8579
8580(define-public java-eclipse-jetty-server
8581 (package
8582 (inherit java-eclipse-jetty-util)
8583 (name "java-eclipse-jetty-server")
8584 (arguments
8585 `(#:jar-name "eclipse-jetty-server.jar"
8586 #:source-dir "src/main/java"
8587 #:jdk ,icedtea-8
8588 #:tests? #f; requires a mockito version we don't have
8589 #:phases
8590 (modify-phases %standard-phases
8591 (add-before 'configure 'chdir
8592 (lambda _
8593 (chdir "jetty-server")
8594 #t))
8595 (add-before 'build 'fix-source
8596 (lambda _
8597 ;; Explicit casts to prevent build failures
8598 (substitute* "src/main/java/org/eclipse/jetty/server/Request.java"
8599 (("append\\(LazyList")
8600 "append((CharSequence)LazyList"))
8601 (substitute*
8602 "src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java"
8603 (((string-append
8604 "Class<\\? extends EventListener> clazz = _classLoader==null"
8605 "\\?Loader.loadClass\\(ContextHandler.class,className\\):"
8606 "_classLoader.loadClass\\(className\\);"))
8607 (string-append "Class<? extends EventListener> clazz = "
8608 "(Class<? extends EventListener>) "
8609 "(_classLoader==null?Loader.loadClass("
8610 "ContextHandler.class,className):"
8611 "_classLoader.loadClass(className));")))
8612 #t)))))
8613 (inputs
8614 `(("slf4j" ,java-slf4j-api)
8615 ("servlet" ,java-javaee-servletapi)
8616 ("http" ,java-eclipse-jetty-http)
8617 ("io" ,java-eclipse-jetty-io)
8618 ("jmx" ,java-eclipse-jetty-jmx)
8619 ("util" ,java-eclipse-jetty-util)))
8620 (synopsis "Core jetty server artifact")
8621 (description "The Jetty Web Server provides an HTTP server and Servlet
8622container capable of serving static and dynamic content either from a standalone
8623or embedded instantiation. This package provides the core jetty server
8624artifact.")))
8625
8626(define-public java-eclipse-jetty-server-9.2
8627 (package
8628 (inherit java-eclipse-jetty-server)
8629 (version (package-version java-eclipse-jetty-util-9.2))
8630 (source (package-source java-eclipse-jetty-util-9.2))
8631 (inputs
8632 `(("util" ,java-eclipse-jetty-util-9.2)
8633 ("jmx" ,java-eclipse-jetty-jmx-9.2)
8634 ("io" ,java-eclipse-jetty-io-9.2)
8635 ("http" ,java-eclipse-jetty-http-9.2)
8636 ,@(package-inputs java-eclipse-jetty-util-9.2)))
8637 (native-inputs
8638 `(("test-classes" ,java-eclipse-jetty-http-test-classes-9.2)
8639 ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
8640
8641(define-public java-eclipse-jetty-security
8642 (package
8643 (inherit java-eclipse-jetty-util)
8644 (name "java-eclipse-jetty-security")
8645 (arguments
8646 `(#:jar-name "eclipse-jetty-security.jar"
8647 #:source-dir "src/main/java"
8648 #:jdk ,icedtea-8
8649 #:tests? #f; require junit 5
8650 #:test-exclude (list "**/ConstraintTest.*") ; This test fails
8651 #:phases
8652 (modify-phases %standard-phases
8653 (add-before 'configure 'chdir
8654 (lambda _
8655 (chdir "jetty-security")
8656 #t)))))
8657 (inputs
8658 `(("slf4j" ,java-slf4j-api)
8659 ("servlet" ,java-javaee-servletapi)
8660 ("http" ,java-eclipse-jetty-http)
8661 ("server" ,java-eclipse-jetty-server)
8662 ("util" ,java-eclipse-jetty-util)))
8663 (synopsis "Jetty security infrastructure")
8664 (description "The Jetty Web Server provides an HTTP server and Servlet
8665container capable of serving static and dynamic content either from a standalone
8666or embedded instantiation. This package provides the core jetty security
8667infrastructure")))
8668
8669(define-public java-eclipse-jetty-security-9.2
8670 (package
8671 (inherit java-eclipse-jetty-security)
8672 (version (package-version java-eclipse-jetty-util-9.2))
8673 (source (package-source java-eclipse-jetty-util-9.2))
8674 (inputs
8675 `(("util" ,java-eclipse-jetty-util-9.2)
8676 ("http" ,java-eclipse-jetty-http-9.2)
8677 ("server" ,java-eclipse-jetty-server-9.2)
8678 ,@(package-inputs java-eclipse-jetty-util-9.2)))
8679 (native-inputs
8680 `(("io" ,java-eclipse-jetty-io-9.2)
8681 ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
8682
8683(define-public java-eclipse-jetty-util-ajax
8684 (package
8685 (inherit java-eclipse-jetty-util)
8686 (name "java-eclipse-jetty-util-ajax")
8687 (arguments
8688 `(#:jar-name "eclipse-jetty-util-ajax.jar"
8689 #:source-dir "jetty-util-ajax/src/main/java"
8690 #:tests? #f)); require junit 5
8691 (inputs
8692 (list java-eclipse-jetty-util java-javaee-servletapi))))
8693
8694(define-public java-eclipse-jetty-servlet
8695 (package
8696 (inherit java-eclipse-jetty-util)
8697 (name "java-eclipse-jetty-servlet")
8698 (arguments
8699 `(#:jar-name "eclipse-jetty-servlet.jar"
8700 #:source-dir "src/main/java"
8701 #:jdk ,icedtea-8
8702 #:tests? #f; require junit 5
8703 #:phases
8704 (modify-phases %standard-phases
8705 (add-before 'configure 'chdir
8706 (lambda _
8707 (chdir "jetty-servlet")
8708 #t)))))
8709 (inputs
8710 `(("slf4j" ,java-slf4j-api)
8711 ("java-javaee-servletapi" ,java-javaee-servletapi)
8712 ("java-eclipse-jetty-util-ajax" ,java-eclipse-jetty-util-ajax)
8713 ("http" ,java-eclipse-jetty-http)
8714 ("io" ,java-eclipse-jetty-io)
8715 ("jmx" ,java-eclipse-jetty-jmx)
8716 ("security" ,java-eclipse-jetty-security)
8717 ("server" ,java-eclipse-jetty-server)
8718 ("util" ,java-eclipse-jetty-util)))
8719 (synopsis "Jetty Servlet Container")
8720 (description "The Jetty Web Server provides an HTTP server and Servlet
8721container capable of serving static and dynamic content either from a standalone
8722or embedded instantiation. This package provides the core jetty servlet
8723container.")))
8724
8725(define-public java-eclipse-jetty-servlet-9.2
8726 (package
8727 (inherit java-eclipse-jetty-servlet)
8728 (version (package-version java-eclipse-jetty-util-9.2))
8729 (source (package-source java-eclipse-jetty-util-9.2))
8730 (arguments
8731 `(#:jar-name "eclipse-jetty-servlet.jar"
8732 #:source-dir "src/main/java"
8733 #:jdk ,icedtea-8
8734 #:tests? #f; doesn't work
8735 #:phases
8736 (modify-phases %standard-phases
8737 (add-before 'configure 'chdir
8738 (lambda _
8739 (chdir "jetty-servlet")
8740 #t)))))
8741 (inputs
8742 `(("util" ,java-eclipse-jetty-util-9.2)
8743 ("jmx" ,java-eclipse-jetty-jmx-9.2)
8744 ("io" ,java-eclipse-jetty-io-9.2)
8745 ("http" ,java-eclipse-jetty-http-9.2)
8746 ("security" ,java-eclipse-jetty-security-9.2)
8747 ("http-test" ,java-eclipse-jetty-http-test-classes-9.2)
8748 ("server" ,java-eclipse-jetty-server-9.2)
8749 ,@(package-inputs java-eclipse-jetty-util-9.2)))))
8750
8751(define-public java-eclipse-jetty-xml
8752 (package
8753 (inherit java-eclipse-jetty-util)
8754 (name "java-eclipse-jetty-xml")
8755 (arguments
8756 `(#:jar-name "eclipse-jetty-xml.jar"
8757 #:source-dir "src/main/java"
8758 #:jdk ,icedtea-8
8759 #:tests? #f; most tests require network
8760 #:phases
8761 (modify-phases %standard-phases
8762 (add-before 'configure 'chdir
8763 (lambda _
8764 (chdir "jetty-xml")
8765 #t)))))
8766 (inputs
8767 (list java-eclipse-jetty-util))
8768 (native-inputs
8769 (modify-inputs native-inputs
8770 (prepend java-eclipse-jetty-io)))))
8771
8772(define-public java-eclipse-jetty-xml-9.2
8773 (package
8774 (inherit java-eclipse-jetty-xml)
8775 (version (package-version java-eclipse-jetty-util-9.2))
8776 (source (package-source java-eclipse-jetty-util-9.2))
8777 (arguments
8778 `(#:jar-name "eclipse-jetty-xml.jar"
8779 #:source-dir "src/main/java"
8780 #:jdk ,icedtea-8
8781 #:tests? #f; most tests require network
8782 #:phases
8783 (modify-phases %standard-phases
8784 (add-before 'configure 'chdir
8785 (lambda _
8786 (chdir "jetty-xml")
8787 #t)))))
8788 (inputs
8789 `(("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
8790 ,@(package-inputs java-eclipse-jetty-util-9.2)))
8791 (native-inputs
8792 `(("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
8793 ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
8794
8795(define-public java-eclipse-jetty-webapp
8796 (package
8797 (inherit java-eclipse-jetty-util)
8798 (name "java-eclipse-jetty-webapp")
8799 (arguments
8800 `(#:jar-name "eclipse-jetty-webapp.jar"
8801 #:source-dir "src/main/java"
8802 #:jdk ,icedtea-8
8803 #:tests? #f; require junit 5
8804 ;; One test fails
8805 #:test-exclude (list "**/WebAppContextTest.java")
8806 #:phases
8807 (modify-phases %standard-phases
8808 (add-before 'configure 'chdir
8809 (lambda _
8810 (chdir "jetty-webapp")
8811 #t)))))
8812 (inputs
8813 (list java-eclipse-jetty-util
8814 java-eclipse-jetty-http
8815 java-eclipse-jetty-io
8816 java-eclipse-jetty-server
8817 java-eclipse-jetty-servlet
8818 java-eclipse-jetty-security
8819 java-eclipse-jetty-xml
8820 java-javaee-servletapi))))
8821
8822(define-public java-eclipse-jetty-webapp-9.2
8823 (package
8824 (inherit java-eclipse-jetty-webapp)
8825 (version (package-version java-eclipse-jetty-util-9.2))
8826 (source (package-source java-eclipse-jetty-util-9.2))
8827 (arguments
8828 `(#:jar-name "eclipse-jetty-webapp.jar"
8829 #:source-dir "src/main/java"
8830 #:jdk ,icedtea-8
8831 #:test-exclude (list "**/WebAppContextTest.java")
8832 #:phases
8833 (modify-phases %standard-phases
8834 (add-before 'configure 'chdir
8835 (lambda _
8836 (chdir "jetty-webapp")
8837 #t)))))
8838 (inputs
8839 `(("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
8840 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
8841 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
8842 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
8843 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
8844 ("java-eclipse-jetty-xml-9.2" ,java-eclipse-jetty-xml-9.2)
8845 ("java-javaee-servletapi" ,java-javaee-servletapi)
8846 ,@(package-inputs java-eclipse-jetty-util-9.2)))
8847 (native-inputs
8848 `(("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
8849 ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
8850
8851(define-public java-jsoup
8852 (package
8853 (name "java-jsoup")
8854 (version "1.10.3")
8855 (source (origin
8856 (method git-fetch)
8857 (uri (git-reference
8858 (url "https://github.com/jhy/jsoup")
8859 (commit (string-append "jsoup-" version))))
8860 (file-name (git-file-name name version))
8861 (sha256
8862 (base32
8863 "1hdpdx0x140r5x3yc251v7dj1h4j5a7nh9k885aw9q5vvz49lkf4"))))
8864 (build-system ant-build-system)
8865 (arguments
8866 `(#:jar-name "jsoup.jar"
8867 #:source-dir "src/main/java"
8868 #:phases
8869 (modify-phases %standard-phases
8870 (add-before 'build 'copy-resources
8871 (lambda _
8872 (let ((classes-dir (string-append (getcwd) "/build/classes")))
8873 (with-directory-excursion "src/main/java"
8874 (for-each (lambda (file)
8875 (let ((dist (string-append classes-dir "/" file)))
8876 (mkdir-p (dirname dist))
8877 (copy-file file dist)))
8878 (find-files "." ".*.properties"))))
8879 #t)))))
8880 (native-inputs
8881 (list java-junit java-hamcrest-core java-gson))
8882 (home-page "https://jsoup.org")
8883 (synopsis "HTML parser")
8884 (description "Jsoup is a Java library for working with real-world HTML. It
8885provides a very convenient API for extracting and manipulating data, using the
8886best of DOM, CSS, and jQuery-like methods.")
8887 (license license:expat)))
8888
8889(define-public java-jsoup-1.15.3
8890 (package
8891 (inherit java-jsoup)
8892 (name "java-jsoup")
8893 (version "1.15.3")
8894 (source
8895 (origin
8896 (method git-fetch)
8897 (uri (git-reference
8898 (url "https://github.com/jhy/jsoup.git")
8899 (commit (string-append "jsoup-" version))))
8900 (file-name (git-file-name "java-jsoup" version))
8901 (sha256
8902 (base32 "1rp35w2138qkmpy7q7sn7yx50v3ks4dabd6ij50i9258yx38x3v9"))))
8903 (arguments
8904 `(#:jar-name "jsoup.jar"
8905 #:source-dir "src/main/java"
8906 #:tests? #f
8907 #:phases
8908 (modify-phases %standard-phases
8909 (add-before 'build 'copy-resources
8910 (lambda _
8911 (let ((classes-dir (string-append (getcwd) "/build/classes")))
8912 (with-directory-excursion "src/main/java"
8913 (for-each (lambda (file)
8914 (let ((dist (string-append classes-dir "/" file)))
8915 (mkdir-p (dirname dist))
8916 (copy-file file dist)))
8917 (find-files "." ".*\\.properties"))))
8918 #t))
8919 (replace 'install
8920 (install-from-pom "pom.xml")))))
8921 (inputs
8922 (list java-jsr305))))
8923
8924(define-public java-signpost-core
8925 (package
8926 (name "java-signpost-core")
8927 (version "1.2.1.2")
8928 (source (origin
8929 (method git-fetch)
8930 (uri (git-reference
8931 (url "https://github.com/mttkay/signpost")
8932 (commit version)))
8933 (file-name (git-file-name name version))
8934 (sha256
8935 (base32
8936 "1l04yj2znch3hpyw90c4g4jan453w7d88l84bgl0c72i2kbb8z7h"))))
8937 (build-system ant-build-system)
8938 (arguments
8939 `(#:jar-name "signpost-core.jar"
8940 #:source-dir "signpost-core/src/main/java"
8941 #:test-dir "signpost-core/src/test"
8942 ;; Tests all fail with InstantiationException from mockito
8943 #:tests? #f))
8944 (propagated-inputs
8945 (list java-commons-codec))
8946 (home-page "https://github.com/mttkay/signpost")
8947 (synopsis "Lightweight client-side OAuth library for Java")
8948 (description "Signpost is the easy and intuitive solution for signing
8949HTTP messages on the Java platform in conformance with the OAuth Core 1.0a
8950standard. Signpost follows a modular and flexible design, allowing you to
8951combine it with different HTTP messaging layers.")
8952 (license license:asl2.0)))
8953
8954(define-public tidyp
8955 (package
8956 (name "tidyp")
8957 (version "1.04")
8958 (source
8959 (origin
8960 (method url-fetch)
8961 (uri (string-append "https://github.com/downloads/petdance/tidyp/tidyp-"
8962 version ".tar.gz"))
8963 (sha256
8964 (base32
8965 "0f5ky0ih4vap9c6j312jn73vn8m2bj69pl2yd3a5nmv35k9zmc10"))))
8966 (build-system gnu-build-system)
8967 ;; ./test-thing.sh tries to run ./testall.sh, which is not included.
8968 (arguments `(#:tests? #f))
8969 (home-page "http://www.tidyp.com/")
8970 (synopsis "Validate HTML")
8971 (description "Tidyp is a program that can validate your HTML, as well as
8972modify it to be more clean and standard. tidyp does not validate HTML 5.
8973
8974libtidyp is the library on which the program is based. It can be used by any
8975other program that can interface to it. The Perl module @code{HTML::Tidy} is
8976based on this library, allowing Perl programmers to easily validate HTML.")
8977 ;; See htmldoc/license.html
8978 (license license:bsd-3)))
8979
8980(define-public perl-html-tidy
8981 (package
8982 (name "perl-html-tidy")
8983 (version "1.60")
8984 (source
8985 (origin
8986 (method url-fetch)
8987 (uri (string-append "mirror://cpan/authors/id/P/PE/PETDANCE/HTML-Tidy-"
8988 version ".tar.gz"))
8989 (sha256
8990 (base32
8991 "1iyp2fd6j75cn1xvcwl2lxr8qpjxssy2360cyqn6g3kzd1fzdyxw"))))
8992 (build-system perl-build-system)
8993 (arguments
8994 '(#:phases
8995 (modify-phases %standard-phases
8996 (add-after 'unpack 'fix-tidyp-paths
8997 (lambda* (#:key inputs #:allow-other-keys)
8998 (substitute* "Makefile.PL"
8999 (("^my \\$inc = \"" line)
9000 (string-append line
9001 "-I" (assoc-ref inputs "tidyp") "/include/tidyp "))
9002 (("-L/usr/lib")
9003 (string-append
9004 "-L" (assoc-ref inputs "tidyp") "/lib")))
9005 #t)))))
9006 (inputs
9007 (list perl-libwww tidyp))
9008 (native-inputs
9009 (list perl-test-exception))
9010 (home-page "https://metacpan.org/release/HTML-Tidy")
9011 (synopsis "(X)HTML validation in a Perl object")
9012 (description "@code{HTML::Tidy} is an HTML checker in a handy dandy
9013object. It's meant as a replacement for @code{HTML::Lint}, which is written
9014in Perl but is not nearly as capable as @code{HTML::Tidy}.")
9015 (license license:artistic2.0)))
9016
9017(define-public gophernicus
9018 ;; Contains some unreleased fixes.
9019 (let ((commit "da3390089c2a856db1ab2e3bd9751b9a9101a33a")
9020 (revision "0"))
9021 (package
9022 (name "gophernicus")
9023 (version (git-version "3.1.1" revision commit))
9024 (source
9025 (origin
9026 (method git-fetch)
9027 (uri (git-reference
9028 (url "https://github.com/gophernicus/gophernicus")
9029 (commit commit)))
9030 (file-name (git-file-name name version))
9031 (sha256
9032 (base32 "0a7kpymwqcsqzszdxvcqppbg61bpyg9f7raj783pldm4kf2wjyij"))))
9033 (build-system gnu-build-system)
9034 (arguments
9035 (list #:tests? #f ; No tests
9036 #:configure-flags
9037 ;; Listener and hostname used only in configuration files, which
9038 ;; we don't install.
9039 ;; This is what's done in the release.sh script.
9040 #~(list "--listener=none" "--hostname=HOSTNAME")
9041 #:phases
9042 #~(modify-phases %standard-phases
9043 (add-after 'unpack 'fix-version
9044 (lambda _
9045 (substitute* "Makefile.in"
9046 (("^(VERSION += ).*" _ prefix)
9047 (string-append prefix #$version "\n")))
9048 ;; This is done in the release.sh script.
9049 (substitute* "README.md"
9050 (("^(This release: Version )DEVEL\\b.*" _ prefix)
9051 (string-append prefix #$version "\n"))
9052 (("^NOTE: The master branch is rolling Development\\b.*")
9053 ""))))
9054 (replace 'configure
9055 ;; The configure script is hand-written, not from GNU autotools.
9056 (lambda* (#:key configure-flags #:allow-other-keys)
9057 (setenv "CC" #$(cc-for-target))
9058 (setenv "HOSTCC" "gcc")
9059 (apply invoke "./configure"
9060 (string-append "--prefix=" #$output)
9061 configure-flags))))))
9062 ;; TODO: Make configure script find libwrap.
9063 ;;(inputs
9064 ;; (list tcp-wrappers))
9065 (home-page "https://gophernicus.org/")
9066 (synopsis "Gopher protocol server")
9067 (description
9068 "Gophernicus is a Gopher protocol server. Its features include:
9069@itemize
9070@item written with security in mind;
9071@item automatically generated Gopher menus;
9072@item gophertags for virtually renaming directories;
9073@item personal gopherspaces, located in @file{~/public_gopher/};
9074@item virtual hosting;
9075@item CGI support;
9076@item output filtering and PHP support;
9077@item charset support and conversions;
9078@item selector rewriting;
9079@item session tracking and statistics;
9080@item TLS/SSL and proxy support.
9081@end itemize")
9082 (license license:bsd-2))))
9083
9084(define-public gemget
9085 (package
9086 (name "gemget")
9087 (version "1.9.0")
9088 (source
9089 (origin
9090 (method git-fetch)
9091 (uri (git-reference
9092 (url "https://github.com/makew0rld/gemget")
9093 (commit (string-append "v" version))))
9094 (file-name (git-file-name name version))
9095 (sha256
9096 (base32 "03x9apk73lwyafc4fd2vs033z7vcpk4k0jf97452l7pnlx2v57rz"))))
9097 (build-system go-build-system)
9098 (native-inputs
9099 (list go-github-com-dustin-go-humanize
9100 go-github-com-makeworld-the-better-one-go-gemini
9101 go-github-com-makeworld-the-better-one-go-gemini-socks5
9102 go-github-com-schollz-progressbar-v3
9103 go-github-com-spf13-pflag))
9104 (arguments
9105 (list
9106 #:install-source? #f
9107 #:import-path "github.com/makeworld-the-better-one/gemget"))
9108 (home-page "https://github.com/makew0rld/gemget")
9109 (synopsis "Command line downloader for the Gemini protocol")
9110 (description
9111 "Gemget is a command line downloader for the Gemini protocol.
9112It works well with streams and can print headers for debugging as well.")
9113 (license license:expat)))
9114
9115(define-public geomyidae
9116 (package
9117 (name "geomyidae")
9118 (version "0.34")
9119 (source
9120 (origin
9121 (method git-fetch)
9122 (uri (git-reference
9123 (url "git://r-36.net/geomyidae")
9124 (commit (string-append "v" version))))
9125 (file-name (git-file-name name version))
9126 (sha256
9127 (base32 "02afgrk36wkdkflyqr2xgh49v9zq6ma454jshk7igvhpxfb5l3ks"))))
9128 (build-system gnu-build-system)
9129 (arguments
9130 `(#:make-flags (list "CC=gcc"
9131 (string-append "PREFIX="
9132 (assoc-ref %outputs "out")))
9133 #:tests? #f ; no tests
9134 #:phases (modify-phases %standard-phases
9135 (delete 'configure))))
9136 (home-page "http://r-36.net/scm/geomyidae/file/README.html")
9137 (synopsis "Small Gopher server")
9138 (description
9139 "Geomyidae is a server for distributed hypertext protocol Gopher. Its
9140features include:
9141
9142@enumerate
9143@item Gopher menus (see @file{index.gph} for an example);
9144@item directory listings (if no @file{index.gph} was found);
9145@item CGI support (@file{.cgi} files are executed);
9146@item search support in CGI files;
9147@item logging with multiple log levels.
9148@end enumerate\n")
9149 (license license:expat)))
9150
9151(define-public monsterid
9152 (let ((commit "5597f177b473343ff5cad9a6e0e5b255312c6096")
9153 (revision "0"))
9154 (package
9155 (name "monsterid")
9156 (version (git-version "0" revision commit))
9157 (source
9158 (origin
9159 (method git-fetch)
9160 (uri (git-reference
9161 (url "https://github.com/splitbrain/monsterID")
9162 (commit commit)))
9163 (file-name (git-file-name name version))
9164 (sha256
9165 (base32 "0ixyrrcbw96plcdna2rx1pqwisqy9hnr57kvamgj13lzlv2whdb3"))))
9166 (build-system copy-build-system)
9167 (arguments
9168 '(#:install-plan '(("monsterid.php" "share/web/monsterid/")
9169 ("parts/" "share/web/monsterid/parts/"
9170 #:include-regexp ("\\.png$")))))
9171 (home-page "https://www.splitbrain.org/projects/monsterid")
9172 (synopsis "The original MonsterID implementation")
9173 (description
9174 "MonsterID is a method to generate a unique monster image based upon a
9175certain identifier (IP address, email address, whatever). It can be
9176used to automatically provide personal avatar images in blog comments
9177or other community services.")
9178 (license license:expat))))
9179
9180(define-public cat-avatar-generator
9181 (let ((commit "9360ea33f79d1dad3e43494b09878b5e3f6b41fa")
9182 (revision "1"))
9183 (package
9184 (name "cat-avatar-generator")
9185 (version (git-version "1" revision commit))
9186 (source (origin
9187 (method git-fetch)
9188 (uri (git-reference
9189 (url "https://framagit.org/Deevad/cat-avatar-generator.git")
9190 (commit commit)))
9191 (file-name (git-file-name name version))
9192 (sha256
9193 (base32
9194 "0js4grqzsm4gvmcbmxv7zw4samfzi6nk4mn977ddcvla9g222rkm"))))
9195 (build-system trivial-build-system)
9196 (arguments
9197 `(#:modules ((guix build utils))
9198 #:builder
9199 (begin
9200 (use-modules (guix build utils)
9201 (srfi srfi-1)
9202 (srfi srfi-26))
9203 (let ((source (assoc-ref %build-inputs "source"))
9204 (php-dir (string-append %output "/share/web/" ,name)))
9205 (install-file (string-append source "/cat-avatar-generator.php") php-dir)
9206 (copy-recursively (string-append source "/avatars") (string-append php-dir "/avatars"))
9207 ;; The cache directory must not be in the store, but in a writable
9208 ;; location. The webserver will give us this location.
9209 (substitute* (string-append php-dir "/cat-avatar-generator.php")
9210 (("\\$cachepath = .*")
9211 "if(isset($_SERVER['CACHE_DIR']))
9212$cachepath = $_SERVER['CACHE_DIR'];
9213else
9214die('You need to set the CACHE_DIR variable first.');"))
9215 #t))))
9216 (home-page "https://framagit.org/Deevad/cat-avatar-generator")
9217 (synopsis "Random avatar generator")
9218 (description "Cat avatar generator is a generator of cat pictures optimised
9219to generate random avatars, or defined avatar from a \"seed\". This is a
9220derivation by David Revoy from the original MonsterID by Andreas Gohr.")
9221 ;; expat for the code, CC-BY 4.0 for the artwork
9222 (license (list license:expat
9223 license:cc-by4.0)))))
9224
9225(define-public nghttp2
9226 (package
9227 (name "nghttp2")
9228 (version "1.69.0")
9229 (source
9230 (origin
9231 (method url-fetch)
9232 (uri (string-append "https://github.com/nghttp2/nghttp2/"
9233 "releases/download/v" version "/"
9234 "nghttp2-" version ".tar.xz"))
9235 (sha256
9236 (base32
9237 "1b88wp8ghfpnlpbqzsbwwylry86qzwwl33v5w2yzcmicxjv29cqz"))))
9238 (build-system gnu-build-system)
9239 (outputs (list "out"
9240 "lib")) ; only libnghttp2
9241 (native-inputs
9242 (list pkg-config
9243 ;; Required by tests.
9244 cunit python tzdata-for-tests))
9245 (inputs
9246 ;; Required to build the tools (i.e. without ‘--enable-lib-only’).
9247 (append
9248 (if (target-hurd?)
9249 `((,openssl "static"))
9250 (list jemalloc)) ; fight nghttpd{,x} heap fragmentation
9251 (list c-ares
9252 jansson ; for HPACK tools
9253 libev
9254 libxml2 ; for ‘nghttp -a’
9255 openssl)))
9256 (arguments
9257 (list
9258 #:configure-flags
9259 #~(list (string-append "--libdir=" #$output:lib "/lib")
9260 "--enable-app" ; build all the tools
9261 "--enable-hpack-tools" ; ...all the tools
9262 "--disable-examples"
9263 "--disable-static" ; don't bother building .a files
9264 #$@(if (%current-target-system)
9265 '("--disable-python-bindings")
9266 '()))
9267 #:phases
9268 #~(modify-phases %standard-phases
9269 (add-after 'unpack 'break-circular-reference
9270 ;; libnghttp2.pc by default retains a reference to the ‘out’ output,
9271 ;; which is not allowed. Break this cycle. While we could install
9272 ;; only the library to ‘out’ and move everything else to a separate
9273 ;; output, this would inconvenience the majority of (human) users.
9274 (lambda _
9275 (substitute* "lib/libnghttp2.pc.in"
9276 (("@prefix@")
9277 #$output:lib))))
9278 (add-before 'check 'set-timezone-directory
9279 (lambda* (#:key inputs native-inputs #:allow-other-keys)
9280 (setenv "TZDIR" (search-input-directory
9281 (or native-inputs inputs)
9282 "share/zoneinfo")))))))
9283 (home-page "https://nghttp2.org/")
9284 (synopsis "HTTP/2 protocol client, proxy, server, and library")
9285 (description
9286 "nghttp2 implements the Hypertext Transfer Protocol, version
92872 (@dfn{HTTP/2}).
9288
9289A reusable C library provides the HTTP/2 framing layer, with several tools built
9290on top of it:
9291
9292@itemize
9293@item @command{nghttp}, a command-line HTTP/2 client. It exposes many advanced
9294and low-level aspects of the protocol and is useful for debugging.
9295@item @command{nghttpd}, a fast, multi-threaded HTTP/2 static web server that
9296serves files from a local directory.
9297@item @command{nghttpx}, a fast, multi-threaded HTTP/2 reverse proxy that can be
9298deployed in front of existing web servers that don't support HTTP/2.
9299Both @command{nghttpd} and @command{nghttpx} can fall back to HTTP/1.1 for
9300backwards compatibility with clients that don't speak HTTP/2.
9301@item @command{h2load} for benchmarking (only!) your own HTTP/2 servers.
9302@item HTTP/2 uses a header compression method called @dfn{HPACK}.
9303nghttp2 provides a HPACK encoder and decoder as part of its public API.
9304@item @command{deflatehd} converts JSON data or HTTP/1-style header fields to
9305compressed JSON header blocks.
9306@item @command{inflatehd} converts such compressed headers back to JSON pairs.
9307@end itemize\n")
9308 (license license:expat)))
9309
9310(define-public nghttp2-for-node-bootstrap
9311 (package
9312 (inherit nghttp2)
9313 (version "1.58.0")
9314 (source
9315 (origin
9316 (method url-fetch)
9317 (uri (string-append "https://github.com/nghttp2/nghttp2/"
9318 "releases/download/v" version "/"
9319 "nghttp2-" version ".tar.xz"))
9320 (sha256
9321 (base32
9322 "1q4ps8acr7nyia7mf2z11m0yh3fn1imhyv855j3xjbx91l2a6s2a"))))
9323 (properties '((hidden? . #t)))))
9324
9325(define-public nghttp2-for-node-lts
9326 (package
9327 (inherit nghttp2)
9328 (version "1.69.0")
9329 (source
9330 (origin
9331 (method url-fetch)
9332 (uri (string-append "https://github.com/nghttp2/nghttp2/"
9333 "releases/download/v" version "/"
9334 "nghttp2-" version ".tar.xz"))
9335 (sha256
9336 (base32
9337 "1b88wp8ghfpnlpbqzsbwwylry86qzwwl33v5w2yzcmicxjv29cqz"))))
9338 (properties '((hidden? . #t)))))
9339
9340(define-public nghttp3
9341 (package
9342 (name "nghttp3")
9343 (version "1.11.0")
9344 (source
9345 (origin
9346 (method url-fetch)
9347 (uri (string-append "https://github.com/ngtcp2/nghttp3/"
9348 "releases/download/v" version "/"
9349 "nghttp3-" version ".tar.gz"))
9350 (sha256
9351 (base32
9352 "04ds0h2ppajx9brafd9rx4k9jsqm6cb0qjkj2lvpps1d5bd0pliw"))))
9353 (build-system gnu-build-system)
9354 (native-inputs
9355 (list pkg-config))
9356 (arguments
9357 (list
9358 #:configure-flags
9359 #~(list "--enable-lib-only")))
9360 (home-page "https://nghttp2.org/nghttp3/")
9361 (synopsis "HTTP/3 protocol library")
9362 (description
9363 "nghttp3 is an implementation of RFC 9114 HTTP/3 mapping over QUIC and
9364RFC 9204 QPACK in C. It does not depend on any particular QUIC transport
9365implementation.
9366
9367It implements extensions specified in RFC 9218 and RFC 9220. It supports
9368SETTINGS_H3_DATAGRAM from RFC 9297.
9369
9370It does not support server push.")
9371 (license license:expat)))
9372
9373(define-public hpcguix-web
9374 (package
9375 (name "hpcguix-web")
9376 (version "0.4.3")
9377 (source (origin
9378 (method git-fetch)
9379 (uri (git-reference
9380 (url "https://github.com/UMCUGenetics/hpcguix-web")
9381 (commit (string-append "v" version))))
9382 (file-name (git-file-name name version))
9383 (sha256
9384 (base32
9385 "1mcy4p5pw623gmwcx5jpry27njqyq1fp74wpq1c34s06gkhdarji"))))
9386 (build-system gnu-build-system)
9387 (arguments
9388 `(#:modules ((guix build gnu-build-system)
9389 (guix build utils)
9390 (srfi srfi-26)
9391 (ice-9 popen)
9392 (ice-9 rdelim))
9393 #:phases
9394 (modify-phases %standard-phases
9395 (add-before 'configure 'set-variables
9396 (lambda _
9397 ;; This prevents a few warnings
9398 (setenv "GUILE_AUTO_COMPILE" "0")
9399 (setenv "XDG_CACHE_HOME" (getcwd))))
9400 (add-after 'install 'wrap-program
9401 (lambda* (#:key inputs outputs #:allow-other-keys)
9402 (let* ((out (assoc-ref outputs "out"))
9403 (guix (assoc-ref inputs "guix"))
9404 (guile (assoc-ref inputs "guile"))
9405 (gcrypt (assoc-ref inputs "guile-gcrypt"))
9406 (git (assoc-ref inputs "guile-git"))
9407 (gnutls (assoc-ref inputs "guile-gnutls"))
9408 (bs (assoc-ref inputs "guile-bytestructures"))
9409 (json (assoc-ref inputs "guile-json"))
9410 (zlib (assoc-ref inputs "guile-zlib"))
9411 (syntax (assoc-ref inputs "guile-syntax-highlight"))
9412 (guile-cm (assoc-ref inputs
9413 "guile-commonmark"))
9414 (deps (list guile gcrypt git gnutls bs zlib guile-cm
9415 syntax guix json))
9416 (effective
9417 (read-line
9418 (open-pipe* OPEN_READ
9419 (string-append guile "/bin/guile")
9420 "-c" "(display (effective-version))")))
9421 (path (string-join
9422 (map (cut string-append <>
9423 "/share/guile/site/"
9424 effective)
9425 deps)
9426 ":"))
9427 (gopath (string-join
9428 (map (cut string-append <>
9429 "/lib/guile/" effective
9430 "/site-ccache")
9431 deps)
9432 ":")))
9433 (wrap-program (string-append out "/bin/hpcguix-web")
9434 `("GUILE_LOAD_PATH" ":" prefix (,path))
9435 `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,gopath)))))))))
9436 (native-inputs
9437 (list autoconf automake uglify-js pkg-config
9438 (lookup-package-native-input guix "guile")))
9439 (inputs
9440 (list bash-minimal
9441 (lookup-package-native-input guix "guile")
9442 guix
9443 guile-zlib
9444 guile-commonmark
9445 guile-json-4
9446 guile-syntax-highlight
9447 guile-gnutls ;used to connect to https://disarchive.guix.gnu.org
9448 bash-minimal))
9449 (home-page "https://github.com/UMCUGenetics/hpcguix-web")
9450 (synopsis "Web interface for cluster deployments of Guix")
9451 (description "Hpcguix-web provides a web interface to the list of packages
9452provided by Guix. The list of packages is searchable and provides
9453instructions on how to use Guix in a shared HPC environment.")
9454 (license license:agpl3+)))
9455
9456(define-public httrack
9457 (let ((commit "748c35de7858ead963daf1393ad023d75b7820c2")) ;version bump
9458 (package
9459 (name "httrack")
9460 (version "3.49.6")
9461 (source
9462 (origin
9463 (method git-fetch)
9464 (uri (git-reference
9465 (url "https://github.com/xroche/httrack")
9466 (commit commit)))
9467 (file-name (git-file-name name version))
9468 (sha256
9469 (base32
9470 "0z24ki0idiv4cqd8gl4521f2hfbzic85wlfgxfzqcpmd5yn3k1c8"))))
9471 (build-system gnu-build-system)
9472 (arguments
9473 (list
9474 #:phases
9475 #~(modify-phases %standard-phases
9476 (add-after 'unpack 'autogen
9477 ;; Force reconfiguration to generate "test-driver".
9478 (lambda _
9479 (substitute* "configure.ac"
9480 ;; Fix errors when running "configure" script.
9481 (("AX_CHECK_(COMPILE|LINK)_FLAG\\(.*") "")
9482 (("AX_CHECK_ALIGNED_ACCESS_REQUIRED") "")
9483 (("gl_VISIBILITY") ""))
9484 (invoke "autoreconf" "-vif")))
9485 (add-after 'unpack 'copy-coucal-source
9486 ;; Install Coucal source to work around missing submodule.
9487 (lambda* (#:key inputs #:allow-other-keys)
9488 (for-each (lambda (f) (install-file f "src/coucal"))
9489 (find-files #$(this-package-input "coucal")
9490 "\\.(c|h|diff|orig)$")))))))
9491 (native-inputs
9492 (list autoconf-2.71 automake libtool))
9493 (inputs
9494 (list coucal libressl zlib))
9495 (home-page "https://www.httrack.com/")
9496 (synopsis "Easy-to-use offline browser utility")
9497 (description "HTTrack allows you to download a World Wide Web site from
9498the Internet to a local directory, building recursively all directories,
9499getting HTML, images, and other files from the server to your computer.
9500
9501HTTrack arranges the original site's relative link-structure. Simply open
9502a page of the @emph{mirrored} website in your browser, and you can browse the
9503site from link to link, as if you were viewing it online. HTTrack can also
9504update an existing mirrored site, and resume interrupted downloads.
9505
9506HTTrack is fully configurable, and has an integrated help system.")
9507 (license license:gpl3+))))
9508
9509(define-public binaryen
9510 (package
9511 (name "binaryen")
9512 (version "125")
9513 (source
9514 (origin
9515 (method git-fetch)
9516 (uri (git-reference
9517 (url "https://github.com/WebAssembly/binaryen")
9518 (commit (string-append "version_" version))))
9519 (file-name (git-file-name name version))
9520 (sha256
9521 (base32 "1hgwgl7kwsxg7cihzz46lvsfzpkpy6w7w5c9gm4bhkfwz231jvs0"))))
9522 (build-system cmake-build-system)
9523 (arguments
9524 (list
9525 #:tests? #f
9526 #:phases
9527 #~(modify-phases %standard-phases
9528 (add-after 'unpack 'use-system-googletest
9529 (lambda _
9530 (substitute* "third_party/CMakeLists.txt"
9531 ((" googletest/.*") "")
9532 (("add_library\\(gtest.*") "")
9533 (("target_compile_options\\(gtest.*") "")
9534 (("target_compile_options\\(gtest_main.*") ""))
9535 (substitute* "CMakeLists.txt"
9536 (("add_subdirectory\\(test/gtest\\)")
9537 "find_package(GTest REQUIRED)"))))
9538 (add-after 'unpack 'fix-gcc14-compatibility
9539 (lambda _
9540 ;; Disable -Werror to fix GCC 14 build failure.
9541 (substitute* "CMakeLists.txt"
9542 (("-Werror") "")))))))
9543 (native-inputs (list googletest))
9544 (home-page "https://github.com/WebAssembly/binaryen")
9545 (synopsis "Optimizer and compiler/toolchain library for WebAssembly")
9546 (description "Binaryen is a compiler and toolchain infrastructure library
9547for WebAssembly, written in C++. It aims to make compiling to WebAssembly
9548easy, fast, and effective.")
9549 (license license:asl2.0)))
9550
9551(define-public buku
9552 (package
9553 (name "buku")
9554 (version "5.1")
9555 (source
9556 (origin
9557 (method git-fetch)
9558 (uri (git-reference
9559 (url "https://github.com/jarun/buku")
9560 (commit (string-append "v" version))))
9561 (file-name (git-file-name name version))
9562 (sha256
9563 (base32 "0krg13q2fa3r29knrl7ngq28dgzzxc9gif12gxkkm4djma2c1v7d"))))
9564 (build-system pyproject-build-system)
9565 (arguments
9566 (list
9567 ;; XXX: missing inputs for bukuserver
9568 #:test-flags
9569 #~(list "--ignore=tests/test_server.py"
9570 "--ignore=tests/test_views.py"
9571 "--deselect=tests/test_buku.py::test_fetch_data_with_url")
9572 #:phases
9573 #~(modify-phases %standard-phases
9574 (delete 'sanity-check))))
9575 (native-inputs (list python-pytest python-pyyaml python-setuptools))
9576 (inputs (list python-beautifulsoup4
9577 python-certifi
9578 python-cryptography
9579 python-flask
9580 python-html5lib
9581 python-urllib3))
9582 (home-page "https://github.com/jarun/buku")
9583 (synopsis "Bookmark manager")
9584 (description
9585 "buku is a powerful bookmark manager written in Python3 and SQLite3.
9586@command{buku} can auto-import bookmarks from your browser and present them
9587in an interactive command-line interface that lets you compose and update
9588bookmarks directly. It can also present them in a web interface with
9589@command{bukuserver}.")
9590 (license license:gpl3+)))
9591
9592(define-public buku-run
9593 (package
9594 (name "buku-run")
9595 (version "0.1.1")
9596 (source (origin
9597 (method git-fetch)
9598 (uri (git-reference
9599 (url "https://github.com/carnager/buku_run")
9600 (commit version)))
9601 (file-name (git-file-name name version))
9602 (sha256
9603 (base32
9604 "1zyjjf3b8g3dnymcrg683rbnc6qrvx8ravfm833n7kjrqky3bczn"))))
9605 (build-system gnu-build-system)
9606 (arguments
9607 (list #:tests? #f ;no tests
9608 #:make-flags
9609 #~(list (string-append "DESTDIR=" #$output)
9610 "PREFIX=")
9611 #:phases
9612 #~(modify-phases %standard-phases
9613 (delete 'configure)
9614 (add-after 'unpack 'fixpath
9615 (lambda* (#:key inputs #:allow-other-keys)
9616 (substitute* "buku_run"
9617 ((" \\<(rofi)\\>" all cmd)
9618 (string-append " " (search-input-file inputs "/bin/rofi")))
9619 (("\\<(buku)\\> " all cmd)
9620 (string-append (search-input-file inputs "/bin/buku") " "))
9621 (("\\<(awk|gawk)\\>" cmd)
9622 (search-input-file inputs "/bin/awk"))
9623 (("/etc/buku_run.config" path)
9624 (string-append #$output path))))))))
9625 (inputs (list buku rofi))
9626 (home-page "https://github.com/carnager/buku_run")
9627 (synopsis "@command{rofi} frontend for buku bookmarks manager")
9628 (description
9629 "This package provides a rofi frontend for the buku bookmark manager.")
9630 (license license:gpl3+)))
9631
9632(define-public tissue
9633 (package
9634 (name "tissue")
9635 (version "0.1.0")
9636 (source (origin
9637 (method url-fetch)
9638 (uri (string-append "https://tissue.systemreboot.net/releases/tissue-"
9639 version ".tar.lz"))
9640 (sha256
9641 (base32
9642 "0vsybgnzv8nnwf58pnxrs4101xczl8jvxd1wzmk4vmdyrp8a2kkm"))))
9643 (build-system gnu-build-system)
9644 (arguments
9645 (list #:make-flags #~(list (string-append "prefix=" #$output))
9646 #:modules `(((guix build guile-build-system)
9647 #:select (target-guile-effective-version))
9648 (guix build gnu-build-system)
9649 (guix build utils))
9650 #:phases
9651 (with-imported-modules '((guix build guile-build-system))
9652 #~(modify-phases %standard-phases
9653 (replace 'patch-source-shebangs
9654 (lambda* (#:key inputs #:allow-other-keys)
9655 (substitute* "bin/tissue"
9656 (("^exec guile")
9657 (string-append "exec "
9658 (search-input-file inputs "/bin/guile"))))))
9659 (delete 'configure)
9660 (add-after 'install 'wrap
9661 (lambda* (#:key inputs outputs #:allow-other-keys)
9662 (let ((out (assoc-ref outputs "out"))
9663 (effective-version (target-guile-effective-version)))
9664 (wrap-program (string-append out "/bin/tissue")
9665 `("GUILE_LOAD_PATH" prefix
9666 (,(string-append out "/share/guile/site/" effective-version)
9667 ,(getenv "GUILE_LOAD_PATH")))
9668 `("GUILE_LOAD_COMPILED_PATH" prefix
9669 (,(string-append out "/lib/guile/"
9670 effective-version "/site-ccache")
9671 ,(getenv "GUILE_LOAD_COMPILED_PATH")))))))))))
9672 (inputs (list bash-minimal guile-3.0 guile-filesystem guile-git guile-xapian))
9673 (native-inputs (list lzip))
9674 (propagated-inputs (list skribilo))
9675 (home-page "https://tissue.systemreboot.net")
9676 (synopsis "Text based project information management system")
9677 (description "tissue is an issue tracker and project information
9678management system built on plain text files and git. It is specifically
9679intended for small free software projects. It features a static site
9680generator to build a project website and a powerful search interface to search
9681through project issues and documentation. The search interface is built on
9682the Xapian search engine library, and is available both as a command-line
9683program and as a web server.")
9684 (license license:gpl3+)))
9685
9686(define-public anonip
9687 (package
9688 (name "anonip")
9689 (version "1.1.0")
9690 ;; The version on PyPi does not include fixture definitions for tests.
9691 (source (origin
9692 (method git-fetch)
9693 (uri (git-reference
9694 (url "https://github.com/DigitaleGesellschaft/Anonip")
9695 (commit "beab328945547b0147a53655f32c5cc76ab4488b")))
9696 (file-name (git-file-name name version))
9697 (sha256
9698 (base32
9699 "0cssdcridadjzichz1vv1ng7jwphqkn8ihh83hpz9mcjmxyb94qc"))))
9700 (build-system pyproject-build-system)
9701 (arguments
9702 (list #:test-flags #~(list "tests.py" "anonip.py")))
9703 (native-inputs
9704 (list python-pytest python-setuptools))
9705 (home-page "https://github.com/DigitaleGesellschaft/Anonip")
9706 (synopsis "Anonymize IP addresses in log files")
9707 (description
9708 "Anonip masks the last bits of IPv4 and IPv6 addresses in log files.
9709That way most of the relevant information is preserved, while the IP address
9710does not match a particular individuum anymore.
9711
9712Depending on your Web server, the log entries may be piped to Anonip directly
9713or via a FIFO (named pipe). Thus the unmasked IP addresses will never be
9714written to any file.
9715
9716It's also possible to rewrite existing log files.
9717
9718Anonip can also be uses as a Python module in your own Python application.")
9719 (license license:bsd-3)))
9720
9721(define-public poussetaches
9722 (package
9723 (name "poussetaches")
9724 (version "0.0.2")
9725 (source
9726 (origin
9727 (method git-fetch)
9728 (uri (git-reference
9729 (url "https://github.com/tsileo/poussetaches")
9730 (commit version)))
9731 (file-name (git-file-name name version))
9732 (sha256
9733 (base32
9734 "0kckcwvqklavd855np9aq5js6mg84isrlwchr504yigwma0sm7hm"))))
9735 (build-system go-build-system)
9736 (propagated-inputs
9737 (list go-github-com-robfig-cron-v3 go-golang-org-x-time))
9738 (arguments
9739 `(#:import-path "github.com/tsileo/poussetaches"))
9740 (home-page "https://github.com/tsileo/poussetaches")
9741 (synopsis "Lightweight asynchronous task execution service")
9742 (description "Poussetaches (which literally means \"push tasks\" in
9743French) is a lightweight asynchronous task execution service that aims to
9744replace Celery and RabbitMQ for small Python applications.
9745
9746The app posts base64-encoded payload to poussetaches and specifies the
9747endpoint that will be used to trigger the task. Poussetaches makes HTTP
9748requests with the registered payload until the right status code is
9749returned.")
9750 (license license:isc)))
9751
9752(define-public htmlcxx
9753 (package
9754 (name "htmlcxx")
9755 (version "0.87")
9756 (source
9757 (origin
9758 (method url-fetch)
9759 (uri
9760 (string-append "mirror://sourceforge/htmlcxx/v"
9761 version "/htmlcxx-" version ".tar.gz"))
9762 (sha256
9763 (base32 "1j3mzjlczjrk4ahc43s6kzpvzypzjmqz4sillnca5yadrwwgjf2x"))))
9764 (build-system gnu-build-system)
9765 (arguments
9766 ;; ISO C++17 does not allow dynamic exception specifications
9767 `(#:configure-flags '("CXXFLAGS=-std=c++11")))
9768 (home-page "https://htmlcxx.sourceforge.net/")
9769 (synopsis "Simple non-validating CSS1 and HTML parser for C++")
9770 (description "htmlcxx is a simple non-validating CSS1 and HTML parser for
9771C++. Although there are several other HTML parsers available, htmlcxx has some
9772characteristics that make it unique:
9773@itemize
9774@item STL like navigation of DOM tree, using excelent's tree.hh library from
9775Kasper Peeters
9776@item It is possible to reproduce exactly, character by character, the original
9777document from the parse tree
9778@item Bundled CSS parser
9779@item Optional parsing of attributes
9780@item C++ code that looks like C++ (not so true anymore)
9781@item Offsets of tags/elements in the original document are stored in the nodes
9782of the DOM tree
9783@end itemize")
9784 (license (list license:lgpl2.0
9785 license:gpl2
9786 license:asl2.0))))
9787
9788(define-public librocket
9789 (package
9790 (name "librocket")
9791 (version "1.3.0.0")
9792 (source
9793 (origin
9794 (method git-fetch)
9795 (uri
9796 (git-reference
9797 (url "https://github.com/libRocket/libRocket")
9798 (commit (string-append "release-" version))))
9799 (file-name (git-file-name name version))
9800 (sha256
9801 (base32 "1n6gq007vqijyfasfnfg6c8d2rc9qarl4bhzbgkz062m4h5izlfs"))))
9802 (build-system cmake-build-system)
9803 (arguments
9804 `(#:tests? #f ; No tests.
9805 #:phases
9806 (modify-phases %standard-phases
9807 (add-after 'unpack 'chdir
9808 (lambda _
9809 (chdir "Build"))))))
9810 (inputs
9811 (list freetype))
9812 (home-page "https://github.com/libRocket/libRocket") ; http://librocket.com/ is down.
9813 (synopsis "HTML/CSS user interface library")
9814 (description "libRocket is a C++ user interface package based on the HTML
9815and CSS standards. libRocket uses the open standards XHTML1.0 and
9816CSS2.0 (while borrowing features from HTML5 and CSS3), and extends them with
9817features suited towards real-time applications. It is designed as a complete
9818solution for any project's interface needs:
9819
9820@itemize
9821@item Dynamic layout system.
9822@item Efficient application-wide styling, with a custom-built templating engine.
9823@item Fully featured control set: buttons, sliders, drop-downs, etc.
9824@item Runtime visual debugging suite.
9825@item Easily integrated and extensible with Python or Lua scripting.
9826@end itemize\n")
9827 (license license:expat)))
9828
9829(define-public gmid
9830 (package
9831 (name "gmid")
9832 (version "2.1.1")
9833 (source (origin
9834 (method url-fetch)
9835 (uri (string-append
9836 "https://github.com/omar-polo/gmid/releases/download/"
9837 version "/gmid-" version ".tar.gz"))
9838 (sha256
9839 (base32
9840 "1gy41858xxgbvngw7b162sq8vddd104a3cdd53pp2vk1f91gxc4y"))))
9841 (build-system gnu-build-system)
9842 (arguments
9843 (list #:test-target "regress"
9844 #:phases
9845 #~(modify-phases %standard-phases
9846 (replace 'configure
9847 (lambda _
9848 (setenv "CC" #$(cc-for-target))
9849 (invoke "./configure"
9850 (string-append "PREFIX=" #$output)))))))
9851 (native-inputs (list bison
9852 coreutils
9853 flex
9854 pkg-config
9855 procps))
9856 (inputs (list libevent libressl))
9857 (home-page "https://gmid.omarpolo.com/")
9858 (synopsis "Simple and secure Gemini server")
9859 (description "@command{gmid} is a fast Gemini server written with security
9860in mind. It has features such as:
9861@itemize
9862@item reload the running configuration without interruption
9863@item automatic redirect/error pages
9864@item IRI support (RFC3987)
9865@item reverse proxying
9866@item CGI and FastCGI support
9867@item virtual hosts
9868@item location rules
9869@item event-based asynchronous I/O model
9870@item low memory footprint.
9871@end itemize")
9872 (license license:isc)))
9873
9874(define-public kiln
9875 (package
9876 (name "kiln")
9877 (version "0.4.1")
9878 (source (origin
9879 (method git-fetch)
9880 (uri (git-reference
9881 (url "https://git.sr.ht/~adnano/kiln")
9882 (commit version)))
9883 (file-name (git-file-name name version))
9884 (sha256
9885 (base32
9886 "1ynb079jsyv6viwdksavwar5lqj84ssfw39dl5da98z683xrvch5"))))
9887 (build-system go-build-system)
9888 (arguments
9889 (list
9890 #:import-path "git.sr.ht/~adnano/kiln"
9891 #:install-source? #f
9892 #:phases
9893 #~(modify-phases %standard-phases
9894 (add-after 'install 'install-man
9895 (lambda _
9896 (let ((man1 (string-append #$output "/share/man/man1")))
9897 (system (string-append
9898 "scdoc"
9899 "< src/git.sr.ht/~adnano/kiln/docs/kiln.1.scd"
9900 "> kiln.1"))
9901 (install-file "kiln.1" man1)))))))
9902 (native-inputs
9903 (list scdoc))
9904 (propagated-inputs
9905 (list go-github-com-google-shlex
9906 go-github-com-pelletier-go-toml
9907 go-gopkg-in-yaml-v3))
9908 (home-page "https://kiln.adnano.co/")
9909 (synopsis "Simple static site generator")
9910 (description
9911 "Kiln takes a different approach to building static sites.
9912Instead of packing all functionality into kiln itself, the core is lightweight
9913and can be extended with the use of external commands.")
9914 (license license:expat)))
9915
9916(define-public xoa
9917 (package
9918 (name "xoa")
9919 (version "0.5.1")
9920 (source
9921 (origin
9922 (method fossil-fetch)
9923 (uri (fossil-reference
9924 (uri "https://chim.loan/xoa")
9925 (check-in version)))
9926 (sha256 (base32 "1dl274bl88nhcjp4si2wm49nlsidg0222yy7w2dzfdvjrn0nm20n"))
9927 (modules '((guix build utils)))
9928 (snippet #~(delete-file-recursively "doc/djot")))) ;bundled docs
9929 (build-system gnu-build-system)
9930 (arguments
9931 (list
9932 #:tests?
9933 #f ;no test
9934 #:make-flags
9935 #~(list (string-append "PREFIX=" #$output))
9936 #:phases
9937 #~(modify-phases %standard-phases
9938 (delete 'configure)
9939 (add-after 'install 'wrap
9940 (lambda* (#:key inputs #:allow-other-keys)
9941 (let ((program (string-append #$output "/bin/xoa")))
9942 (substitute* program
9943 (("eqn( -T MathML )" all args)
9944 (string-append (search-input-file inputs "bin/eqn")
9945 args)))
9946 (wrap-program program
9947 `("GUIX_LUA_CPATH" ";" = (,(getenv "GUIX_LUA_CPATH")))
9948 `("GUIX_LUA_PATH" ";" = (,(getenv "GUIX_LUA_PATH"))))))))))
9949 (native-inputs
9950 (list findutils help2man))
9951 (inputs
9952 (list bash-minimal
9953 fennel
9954 groff ;for eqn
9955 lua
9956 lua-djot
9957 lua-filesystem
9958 lua-scintillua))
9959 (home-page "https://chim.loan/xoa")
9960 (synopsis "Basic static website generator")
9961 (description
9962 "Xoa is a basic generator of static websites. It takes care
9963of rendering the content of web feeds and pages, while the user defines
9964the directory and document structures.")
9965 (license (list license:cc0 ;manual page
9966 license:agpl3+))))
9967
9968(define-public siege
9969 (package
9970 (name "siege")
9971 (version "4.1.7")
9972 (source (origin
9973 (method url-fetch)
9974 (uri (string-append "http://download.joedog.org/siege/siege-"
9975 version ".tar.gz"))
9976 (sha256
9977 (base32
9978 "09ihp4sycjm8ixd0k4c7lyni4b0w2nh8gghdss1r75srs7nhq57c"))))
9979 (build-system gnu-build-system)
9980 (arguments
9981 '(#:configure-flags (list (string-append "--with-zlib="
9982 (assoc-ref %build-inputs "zlib"))
9983 (string-append "--with-ssl="
9984 (assoc-ref %build-inputs
9985 "openssl")))))
9986 (inputs (list openssl zlib))
9987 (home-page "https://www.joedog.org/siege-home/")
9988 (synopsis "HTTP/FTP load tester and benchmarking utility")
9989 (description
9990 "Siege is a multi-threaded HTTP/FTP load tester and benchmarking utility. It
9991can stress test a single URL with a user defined number of simulated users, or
9992it can read many URLs into memory and stress them simultaneously. The program
9993reports the total number of hits recorded, bytes transferred, response time,
9994concurrency, and return status.")
9995 ;; GPLv3+ with OpenSSL linking exception.
9996 (license license:gpl3+)))
9997
9998(define-public hurl
9999 (package
10000 (name "hurl")
10001 (version "8.0.1")
10002 (source
10003 (origin
10004 ;; The crates.io tarball does not include the hurlfmt crate.
10005 (method git-fetch)
10006 (uri (git-reference
10007 (url "https://github.com/Orange-OpenSource/hurl")
10008 (commit version)))
10009 (file-name (git-file-name name version))
10010 (sha256
10011 (base32 "0wsw9khfznc638qzp8zx2zwgnrg5d160ky5gnslwm9frz3p5hp0d"))))
10012 (build-system cargo-build-system)
10013 (arguments
10014 (list
10015 #:install-source? #f
10016 #:cargo-install-paths ''("packages/hurl" "packages/hurlfmt")
10017 #:cargo-test-flags
10018 '(list
10019 ;; Excluding doctests since rust-1.93 does not support them.
10020 "--lib" "--bins" "--tests")
10021 #:phases
10022 #~(modify-phases %standard-phases
10023 (add-after 'unpack 'relax-rust-version
10024 (lambda _
10025 ;; Upstream requires the latest stable Rust.
10026 (substitute* '("packages/hurl/Cargo.toml"
10027 "packages/hurlfmt/Cargo.toml")
10028 (("rust-version = \"1.95.0\"")
10029 "rust-version = \"1.93.0\""))))
10030 (add-before 'check 'start-test-server
10031 (lambda _
10032 ;; The integration tests expect a Flask test server
10033 ;; listening on port 8000.
10034 (with-directory-excursion "integration/hurl"
10035 (mkdir-p "build")
10036 (spawn "python3"
10037 '("python3" "server.py"
10038 "--host" "127.0.0.1" "--port" "8000")))
10039 ;; Wait for the server to come up.
10040 (let loop ((attempts 30))
10041 (unless (false-if-exception
10042 (let ((s (socket PF_INET SOCK_STREAM 0)))
10043 (connect s AF_INET
10044 (inet-pton AF_INET "127.0.0.1") 8000)
10045 (close-port s)))
10046 (when (zero? attempts)
10047 (error "test server did not start"))
10048 (sleep 1)
10049 (loop (1- attempts))))))
10050 (add-before 'install 'generate-man-pages
10051 (lambda _
10052 ;; Build the man pages from their Markdown sources.
10053 (for-each (lambda (name)
10054 (with-output-to-file (string-append
10055 "docs/manual/" name ".1")
10056 (lambda ()
10057 (invoke "python3" "bin/docs/build_man.py"
10058 (string-append
10059 "docs/manual/" name ".md")))))
10060 '("hurl" "hurlfmt"))))
10061 (add-before 'install 'generate-completions
10062 (lambda _
10063 ;; Generate the shell completions from the option spec
10064 ;; files, using upstream's script. This runs only the
10065 ;; completion part of generate_all.py, since the other
10066 ;; parts rewrite the source tree.
10067 (setenv "PYTHONPATH" "bin/spec/options")
10068 (invoke "python3" "-c"
10069 "import generate_all as g
10070for name in ('hurl', 'hurlfmt'):
10071 g.generate_completion_files(name, g.get_option_files('docs/spec/options/' + name))")))
10072 (add-after 'install 'install-man-pages
10073 (lambda _
10074 (let ((man1 (string-append #$output "/share/man/man1")))
10075 (for-each (lambda (page)
10076 (install-file page man1))
10077 '("docs/manual/hurl.1" "docs/manual/hurlfmt.1")))))
10078 (add-after 'install 'install-completions
10079 (lambda _
10080 (let ((bash (string-append #$output
10081 "/share/bash-completion/completions"))
10082 (fish (string-append #$output
10083 "/share/fish/vendor_completions.d"))
10084 (zsh (string-append #$output "/share/zsh/site-functions")))
10085 (for-each (lambda (name)
10086 ;; Bash completion files must be named after
10087 ;; the command, without the .bash extension.
10088 (mkdir-p bash)
10089 (copy-file (string-append "completions/"
10090 name ".bash")
10091 (string-append bash "/" name))
10092 (install-file (string-append "completions/"
10093 name ".fish")
10094 fish)
10095 (install-file (string-append "completions/_"
10096 name)
10097 zsh))
10098 '("hurl" "hurlfmt"))))))))
10099 (native-inputs
10100 (list clang
10101 pkg-config
10102 python
10103 python-flask
10104 python-waitress))
10105 (inputs
10106 (cons* curl
10107 libxml2
10108 openssl
10109 zlib
10110 (cargo-inputs 'hurl)))
10111 (home-page "https://hurl.dev")
10112 (synopsis "Run and test HTTP requests")
10113 (description
10114 "Hurl is a command line tool that runs HTTP requests defined in a plain
10115text format. It can chain requests, capture values and evaluate queries on
10116headers and body response. This package also provides @command{hurlfmt},
10117a formatter and linter for Hurl files.")
10118 (license license:asl2.0)))
10119
10120(define-public gmnisrv
10121 (package
10122 (name "gmnisrv")
10123 (version "1.0")
10124 (home-page "https://git.sr.ht/~sircmpwn/gmnisrv")
10125 (source
10126 (origin
10127 (method git-fetch)
10128 (uri (git-reference
10129 (url home-page)
10130 (commit version)))
10131 (sha256
10132 (base32 "115r1dw9k08r2nvygy8ll21qvsc5kmzi5jcqm7g7r8q8hifxglap"))
10133 (file-name (git-file-name name version))))
10134 (build-system gnu-build-system)
10135 (arguments
10136 `(#:tests? #f ;no check target
10137 #:configure-flags (list "--sysconfdir=/etc"
10138 (string-append "--with-mimedb="
10139 (assoc-ref %build-inputs "mailcap")
10140 "/etc/mime.types"))
10141 #:make-flags (list (string-append "CC=" ,(cc-for-target)))))
10142 (inputs
10143 (list mailcap openssl))
10144 (native-inputs
10145 (list pkg-config scdoc))
10146 (synopsis "Simple Gemini protocol server")
10147 (description "gmnisrv is a simple Gemini protocol server written in C.")
10148 (license (list license:gpl3+
10149 license:bsd-3)))) ;; for ini.c and ini.h
10150
10151(define-public kineto
10152 (package
10153 (name "kineto")
10154 (properties '((commit . "edd4fe31f16f9eb9565d2b6a329738ceedea8de9")
10155 (revision . "0")
10156 (go-pseudo-version . "0.0.0-20250122093821-1f4e0667bc21")))
10157 (version (git-version "0.0.0"
10158 (assoc-ref properties 'revision)
10159 (assoc-ref properties 'commit)))
10160 (source
10161 (origin
10162 (method git-fetch)
10163 (uri (git-reference
10164 (url "https://git.sr.ht/~sircmpwn/kineto")
10165 (commit (assoc-ref properties 'commit))))
10166 (file-name (git-file-name name version))
10167 (sha256
10168 (base32 "1dldfz5irdhaza6dj2bdv99c8bwprl34n9rvlyvvvd8mpvsl6459"))))
10169 (build-system go-build-system)
10170 (arguments
10171 (list
10172 #:install-source? #f
10173 #:import-path "git.sr.ht/~sircmpwn/kineto/"))
10174 (native-inputs
10175 (list go-git-sr-ht-sircmpwn-getopt
10176 go-git-sr-ht-adnano-go-gemini))
10177 (home-page "https://git.sr.ht/~sircmpwn/kineto/")
10178 (synopsis "HTTP proxy for Gemini")
10179 (description
10180 "This is an @acronym{HTTP} to
10181@url{https://gemini.circumlunar.space/,Gemini} proxy designed to provide
10182service for a single domain, i.e. to make your Gemini site available over
10183HTTP. It can proxy to any domain in order to facilitate linking to the rest
10184of Geminispace, but it defaults to a specific domain.")
10185 (license license:gpl3+)))
10186
10187(define-public maildir-rank-addr
10188 (package
10189 (name "maildir-rank-addr")
10190 (version "1.4.1")
10191 (source
10192 (origin
10193 (method git-fetch)
10194 (uri (git-reference
10195 (url "https://github.com/ferdinandyb/maildir-rank-addr")
10196 (commit (string-append "v" version))))
10197 (file-name (git-file-name name version))
10198 (sha256
10199 (base32 "19dhlfb5d8sqayfyv3pj3rnrw3gbkq9vzj7gwcj2g3whx1ayy86y"))))
10200 (build-system go-build-system)
10201 (arguments
10202 (list
10203 #:install-source? #f
10204 #:import-path "github.com/ferdinandyb/maildir-rank-addr"))
10205 (native-inputs
10206 (list go-github-com-emersion-go-message
10207 go-github-com-emersion-go-mbox
10208 go-github-com-mitchellh-go-homedir
10209 go-github-com-spf13-pflag
10210 go-github-com-spf13-viper
10211 go-github-com-stretchr-testify
10212 go-golang-org-x-text))
10213 (home-page "https://github.com/ferdinandyb/maildir-rank-addr")
10214 (synopsis "Generate an addressbook from locally available email")
10215 (description
10216 "This package generates a ranked addressbook from your locally available
10217email. It can be used in MUA's like @url{http://aerc-mail.org, aerc} or
10218@url{http://www.mutt.org/,mutt} by grepping the list.")
10219 (license license:expat)))
10220
10221(define-public libzim
10222 (let* ((testsuite-version "0.9.0")
10223 (testsuite-file-name (git-file-name "zim-testing-suite"
10224 testsuite-version)))
10225 (package
10226 (name "libzim")
10227 (version "9.8.1")
10228 (source (origin
10229 (method git-fetch)
10230 (uri (git-reference
10231 (url "https://github.com/openzim/libzim")
10232 (commit version)))
10233 (sha256
10234 (base32
10235 "0daczgl9jyj52mjh2c79zh0zxij77rcsfmzzkpia9vpkvbf021ay"))
10236 (file-name (git-file-name name version))))
10237 (build-system meson-build-system)
10238 (arguments
10239 (list
10240 #:configure-flags
10241 #~(list
10242 (string-append "-Dtest_data_dir="
10243 #+(this-package-native-input testsuite-file-name)
10244 "/data"))))
10245 (propagated-inputs
10246 ;; In Requires.private of libzim.pc.
10247 (list icu4c
10248 xapian
10249 xz
10250 (list zstd "lib") ))
10251 (inputs
10252 (list python-wrapper ; for libzim-compile-resources
10253 (list util-linux "lib")))
10254 (native-inputs
10255 (list pkg-config
10256 googletest
10257 ;; The testsuite is a pre-generated artifact that can be
10258 ;; regenerated from the upstream repository, but it
10259 ;; explicitely advises against it. Use it pregenerated.
10260 ;; Using git-fetch allows us to avoid additional unpacking.
10261 (origin
10262 (method git-fetch)
10263 (uri (git-reference
10264 (url "https://github.com/openzim/zim-testing-suite")
10265 (commit testsuite-version)))
10266 (file-name testsuite-file-name)
10267 (sha256
10268 (base32 "14ac58i0zzvzssl5fyykc494jlw4ia8dhfr10hmi8h3gfn08dm62")))))
10269 (home-page "https://wiki.openzim.org/wiki/Main_Page")
10270 (synopsis "Reference implementation of the ZIM specification")
10271 (description "The openZIM project proposes offline storage solutions for
10272content coming from the Web. The zimlib is the standard implementation of the
10273ZIM specification. It is a library which implements the read and write method
10274for ZIM files.")
10275 (license license:gpl2))))
10276
10277(define-public kiwix-lib
10278 (package
10279 (name "kiwix-lib")
10280 (version "14.2.0")
10281 (home-page "https://github.com/kiwix/kiwix-lib/")
10282 (source (origin
10283 (method git-fetch)
10284 (uri (git-reference
10285 (url home-page)
10286 (commit version)))
10287 (sha256
10288 (base32
10289 "17chyyrbj239fd4iwcnb01yyk7p1zyxbn7fw1a9pr7r05ngsax1s"))
10290 (file-name (git-file-name name version))))
10291 (build-system meson-build-system)
10292 (arguments
10293 `(#:phases
10294 (modify-phases %standard-phases
10295 (add-before 'configure 'fix-paths-and-includes
10296 (lambda* (#:key inputs #:allow-other-keys)
10297 (substitute* "src/aria2.cpp"
10298 (("ARIA2_CMD \"aria2c\"")
10299 (string-append "ARIA2_CMD \""
10300 (search-input-file inputs "/bin/aria2c")
10301 "\""))))))))
10302 (inputs
10303 (list aria2
10304 curl
10305 icu4c
10306 libmicrohttpd
10307 libzim
10308 pugixml
10309 xapian
10310 zlib
10311 `(,zstd "lib")))
10312 (native-inputs
10313 (list cpp-mustache
10314 pkg-config
10315 ;; for kiwix-compile-resources
10316 python-wrapper))
10317 (synopsis "Common code base for all Kiwix ports")
10318 (description "The Kiwix library provides the Kiwix software suite core.
10319It contains the code shared by all Kiwix ports.")
10320 (license license:gpl3)))
10321
10322(define-public kiwix-lib-13
10323 (package
10324 (inherit kiwix-lib)
10325 (name "kiwix-lib")
10326 (version "13.1.0")
10327 (source (origin
10328 (method git-fetch)
10329 (uri (git-reference
10330 (url "https://github.com/kiwix/kiwix-lib/")
10331 (commit version)))
10332 (file-name (git-file-name name version))
10333 (sha256
10334 (base32
10335 "0mgzmqar70rj83x27a4zh7qr6yl5pi95g6i3fvvxysdjy76v18qc"))))
10336 (arguments
10337 (substitute-keyword-arguments arguments
10338 ((#:phases phases)
10339 #~(modify-phases #$phases
10340 (add-before 'configure 'set-cflags
10341 (lambda _
10342 ;; Needed due to deprecation in libzim
10343 (setenv "CPPFLAGS" "-Wno-error=deprecated-declarations")))))))))
10344
10345(define-public kiwix-desktop
10346 (package
10347 (name "kiwix-desktop")
10348 (version "2.5.1")
10349 (source (origin
10350 (method url-fetch)
10351 (uri (string-append
10352 "https://download.kiwix.org/release/kiwix-desktop/kiwix-desktop-"
10353 version
10354 ".tar.gz"))
10355 (sha256
10356 (base32
10357 "14dgv92fpb9nzvqa59446818gzhf19sn32f5vgvxrb9llbn6z4rh"))))
10358 (build-system qt-build-system)
10359 (arguments
10360 (list
10361 #:qtbase qtbase
10362 #:tests? #f ; no tests
10363 #:modules '((guix build qt-build-system)
10364 ((guix build gnu-build-system) #:prefix gnu:)
10365 (guix build utils))
10366 #:phases
10367 #~(modify-phases %standard-phases
10368 (replace 'configure
10369 (lambda* (#:key outputs #:allow-other-keys)
10370 (invoke "qmake"
10371 (string-append "PREFIX="
10372 (assoc-ref outputs "out")))))
10373 (replace 'build (assoc-ref gnu:%standard-phases 'build))
10374 (replace 'install (assoc-ref gnu:%standard-phases 'install)))))
10375 (inputs
10376 (list bash-minimal
10377 curl
10378 icu4c
10379 kiwix-lib
10380 libmicrohttpd
10381 libzim
10382 pugixml
10383 qtbase
10384 qtdeclarative
10385 qtsvg
10386 qtwebchannel
10387 qtwebengine
10388 qtwayland
10389 xapian
10390 zlib
10391 `(,zstd "lib")))
10392 (native-inputs
10393 (list pkg-config
10394 qtbase))
10395 (home-page "https://wiki.kiwix.org/wiki/Software")
10396 (synopsis "Viewer and manager of ZIM files")
10397 (description "Kiwix Desktop allows you to enjoy a lot of different content
10398offline (such as Wikipedia), without any access to Internet.")
10399 (license license:gpl3)))
10400
10401(define-public kiwix-tools
10402 (package
10403 (name "kiwix-tools")
10404 (version "3.8.2")
10405 (source (origin
10406 (method url-fetch)
10407 (uri (string-append "https://download.kiwix.org/release/"
10408 "kiwix-tools/kiwix-tools-" version ".tar.xz"))
10409 (sha256
10410 (base32
10411 "1y99r4vg8d3wy16s5f1i5j1prksv5g1cxxj6ysprhp7vhiczhf0j"))))
10412 (build-system meson-build-system)
10413 (inputs
10414 (list curl
10415 icu4c
10416 kiwix-lib
10417 libmicrohttpd
10418 libzim
10419 pugixml
10420 docopt-cpp
10421 xapian
10422 zlib
10423 `(,zstd "lib")))
10424 (native-inputs
10425 (list pkg-config))
10426 (home-page "https://wiki.kiwix.org/wiki/Software")
10427 (synopsis "Kiwix command line tools")
10428 (description "The Kiwix tools are a collection of Kiwix-related command line
10429tools:
10430@itemize
10431@item kiwix-manage: Manage XML based library of ZIM files
10432@item kiwix-read: Read ZIM file content
10433@item kiwix-search: Fulltext search in ZIM files
10434@item kiwix-serve: HTTP daemon serving ZIM files
10435@end itemize\n")
10436 (license license:gpl3+)))
10437
10438(define-public offpunk
10439 (let ((commit "947f813de43d07590a7b60e760cd3df85223af52")
10440 (revision "1"))
10441 (package
10442 (name "offpunk")
10443 (version (git-version "3.0" revision commit))
10444 (source
10445 (origin
10446 (method git-fetch)
10447 (uri (git-reference
10448 (url "https://git.sr.ht/~lioploum/offpunk/")
10449 (commit commit)))
10450 (file-name (git-file-name name version))
10451 (sha256
10452 (base32 "0jvxqw53f670d4ky99pdq24ljmya49bx02lc26gd1a3avcwfhisc"))))
10453 (build-system pyproject-build-system)
10454 (arguments
10455 (list
10456 #:phases
10457 #~(modify-phases %standard-phases
10458 (add-after 'unpack 'patch-external-programs
10459 (lambda* (#:key inputs #:allow-other-keys)
10460 (substitute* "offutils.py"
10461 ((": \"\\b(grep|xdg-open|less|chafa|file)\\b\"" _ program)
10462 (string-append ": \""
10463 (search-input-file inputs
10464 (format #f "bin/~a"
10465 program)) "\""))))))))
10466 (native-inputs (list gettext-minimal python-hatchling python-pytest
10467 python-pytest-mock python-hatch-requirements-txt))
10468 (inputs (list python-beautifulsoup4
10469 python-chardet
10470 python-cryptography
10471 python-feedparser
10472 python-readability-lxml
10473 python-requests
10474 python-setproctitle
10475 chafa
10476 file
10477 grep
10478 less
10479 xdg-utils))
10480 (synopsis "Offline first command-line browser for the smolnet")
10481 (description
10482 "A command-line and offline-first smolnet browser/feed reader
10483for Gemini, Gopher, Spartan and Web.
10484
10485The goal of Offpunk is to be able to synchronise your content once (a day, a
10486week, a month) and then browse/organise it while staying disconnected.")
10487 (home-page "https://offpunk.net/")
10488 (license license:agpl3+))))
10489
10490(define-public uriparser
10491 (package
10492 (name "uriparser")
10493 (version "1.0.2")
10494 (source (origin
10495 (method git-fetch)
10496 (uri (git-reference
10497 (url "https://github.com/uriparser/uriparser")
10498 (commit (string-append "uriparser-" version))))
10499 (file-name (git-file-name name version))
10500 (sha256
10501 (base32
10502 "1a4032wn6p9mv5lizh5rpg5gwvq69bk7zfqix7vjv5cap1zqvk84"))))
10503 (build-system cmake-build-system)
10504 (native-inputs (list googletest doxygen graphviz))
10505 (arguments (if (%current-target-system)
10506 (list #:configure-flags #~(list "-DURIPARSER_BUILD_TESTS=OFF"))
10507 (list #:configure-flags #~(list "-DURIPARSER_BUILD_TESTS=ON"))))
10508 (synopsis "Strictly RFC 3986 compliant URI parsing and handling library")
10509 (description "uriparser is a strictly RFC 3986 compliant URI parsing and
10510handling library written in C89 (\"ANSI C\"). uriparser is fast and supports
10511Unicode.")
10512 (home-page "https://uriparser.github.io/")
10513 (license license:bsd-3)))
10514
10515(define-public quark
10516 ;; No releases yet
10517 (let ((revision "0")
10518 (commit "c6a9055e5a30be570e30da8d216c39662c3a3f99"))
10519 (package
10520 (name "quark")
10521 (version (git-version "0.0.0" revision commit))
10522 (source (origin
10523 (method git-fetch)
10524 (uri (git-reference
10525 (url "https://git.suckless.org/quark/")
10526 (commit commit)))
10527 (file-name (git-file-name name version))
10528 (sha256
10529 (base32
10530 "1znvnr30xi5vgd6n3wvgv9pwj992zpzzjk0fmq28ydf1l6kqvkm7"))))
10531 (build-system gnu-build-system)
10532 (arguments
10533 (list #:tests? #f ; no tests
10534 #:make-flags
10535 #~(list (string-append "CC=" #$(cc-for-target))
10536 (string-append "PREFIX=" (assoc-ref %outputs "out")))
10537 #:phases
10538 #~(modify-phases %standard-phases
10539 (delete 'configure)))) ; no configure script
10540 (home-page "https://tools.suckless.org/quark/")
10541 (synopsis "Small and simple HTTP GET/HEAD-only web server for static
10542content")
10543 (description "Quark is an extremely small and simple HTTP GET/HEAD only
10544web server for static content. TLS is not natively supported and should be
10545provided by a TLS reverse proxy (e.g. tlstunnel, hitch or stunnel).")
10546 (license license:isc)
10547
10548 ;; XXX: Ignore this CVE to work around a name clash with the unrelated
10549 ;; "cpe:2.3:a:comelz:quark" package. The proper fix is for (guix cve)
10550 ;; to account for "vendor names".
10551 (properties '((lint-hidden-cve . ("CVE-2019-15520")))))))
10552
10553(define-public go-webring
10554 (package
10555 (name "go-webring")
10556 (properties '((commit . "2a370aeeb9a0c434268371a7af688fac96887e95")
10557 (revision . "1")
10558 (go-pseudo-version . "0.0.0-20251130195908-2a370aeeb9a0")))
10559 (version (git-version "0.0.0"
10560 (assoc-ref properties 'revision)
10561 (assoc-ref properties 'commit)))
10562 (source
10563 (origin
10564 (method git-fetch)
10565 (uri (git-reference
10566 (url "https://git.sr.ht/~amolith/go-webring")
10567 (commit (assoc-ref properties 'commit))))
10568 (file-name (git-file-name name version))
10569 (sha256
10570 (base32 "199jg1fv5ki4ssc08ndsa5irdf703kizfnvsf2q5isapna5kvgx3"))))
10571 (build-system go-build-system)
10572 (arguments
10573 (list #:import-path "git.sr.ht/~amolith/go-webring"
10574 #:install-source? #f))
10575 (native-inputs (list go-github-com-spf13-pflag))
10576 (home-page "https://git.sr.ht/~amolith/go-webring")
10577 (synopsis "Simple webring implementation")
10578 (description
10579 "@code{go--webring} provides a simple webring implementation as used by
10580the Fediring.")
10581 (license (list license:cc0 license:bsd-2))))
10582
10583(define-public awslogs
10584 (package
10585 (name "awslogs")
10586 (version "0.15.0")
10587 (source (origin
10588 (method url-fetch)
10589 (uri (pypi-uri "awslogs" version))
10590 (sha256
10591 (base32
10592 "1maxahp9la2jdcgrgf3abq4jjr80jg9b354xd2hcw0q73jxj7whr"))))
10593 (build-system pyproject-build-system)
10594 (native-inputs
10595 (list python-pytest
10596 python-setuptools))
10597 (propagated-inputs
10598 (list python-boto3
10599 python-jmespath
10600 python-dateutil
10601 python-termcolor))
10602 (home-page "https://github.com/jorgebastida/awslogs")
10603 (synopsis "Command line tool to read AWS CloudWatch logs")
10604 (description
10605 "This package provides awslogs, a simple command line tool to download
10606and read AWS CloudWatch logs. The same functionality is available from
10607@code{aws logs tail}.")
10608 (license license:bsd-3)))
10609
10610(define-public lexbor
10611 (package
10612 (name "lexbor")
10613 (version "2.6.0")
10614 (source (origin
10615 (method git-fetch)
10616 (uri (git-reference
10617 (url "https://github.com/lexbor/lexbor")
10618 (commit (string-append "v" version))))
10619 (file-name (git-file-name name version))
10620 (sha256
10621 (base32
10622 "033hna4b9lh0675vri140nhnqbyj4vsa02j5r17fmdza6594islp"))))
10623 (build-system cmake-build-system)
10624 (arguments
10625 (list #:configure-flags #~(list "-DLEXBOR_BUILD_TESTS=ON"
10626 "-DLEXBOR_BUILD_TESTS_CPP=ON")))
10627 (home-page "https://lexbor.com/")
10628 (synopsis "@code{HTML} and @code{CSS} renderer written in @code{C}")
10629 (description
10630 "This package provides @code{Lexbor}, a high-performance, lightweight
10631@code{HTML}/@code{CSS} engine implemented entirely in @code{C99} with no external
10632dependencies. It's primarily usage is intended for projects that need to process
10633web content, but don't require a full browser environment.")
10634 (license license:asl2.0)))
10635
10636(define-public orcania
10637 (package
10638 (name "orcania")
10639 (version "2.3.2")
10640 (source (origin
10641 (method git-fetch)
10642 (uri (git-reference
10643 (url "https://github.com/babelouest/orcania")
10644 (commit (string-append "v" version))))
10645 (file-name (git-file-name name version))
10646 (sha256
10647 (base32
10648 "0dhczbhwvf3f9mj38qm46j10rpr77yz1np68mabfw8zcfwhr0pn4"))))
10649 (build-system cmake-build-system)
10650 (arguments
10651 (list #:configure-flags #~(list "-DBUILD_ORCANIA_TESTING=ON"
10652 "-DBUILD_ORCANIA_DOCUMENTATION=ON")
10653 #:phases #~(modify-phases %standard-phases
10654 (add-after 'build 'build-doc
10655 (lambda _
10656 (invoke "make" "doc")))
10657 (add-after 'install 'install-doc
10658 (lambda _
10659 (let ((doc (string-append #$output
10660 "/share/doc/orcania")))
10661 (mkdir-p doc)
10662 (copy-recursively "../source/doc/html" doc)))))))
10663 (native-inputs (list check doxygen subunit))
10664 (home-page "https://babelouest.github.io/orcania/")
10665 (synopsis "Collection of C functions for Ulfius")
10666 (description
10667 "Orcania is a library with functions that can be shared among C programs.
10668It is intended to provide low-level functionalities for the Ulfius and Yder
10669libraries.")
10670 (license license:lgpl2.1)))
10671
10672(define-public yder
10673 (package
10674 (name "yder")
10675 (version "1.4.19")
10676 (source (origin
10677 (method git-fetch)
10678 (uri (git-reference
10679 (url "https://github.com/babelouest/yder")
10680 (commit (string-append "v" version))))
10681 (file-name (git-file-name name version))
10682 (sha256
10683 (base32
10684 "02jgrqby39ykfdhc7z0bh3x5aqisqybz6lnvn7msh9wqbj5zvzi8"))))
10685 (build-system cmake-build-system)
10686 (arguments
10687 (list #:configure-flags #~(list "-DWITH_JOURNALD=OFF"
10688 "-DBUILD_YDER_TESTING=ON"
10689 "-DBUILD_YDER_DOCUMENTATION=ON")
10690 #:phases #~(modify-phases %standard-phases
10691 (add-after 'build 'build-doc
10692 (lambda _
10693 (invoke "make" "doc")))
10694 (add-after 'install 'install-doc
10695 (lambda _
10696 (let ((doc (string-append #$output
10697 "/share/doc/yder")))
10698 (mkdir-p doc)
10699 (copy-recursively "../source/doc/html" doc)))))))
10700 (native-inputs (list check doxygen subunit))
10701 (inputs (list orcania))
10702 (home-page "https://babelouest.github.io/yder/")
10703 (synopsis "Logging library for C applications")
10704 (description
10705 "Yder is a logging library written in C. It can log messages to the
10706console, a file, syslog, journald, or a callback function.")
10707 (license license:lgpl2.1)))
10708
10709(define-public yoga
10710 (package
10711 (name "yoga")
10712 (version "3.2.1")
10713 (source (origin
10714 (method git-fetch)
10715 (uri (git-reference
10716 (url "https://github.com/facebook/yoga")
10717 (commit (string-append "v" version))))
10718 (file-name (git-file-name name version))
10719 (sha256
10720 (base32
10721 "09g2kispng520mcaky87lkpj7k1lscsz2jyv05cjxzfrwwf4pfyb"))))
10722 (build-system cmake-build-system)
10723 (arguments
10724 (list #:phases
10725 #~(modify-phases %standard-phases
10726 (add-after 'unpack 'use-system-googletest
10727 (lambda _
10728 (substitute* "tests/CMakeLists.txt"
10729 (("FetchContent_MakeAvailable[(]googletest[)]")
10730 "find_package(GTest REQUIRED)"))))
10731 (replace 'check
10732 (lambda* (#:key tests? #:allow-other-keys)
10733 (when tests?
10734 (invoke "./tests/yogatests")))))))
10735 (inputs (list googletest))
10736 (home-page "https://github.com/facebook/yoga/")
10737 (synopsis "Flexbox layout engine")
10738 (description
10739 "Yoga is an embeddable and performant flexbox layout engine with bindings
10740for multiple languages.")
10741 (license license:expat)))
10742
10743(define-public ulfius
10744 (package
10745 (name "ulfius")
10746 (version "2.7.13")
10747 (source (origin
10748 (method git-fetch)
10749 (uri (git-reference
10750 (url "https://github.com/babelouest/ulfius")
10751 (commit (string-append "v" version))))
10752 (file-name (git-file-name name version))
10753 (sha256
10754 (base32
10755 "1dfwdpqmqki63dddi53bfv6jd0kzv8gh2w1lxsv6mzk3sxl6qakf"))))
10756 (build-system cmake-build-system)
10757 (arguments
10758 (list #:configure-flags #~(list "-DBUILD_ULFIUS_TESTING=ON"
10759 "-DBUILD_ULFIUS_DOCUMENTATION=ON")
10760 #:phases #~(modify-phases %standard-phases
10761 (add-after 'build 'build-doc
10762 (lambda _
10763 (invoke "make" "doc")))
10764 (replace 'check
10765 (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
10766 (when tests?
10767 (let ((job-count (number->string
10768 (or (and parallel-tests?
10769 (parallel-job-count))
10770 1))))
10771 ;; Skip failing tests that try to start a server.
10772 (invoke "ctest" "--output-on-failure"
10773 "-j" job-count "-E"
10774 "(core|framework|example_callbacks)")))))
10775 (add-after 'install 'install-doc
10776 (lambda _
10777 (let ((doc (string-append #$output
10778 "/share/doc/ulfius")))
10779 (mkdir-p doc)
10780 (copy-recursively "../source/doc/html" doc)))))))
10781 (native-inputs (list check doxygen subunit))
10782 (inputs (list zlib))
10783 (propagated-inputs ;for libulfius.pc
10784 (list curl
10785 gnutls
10786 jansson
10787 libgcrypt
10788 libmicrohttpd
10789 orcania
10790 yder))
10791 (home-page "https://babelouest.github.io/ulfius/")
10792 (synopsis "HTTP Framework for REST Applications in C")
10793 (description
10794 "Ulfius is a HTTP Framework library for REST Applications written in C.
10795It is based on GNU libmicrohttpd for the backend web server, Jansson for the
10796JSON manipulation library, and libcurl for the http/smtp client API. It can
10797be used to facilitate creation of web applications in C programs with a small
10798memory footprint, as in embedded systems applications. It can create
10799webservices in HTTP or HTTPS mode, stream data, or implement server
10800websockets.")
10801 (license license:lgpl2.1)))
10802
10803;;;
10804;;; Avoid adding new packages to the end of this file. To reduce the chances
10805;;; of a merge conflict, place them above by existing packages with similar
10806;;; functionality or similar names.
10807;;;