projects/guix·blob javascript-team · refs

10919 lines · 425.6 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-2026 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, 2026 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 c)
114 #:use-module (gnu packages check)
115 #:use-module (gnu packages code)
116 #:use-module (gnu packages compression)
117 #:use-module (gnu packages cpp)
118 #:use-module (gnu packages crypto)
119 #:use-module (gnu packages curl)
120 #:use-module (gnu packages cyrus-sasl)
121 #:use-module (gnu packages databases)
122 #:use-module (gnu packages datastructures)
123 #:use-module (gnu packages digest)
124 #:use-module (gnu packages django)
125 #:use-module (gnu packages dns)
126 #:use-module (gnu packages docbook)
127 #:use-module (gnu packages documentation)
128 #:use-module (gnu packages emacs)
129 #:use-module (gnu packages emacs-xyz)
130 #:use-module (gnu packages file)
131 #:use-module (gnu packages fontutils)
132 #:use-module (gnu packages freedesktop)
133 #:use-module (gnu packages gcc)
134 #:use-module (gnu packages gd)
135 #:use-module (gnu packages geo)
136 #:use-module (gnu packages gettext)
137 #:use-module (gnu packages glib)
138 #:use-module (gnu packages gnome)
139 #:use-module (gnu packages gnu-doc)
140 #:use-module (gnu packages gnunet)
141 #:use-module (gnu packages gnupg)
142 #:use-module (gnu packages golang)
143 #:use-module (gnu packages golang-build)
144 #:use-module (gnu packages golang-check)
145 #:use-module (gnu packages golang-compression)
146 #:use-module (gnu packages golang-crypto)
147 #:use-module (gnu packages golang-web)
148 #:use-module (gnu packages golang-xyz)
149 #:use-module (gnu packages gperf)
150 #:use-module (gnu packages graphviz)
151 #:use-module (gnu packages groff)
152 #:use-module (gnu packages gtk)
153 #:use-module (gnu packages guile)
154 #:use-module (gnu packages guile-xyz)
155 #:use-module (gnu packages icu4c)
156 #:use-module (gnu packages image)
157 #:use-module (gnu packages image-viewers)
158 #:use-module (gnu packages imagemagick)
159 #:use-module (gnu packages java)
160 #:use-module (gnu packages jemalloc)
161 #:use-module (gnu packages kde-frameworks)
162 #:use-module (gnu packages kerberos)
163 #:use-module (gnu packages less)
164 #:use-module (gnu packages libbsd)
165 #:use-module (gnu packages libevent)
166 #:use-module (gnu packages libidn)
167 #:use-module (gnu packages libunistring)
168 #:use-module (gnu packages libunwind)
169 #:use-module (gnu packages linux)
170 #:use-module (gnu packages lisp-xyz)
171 #:use-module (gnu packages llvm)
172 #:use-module (gnu packages logging)
173 #:use-module (gnu packages lsof)
174 #:use-module (gnu packages lua)
175 #:use-module (gnu packages mail)
176 #:use-module (gnu packages man)
177 #:use-module (gnu packages markup)
178 #:use-module (gnu packages ncurses)
179 #:use-module (gnu packages nettle)
180 #:use-module (gnu packages networking)
181 #:use-module (gnu packages node)
182 #:use-module (gnu packages node-xyz)
183 #:use-module (gnu packages nss)
184 #:use-module (gnu packages nss)
185 #:use-module (gnu packages openldap)
186 #:use-module (gnu packages openstack)
187 #:use-module (gnu packages package-management)
188 #:use-module (gnu packages pcre)
189 #:use-module (gnu packages perl)
190 #:use-module (gnu packages perl-check)
191 #:use-module (gnu packages perl-compression)
192 #:use-module (gnu packages pkg-config)
193 #:use-module (gnu packages prometheus)
194 #:use-module (gnu packages python)
195 #:use-module (gnu packages python-build)
196 #:use-module (gnu packages python-check)
197 #:use-module (gnu packages python-compression)
198 #:use-module (gnu packages python-crypto)
199 #:use-module (gnu packages python-web)
200 #:use-module (gnu packages python-xyz)
201 #:use-module (gnu packages qt)
202 #:use-module (gnu packages compiler-tools)
203 #:use-module (gnu packages readline)
204 #:use-module (gnu packages sdl)
205 #:use-module (gnu packages search)
206 #:use-module (gnu packages serialization)
207 #:use-module (gnu packages skribilo)
208 #:use-module (gnu packages sphinx)
209 #:use-module (gnu packages sqlite)
210 #:use-module (gnu packages tcl)
211 #:use-module (gnu packages telephony)
212 #:use-module (gnu packages texinfo)
213 #:use-module (gnu packages textutils)
214 #:use-module (gnu packages time)
215 #:use-module (gnu packages tls)
216 #:use-module (gnu packages valgrind)
217 #:use-module (gnu packages version-control)
218 #:use-module (gnu packages video)
219 #:use-module (gnu packages vim)
220 #:use-module (gnu packages wget)
221 #:use-module (gnu packages xdisorg)
222 #:use-module (gnu packages xml)
223 #:use-module (gnu packages zig)
224 #:use-module (gnu packages zig-xyz)
225 #:use-module (gnu packages)
226 #:use-module (guix build-system ant)
227 #:use-module (guix build-system cargo)
228 #:use-module (guix build-system cmake)
229 #:use-module (guix build-system copy)
230 #:use-module (guix build-system glib-or-gtk)
231 #:use-module (guix build-system gnu)
232 #:use-module (guix build-system go)
233 #:use-module (guix build-system guile)
234 #:use-module (guix build-system meson)
235 #:use-module (guix build-system node)
236 #:use-module (guix build-system perl)
237 #:use-module (guix build-system pyproject)
238 #:use-module (guix build-system qt)
239 #:use-module (guix build-system scons)
240 #:use-module (guix build-system trivial)
241 #:use-module (guix build-system zig)
242 #:use-module (guix cvs-download)
243 #:use-module (guix download)
244 #:use-module (guix fossil-download)
245 #:use-module (guix gexp)
246 #:use-module (guix git-download)
247 #:use-module (guix hg-download)
248 #:use-module ((guix licenses) #:prefix license:)
249 #:use-module (guix packages)
250 #:use-module (guix utils)
251 #:use-module (ice-9 match)
252 #:use-module ((srfi srfi-1) #:select (delete-duplicates)))
253
254(define-public anubis-ai-firewall
255 (package
256 ;; Name clashes with "anubis" in (gnu packages mail).
257 (name "anubis-ai-firewall")
258 (version "1.22.0")
259 (source
260 (origin
261 (method git-fetch)
262 (uri (git-reference
263 (url "https://github.com/TecharoHQ/anubis")
264 (commit (string-append "v" version))))
265 (file-name (git-file-name name version))
266 (patches
267 (search-patches "anubis-use-the-browser-native-web-crypto-api.patch"))
268 (sha256
269 (base32 "1vaj78727ndzsxydhdgwr9w0p9ykg73nkrbbiijh5l7lvabh3ric"))))
270 (build-system go-build-system)
271 (arguments
272 (list
273 ;; TODO: Enable some of them
274 #:tests? #f
275 ;; TODO: some JS work is required as app.js could not be found
276 #:install-source? #f
277 #:embed-files #~(list ".version"
278 ".*\\.tmpl"
279 ".*\\.js"
280 ".*\\.jsx"
281 ".*\\.mjs"
282 ".*\\.sh"
283 ".*\\.css"
284 "nodes"
285 "text"
286 "children")
287 #:import-path "github.com/TecharoHQ/anubis/cmd/anubis"
288 #:unpack-path "github.com/TecharoHQ/anubis"
289 #:phases
290 #~(modify-phases %standard-phases
291 (add-after 'unpack 'patch-usr-bin-env-shebangs
292 (lambda* (#:key unpack-path #:allow-other-keys)
293 (with-directory-excursion (string-append "src/" unpack-path)
294 (substitute* (find-files "." "\\.sh$")
295 (("#!/usr/bin/env bash")
296 (string-append "#!" (which "bash")))))))
297 (add-after 'patch-usr-bin-env-shebangs 'generate-code
298 (lambda* (#:key unpack-path #:allow-other-keys)
299 (with-directory-excursion (string-append "src/" unpack-path)
300 (for-each make-file-writable
301 (find-files "." "(_templ\\.go|_string\\.go)$"))
302 (invoke "templ" "generate")
303 (with-directory-excursion "internal/dnsbl"
304 (invoke "stringer" "-type=DroneBLResponse")))))
305 (add-after 'generate-code 'make-assets
306 (lambda* (#:key inputs unpack-path #:allow-other-keys)
307 (with-directory-excursion (string-append "src/" unpack-path)
308 (substitute* "xess/xess.go"
309 (("if anubis.Version != \"devel\" \\{")
310 "if false {"))
311 ;; Let esbuild resolve 'preact' and 'preact/hooks'.
312 (setenv "NODE_PATH"
313 (string-append (assoc-ref inputs "node-preact")
314 "/lib/node_modules"))
315 (invoke "./web/build.sh")
316 (invoke "./lib/challenge/preact/build.sh")))))))
317 (native-inputs
318 (list brotli
319 esbuild
320 go-github-com-a-h-templ
321 go-github-com-cespare-xxhash-v2
322 go-github-com-facebookgo-flagenv
323 go-github-com-gaissmai-bart
324 go-github-com-golang-jwt-jwt-v5
325 go-github-com-google-cel-go
326 go-github-com-google-uuid
327 go-github-com-grpc-ecosystem-go-grpc-middleware-providers-prometheus
328 go-github-com-grpc-ecosystem-go-grpc-middleware-v2
329 go-github-com-joho-godotenv
330 go-github-com-lum8rjack-go-ja4h
331 go-github-com-nicksnyder-go-i18n-v2
332 go-github-com-prometheus-client-golang
333 go-github-com-redis-go-redis-v9
334 go-github-com-sebest-xff
335 go-github-com-shirou-gopsutil-v4
336 go-github-com-techarohq-thoth-proto
337 go-go-etcd-io-bbolt
338 go-golang-org-x-net
339 go-golang-org-x-text
340 go-google-golang-org-grpc
341 go-gopkg-in-yaml-v3
342 go-k8s-io-apimachinery
343 go-sigs-k8s-io-yaml
344 go-tools
345 gzip
346 node-preact
347 templ
348 zstd))
349 (home-page "https://github.com/TecharoHQ/anubis")
350 (synopsis "Weighs the soul of incoming HTTP requests to stop AI crawlers")
351 (description
352 "Anubis is a Web AI Firewall Utility that weighs the soul of your
353connection using one or more challenges in order to protect upstream resources
354from scraper bots.
355
356This program is designed to help protect the small internet from the endless
357storm of requests that flood in from AI companies. Anubis is as lightweight as
358possible to ensure that everyone can afford to protect the communities closest
359to them.")
360 (license license:expat)))
361
362(define-public qhttp
363 (package
364 (name "qhttp")
365 (version "3.1")
366 (source
367 (origin
368 (method git-fetch)
369 (uri
370 (git-reference
371 (url "https://github.com/azadkuh/qhttp")
372 (commit (string-append "version-" version))))
373 (file-name (git-file-name name version))
374 (sha256
375 (base32 "0cx23g4y4k4v9p5ph6h7gfhp8sfy1gcdv1g6bl44hppar1y0zfdq"))))
376 (build-system gnu-build-system)
377 (arguments
378 `(#:tests? #f ; no target
379 #:imported-modules
380 ((guix build copy-build-system)
381 ,@%default-gnu-imported-modules)
382 #:modules
383 (((guix build copy-build-system) #:prefix copy:)
384 (guix build gnu-build-system)
385 (guix build utils))
386 #:phases
387 (modify-phases %standard-phases
388 (add-after 'unpack 'patch-source
389 (lambda* (#:key outputs #:allow-other-keys)
390 (substitute* "commondir.pri"
391 (("\\$\\$PRJDIR/xbin")
392 (string-append (assoc-ref outputs "out") "/lib"))
393 (("-L")
394 "-lhttp_parser -L")
395 (("\\$\\$PRJDIR/3rdparty")
396 ""))
397 (substitute* "src/src.pro"
398 (("SOURCES \\+= \\$\\$PRJDIR/3rdparty/http-parser/http_parser.c")
399 "")
400 (("HEADERS \\+= \\$\\$PRJDIR/3rdparty/http-parser/http_parser.h")
401 ""))
402 (substitute* '("src/private/qhttpbase.hpp" "src/qhttpabstracts.cpp")
403 (("http-parser/http_parser.h")
404 "http_parser.h"))
405 #t))
406 (replace 'configure
407 (lambda _ (invoke "qmake")))
408 (replace 'install
409 (lambda args
410 (apply (assoc-ref copy:%standard-phases 'install)
411 #:install-plan
412 '(("src" "include"
413 #:include-regexp ("\\.hpp$")))
414 args)))
415 (add-after 'install 'remove-examples
416 (lambda* (#:key outputs #:allow-other-keys)
417 (with-directory-excursion
418 (string-append (assoc-ref outputs "out") "/lib")
419 (for-each delete-file
420 (list
421 "basic-server"
422 "helloworld"
423 "postcollector")))
424 #t)))))
425 (inputs
426 (list http-parser qtbase-5))
427 (home-page "https://github.com/azadkuh/qhttp/")
428 (synopsis "Qt-based HTTP Library")
429 (description
430 "Qhttp is a light-weight and asynchronous HTTP library
431(both server & client) in Qt5 and C++14.")
432 (license license:expat)))
433
434(define-public httpd
435 (package
436 (name "httpd")
437 (version "2.4.66")
438 (source (origin
439 (method url-fetch)
440 (uri (string-append "mirror://apache/httpd/httpd-"
441 version ".tar.bz2"))
442 (sha256
443 (base32
444 "0nm2zvy6w4g4jqsss8y6g655b3nlp969x8hbhy785fxc88mzzmwl"))))
445 (build-system gnu-build-system)
446 (native-inputs (list pcre2)) ; for 'pcre2-config'
447 (inputs (list apr apr-util libxcrypt openssl perl)) ; needed to run bin/apxs
448 (arguments
449 (list
450 #:test-target "test"
451 #:configure-flags #~(list "--enable-rewrite"
452 "--enable-userdir"
453 "--enable-vhost-alias"
454 "--enable-ssl"
455 "--enable-mime-magic"
456 (string-append "--sysconfdir="
457 #$output
458 "/etc/httpd"))))
459 (synopsis "Featureful HTTP server")
460 (description
461 "The Apache HTTP Server Project is a collaborative software development
462effort aimed at creating a robust, commercial-grade, featureful, and
463freely-available source code implementation of an HTTP (Web) server. The
464project is jointly managed by a group of volunteers located around the world,
465using the Internet and the Web to communicate, plan, and develop the server
466and its related documentation.")
467 (license license:asl2.0)
468 (home-page "https://httpd.apache.org/")))
469
470(define-public leafnode
471 (package
472 (name "leafnode")
473 (version "1.12.0")
474 (source (origin
475 (method url-fetch)
476 (uri (string-append "mirror://sourceforge/leafnode/leafnode/"
477 version "/leafnode-" version ".tar.gz"))
478 (sha256
479 (base32
480 "1pkryzndqaxs1ym7gs77r6x8mmzpnm5x7n2ph8ga45zn45rwwrxl"))))
481 (build-system gnu-build-system)
482 (arguments
483 (list #:phases
484 #~(modify-phases %standard-phases
485 (add-after 'unpack 'fix-tests
486 (lambda _
487 (substitute* "Makefile.am"
488 (("/bin/sh") (which "sh"))))))))
489 (native-inputs (list autoconf automake-1.16.5))
490 (inputs (list pcre2))
491 (home-page "https://sourceforge.net/projects/leafnode/")
492 (synopsis "NNTP news proxy")
493 (description
494 "Leafnode is a caching Usenet news proxy that enables online newsreaders
495to read news off-line and aggregates news from various NNTP servers into
496one.")
497 ;; Most of the code is under Expat license, with some GPL, LGPL exceptions.
498 (license license:gpl2+)))
499
500(define-public miniflux
501 (package
502 (name "miniflux")
503 (version "2.3.3")
504 (source
505 (origin
506 (method git-fetch)
507 (uri (git-reference
508 (url "https://github.com/miniflux/v2")
509 (commit version)))
510 (file-name (git-file-name name version))
511 (sha256
512 (base32 "067vyh4hmymkhk21ppqx09avgqbfxka5xfyq9i8sw9vpmfpj57yc"))))
513 (build-system go-build-system)
514 (arguments
515 (list
516 #:go go-1.26
517 #:install-source? #f
518 #:import-path "miniflux.app/v2"
519 #:build-flags
520 #~(list (string-append
521 "-ldflags= -X miniflux.app/v2/internal/version.Version="
522 #$version))
523 #:phases
524 #~(modify-phases %standard-phases
525 ;; Force disable legacy ServeMux behaviour, with which routing
526 ;; doesn't work. It is enabled automatically because we use
527 ;; GO111MODULE=off in go-build-system.
528 (add-after 'unpack 'fix-httpmuxgo121
529 (lambda _
530 (substitute* "src/miniflux.app/v2/main.go"
531 (("^package main")
532 "//go:debug httpmuxgo121=0\n\npackage main"))))
533 ;; Skipping test case that is trying to resolve a domain name
534 (add-after 'unpack 'skip-real-domain-resolve-test
535 (lambda _
536 (substitute* "src/miniflux.app/v2/internal/urllib/url_test.go"
537 (("\\{\"example.org\", \"example.org\", false\\},")
538 "// {\"example.org\", \"example.org\", false},"))))
539 (add-after 'install 'install-manpage
540 (lambda* (#:key import-path #:allow-other-keys)
541 (let ((man1 (string-append #$output "/share/man/man1/"))
542 (page (format #f "src/~a/miniflux.1" import-path)))
543 (install-file page man1))))
544 (add-after 'install-manpage 'rename-binary
545 (lambda _
546 (let ((bindir (string-append #$output "/bin/")))
547 (rename-file (string-append bindir "v2")
548 (string-append bindir "miniflux"))))))))
549 (inputs
550 (list go-github-com-andybalholm-brotli
551 go-github-com-coreos-go-oidc-v3
552 go-github-com-go-webauthn-webauthn
553 go-github-com-lib-pq
554 go-github-com-prometheus-client-golang
555 go-github-com-puerkitobio-goquery
556 go-github-com-tdewolff-minify-v2
557 go-golang-org-x-crypto
558 go-golang-org-x-image
559 go-golang-org-x-net
560 go-golang-org-x-oauth2
561 go-golang-org-x-term
562 go-golang-org-x-text))
563 (home-page "https://miniflux.app/")
564 (synopsis "Minimalist and opinionated feed reader")
565 (description
566 "Miniflux is a minimalist and opinionated feed reader:
567
568@itemize
569@item Written in Go (Golang)
570@item Works only with Postgresql
571@item Doesn't use any ORM
572@item Doesn't use any complicated framework
573@item Use only modern vanilla Javascript (ES6 and Fetch API)
574@item Single binary compiled statically without dependency
575@item The number of features is voluntarily limited
576@end itemize")
577 (license license:asl2.0)))
578
579(define-public mod-wsgi
580 (package
581 (name "mod-wsgi")
582 (version "5.0.2")
583 (source (origin
584 (method git-fetch)
585 (uri (git-reference
586 (url "https://github.com/GrahamDumpleton/mod_wsgi")
587 (commit version)))
588 (file-name (git-file-name name version))
589 (sha256
590 (base32
591 "0cb3bh682cf8v0hvlx84w44vgac0lkx8pkbnxyd8ahpqrx9r44qn"))))
592 (build-system gnu-build-system)
593 (arguments
594 (list
595 #:disallowed-references (list (this-package-native-input "httpd"))
596 #:tests? #f ; TODO: can't figure out if there are tests
597 #:make-flags #~(list (string-append "DESTDIR=" #$output)
598 "LIBEXECDIR=/modules")))
599 (native-inputs (list httpd))
600 (inputs (list python-wrapper))
601 (synopsis "Apache HTTPD module for Python WSGI applications")
602 (description
603 "The mod_wsgi module for the Apache HTTPD Server adds support for running
604applications that support the Python @acronym{WSGI, Web Server Gateway
605Interface} specification.")
606 (license license:asl2.0)
607 (home-page "https://modwsgi.readthedocs.io/")))
608
609(define-public ablorb
610 (package
611 (name "ablorb")
612 (version "0.1.1")
613 (source
614 (origin
615 (method git-fetch)
616 (uri (git-reference
617 (url "https://gitlab.gnome.org/lilyp/ablorb")
618 (commit version)))
619 (file-name (git-file-name name version))
620 (sha256
621 (base32 "1yyc52863bbqvq9si7bhwwraafa3kir6qr5xqavqbvi140d9c373"))))
622 (build-system meson-build-system)
623 (inputs (list glib gconf gnome-vfs libxml2))
624 (native-inputs (list pkg-config))
625 (home-page "https://gitlab.gnome.org/lilyp/ablorb")
626 (synopsis "Replace asset links with data URIs")
627 (description "Ablorb takes an XML file and resolves relative links,
628replacing them with data URIs.")
629 (license license:gpl3+)))
630
631(define-public monolith
632 (package
633 (name "monolith")
634 (version "2.10.1")
635 (source
636 (origin
637 (method git-fetch)
638 (uri (git-reference
639 (url "https://github.com/Y2Z/monolith")
640 (commit (string-append "v" version))))
641 (file-name (git-file-name name version))
642 (sha256
643 (base32 "1p3qbsa8cnqhzwd45h808pk0yzsfjm0ka7x8hh99gm4qzgvyngzc"))
644 (modules '((guix build utils)))
645 ;; Don't default to vendored openssl.
646 (snippet '(substitute* "Cargo.toml"
647 ((", \"vendored-openssl\"") "")))))
648 (build-system cargo-build-system)
649 (arguments
650 (list
651 #:install-source? #f))
652 (native-inputs
653 (list pkg-config))
654 (inputs
655 (cons* openssl (cargo-inputs 'monolith)))
656 (home-page "https://github.com/Y2Z/monolith")
657 (synopsis "Command line tool for saving web pages as a single HTML file")
658 (description
659 "Monolith bundles any web page into a single HTML file.
660
661Unlike conventional ``Save page as…'', Monolith not only saves the target
662document, it embeds CSS, image, and JavaScript assets all at once, producing
663a single HTML5 document.
664
665If compared to saving websites with @samp{wget -mpk}, Monolith embeds
666all assets as data URLs and therefore displays the saved page exactly
667the same, being completely separated from the Internet.")
668 (license license:unlicense)))
669
670(define-public nginx
671 (package
672 (name "nginx")
673 ;; Please update the nginx-documentation package together with this one!
674 ;; Track the ‘mainline’ branch. Upstream considers it more reliable than
675 ;; ’stable’ and recommends that “in general you deploy the NGINX mainline
676 ;; branch at all times” (https://www.nginx.com/blog/nginx-1-6-1-7-released/)
677 (version "1.31.5")
678 (source (origin
679 (method url-fetch)
680 (uri (string-append "https://nginx.org/download/nginx-"
681 version ".tar.gz"))
682 (sha256
683 (base32
684 "0yd2ml6jgwxvls6p7qzaglimbc5z3nklasvbsd5n4dj8adyn0lg9"))))
685 (build-system gnu-build-system)
686 (inputs (list libxcrypt libxml2 libxslt openssl pcre2 zlib))
687 (arguments
688 (list
689 #:tests? #f ; no test target
690 #:configure-flags
691 #~(list (string-append "--conf-path=" #$output
692 "/share/nginx/conf/nginx.conf")
693 ;; These file names should be configured by the service, but at
694 ;; least set the defaults to writable locations.
695 "--error-log-path=/tmp/nginx-error.log"
696 "--http-log-path=/tmp/nginx-access.log"
697 "--pid-path=/tmp/nginx.pid"
698 "--with-http_ssl_module"
699 "--with-http_v2_module"
700 "--with-http_v3_module"
701 "--with-http_xslt_module"
702 "--with-http_gzip_static_module"
703 "--with-http_gunzip_module"
704 "--with-http_addition_module"
705 "--with-http_sub_module"
706 "--with-http_dav_module"
707 "--with-pcre-jit"
708 "--with-debug"
709 "--with-compat"
710 "--with-stream"
711 "--with-stream_ssl_module"
712 "--with-stream_ssl_preread_module"
713 "--with-http_stub_status_module"
714 ;; Even when not cross-building, we pass the
715 ;; --crossbuild option to avoid customizing for the
716 ;; kernel version on the build machine.
717 #$(let ((system "Linux") ; uname -s
718 (release "3.2.0") ; uname -r
719 ;; uname -m
720 (machine (match (or (%current-target-system)
721 (%current-system))
722 ("x86_64-linux" "x86_64")
723 ("i686-linux" "i686")
724 ("mips64el-linux" "mips64")
725 ;; Prevent errors when querying
726 ;; this package on unsupported
727 ;; platforms, e.g. when running
728 ;; "guix package --search="
729 (_ "UNSUPPORTED"))))
730 (string-append "--crossbuild="
731 system ":" release ":" machine)))
732 #:phases
733 #~(modify-phases %standard-phases
734 (add-before 'configure 'patch-/bin/sh
735 (lambda _
736 (substitute* "auto/feature"
737 (("/bin/sh") (which "sh")))))
738 (replace 'configure
739 ;; The configure script is hand-written, not from GNU autotools.
740 (lambda* (#:key configure-flags inputs #:allow-other-keys)
741 (setenv "CC" #$(cc-for-target))
742 ;; Fix ./configure test for ‘#include <libxml/parser.h>’.
743 (setenv "CFLAGS" ; CPPFLAGS is not respected
744 (string-append "-O2 -g "
745 "-I" (search-input-directory
746 inputs "/include/libxml2")))
747 (format #t "configure flags: ~s~%" configure-flags)
748 (apply invoke "./configure"
749 (string-append "--prefix=" #$output)
750 configure-flags)))
751 (add-after 'install 'install-man-page
752 (lambda _
753 (let ((man (string-append #$output "/share/man")))
754 (install-file "objs/nginx.8" (string-append man "/man8")))))
755 (add-after 'install 'move-html-doc
756 (lambda _
757 (let* ((out #$output)
758 (share (string-append out "/share/nginx")))
759 ;; Example configuration and HTML files belong in /share.
760 (mkdir-p share)
761 (rename-file (string-append out "/html")
762 (string-append share "/html"))))))))
763 (home-page "https://nginx.org")
764 (synopsis "HTTP and reverse proxy server")
765 (description
766 "Nginx (\"engine X\") is a high-performance web and reverse proxy server
767created by Igor Sysoev. It can be used both as a stand-alone web server
768and as a proxy to reduce the load on back-end HTTP or mail servers.")
769 ;; Almost all of nginx is distributed under the bsd-2 license.
770 ;; The exceptions are:
771 ;; * The 'nginx-http-push' module is covered by the expat license.
772 ;; * The 'nginx-development-kit' module is mostly covered by bsd-3,
773 ;; except for two source files which are bsd-4 licensed.
774 (license (list license:bsd-2 license:expat license:bsd-3 license:bsd-4))))
775
776(define-public nginx-documentation
777 ;; This documentation should be relevant for the current nginx package.
778 (let ((commit "0ce65d332a857da2c57663cecfbd8a0f5af3b814")
779 (revision "0"))
780 (package
781 (name "nginx-documentation")
782 (version (git-version "1.31.5" revision commit))
783 (source
784 (origin (method git-fetch)
785 (uri (git-reference
786 (url "https://github.com/nginx/nginx.org.git")
787 (commit commit)))
788 (file-name (git-file-name name version))
789 (sha256
790 (base32
791 "1rv19dc6vd5vjpp77fjcnzwd6wfmnnhbffqf72904lwbc882y8bs"))))
792 (build-system gnu-build-system)
793 (arguments
794 (list
795 #:tests? #f ; no test suite
796 #:phases
797 #~(modify-phases %standard-phases
798 (delete 'configure) ; no configure script
799 (replace 'build
800 (lambda _
801 (substitute* "tools/umasked.sh"
802 ((" /bin/sh") (string-append " " (which "sh"))))
803 ;; The documentation includes a banner, which makes sense on
804 ;; the NGinx website, but doesn't make much sense when
805 ;; viewing locally. Therefore, modify the CSS to remove the
806 ;; banner.
807 (substitute* "xslt/style.xslt"
808 (("#banner \\{ background: black;")
809 "#banner { display: none;"))
810 (invoke "make")))
811 (replace 'install
812 (lambda _
813 (mkdir-p #$output)
814 (copy-recursively "libxslt" #$output))))))
815 (native-inputs (list libxml2 libxslt nginx-xslscript))
816 (home-page "https://nginx.org")
817 (synopsis "Documentation for the nginx web server")
818 (description
819 "This package provides HTML documentation for the nginx web server.")
820 (license license:bsd-2))))
821
822(define-public nginx-accept-language-module
823 ;; Upstream has never made a release; use current commit instead.
824 (let ((commit "2f69842f83dac77f7d98b41a2b31b13b87aeaba7")
825 (revision "1"))
826 (package
827 (name "nginx-accept-language-module")
828 (version (git-version "0.0.0" ;upstream has no version number
829 revision commit))
830 (source
831 (origin
832 (method git-fetch)
833 (uri (git-reference
834 (url "https://github.com/giom/nginx_accept_language_module")
835 (commit commit)))
836 (file-name (git-file-name name version))
837 (sha256
838 (base32 "1hjysrl15kh5233w7apq298cc2bp4q1z5mvaqcka9pdl90m0vhbw"))))
839 (build-system gnu-build-system)
840 (inputs `(("libxcrypt" ,libxcrypt)
841 ("openssl" ,openssl)
842 ("pcre2" ,pcre2)
843 ("nginx-sources" ,(package-source nginx))
844 ("zlib" ,zlib)))
845 (arguments
846 `(#:tests? #f ; no test target
847 #:make-flags (list "modules")
848 #:modules ((guix build utils)
849 (guix build gnu-build-system)
850 (ice-9 popen)
851 (ice-9 regex)
852 (ice-9 textual-ports))
853 #:phases
854 (modify-phases %standard-phases
855 (add-after 'unpack 'unpack-nginx-sources
856 (lambda* (#:key inputs native-inputs #:allow-other-keys)
857 (begin
858 ;; The nginx source code is part of the module’s source.
859 (format #t "decompressing nginx source code~%")
860 (let ((tar (assoc-ref inputs "tar"))
861 (nginx-srcs (assoc-ref inputs "nginx-sources")))
862 (invoke (string-append tar "/bin/tar")
863 "xvf" nginx-srcs "--strip-components=1"))
864 #t)))
865 (add-after 'unpack 'convert-to-dynamic-module
866 (lambda _
867 (begin
868 (with-atomic-file-replacement "config"
869 (lambda (in out)
870 ;; cf. https://www.nginx.com/resources/wiki/extending/new_config/
871 (format out "ngx_module_type=HTTP~%")
872 (format out "ngx_module_name=\
873ngx_http_accept_language_module~%")
874 (let* ((str (get-string-all in))
875 (rx (make-regexp
876 "NGX_ADDON_SRCS=\"\\$NGX_ADDON_SRCS (.*)\""))
877 (m (regexp-exec rx str))
878 (srcs (match:substring m 1)))
879 (format out (string-append "ngx_module_srcs=\""
880 srcs "\"~%")))
881 (format out ". auto/module~%")
882 (format out "ngx_addon_name=$ngx_module_name~%"))))))
883 (add-before 'configure 'patch-/bin/sh
884 (lambda _
885 (substitute* "auto/feature"
886 (("/bin/sh") (which "sh")))
887 #t))
888 (replace 'configure
889 ;; This phase is largely copied from the nginx package.
890 (lambda* (#:key outputs #:allow-other-keys)
891 (let ((flags
892 (list ;; A copy of nginx’ flags follows, otherwise we
893 ;; get a binary compatibility error. FIXME: Code
894 ;; duplication is bad.
895 (string-append "--prefix=" (assoc-ref outputs "out"))
896 "--with-http_ssl_module"
897 "--with-http_v2_module"
898 "--with-pcre-jit"
899 "--with-debug"
900 "--with-compat"
901 ;; Even when not cross-building, we pass the
902 ;; --crossbuild option to avoid customizing for the
903 ;; kernel version on the build machine.
904 ,(let ((system "Linux") ; uname -s
905 (release "3.2.0") ; uname -r
906 ;; uname -m
907 (machine (match (or (%current-target-system)
908 (%current-system))
909 ("x86_64-linux" "x86_64")
910 ("i686-linux" "i686")
911 ("mips64el-linux" "mips64")
912 ;; Prevent errors when querying
913 ;; this package on unsupported
914 ;; platforms, e.g. when running
915 ;; "guix package --search="
916 (_ "UNSUPPORTED"))))
917 (string-append "--crossbuild="
918 system ":" release ":" machine))
919 ;; The following are the args described on
920 ;; <https://www.nginx.com/blog/compiling-dynamic-modules-nginx-plus>.
921 ;; Enabling --with-compat here and in the nginx package
922 ;; would ensure binary compatibility even when using
923 ;; different configure options from the main nginx
924 ;; package. This is not needed for Guix.
925 ;; "--with-compat"
926 "--add-dynamic-module=.")))
927 (setenv "CC" "gcc")
928 (format #t "environment variable `CC' set to `gcc'~%")
929 (format #t "configure flags: ~s~%" flags)
930 (apply invoke "./configure" flags)
931 #t)))
932 (replace 'install
933 (lambda* (#:key outputs #:allow-other-keys)
934 (let* ((out (assoc-ref outputs "out"))
935 (modules-dir (string-append out "/etc/nginx/modules"))
936 (doc-dir (string-append
937 out "/share/doc/nginx-accept-language-module")))
938 (mkdir-p modules-dir)
939 (copy-file "objs/ngx_http_accept_language_module.so"
940 (string-append
941 modules-dir "/ngx_http_accept_language_module.so"))
942 (mkdir-p doc-dir)
943 (copy-file "README.textile"
944 (string-append doc-dir "/README.textile"))
945 #t))))))
946 (home-page
947 "https://www.nginx.com/resources/wiki/modules/accept_language/")
948 (synopsis "Nginx module for parsing the Accept-Language HTTP header")
949 (description
950 "This nginx module parses the Accept-Language field in HTTP headers and
951chooses the most suitable locale for the user from the list of locales
952supported at your website.")
953 (license (delete-duplicates
954 (cons license:bsd-2 ;license of nginx-accept-language-module
955 ;; The module’s code is linked statically with nginx,
956 ;; therefore nginx’ other licenses may also apply to its
957 ;; binary:
958 (package-license nginx)))))))
959
960(define nginx-xslscript
961 (let ((revision 11)
962 (changeset "01dc9ba12e1b"))
963 (package
964 (name "nginx-xslscript")
965 (version
966 (simple-format #f "2014-03-31-~A-~A" revision changeset))
967 (source (origin
968 (method hg-fetch)
969 (uri (hg-reference
970 (url "https://hg.nginx.org/xslscript")
971 (changeset changeset)))
972 (file-name (string-append name "-" version))
973 (sha256
974 (base32
975 "0am8zvdx3jmiwkg5q07qjaw5r26r4i2v5i4yr8a1k0jgib6ii08g"))))
976 (build-system gnu-build-system)
977 (arguments
978 '(#:tests? #f ; No test suite
979 #:phases
980 (modify-phases %standard-phases
981 (delete 'configure)
982 (delete 'build)
983 (replace 'install
984 (lambda* (#:key outputs #:allow-other-keys)
985 (let ((out-bin (string-append
986 (assoc-ref outputs "out")
987 "/bin")))
988 (mkdir-p out-bin)
989 (copy-file "xslscript.pl"
990 (string-append
991 out-bin
992 "/xslscript.pl"))
993 #t))))))
994 (home-page "https://hg.nginx.org/xslscript")
995 (synopsis "XSLScript with NGinx specific modifications")
996 (description
997 "XSLScript is a terse notation for writing complex XSLT stylesheets.
998This is modified version, specifically intended for use with the NGinx
999documentation.")
1000 (license license:bsd-2))))
1001
1002(define nginx-socket-cloexec
1003 (package
1004 (inherit nginx)
1005 (name "nginx-socket-cloexec") ;required for lua-resty-shell
1006 (source
1007 (origin
1008 (inherit (package-source nginx))
1009 (patches (append (search-patches "nginx-socket-cloexec.patch")
1010 (origin-patches (package-source nginx))))))))
1011
1012(define-public nginx-lua-module
1013 (package
1014 (inherit nginx)
1015 (name "nginx-lua-module")
1016 (version "0.10.29")
1017 (source
1018 (origin
1019 (method git-fetch)
1020 (uri (git-reference
1021 (url "https://github.com/openresty/lua-nginx-module")
1022 (commit (string-append "v" version))))
1023 (file-name (git-file-name "lua-nginx-module" version))
1024 (sha256
1025 (base32 "0manlsi9n8j59sncxwb2nxrbm5v5kwc7csrpi54m35v1pg19bbfg"))))
1026 (build-system gnu-build-system)
1027 (inputs
1028 `(("nginx-sources" ,(package-source nginx-socket-cloexec))
1029 ("luajit" ,luajit)
1030 ,@(package-inputs nginx)))
1031 (arguments
1032 (substitute-keyword-arguments
1033 `(#:make-flags '("modules")
1034 #:modules ((guix build utils)
1035 (guix build gnu-build-system)
1036 (ice-9 popen)
1037 (ice-9 regex)
1038 (ice-9 textual-ports))
1039 ,@(package-arguments nginx)
1040 #:configure-flags '("--add-dynamic-module=."))
1041 ((#:phases phases)
1042 #~(modify-phases #$phases
1043 (add-after 'unpack 'unpack-nginx-sources
1044 (lambda* (#:key inputs native-inputs #:allow-other-keys)
1045 (begin
1046 ;; The nginx source code is part of the module’s source.
1047 (format #t "decompressing nginx source code~%")
1048 (let ((tar (assoc-ref inputs "tar"))
1049 (nginx-srcs (assoc-ref inputs "nginx-sources")))
1050 (invoke (string-append tar "/bin/tar")
1051 "xvf" nginx-srcs "--strip-components=1"))
1052 #t)))
1053 (add-before 'configure 'set-luajit-env
1054 (lambda* (#:key inputs #:allow-other-keys)
1055 (let ((luajit (assoc-ref inputs "luajit")))
1056 (setenv "LUAJIT_LIB"
1057 (string-append luajit "/lib"))
1058 (setenv "LUAJIT_INC"
1059 (string-append luajit "/include/luajit-2.1"))
1060 #t)))
1061 (replace 'install
1062 (lambda* (#:key outputs #:allow-other-keys)
1063 (let ((modules-dir (string-append (assoc-ref outputs "out")
1064 "/etc/nginx/modules")))
1065 (install-file "objs/ngx_http_lua_module.so" modules-dir)
1066 #t)))
1067 (delete 'move-html-doc)
1068 (delete 'install-man-page)))))
1069 (synopsis "NGINX module for Lua programming language support")
1070 (description "This NGINX module provides a scripting support with Lua
1071programming language.")))
1072
1073(define-public nginx-rtmp-module
1074 (package
1075 (inherit nginx)
1076 (name "nginx-rtmp-module")
1077 (version "1.2.2")
1078 (source
1079 (origin
1080 (method git-fetch)
1081 (uri (git-reference
1082 (url "https://github.com/arut/nginx-rtmp-module")
1083 (commit (string-append "v" version))))
1084 (file-name (git-file-name name version))
1085 (sha256
1086 (base32 "0y45bswk213yhkc2v1xca2rnsxrhx8v6azxz9pvi71vvxcggqv6h"))))
1087 (build-system gnu-build-system)
1088 (inputs
1089 `(("nginx-sources" ,(package-source nginx))
1090 ,@(package-inputs nginx)))
1091 (arguments
1092 (substitute-keyword-arguments
1093 `(#:make-flags '("modules") ;Only build this module not all of nginx.
1094 ,@(package-arguments nginx))
1095 ((#:configure-flags flags)
1096 #~(cons "--add-dynamic-module=." #$flags))
1097 ((#:phases phases)
1098 #~(modify-phases #$phases
1099 (add-after 'unpack 'unpack-nginx-sources
1100 (lambda _
1101 (begin
1102 ;; The nginx source code is part of the module’s source.
1103 (format #t "decompressing nginx source code~%")
1104 (invoke "tar" "xvf" #$(this-package-input "nginx-sources")
1105 ;; This package's LICENSE file would be
1106 ;; overwritten with the one from nginx when
1107 ;; unpacking the nginx source, so rename the nginx
1108 ;; one when unpacking.
1109 "--transform=s,/LICENSE$,/LICENSE.nginx,"
1110 "--strip-components=1"))))
1111 (replace 'install
1112 (lambda _
1113 (let ((modules-dir (string-append #$output
1114 "/etc/nginx/modules")))
1115 (install-file "objs/ngx_rtmp_module.so" modules-dir))))
1116 (delete 'move-html-doc)
1117 (delete 'install-man-page)))))
1118 (home-page "https://github.com/arut/nginx-rtmp-module")
1119 (synopsis "NGINX module for audio and video streaming with RTMP")
1120 (description "This NGINX module provides streaming with the @acronym{RTMP,
1121Real-Time Messaging Protocol}, @acronym{DASH, Dynamic Adaptive Streaming over HTTP},
1122and @acronym{HLS, HTTP Live Streaming} protocols. It allows NGINX to accept
1123incoming RTMP streams for recording or redistribution. It also supports
1124on-demand streaming from a file on disk and pulling from an upstream RTMP
1125stream. Remote control of the module is possible over HTTP.")
1126 (license license:bsd-2)))
1127
1128(define-public nginx-headers-more-module
1129 (package
1130 (inherit nginx)
1131 (name "nginx-headers-more-module")
1132 (version "0.38")
1133 (source
1134 (origin
1135 (method git-fetch)
1136 (uri (git-reference
1137 (url "https://github.com/openresty/headers-more-nginx-module")
1138 (commit (string-append "v" version))))
1139 (file-name (git-file-name name version))
1140 (sha256
1141 (base32 "1dbgwzkpni616nawjkrq0xid60wdgab3vciy7nr966ac6rjyiliy"))))
1142 (build-system gnu-build-system)
1143 (inputs
1144 `(("nginx-sources" ,(package-source nginx))
1145 ,@(package-inputs nginx)))
1146 (arguments
1147 (substitute-keyword-arguments
1148 `(#:make-flags '("modules") ;Only build this module not all of nginx.
1149 ,@(package-arguments nginx))
1150 ((#:configure-flags flags)
1151 #~(cons "--add-dynamic-module=." #$flags))
1152 ((#:phases phases)
1153 #~(modify-phases #$phases
1154 (add-after 'unpack 'unpack-nginx-sources
1155 (lambda _
1156 (begin
1157 ;; The nginx source code is needed to compile the module.
1158 (format #t "decompressing nginx source code~%")
1159 (invoke "tar" "xvf" #$(this-package-input "nginx-sources")
1160 ;; This package's LICENSE file would be
1161 ;; overwritten with the one from nginx when
1162 ;; unpacking the nginx source, so rename the nginx
1163 ;; one when unpacking.
1164 "--transform=s,/LICENSE$,/LICENSE.nginx,"
1165 "--strip-components=1"))))
1166 (replace 'install
1167 (lambda _
1168 (let ((modules-dir (string-append #$output
1169 "/etc/nginx/modules")))
1170 (install-file "objs/ngx_http_headers_more_filter_module.so"
1171 modules-dir))))
1172 (delete 'move-html-doc)
1173 (delete 'install-man-page)))))
1174 (home-page "https://github.com/openresty/headers-more-nginx-module")
1175 (synopsis "Set, add, and clear input and output headers in NGINX http servers")
1176 (description "This NGINX module allows adding, setting, or clearing any
1177output or input header specified.
1178
1179This is an enhanced version of the standard headers module because it provides
1180more utilities like resetting or clearing \"builtin headers\" like @code{Content-Type},
1181@code{Content-Length}, and @code{Server}.
1182
1183It also allows you to specify an optional HTTP status code criteria using the
1184@code{-s} option and an optional content type criteria using the @code{-t}
1185option while modifying the output headers with the more_set_headers and
1186more_clear_headers directives.")
1187 (license license:bsd-2)))
1188
1189(define-public nginx-module-vts
1190 (package
1191 (inherit nginx)
1192 (name "nginx-module-vts")
1193 (version "0.2.1")
1194 (source
1195 (origin
1196 (method git-fetch)
1197 (uri (git-reference
1198 (url "https://github.com/vozlt/nginx-module-vts")
1199 (commit (string-append "v" version))))
1200 (file-name (git-file-name name version))
1201 (sha256
1202 (base32 "017298vpp1ra16xyfdbsczdrz0b0y67x6adkzcc98y6gb3kg52n7"))))
1203 (build-system gnu-build-system)
1204 (inputs
1205 `(("nginx-sources" ,(package-source nginx))
1206 ,@(package-inputs nginx)))
1207 (arguments
1208 (substitute-keyword-arguments
1209 `(#:make-flags '("modules") ;Only build this module not all of nginx.
1210 ,@(package-arguments nginx))
1211 ((#:configure-flags flags)
1212 #~(cons "--add-dynamic-module=." #$flags))
1213 ((#:phases phases)
1214 #~(modify-phases #$phases
1215 (add-after 'unpack 'unpack-nginx-sources
1216 (lambda _
1217 (begin
1218 ;; The nginx source code is part of the module’s source.
1219 (format #t "decompressing nginx source code~%")
1220 (invoke "tar" "xvf" #$(this-package-input "nginx-sources")
1221 ;; This package's LICENSE file would be
1222 ;; overwritten with the one from nginx when
1223 ;; unpacking the nginx source, so rename the nginx
1224 ;; one when unpacking.
1225 "--transform=s,/LICENSE$,/LICENSE.nginx,"
1226 "--strip-components=1"))))
1227 (replace 'install
1228 (lambda _
1229 (let ((modules-dir (string-append #$output
1230 "/etc/nginx/modules")))
1231 (install-file "objs/ngx_http_vhost_traffic_status_module.so" modules-dir))))
1232 (delete 'move-html-doc)
1233 (delete 'install-man-page)))))
1234 (home-page "https://github.com/vozlt/nginx-module-vts")
1235 (synopsis "NGINX module for monitoring virtual host traffic status")
1236 (description "This NGINX module provides access to virtual host status information,
1237similar to live activity monitoring provided with NGINX plus.")
1238 (license license:bsd-2)))
1239
1240(define-public lighttpd
1241 (package
1242 (name "lighttpd")
1243 (version "1.4.82")
1244 (source (origin
1245 (method url-fetch)
1246 (uri (string-append "https://download.lighttpd.net/lighttpd/"
1247 "releases-" (version-major+minor version) ".x/"
1248 "lighttpd-" version ".tar.xz"))
1249 (sha256
1250 (base32
1251 "0qn98rib9wxhndzd8kpg0vlygnwly5j7x82f2nmndgcw3wwp9zmb"))))
1252 (build-system gnu-build-system)
1253 (arguments
1254 (list #:configure-flags
1255 #~(list "--with-krb5"
1256 "--with-ldap"
1257 "--with-libev"
1258 "--with-libunwind"
1259 "--with-openssl"
1260 "--with-pam"
1261 "--with-sasl")
1262 #:phases
1263 #~(modify-phases %standard-phases
1264 (add-after 'unpack 'embed-/bin/sh-reference
1265 (lambda* (#:key inputs #:allow-other-keys)
1266 (substitute* "src/mod_ssi.c"
1267 (("/bin/sh") (search-input-file inputs "/bin/sh")))))
1268 (add-after 'unpack 'fix-tests
1269 (lambda _
1270 (setenv "SHELL" (which "sh"))
1271 ;; gethostbyaddr fails
1272 (substitute* "tests/LightyTest.pm"
1273 (("\\{HOSTNAME\\} = \\$name;")
1274 "{HOSTNAME} = \"127.0.0.1\";"))))
1275 (add-after 'unpack 'skip-failing-tests
1276 ;; XXX It would be wonderful if you, reader, felt suddenly and
1277 ;; irresistibly compelled to investigate & fix these failures.
1278 (lambda _
1279 ;; Throws a bunch of ‘connect failed: Connection refused’.
1280 (delete-file "tests/mod-scgi.t")
1281
1282 ;; test_mod_ssi_read_fd: Assertion `cq->first' failed.
1283 (substitute* "src/t/test_mod.c"
1284 ((".*\\btest_mod_ssi\\b.*") "")))))))
1285 (inputs
1286 (list bash-minimal
1287 cyrus-sasl
1288 libev
1289 libunwind
1290 linux-pam
1291 mit-krb5
1292 openldap
1293 openssl
1294 pcre2
1295 zlib))
1296 (native-inputs
1297 (list autoconf
1298 automake
1299 libtool
1300 perl ; for tests
1301 pkg-config which))
1302 (home-page "https://www.lighttpd.net/")
1303 (synopsis "Lightweight HTTP and reverse proxy server")
1304 (description
1305 "Lighttpd is a secure, fast, compliant, and very flexible web-server that
1306has been optimized for high-performance environments. It has a very low
1307memory footprint compared to other webservers. Its features include FastCGI,
1308CGI, authentication, output compression, URL rewriting and many more.")
1309 (license license:bsd-3)))
1310
1311(define-public fcgi
1312 (package
1313 (name "fcgi")
1314 (version "2.4.2")
1315 (source
1316 (origin
1317 (method git-fetch)
1318 ;; Upstream has disappeared.
1319 (uri (git-reference
1320 (url "https://github.com/FastCGI-Archives/fcgi2")
1321 (commit version)))
1322 (file-name (git-file-name name version))
1323 (sha256
1324 (base32 "1jhz6jfwv5kawa8kajvg18nfwc1b30f38zc0lggszd1vcmrwqkz1"))))
1325 (build-system gnu-build-system)
1326 ;; Parallel building is not supported.
1327 (arguments `(#:parallel-build? #f))
1328 (native-inputs
1329 (list autoconf automake libtool))
1330 ;; This is an archived fork of the original home page, www.fastcgi.com.
1331 (home-page "https://fastcgi-archives.github.io/")
1332 (synopsis "Language-independent, high-performant extension to CGI")
1333 (description "FastCGI is a language-independent, scalable extension to CGI
1334that provides high performance without the limitations of server specific
1335APIs.")
1336 ;; This package is released under the Open Market License, a variant of
1337 ;; the Expat license, incompatible with the GPL.
1338 (license (license:non-copyleft "file://LICENSE.TERMS"))))
1339
1340(define-public kcgi
1341 (package
1342 (name "kcgi")
1343 (version "1.0.1")
1344 (source
1345 (origin
1346 (method git-fetch)
1347 (uri (git-reference
1348 (url "https://github.com/kristapsdz/kcgi")
1349 (commit
1350 (string-append "VERSION_"
1351 (string-replace-substring version "." "_")))))
1352 (file-name (git-file-name name version))
1353 (sha256
1354 (base32 "0km2295rmxlgl3livhil861h0s43bks2cqyvpf80zcqiba1ilmsw"))))
1355 (build-system gnu-build-system)
1356 (arguments
1357 (list
1358 ;; There are only regression tests which are only recommended if running
1359 ;; bleeding edge sources.
1360 #:tests? #f
1361 #:phases
1362 #~(modify-phases %standard-phases
1363 (replace 'configure
1364 (lambda* (#:key outputs #:allow-other-keys)
1365 (invoke "./configure"
1366 (string-append "CC=" #$(cc-for-target))
1367 (string-append "PREFIX=" #$output))))
1368 (replace 'build
1369 (lambda* (#:key outputs parallel-build? #:allow-other-keys)
1370 (apply invoke "bmake"
1371 (string-append "LDFLAGS=-Wl,-rpath,"
1372 #$output "/lib")
1373 (if parallel-build?
1374 (list "-j" (number->string (parallel-job-count)))
1375 '()))))
1376 (replace 'install
1377 (lambda _
1378 (invoke "bmake" "install"))))))
1379 (native-inputs
1380 (list bmake libbsd pkg-config))
1381 (inputs
1382 (list zlib))
1383 (home-page "https://kristaps.bsd.lv/kcgi/")
1384 (synopsis "Minimal CGI and FastCGI library for C/C++")
1385 (description "This package provides a CGI and FastCGI library for C/C++
1386web applications. It is minimal, secure, and auditable.")
1387 (license license:isc)))
1388
1389(define-public fcgiwrap
1390 (let ((commit "2870d2729a3930988f0041e2d78fec672e69afac")
1391 (revision "1"))
1392 (package
1393 (name "fcgiwrap")
1394 (version (git-version "1.1.0" revision commit))
1395 (source
1396 (origin
1397 (method git-fetch)
1398 (uri (git-reference
1399 ;; Upstream last updated in 2015, this forked version has better
1400 ;; socket cleanup.
1401 (url "https://github.com/flu0r1ne/fcgiwrap")
1402 (commit commit)))
1403 (file-name (git-file-name name version))
1404 (sha256
1405 (base32 "0rkpp4apfhdcrmym3pcpqlncd0r4fyr3pa45i8g6x4p38b4azmmm"))))
1406 (build-system gnu-build-system)
1407 (arguments
1408 `(#:tests? #f ; no tests included
1409 #:make-flags (list "CC=gcc")
1410 #:phases
1411 (modify-phases %standard-phases
1412 (add-after 'unpack 'fix-CFLAGS
1413 ;; Remove broken options unconditionally added to CFLAGS.
1414 (lambda _
1415 (substitute* "configure.ac"
1416 ((" -Werror") ""))
1417 #t)))))
1418 (native-inputs
1419 (list autoconf automake pkg-config))
1420 (inputs
1421 (list fcgi))
1422 (home-page "https://nginx.localdomain.pl/wiki/FcgiWrap")
1423 (synopsis "Simple server for running CGI applications over FastCGI")
1424 (description "Fcgiwrap is a simple server for running CGI applications
1425over FastCGI. It hopes to provide clean CGI support to Nginx (and other web
1426servers that may need it).")
1427 (license license:expat))))
1428
1429(define-public sogogi
1430 (let ((commit "e6fd81c8d861bfa538372a6ff10b0cf8dfcb33f9")
1431 (revision "1"))
1432 (package
1433 (name "sogogi")
1434 (version (git-version "0.0.0" revision commit))
1435 (source
1436 (origin
1437 (method git-fetch)
1438 (uri (git-reference
1439 (url "https://codeberg.org/emersion/sogogi.git")
1440 (commit commit)))
1441 (file-name (git-file-name name version))
1442 (sha256
1443 (base32 "01vw91b2r2y0q21hkhpagbiq4l04n0z56m98psk5ycds2v13v951"))))
1444 (build-system go-build-system)
1445 (arguments
1446 (list
1447 #:install-source? #f
1448 #:import-path "codeberg.org/emersion/sogogi"
1449 #:phases
1450 #~(modify-phases %standard-phases
1451 (add-after 'install 'install-man-page
1452 (lambda* (#:key import-path #:allow-other-keys)
1453 (let ((man (string-append #$output "/share/man/man")))
1454 (mkdir-p (string-append man "1"))
1455 (with-input-from-file
1456 (string-append "src/" import-path "/doc/sogogi.1.scd")
1457 (lambda _
1458 (with-output-to-file (string-append man "1/sogogi.1")
1459 (lambda _
1460 (invoke "scdoc")))))))))))
1461 (native-inputs
1462 (list go-codeberg-org-emersion-go-scfg
1463 go-github-com-emersion-go-webdav
1464 scdoc))
1465 (home-page "https://codeberg.org/emersion/sogogi")
1466 (synopsis "Minimalistic WebDav server implementation")
1467 (description
1468 "This package provides a WebDAV file server based on
1469@code{github.com/emersion/go-webdav}. The server exposes a configured local
1470filesystem to remote users via HTTP and supports defining access rights
1471on a per-user basis.")
1472 (license license:agpl3))))
1473
1474(define-public starman
1475 (package
1476 (name "starman")
1477 (version "0.4015")
1478 (source
1479 (origin
1480 (method url-fetch)
1481 (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
1482 "Starman-" version ".tar.gz"))
1483 (sha256
1484 (base32 "1y1kn4929k299fbf6sw9lxcsdlq9fvq777p6yrzk591rr9xhkx8h"))))
1485 (build-system perl-build-system)
1486 (native-inputs
1487 (list perl-libwww perl-module-build-tiny perl-test-requires))
1488 (propagated-inputs
1489 (list perl-data-dump
1490 perl-http-date
1491 perl-http-message
1492 perl-http-parser-xs
1493 perl-net-server
1494 perl-plack
1495 perl-test-tcp))
1496 (home-page "https://metacpan.org/release/Starman")
1497 (synopsis "PSGI/Plack web server")
1498 (description "Starman is a PSGI perl web server that has unique features
1499such as high performance, preforking, signal support, superdaemon awareness,
1500and UNIX socket support.")
1501 (license license:perl-license)))
1502
1503(define-public icedtea-web
1504 (package
1505 (name "icedtea-web")
1506 (version "1.6.2")
1507 (source (origin
1508 (method url-fetch)
1509 (uri (string-append
1510 "http://icedtea.wildebeest.org/download/source/"
1511 name "-" version ".tar.gz"))
1512 (sha256
1513 (base32
1514 "004kwrngyxxlrlzby4vzxjr0xcyngcdc9dfgnvi61ffnjr006ryf"))))
1515 (build-system gnu-build-system)
1516 (arguments
1517 `(#:configure-flags
1518 (list "--disable-plugin" ;NPAPI plugins are obsolete nowadays.
1519 (string-append "BIN_BASH="
1520 (search-input-file %build-inputs "/bin/bash"))
1521 (string-append "--with-jdk-home=" (assoc-ref %build-inputs "jdk")))))
1522 (outputs '("out" "doc"))
1523 (native-inputs
1524 (list pkg-config zip))
1525 (inputs
1526 `(("gtk+" ,gtk+)
1527 ("jdk" ,icedtea "jdk")))
1528 (home-page "http://icedtea.classpath.org/wiki/IcedTea-Web")
1529 (synopsis "Java Web Start")
1530 (description
1531 "IcedTea-Web is an implementation of the @dfn{Java Network Launching
1532Protocol}, also known as Java Web Start. This package provides tools and
1533libraries for working with JNLP applets.")
1534 ;; The program is mainly GPL2+, with some individual files under LGPL2.1+
1535 ;; or dual licenses.
1536 (license license:gpl2+)))
1537
1538(define-public iocaine
1539 (package
1540 (name "iocaine")
1541 (version "3.5.1")
1542 (source
1543 (origin
1544 (method git-fetch)
1545 (uri (git-reference
1546 (url "https://git.madhouse-project.org/iocaine/iocaine.git")
1547 (commit (string-append "iocaine-" version))))
1548 (file-name (git-file-name name version))
1549 (sha256
1550 (base32 "079b02bjl8afsgb4ci2c7a0yp087br8nxfhn3iq8d2akkfp20hhn"))
1551 (snippet
1552 #~(begin (use-modules (guix build utils))
1553 (substitute* "Cargo.toml"
1554 ;; Don't vendor lua source code
1555 ((".*\"vendored\",.*") ""))))))
1556 (build-system cargo-build-system)
1557 (arguments
1558 (list
1559 #:install-source? #f
1560 #:cargo-install-paths ''("iocaine")))
1561 (native-inputs
1562 (list pkg-config))
1563 (inputs (cons* clang ; any version, needed for bindgen
1564 lua-5.4
1565 mimalloc
1566 nftables
1567 `(,zstd "lib")
1568 (cargo-inputs 'iocaine)))
1569 (home-page "https://iocaine.madhouse-project.org/")
1570 (synopsis "Serves poisonous data to large language model scrapers")
1571 (description
1572 "Iocaine is an HTTP server that generates a stable endless maze of
1573Markov-babble-filled web pages. Placed behind a heavily rate-limited reverse
1574proxy, it becomes a ``tar pit'' for trapping aggressive web scrapers commonly
1575used to train large language models, and poisoning the collected data.")
1576 (license license:expat)))
1577
1578(define-public jansson
1579 (package
1580 (name "jansson")
1581 (version "2.15.0")
1582 (source (origin
1583 (method url-fetch)
1584 (uri (string-append "https://github.com/akheron/jansson"
1585 "/releases/download/v" version
1586 "/jansson-" version ".tar.bz2"))
1587 (sha256
1588 (base32
1589 "0m49glsr5v376jpyj2y0xyr11703pr4bfgipz5jk2dq0a1vcgsm7"))))
1590 (build-system gnu-build-system)
1591 (arguments
1592 (list
1593 #:configure-flags #~'("--disable-static")
1594 #:phases
1595 #~(modify-phases %standard-phases
1596 (add-after 'unpack 'patch-tests
1597 (lambda _
1598 ;; Take a fix from upstream for testing with symbol versioning:
1599 ;; https://github.com/akheron/jansson/pull/593
1600 (substitute* "test/suites/api/check-exports"
1601 (("(grep ' \\[DT\\] ' \\$test_log/symbols.*) \\| sort" _ cmd)
1602 (string-append cmd "| sed 's/@@libjansson.*//' | sort"))))))))
1603 (home-page "https://github.com/akheron/jansson")
1604 (synopsis "JSON C library")
1605 (description
1606 "Jansson is a C library for encoding, decoding and manipulating JSON
1607data.")
1608 (license license:expat)))
1609
1610(define-public json-c
1611 (package
1612 (name "json-c")
1613 (version "0.19")
1614 (source (origin
1615 (method url-fetch)
1616 (uri (string-append
1617 "https://s3.amazonaws.com/json-c_releases/releases/json-c-"
1618 version ".tar.gz"))
1619 (sha256
1620 (base32
1621 "1pi69rbcxnda01clpbfa9vzsripw27ji5xrb0pcinc1fj14h5b9p"))))
1622 (build-system cmake-build-system)
1623 (native-inputs
1624 ;; needed for unit test
1625 (list xxd))
1626 (home-page "https://github.com/json-c/json-c/wiki")
1627 (synopsis "JSON implementation in C")
1628 (description
1629 "JSON-C implements a reference counting object model that allows you to
1630easily construct JSON objects in C, output them as JSON-formatted strings and
1631parse JSON-formatted strings back into the C representation of JSON objects.
1632It aims to conform to RFC 7159.")
1633 (license license:x11)))
1634
1635;; TODO: Remove these old versions when all dependents have been updated.
1636(define-public json-c-0.13
1637 (package
1638 (inherit json-c)
1639 (version "0.13.1")
1640 (source (origin
1641 (method url-fetch)
1642 (uri (string-append
1643 "https://s3.amazonaws.com/json-c_releases/releases/json-c-"
1644 version ".tar.gz"))
1645 (sha256
1646 (base32 "0ws8dz9nk8q2c0gbf66kg2r6mrkl7kamd3gpdv9zsyrz9n6n0zmq"))
1647 (patches (search-patches "json-c-0.13-CVE-2020-12762.patch"))
1648 (modules '((guix build utils)))
1649 (snippet
1650 '(begin
1651 ;; Somehow 'config.h.in' is older than
1652 ;; 'aclocal.m4', which would trigger a rule to
1653 ;; run 'autoheader'.
1654 (set-file-time "config.h.in"
1655 (stat "aclocal.m4"))
1656 #t))))
1657 (build-system gnu-build-system)
1658 (arguments
1659 (list
1660 #:configure-flags
1661 #~(list #$(string-append "CFLAGS=-g -O2"
1662 " -Wno-error=calloc-transposed-args"
1663 " -Wno-error=implicit-function-declaration"))))
1664 (native-inputs '())))
1665
1666(define-public json-parser
1667 (package
1668 (name "json-parser")
1669 (version "1.1.0")
1670 (source (origin
1671 ;; do not use auto-generated tarballs
1672 (method git-fetch)
1673 (uri (git-reference
1674 (url "https://github.com/udp/json-parser")
1675 (commit (string-append "v" version))))
1676 (file-name (git-file-name name version))
1677 (sha256
1678 (base32
1679 "1ls7z4fx0sq633s5bc0j1gh36sv087gmrgr7rza22wjq2d4606yf"))))
1680 ;; FIXME: we should build the python bindings in a separate package
1681 (build-system gnu-build-system)
1682 ;; the tests are written for the python bindings which are not built here
1683 (arguments '(#:tests? #f))
1684 (home-page "https://github.com/udp/json-parser")
1685 (synopsis "JSON parser written in ANSI C")
1686 (description "This package provides a very low footprint JSON parser
1687written in portable ANSI C.
1688
1689@itemize
1690@item BSD licensed with no dependencies (i.e. just drop the C file into your
1691project)
1692@item Never recurses or allocates more memory than it needs
1693@item Very simple API with operator sugar for C++
1694@end itemize")
1695 (license license:bsd-2)))
1696
1697(define-public webhook
1698 (package
1699 (name "webhook")
1700 (version "2.8.3")
1701 (source
1702 (origin
1703 (method git-fetch)
1704 (uri (git-reference
1705 (url "https://github.com/adnanh/webhook")
1706 (commit version)))
1707 (file-name (git-file-name name version))
1708 (sha256
1709 (base32 "14y68gdmy13d5jk2hlki0syrbksxs6anm5dmmpbm8chqzmb8psrz"))
1710 (modules '((guix build utils)))
1711 (snippet
1712 #~(begin
1713 (delete-file-recursively "vendor")))))
1714 (build-system go-build-system)
1715 (arguments
1716 (list
1717 #:install-source? #f
1718 #:import-path "github.com/adnanh/webhook"
1719 #:test-flags #~(list "-vet=off")
1720 #:phases
1721 #~(modify-phases %standard-phases
1722 (add-after 'unpack 'configure
1723 (lambda* (#:key inputs #:allow-other-keys)
1724 (substitute* "src/github.com/adnanh/webhook/webhook_test.go"
1725 (("/bin/echo")
1726 (search-input-file inputs "bin/echo"))
1727 (("/bin/sh")
1728 (search-input-file inputs "bin/sh"))))))))
1729 (native-inputs
1730 (list go-github-com-clbanning-mxj-v2
1731 go-github-com-coreos-go-systemd-v22
1732 go-github-com-dustin-go-humanize
1733 go-github-com-fsnotify-fsnotify
1734 go-github-com-ghodss-yaml
1735 go-github-com-go-chi-chi-v5
1736 go-github-com-gofrs-uuid-v5
1737 go-github-com-gorilla-mux
1738 go-golang-org-x-sys))
1739 (home-page "https://github.com/adnanh/webhook")
1740 (synopsis "Lightweight incoming webhook server")
1741 (description
1742 "webhook is a lightweight configurable tool to create HTTP
1743endpoints (hooks) which can execute configured commands. Data from the HTTP
1744request (such as headers, payload or query variables) can be passed on to the
1745configured commands. Hooks may also be configured to trigger only when
1746certain rules are satisfied.
1747
1748webhook aims to be minimal and do nothing more than it should do. And, that
1749is:
1750
1751@itemize
1752@item receive the request
1753@item parse the headers, payload and query variables
1754@item check if the specified rules for the hook are satisfied
1755@item and finally, pass the specified arguments to the specified command via
1756command line arguments or via environment variables.
1757@end itemize")
1758 (license (list license:expat ;; main license
1759 license:asl2.0)))) ;; internal/pidfile
1760
1761(define-public qoauth
1762 (package
1763 (name "qoauth")
1764 (version "2.0.0")
1765 (source (origin
1766 (method git-fetch)
1767 (uri (git-reference
1768 (url "https://github.com/ayoy/qoauth")
1769 (commit (string-append "v" version))))
1770 (file-name (git-file-name name version))
1771 (sha256
1772 (base32
1773 "1b2jdqs526ac635yb2whm049spcsk7almnnr6r5b4yqhq922anw3"))))
1774 (build-system gnu-build-system)
1775 (inputs
1776 (list qca qtbase-5))
1777 (arguments
1778 '(#:tests? #f ;FIXME: some tests are failing
1779 #:phases
1780 (modify-phases %standard-phases
1781 (add-after 'unpack 'patch-code
1782 (lambda _
1783 (make-file-writable "src/qoauth.pc")
1784 (substitute* "src/src.pro"
1785 (("/lib64") "/lib"))
1786 #t))
1787 (add-after 'unpack 'adjust-mkspecs-directory
1788 (lambda* (#:key outputs #:allow-other-keys)
1789 (substitute* "src/src.pro"
1790 ;; Do not attempt to install the .prf file into qtbase
1791 ;; "lib/qt5/mkspecs/features", ref <https://bugs.gnu.org/45031>.
1792 (("\\$\\$\\[QMAKE_MKSPECS\\]")
1793 (string-append (assoc-ref outputs "out") "/lib/qt5/mkspecs")))
1794 #t))
1795 (replace 'configure
1796 (lambda* (#:key inputs #:allow-other-keys)
1797 (let ((qca (assoc-ref inputs "qca")))
1798 (invoke
1799 "qmake"
1800 (string-append "PREFIX=" (assoc-ref %outputs "out"))
1801 (string-append "QMAKE_INCDIR+=" qca "/include/Qca-qt5/QtCrypto")
1802 (string-append "LIBS+=-L" qca "/lib")
1803 (string-append "LIBS+=-lqca-qt5"))))))))
1804 (home-page "https://github.com/ayoy/qoauth")
1805 (synopsis "Qt-based C++ library for OAuth authorization scheme")
1806 (description "QOAuth is an attempt to support interaction with
1807OAuth-powered network services in a Qt way, i.e. simply, clearly and
1808efficiently. It gives the application developer no more than 4 methods.")
1809 (license license:lgpl2.1+)))
1810
1811(define-public krona-tools
1812 (package
1813 (name "krona-tools")
1814 (version "2.8")
1815 (source (origin
1816 (method url-fetch)
1817 (uri (string-append
1818 "https://github.com/marbl/Krona/releases/download/v"
1819 version "/KronaTools-" version ".tar"))
1820 (sha256
1821 (base32
1822 "1h698wddb3hii68mnkby7s1x81vbhd4z1sf4ivm1lsi2nqlc1vsn"))))
1823 (build-system perl-build-system)
1824 (arguments
1825 `(#:phases
1826 (modify-phases %standard-phases
1827 ;; There is no configure or build steps.
1828 (delete 'configure)
1829 (delete 'build)
1830 ;; Install script "install.pl" expects the build directory to remain
1831 ;; after installation, creating symlinks etc., so re-implement it
1832 ;; here.
1833 (replace 'install
1834 (lambda* (#:key outputs #:allow-other-keys)
1835 (let ((bin (string-append (assoc-ref outputs "out") "/bin"))
1836 (perl (string-append (assoc-ref outputs "out")
1837 "/lib/perl5/site_perl/krona-tools/lib"))
1838 (share (string-append (assoc-ref outputs "out")
1839 "/share/krona-tools")))
1840 (mkdir-p bin)
1841 (for-each
1842 (lambda (script)
1843 (let ((executable (string-append "scripts/" script ".pl")))
1844 ;; Prefix executables with 'kt' as install script does.
1845 (copy-file executable (string-append bin "/kt" script))))
1846 '("ClassifyBLAST"
1847 "GetContigMagnitudes"
1848 "GetLCA"
1849 "GetTaxIDFromAcc"
1850 "GetTaxInfo"
1851 "ImportBLAST"
1852 "ImportDiskUsage"
1853 "ImportEC"
1854 "ImportFCP"
1855 "ImportGalaxy"
1856 "ImportKrona"
1857 "ImportMETAREP-BLAST"
1858 "ImportMETAREP-EC"
1859 "ImportMGRAST"
1860 "ImportPhymmBL"
1861 "ImportRDP"
1862 "ImportRDPComparison"
1863 "ImportTaxonomy"
1864 "ImportText"
1865 "ImportXML"))
1866 (for-each
1867 (lambda (directory)
1868 (copy-recursively directory
1869 (string-append perl "/../" directory)))
1870 (list "data" "img" "taxonomy" "src"))
1871 (install-file "lib/KronaTools.pm" perl)
1872
1873 ;; Install downloaders
1874 (substitute* "updateAccessions.sh"
1875 (("ktPath=.*") (string-append "ktPath=" share "\n")))
1876 (substitute* "updateTaxonomy.sh"
1877 (("ktPath=.*") (string-append "ktPath=" share "\n"))
1878 (("command -v curl")
1879 (string-append "command -v " (which "curl")))
1880 (("curl -s")
1881 (string-append (which "curl") " -s"))
1882 (("curl\\$timestring")
1883 (string-append (which "curl") "$timestring"))
1884 (("perl -M")
1885 (string-append (which "perl") " -M"))
1886 (("make ")
1887 (string-append (which "make") " ")))
1888 (for-each (lambda (file)
1889 (install-file file (string-append share "/scripts")))
1890 '("scripts/extractTaxonomy.pl"
1891 "scripts/accession2taxid.make"
1892 "scripts/taxonomy.make"))
1893 (for-each (lambda (file)
1894 (install-file file share))
1895 '("updateAccessions.sh"
1896 "updateTaxonomy.sh")))))
1897 (add-after 'install 'wrap-program
1898 (lambda* (#:key inputs outputs #:allow-other-keys)
1899 (let* ((out (assoc-ref outputs "out"))
1900 (path (getenv "PERL5LIB")))
1901 (for-each
1902 (lambda (executable)
1903 (wrap-program executable
1904 `("PERL5LIB" ":" prefix
1905 (,(string-append out "/lib/perl5/site_perl/krona-tools/lib")))))
1906 (find-files (string-append out "/bin/") ".*")))))
1907 (delete 'check)
1908 (add-after 'wrap-program 'check
1909 (lambda* (#:key inputs outputs #:allow-other-keys)
1910 (with-directory-excursion "data"
1911 (invoke (string-append (assoc-ref outputs "out") "/bin/ktImportText")
1912 "ec.tsv")))))))
1913 (inputs
1914 (list bash-minimal curl gnu-make perl))
1915 (home-page "https://github.com/marbl/Krona/wiki")
1916 (synopsis "Hierarchical data exploration with zoomable HTML5 pie charts")
1917 (description
1918 "Krona is a flexible tool for exploring the relative proportions of
1919hierarchical data, such as metagenomic classifications, using a radial,
1920space-filling display. It is implemented using HTML5 and JavaScript, allowing
1921charts to be explored locally or served over the Internet, requiring only a
1922current version of any major web browser.")
1923 (license license:bsd-3)))
1924
1925(define-public rapidjson
1926 ;; Last release was in 2016, but this commit is from 2023.
1927 (let ((commit "949c771b03de448bdedea80c44a4a5f65284bfeb")
1928 (revision "1"))
1929 (package
1930 (name "rapidjson")
1931 (version (git-version "1.1.0" revision commit))
1932 (source (origin
1933 (method git-fetch)
1934 (uri (git-reference
1935 (url "https://github.com/Tencent/rapidjson")
1936 (commit commit)))
1937 (file-name (git-file-name name version))
1938 (sha256
1939 (base32
1940 "1xlj0cj88ls3avwmlhd2gf5757fjpfbqx6qf49z1mzi381gcl72m"))
1941 (modules '((guix build utils)))
1942 (snippet
1943 '(begin
1944 ;; Remove code using the problematic JSON license (see
1945 ;; <https://www.gnu.org/licenses/license-list.html#JSON>).
1946 (delete-file-recursively "bin/jsonchecker")))))
1947 (build-system cmake-build-system)
1948 (arguments
1949 (list
1950 #:configure-flags
1951 (if (target-x86-32?)
1952 #~(list (string-append "-DCMAKE_CXX_FLAGS=-Wno-free-nonheap-object"
1953 " -Wno-error=array-bounds"
1954 " -Wno-error=stringop-overflow"))
1955 #~(list "-DCMAKE_CXX_FLAGS=-Wno-free-nonheap-object"))
1956 #:phases
1957 #~(modify-phases %standard-phases
1958 (add-after 'unpack 'fix-march=native
1959 (lambda _
1960 (substitute* "CMakeLists.txt"
1961 (("-m[^-]*=native") ""))))
1962 #$@(if (target-x86-32?)
1963 #~((add-after 'unpack 'skip-failing-tests
1964 (lambda _
1965 (substitute* "test/unittest/schematest.cpp"
1966 (("\"multipleOf\\.json\"," all)
1967 (string-append "/*" all "*/")))
1968 ;; XXX: Re-enable once valgrind/pinned >= 3.25.
1969 (substitute* "test/unittest/CMakeLists.txt"
1970 (("COMMAND valgrind") "COMMAND true valgrind")))))
1971 #~())
1972 (add-after 'fix-march=native 'skip-deleted-tests
1973 (lambda _
1974 (substitute* "test/unittest/CMakeLists.txt"
1975 (("jsoncheckertest.cpp") ""))))
1976 (add-after 'fix-march=native 'fix-dependencies
1977 (lambda _
1978 (substitute* "test/CMakeLists.txt"
1979 (("^find_package\\(GTestSrc\\)")
1980 "find_package(GTest REQUIRED)")
1981 ((".*GTEST_SOURCE_DIR.*") "")
1982 (("GTESTSRC_FOUND)")
1983 "GTest_FOUND)")))))))
1984 (native-inputs (list valgrind/pinned))
1985 (inputs (list googletest-1.8))
1986 (home-page "https://github.com/Tencent/rapidjson")
1987 (synopsis "JSON parser/generator for C++ with both SAX/DOM style API")
1988 (description
1989 "RapidJSON is a fast JSON parser/generator for C++ with both SAX/DOM
1990style API.")
1991 (license license:expat))))
1992
1993(define-public libjwt
1994 (package
1995 (name "libjwt")
1996 (version "1.17.2")
1997 (source
1998 (origin
1999 (method url-fetch)
2000 (uri (string-append "https://github.com/benmcollins/libjwt/releases/download/v"
2001 version "/libjwt-"
2002 version ".tar.bz2"))
2003 (sha256
2004 (base32
2005 "1bpfaa0y8bccz5hr677lkrprs07akx02k0qbf82z2c8syr24a77i"))))
2006 (build-system gnu-build-system)
2007 (inputs
2008 (list jansson openssl))
2009 (native-inputs
2010 (list check pkg-config))
2011 (home-page "https://github.com/benmcollins/libjwt")
2012 (synopsis "C @acronym{JWT, JSON Web Token} library")
2013 (description "@code{libjwt} is a @acronym{JWT, JSON Web Token} library for
2014C.")
2015 (license license:mpl2.0)))
2016
2017(define-public yajl
2018 (package
2019 (name "yajl")
2020 (version "2.1.0")
2021 (source (origin
2022 (method git-fetch)
2023 (uri (git-reference
2024 (url "https://github.com/lloyd/yajl")
2025 (commit version)))
2026 (file-name (git-file-name name version))
2027 (sha256
2028 (base32
2029 "00yj06drb6izcxfxfqlhimlrb089kka0w0x8k27pyzyiq7qzcvml"))
2030 (patches
2031 (search-patches "yajl-CVE-2023-33460.patch"))))
2032 (build-system cmake-build-system)
2033 (arguments
2034 '(#:tests? #f
2035 #:phases
2036 (modify-phases %standard-phases
2037 (add-after 'patch-source-shebangs 'patch-tests
2038 (lambda _
2039 (substitute* "test/parsing/run_tests.sh"
2040 (("`which echo`") (which "echo"))))))))
2041 (home-page "https://lloyd.github.io/yajl/")
2042 (synopsis "C library for parsing and generating JSON")
2043 (description
2044 "@acronym{YAJL, Yet Another JSON Library} is a small event-driven
2045(SAX-style) JSON parser and validating generator written in ANSI C.")
2046 (license license:isc)))
2047
2048(define-public libwebsockets
2049 (package
2050 (name "libwebsockets")
2051 (version "4.4.1")
2052 (source
2053 (origin
2054 (method git-fetch)
2055 (uri (git-reference
2056 (url "https://github.com/warmcat/libwebsockets")
2057 (commit (string-append "v" version))))
2058 (sha256
2059 (base32 "1qlrfa1vqr89yfrqpk99zkfl8k4cpdbvbdvikdbj6l5xz5z2gxsy"))
2060 (file-name (git-file-name name version))))
2061 (arguments
2062 (list
2063 #:phases
2064 #~(modify-phases %standard-phases
2065 (add-after 'unpack 'fix-test-cert-generation
2066 (lambda _
2067 (substitute* "lib/tls/CMakeLists.txt"
2068 (("-config /etc/ssl/openssl.cnf ")
2069 "")))))
2070 #:configure-flags
2071 #~'("-DLWS_CTEST_INTERNET_AVAILABLE=0")))
2072 (build-system cmake-build-system)
2073 (native-inputs (list perl)) ;to build the HTML doc
2074 (inputs (list zlib openssl))
2075 (synopsis "WebSockets library written in C")
2076 (description
2077 "Libwebsockets is a library that allows C programs to establish client
2078and server WebSockets connections---a protocol layered above HTTP that allows
2079for efficient socket-like bidirectional reliable communication channels.")
2080 (home-page "https://libwebsockets.org")
2081 (license license:expat)))
2082
2083(define-public libwebsockets-for-mosquitto
2084 (hidden-package
2085 (package
2086 (inherit libwebsockets)
2087 (arguments
2088 (substitute-keyword-arguments
2089 (package-arguments libwebsockets)
2090 ((#:configure-flags flags)
2091 ;; Mosquitto requires some tweaks for libwebsockets, see:
2092 ;; https://github.com/NixOS/nixpkgs/blob/1750f3c1c89488e2ffdd47cab9d05454dddfb734/pkgs/by-name/mo/mosquitto/package.nix#L20
2093 #~(cons* "-DLWS_WITH_EXTERNAL_POLL=ON"
2094 "-DLWS_WITH_HTTP2=OFF"
2095 #$flags)))))))
2096
2097(define-public wabt
2098 (package
2099 (name "wabt")
2100 (version "1.0.36")
2101 (source
2102 (origin
2103 (method git-fetch)
2104 (uri (git-reference
2105 (url "https://github.com/WebAssembly/wabt")
2106 (commit version)
2107 (recursive? #true)))
2108 (file-name (git-file-name name version))
2109 (sha256
2110 (base32 "1gypy9bn2nvmfa469fi6kwsyw11j0vqkxm7givs3gidjpsy1bk0a"))
2111 (modules '((guix build utils)))
2112 (snippet
2113 '(delete-file-recursively "third_party/gtest/"))))
2114 (build-system cmake-build-system)
2115 (arguments
2116 (list
2117 ;; Tests on non-x86_64 architectures are not well supported upstream.
2118 #:tests? (target-x86-64?)
2119 #:configure-flags '(list "-DUSE_SYSTEM_GTEST=ON")
2120 #:modules '((guix build cmake-build-system)
2121 ((guix build gnu-build-system) #:prefix gnu:)
2122 (guix build utils))
2123 #:phases
2124 '(modify-phases %standard-phases
2125 (add-after 'unpack 'use-gcc
2126 (lambda _ (setenv "CC" "gcc")))
2127 ;; XXX This is the only test that fails.
2128 (add-after 'unpack 'delete-broken-test
2129 (lambda _
2130 (delete-file "test/wasm2c/spec/memory_init.txt")))
2131 (replace 'check
2132 (lambda* (#:rest args)
2133 (apply (assoc-ref gnu:%standard-phases 'check)
2134 #:test-target "run-tests" args))))))
2135 (native-inputs (list python googletest))
2136 (home-page "https://github.com/WebAssembly/wabt")
2137 (synopsis "WebAssembly Binary Toolkit")
2138 (description "WABT (pronounced: wabbit) is a suite of tools for
2139WebAssembly, including:
2140
2141@enumerate
2142@item @command{wat2wasm} translates from WebAssembly text format to the
2143WebAssembly binary format
2144@item @command{wasm2wat} is the inverse; it translates from the binary format
2145back to the text format (also known as a .wat)
2146@item @command{wasm-objdump} prints information about a wasm binary, similarly
2147to @command{objdump}.
2148@item @command{wasm-interp} decodes ands run a WebAssembly binary file using a
2149stack-based interpreter
2150@item @command{wat-desugar} parses .wat text form as supported by the spec
2151interpreter (s-expressions, flat syntax, or mixed) and prints the canonical
2152flat format
2153@item @command{wasm2c} converts a WebAssembly binary file to a C source and
2154header file.
2155@end enumerate
2156
2157These tools are intended for use in (or for development of) toolchains or
2158other systems that want to manipulate WebAssembly files.")
2159 (license license:asl2.0)))
2160
2161(define-public wasi-compiler-rt
2162 (package
2163 (name "wasi-compiler-rt")
2164 (version "21.1.8")
2165 (source
2166 (origin
2167 (method git-fetch)
2168 (uri (git-reference
2169 (url "https://github.com/llvm/llvm-project")
2170 (commit (string-append "llvmorg-" version))))
2171 (file-name (string-append "llvm-project-" version "-checkout"))
2172 (sha256
2173 (base32 "0v99a90546lrd3cxgam32c0jcnwzi0ljk0ihdvd9xghzss1pq1x6"))
2174 (patches (search-patches "clang-18.0-libc-search-path.patch"
2175 "clang-17.0-link-dsymutil-latomic.patch"))))
2176 (build-system cmake-build-system)
2177 (arguments
2178 (list
2179 #:tests? #f ;requires WASM runtime to run tests
2180 #:build-type "Release"
2181 #:configure-flags
2182 #~(list (string-append "-DCMAKE_INSTALL_PREFIX=" #$output)
2183 "-DCMAKE_C_COMPILER_WORKS=ON"
2184 "-DCMAKE_CXX_COMPILER_WORKS=ON"
2185 "-DCOMPILER_RT_BAREMETAL_BUILD=ON"
2186 ;; Use the normalized target triple so clang finds the builtins
2187 ;; at lib/<target>/libclang_rt.builtins.a
2188 "-DCOMPILER_RT_OS_DIR=wasm32-unknown-wasi"
2189 "-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON"
2190 "-DCOMPILER_RT_INCLUDE_TESTS=OFF"
2191 "-DCOMPILER_RT_HAS_FPIC_FLAG=OFF"
2192 (string-append "-DCMAKE_SYSROOT="
2193 #$(this-package-input "wasi-libc")
2194 "/share/wasi-sysroot")
2195 (string-append "-DCMAKE_C_FLAGS=-fno-exceptions --target=wasm32-wasi "
2196 "-isystem "
2197 #$(this-package-input "wasi-libc")
2198 "/share/wasi-sysroot/include/wasm32-wasi")
2199 (string-append "-DCMAKE_C_COMPILER="
2200 #$(this-package-native-input "clang")
2201 "/bin/clang")
2202 (string-append "-DCMAKE_CXX_COMPILER="
2203 #$(this-package-native-input "clang")
2204 "/bin/clang++")
2205 (string-append "-DCMAKE_AR="
2206 #$(this-package-native-input "llvm")
2207 "/bin/llvm-ar")
2208 (string-append "-DCMAKE_RANLIB="
2209 #$(this-package-native-input "llvm")
2210 "/bin/llvm-ranlib")
2211 "-DCMAKE_SYSTEM_NAME=WASI"
2212 "-DCMAKE_SYSTEM_PROCESSOR=wasm32"
2213 "-DCMAKE_C_COMPILER_TARGET=wasm32-wasi"
2214 "-DCMAKE_CXX_COMPILER_TARGET=wasm32-wasi"
2215 "-DCMAKE_ASM_COMPILER_TARGET=wasm32-wasi")
2216 #:phases
2217 #~(modify-phases %standard-phases
2218 (add-after 'unpack 'change-directory
2219 (lambda _
2220 ;; Build only the builtins library from compiler-rt
2221 (chdir "compiler-rt/lib/builtins")))
2222 (add-after 'install 'create-target-symlinks
2223 (lambda _
2224 ;; Create symlinks for wasip1 and wasip2 targets
2225 (let* ((lib-dir (string-append #$output "/lib"))
2226 (wasi-dir (string-append lib-dir "/wasm32-unknown-wasi")))
2227 (symlink "wasm32-unknown-wasi"
2228 (string-append lib-dir "/wasm32-unknown-wasip1"))
2229 (symlink "wasm32-unknown-wasi"
2230 (string-append lib-dir "/wasm32-unknown-wasip2"))
2231 ;; Clang looks for libclang_rt.builtins.a but we have
2232 ;; libclang_rt.builtins-wasm32.a, so create a symlink
2233 (symlink "libclang_rt.builtins-wasm32.a"
2234 (string-append wasi-dir "/libclang_rt.builtins.a"))))))))
2235 (native-inputs
2236 (list clang-21
2237 llvm-21
2238 lld-21))
2239 (inputs
2240 (list wasi-libc))
2241 (home-page "https://compiler-rt.llvm.org")
2242 (synopsis "LLVM compiler runtime builtins for WASI")
2243 (description
2244 "This package provides the LLVM compiler runtime builtins library for the
2245WebAssembly System Interface (WASI) target. It includes software
2246implementations of arithmetic operations that are not directly supported by
2247the WebAssembly instruction set.")
2248 (license license:asl2.0))) ;with LLVM exceptions
2249
2250(define-public wasi-libc
2251 (package
2252 (name "wasi-libc")
2253 (version "28")
2254 (source
2255 (origin
2256 (method git-fetch)
2257 (uri (git-reference
2258 (url "https://github.com/WebAssembly/wasi-libc")
2259 (commit (string-append "wasi-sdk-" version))))
2260 (file-name (git-file-name name version))
2261 (sha256
2262 (base32 "1zgl5kyz4r6zxsmi3ihx1wyakhpp1dknzplbj4jb6bvnj1rzn1gg"))))
2263 (build-system gnu-build-system)
2264 (arguments
2265 (list
2266 #:tests? #f ;tests require a WASM runtime
2267 #:make-flags
2268 #~(list (string-append "CC="
2269 #$(this-package-native-input "clang")
2270 "/bin/clang")
2271 (string-append "AR="
2272 #$(this-package-native-input "llvm")
2273 "/bin/llvm-ar")
2274 (string-append "NM="
2275 #$(this-package-native-input "llvm")
2276 "/bin/llvm-nm")
2277 (string-append "SYSROOT=" #$output "/share/wasi-sysroot")
2278 (string-append "INSTALL_DIR=" #$output "/share/wasi-sysroot")
2279 ;; Provide an empty builtins library to avoid network download.
2280 ;; The real compiler-rt builtins will be provided by
2281 ;; wasi-compiler-rt.
2282 "BUILTINS_LIB=/tmp/dummy-builtins.a")
2283 #:phases
2284 #~(modify-phases %standard-phases
2285 (delete 'configure)
2286 (add-before 'build 'create-dummy-builtins
2287 (lambda _
2288 ;; Create an empty archive to satisfy the BUILTINS_LIB
2289 ;; requirement. This prevents the Makefile from trying to
2290 ;; download builtins via curl.
2291 (invoke (string-append #$(this-package-native-input "llvm")
2292 "/bin/llvm-ar")
2293 "crs" "/tmp/dummy-builtins.a")))
2294 (replace 'build
2295 (lambda* (#:key make-flags parallel-build? #:allow-other-keys)
2296 (let ((targets '("wasm32-wasi"
2297 "wasm32-wasip1-threads"
2298 "wasm32-wasip2")))
2299 (for-each
2300 (lambda (target)
2301 (format #t "Building for target: ~a~%" target)
2302 (apply invoke "make"
2303 "-j" (if parallel-build?
2304 (number->string (parallel-job-count))
2305 "1")
2306 (string-append "TARGET_TRIPLE=" target)
2307 (if (string=? target "wasm32-wasip1-threads")
2308 (cons "THREAD_MODEL=posix" make-flags)
2309 (if (string=? target "wasm32-wasip2")
2310 (cons "WASI_SNAPSHOT=p2" make-flags)
2311 make-flags))))
2312 targets))))
2313 (delete 'install))))
2314 (native-inputs (list clang-21 llvm-21 lld-21))
2315 (native-search-paths
2316 (list (search-path-specification
2317 (variable "WASI_SYSROOT")
2318 (files '("share/wasi-sysroot")))))
2319 (home-page "https://github.com/WebAssembly/wasi-libc")
2320 (synopsis "WASI C library for WebAssembly")
2321 (description
2322 "WASI Libc is a libc implementation for WebAssembly programs using the
2323WebAssembly System Interface (WASI). It provides C library functionality for
2324compiling C and C++ programs to WebAssembly that can run outside the browser.
2325The library supports multiple WASI targets including @code{wasm32-wasi},
2326@code{wasm32-wasip1-threads}, and @code{wasm32-wasip2}.")
2327 (license (list license:asl2.0 ;most files
2328 license:expat ;dlmalloc
2329 license:bsd-2)))) ;cloudlibc
2330
2331(define-public wasm3
2332 ;; Use an unreleased version with 'm3_GetTableFunction' for tic80.
2333 (let ((commit "139076a98b8321b67f850a844f558b5e91b5ac83"))
2334 (package
2335 (name "wasm3")
2336 (version (git-version "0.5.0" "1" commit))
2337 (source
2338 (origin
2339 (method git-fetch)
2340 (uri (git-reference
2341 (url "https://github.com/wasm3/wasm3")
2342 (commit commit)))
2343 (file-name (git-file-name name version))
2344 (sha256
2345 (base32 "0329kx43n0ns9qxj813239wna69qyi9ghfb1sks46f39h24q0n3x"))))
2346 (build-system cmake-build-system)
2347 (arguments
2348 ;; The default WASI option "uvwasi" causes CMake to initiate a 'git
2349 ;; clone' which cannot happen within the build container.
2350 '(#:configure-flags '("-DBUILD_WASI=simple")
2351 ;; No check target. There are tests but they require a network
2352 ;; connection to download the WebAssembly core test suite.
2353 #:tests? #f
2354 ;; There is no install target. Instead, we have to manually copy the
2355 ;; wasm3 build artifacts to the output directory.
2356 #:phases
2357 (modify-phases %standard-phases
2358 (replace 'install
2359 (lambda* (#:key outputs #:allow-other-keys)
2360 (let* ((out (assoc-ref outputs "out"))
2361 (bindir (string-append out "/bin"))
2362 (includedir (string-append out "/include"))
2363 (libdir (string-append out "/lib")))
2364 (mkdir-p bindir)
2365 (mkdir-p includedir)
2366 (mkdir-p libdir)
2367 (copy-file "wasm3" (string-append bindir "/wasm3"))
2368 (for-each (lambda (header)
2369 (copy-file header
2370 (string-append includedir "/"
2371 (basename header))))
2372 (find-files "../source/source" "\\.h$"))
2373 (copy-file "source/libm3.a"
2374 (string-append libdir "/libm3.a"))))))))
2375 (home-page "https://github.com/wasm3/wasm3")
2376 (synopsis "WebAssembly interpreter")
2377 (description "WASM3 is a fast WebAssembly interpreter.")
2378 (license license:expat))))
2379
2380(define-public wasm-micro-runtime
2381 (package
2382 (name "wasm-micro-runtime")
2383 (version "2.2.0")
2384 (source (origin
2385 (method git-fetch)
2386 (uri (git-reference
2387 (url "https://github.com/bytecodealliance/wasm-micro-runtime")
2388 (commit (string-append "WAMR-" version))))
2389 (file-name (git-file-name "WAMR" version))
2390 (sha256
2391 (base32
2392 "0nhhsvy4a9al4lnxdkmyy63a7qd0x33s5wpcsdvl93kj6klzc6a6"))))
2393 (build-system cmake-build-system)
2394 (arguments
2395 (list
2396 ;; Running the tests is difficult. The test script in
2397 ;; tests/wamr-test-suites insists on downloading and building wabt (even
2398 ;; if we provide it) and it has a hard time accepting a separately
2399 ;; provided clone of the https://github.com/WebAssembly/spec repository.
2400 ;; Future releases provide unit tests which may be easier to run.
2401 #:tests? #false
2402 #:phases
2403 '(modify-phases %standard-phases
2404 (add-after 'unpack 'chdir
2405 (lambda _
2406 (chdir "product-mini/platforms/linux"))))))
2407 (home-page "https://bytecodealliance.github.io/wamr.dev")
2408 (synopsis "WebAssembly Micro Runtime")
2409 (description "WebAssembly Micro Runtime (WAMR) is a lightweight standalone
2410WebAssembly (Wasm) runtime with small footprint, high performance and highly
2411configurable features for applications cross from embedded, IoT, edge to
2412Trusted Execution Environment (TEE), smart contract, cloud native and other
2413features.")
2414 (license license:asl2.0)))
2415
2416(define-public websocketpp
2417 (package
2418 (name "websocketpp")
2419 (version "0.8.2")
2420 (source
2421 (origin
2422 (method git-fetch)
2423 (uri (git-reference
2424 (url "https://github.com/zaphoyd/websocketpp")
2425 (commit version)))
2426 (file-name (git-file-name name version))
2427 (sha256
2428 (base32 "1ww4fhl8qf12hkv6jaild8zzsygdspxm1gqpk2f63gv1xfi31wpm"))
2429 (patches (search-patches "websocketpp-fix-for-cmake-3.15.patch"))))
2430 (build-system cmake-build-system)
2431 (inputs (list boost-1.83 openssl))
2432 (arguments '(#:parallel-tests? #f
2433 #:configure-flags '("-DBUILD_TESTS=ON")
2434 #:phases
2435 (modify-phases %standard-phases
2436 (add-after 'install 'remove-tests
2437 (lambda* (#:key outputs #:allow-other-keys)
2438 (let* ((install-dir (assoc-ref outputs "out"))
2439 (bin-dir (string-append install-dir "/bin")))
2440 (delete-file-recursively bin-dir)
2441 #t))))))
2442 (home-page "https://www.zaphoyd.com/websocketpp/")
2443 (synopsis "C++ library implementing the WebSocket protocol")
2444 (description "WebSocket++ is a C++ library that can be used to implement
2445WebSocket functionality. The goals of the project are to provide a WebSocket
2446implementation that is simple, portable, flexible, lightweight, low level, and
2447high performance.")
2448 (license license:bsd-3)))
2449
2450;; websocketpp main is not moving very fast, this version is required for later
2451;; versions of Boost. https://github.com/zaphoyd/websocketpp/pull/1164
2452(define-public websocketpp-next
2453 (let ((commit "b9aeec6eaf3d5610503439b4fae3581d9aff08e8"))
2454 (package
2455 (name "websocketpp-next")
2456 (version "0.8.2-next")
2457 (source
2458 (origin
2459 (method git-fetch)
2460 (uri (git-reference
2461 (url "https://github.com/zaphoyd/websocketpp")
2462 (commit commit)))
2463 (file-name (git-file-name name version))
2464 (sha256
2465 (base32
2466 "1z4wm5ipchmxg709n4066fl6yq5gzg7qjx2ap18bhbsx85p403mb"))
2467 (patches (search-patches
2468 "websocketpp-boost-compat.patch"))))
2469 (build-system cmake-build-system)
2470 (inputs (list boost-1.83 openssl))
2471 (arguments '(#:parallel-tests? #f
2472 #:configure-flags '("-DBUILD_TESTS=ON")
2473 #:phases
2474 (modify-phases %standard-phases
2475 (add-after 'install 'remove-tests
2476 (lambda* (#:key outputs #:allow-other-keys)
2477 (let* ((install-dir (assoc-ref outputs "out"))
2478 (bin-dir (string-append install-dir "/bin")))
2479 (delete-file-recursively bin-dir)
2480 #t))))))
2481 (home-page "https://www.zaphoyd.com/websocketpp/")
2482 (synopsis "C++ library implementing the WebSocket protocol")
2483 (description "WebSocket++ is a C++ library that can be used to implement
2484WebSocket functionality. The goals of the project are to provide a WebSocket
2485implementation that is simple, portable, flexible, lightweight, low level, and
2486high performance.")
2487 (license license:bsd-3))))
2488
2489(define-public wslay
2490 (package
2491 (name "wslay")
2492 (version "1.1.1")
2493 (source
2494 (origin
2495 (method git-fetch)
2496 (uri (git-reference
2497 (url "https://github.com/tatsuhiro-t/wslay")
2498 (commit (string-append "release-" version))))
2499 (file-name (git-file-name name version))
2500 (sha256
2501 (base32 "1w32iljg4inqf0712w5fxxhggvmjh6ipl2lnz0h36dv1xrj0d964"))))
2502 (build-system gnu-build-system)
2503 (arguments
2504 ;; Parallel builds don't reliably succeed.
2505 `(#:parallel-build? #f
2506 #:phases
2507 (modify-phases %standard-phases
2508 (add-after 'unpack 'fix-sphinx-error
2509 ;; XXX: Remove in next version: fix applied upstream. See
2510 ;; <https://github.com/tatsuhiro-t/wslay/commit/43fda1207ea5977043630500e0c8e77b98b35320>.
2511 (lambda _
2512 (substitute* "doc/sphinx/conf.py.in"
2513 (("add_stylesheet") "add_css_file")))))))
2514 (native-inputs
2515 (list autoconf
2516 automake
2517 cunit ; for tests
2518 libtool
2519 pkg-config
2520 python-sphinx))
2521 (home-page "https://tatsuhiro-t.github.io/wslay/")
2522 (synopsis "C WebSocket library")
2523 (description "@code{Wslay} is an event-based C library for the WebSocket
2524protocol version 13, described in RFC 6455. Besides a high-level API it
2525provides callbacks for sending and receiving frames directly. @code{Wslay}
2526only supports the data transfer part of WebSocket protocol and does not
2527perform the opening handshake in HTTP.")
2528 (license license:expat)))
2529
2530(define-public libpsl
2531 (package
2532 (name "libpsl")
2533 (version "0.21.5")
2534 (source (origin
2535 (method url-fetch)
2536 (uri (string-append "https://github.com/rockdaboot/libpsl/"
2537 "releases/download/" version
2538 "/libpsl-" version ".tar.gz"))
2539 (sha256
2540 (base32
2541 "0272v94h89pg4zr9h47qdzy1m28y1v6xwm7nng0g6a5ix3m9rk0x"))))
2542 (build-system gnu-build-system)
2543 (native-inputs
2544 (list pkg-config
2545 ;; For tests.
2546 python-minimal))
2547 (inputs
2548 (list libidn2 libunistring))
2549 (home-page "https://github.com/rockdaboot/libpsl")
2550 (synopsis "C library for the Publix Suffix List")
2551 (description
2552 "A \"public suffix\" is a domain name under which Internet users can
2553directly register own names.
2554
2555Browsers and other web clients can use it to avoid privacy-leaking
2556\"supercookies\", avoid privacy-leaking \"super domain\" certificates, domain
2557highlighting parts of the domain in a user interface, and sorting domain lists
2558by site.
2559
2560Libpsl has built-in PSL data for fast access, allowing to load PSL data from
2561files, checks if a given domain is a public suffix, provides immediate cookie
2562domain verification, finds the longest public part of a given domain, finds
2563the shortest private part of a given domain, works with international
2564domains (UTF-8 and IDNA2008 Punycode), is thread-safe, and handles IDNA2008
2565UTS#46.")
2566 (license license:x11)))
2567
2568(define-public esbuild
2569 (package
2570 (name "esbuild")
2571 (version "0.24.0")
2572 (source
2573 (origin
2574 (method git-fetch)
2575 (uri (git-reference
2576 (url "https://github.com/evanw/esbuild")
2577 (commit (string-append "v" version))))
2578 (file-name (git-file-name name version))
2579 (sha256
2580 (base32 "1j99m7rdql6iq3llrr8bm85hq34ssc8bmb6vhwr1ibgspjl0jd3k"))
2581 (modules '((guix build utils)))
2582 (snippet
2583 #~(begin
2584 ;; Remove prebuilt binaries
2585 (delete-file-recursively "npm")))))
2586 (build-system go-build-system)
2587 (arguments
2588 (list
2589 #:import-path "github.com/evanw/esbuild/cmd/esbuild"
2590 #:unpack-path "github.com/evanw/esbuild"
2591 #:test-flags #~(list #$(if (and (target-64bit?)
2592 ;; The -race option is not supported on
2593 ;; riscv64 and is not present in gccgo.
2594 (not (target-riscv64?))
2595 (supported-package? go))
2596 "-race" "-short"))
2597 ;; Test subdirectories are compiled from #:import-path.
2598 #:test-subdirs #~(list "../../internal/..." "../../pkg/..." )))
2599 (inputs
2600 (list go-golang-org-x-sys-for-esbuild))
2601 (home-page "https://esbuild.github.io/")
2602 (synopsis "Bundler and minifier tool for JavaScript and TypeScript")
2603 (description
2604 "The esbuild tool provides a unified bundler, transpiler and minifier.
2605It packages up JavaScript and TypeScript code, along with JSON and other data,
2606for distribution on the web.")
2607 (license license:expat)))
2608
2609(define-public tinyproxy
2610 (package
2611 (name "tinyproxy")
2612 (version "1.11.2")
2613 (source (origin
2614 (method url-fetch)
2615 (uri (string-append "https://github.com/tinyproxy/tinyproxy/"
2616 "releases/download/" version "/tinyproxy-"
2617 version ".tar.xz"))
2618 (sha256
2619 (base32
2620 "0sm2i05sq2mkyix7dsvm9abb3vr2nnciqywmwa3wk4b6f206h4ka"))))
2621 (build-system gnu-build-system)
2622 (arguments
2623 `(#:test-target "test" ; ‘make check’ silently does nothing
2624 #:configure-flags
2625 (list
2626 ;; For the log file, etc.
2627 "--localstatedir=/var")
2628 #:phases
2629 (modify-phases %standard-phases
2630 (add-before 'build 'pre-build
2631 (lambda* (#:key inputs #:allow-other-keys #:rest args)
2632 ;; Uncommenting the next two lines may assist in debugging
2633 ;; (substitute* "docs/man5/Makefile" (("a2x") "a2x -v"))
2634 ;; (setenv "XML_DEBUG_CATALOG" "1")
2635 #t)))))
2636 (native-inputs
2637 (list perl)) ; for tests
2638 (home-page "https://tinyproxy.github.io/")
2639 (synopsis "Light-weight HTTP/HTTPS proxy daemon")
2640 (description "Tinyproxy is a light-weight HTTP/HTTPS proxy
2641daemon. Designed from the ground up to be fast and yet small, it is an ideal
2642solution for use cases such as embedded deployments where a full featured HTTP
2643proxy is required, but the system resources for a larger proxy are
2644unavailable.")
2645 (license license:gpl2+)))
2646
2647(define-public polipo
2648 (package
2649 (name "polipo")
2650 (version "1.1.1")
2651 (source
2652 (origin
2653 (method url-fetch)
2654 (uri (string-append
2655 "http://www.pps.univ-paris-diderot.fr/~jch/software/files/polipo/polipo-"
2656 version ".tar.gz"))
2657 (sha256
2658 (base32
2659 "05g09sg9qkkhnc2mxldm1w1xkxzs2ylybkjzs28w8ydbjc3pand2"))))
2660 (native-inputs (list texinfo))
2661 (build-system gnu-build-system)
2662 (arguments
2663 `(#:phases (modify-phases %standard-phases
2664 (delete 'configure))
2665 #:make-flags (let ((out (assoc-ref %outputs "out")))
2666 (list (string-append "PREFIX=" out)
2667 (string-append "LOCAL_ROOT="
2668 out "/share/polipo/www")
2669 "CC=gcc"))
2670 ;; No 'check' target.
2671 #:tests? #f))
2672 (home-page "https://www.pps.univ-paris-diderot.fr/~jch/software/polipo/")
2673 (synopsis "Small caching web proxy")
2674 (description
2675 "Polipo is a small caching web proxy (web cache, HTTP proxy, and proxy
2676server). It was primarily designed to be used by one person or a small group
2677of people.")
2678 (license license:expat)))
2679
2680(define-public websockify
2681 (package
2682 (name "websockify")
2683 (version "0.13.0")
2684 (source
2685 (origin
2686 (method git-fetch)
2687 (uri (git-reference
2688 (url "https://github.com/novnc/websockify")
2689 (commit (string-append "v" version))))
2690 (file-name (git-file-name name version))
2691 (sha256
2692 (base32 "01163ikxmwmncrg7m8wy238ykjd5qif6bz85zqnk3mrvipicp7kg"))))
2693 (build-system pyproject-build-system)
2694 (native-inputs
2695 (list python-nose2
2696 python-setuptools))
2697 (inputs
2698 (list python-jwcrypto
2699 python-numpy
2700 python-redis
2701 python-requests))
2702 (home-page "https://github.com/novnc/websockify")
2703 (synopsis "WebSockets support for any application/server")
2704 (description "Websockify translates WebSockets traffic to normal socket
2705traffic. Websockify accepts the WebSockets handshake, parses it, and then
2706begins forwarding traffic between the client and the target in both
2707directions.")
2708 (license license:lgpl3)))
2709
2710(define-public microsocks
2711 (package
2712 (name "microsocks")
2713 (version "1.0.5")
2714 (source
2715 (origin
2716 (method git-fetch)
2717 (uri (git-reference
2718 (url "https://github.com/rofl0r/microsocks")
2719 (commit (string-append "v" version))))
2720 (file-name (git-file-name name version))
2721 (sha256
2722 (base32
2723 "0ffiwlkaylkm2ih7d96qvdy9s9ydqgypczs5k8iwkf5yv617dm74"))))
2724 (build-system gnu-build-system)
2725 (arguments
2726 (list
2727 #:tests? #f ;no tests
2728 #:make-flags #~(list "prefix=/"
2729 "CC=gcc"
2730 (string-append "DESTDIR=" #$output))
2731 #:phases
2732 '(modify-phases %standard-phases
2733 (delete 'configure))))
2734 (home-page "https://github.com/rofl0r/microsocks")
2735 (synopsis "Tiny and lightweight SOCKS5 server")
2736 (description "Microsocks is a small, efficient SOCKS5 server.")
2737 (license license:expat)))
2738
2739(define-public node-esbuild
2740 (package
2741 (name "node-esbuild")
2742 (version (package-version esbuild))
2743 (source
2744 (origin
2745 (inherit (package-source esbuild))
2746 (file-name (git-file-name name version))
2747 (snippet #f)
2748 (modules '())))
2749 (build-system node-build-system)
2750 (inputs (list esbuild))
2751 (arguments (list
2752 #:tests? #f
2753 #:phases #~(modify-phases %standard-phases
2754 (add-after 'unpack 'chdir (lambda _
2755 (chdir "npm/esbuild")))
2756 (add-before 'patch-dependencies 'modify-package (lambda _
2757 (modify-json "package.json"
2758 (delete-json-fields '("optionalDependencies" "scripts")))
2759 (substitute* "../../lib/npm/node-platform.ts"
2760 (("^export var ESBUILD_BINARY_PATH:.+$")
2761 (string-append "export var ESBUILD_BINARY_PATH: string"
2762 " = process.env.ESBUILD_BINARY_PATH"
2763 " || ESBUILD_BINARY_PATH"
2764 " || path.join(__dirname, '..', 'bin', 'esbuild')")))))
2765 (replace 'build (lambda* (#:key inputs #:allow-other-keys)
2766 ; From scripts/esbuild.js
2767 (invoke
2768 "esbuild"
2769 "../../lib/npm/node.ts"
2770 "--outfile=lib/main.js"
2771 "--bundle"
2772 "--target=node10"
2773 "--define:WASM=false"
2774 (string-append "--define:ESBUILD_VERSION=\"" #$version "\"")
2775 "--external:esbuild"
2776 "--platform=node"
2777 "--log-level=warning")
2778 (copy-file "../../lib/shared/types.ts" "lib/main.d.ts")
2779 (install-file
2780 (string-append (assoc-ref inputs "esbuild") "/bin/esbuild")
2781 "bin"))))))
2782 (home-page (package-home-page esbuild))
2783 (synopsis "Node module of ESBuild")
2784 (description (package-description esbuild))
2785 (license (package-license esbuild))))
2786
2787(define-public wwwoffle
2788 (package
2789 (name "wwwoffle")
2790 (version "2.9j")
2791 (source (origin
2792 (method url-fetch)
2793 (uri (string-append "https://www.gedanken.org.uk/software/"
2794 "wwwoffle/download/wwwoffle-"
2795 version ".tgz"))
2796 (sha256
2797 (base32
2798 "1ihil1xq9dp21hf108khxbw6f3baq0w5c0j3af038y6lkmad4vdi"))))
2799 (build-system gnu-build-system)
2800 (arguments
2801 `(#:configure-flags '("--with-gnutls")
2802 #:tests? #f)) ; no test target
2803 (native-inputs (list flex))
2804 (inputs (list gnutls libgcrypt))
2805 (home-page "https://www.gedanken.org.uk/software/wwwoffle/")
2806 (synopsis "Caching web proxy optimized for intermittent internet links")
2807 (description "WWWOFFLE is a proxy web server that is especially good for
2808intermittent internet links. It can cache HTTP, HTTPS, FTP, and finger
2809protocols, and supports browsing and requesting pages while offline, indexing,
2810modifying pages and incoming and outgoing headers, monitoring pages for
2811changes, and much more.")
2812 (license license:gpl2+)))
2813
2814(define-public libjuice
2815 (package
2816 (name "libjuice")
2817 (version "1.4.2")
2818 (source (origin
2819 (method git-fetch)
2820 (uri (git-reference
2821 (url "https://github.com/paullouisageneau/libjuice")
2822 (commit (string-append "v" version))))
2823 (file-name (git-file-name name version))
2824 (sha256
2825 (base32
2826 "035kqyp5bcawzkpqpjb1qjwqf0dp2gm9h2j9py5iiahcvfjwh70i"))))
2827 (build-system cmake-build-system)
2828 (arguments (list #:tests? #f)) ; requires internet access
2829 (home-page "https://github.com/paullouisageneau/libjuice")
2830 (synopsis "UDP Interactive Connectivity Establishment library")
2831 (description "@code{libjuice} opens bidirectionnal User Datagram
2832Protocol (UDP) streams with Network Address Translator (NAT) traversal. It's a
2833simplified implementation of the Interactive Connectivity Establishment (ICE)
2834protocol, client-side and server-side, written in C without dependencies for
2835POSIX platforms.")
2836 (license license:mpl2.0)))
2837
2838(define-public libdatachannel
2839 (package
2840 (name "libdatachannel")
2841 (version "0.21.1")
2842 (source (origin
2843 (method git-fetch)
2844 (uri (git-reference
2845 (url "https://github.com/paullouisageneau/libdatachannel")
2846 (commit (string-append "v" version))))
2847 (file-name (git-file-name name version))
2848 (sha256
2849 (base32
2850 "11icbyd71dw5ywjdviq580xvad24yfsjj3c5zpjqsxc883i40dxi"))))
2851 (build-system cmake-build-system)
2852 (arguments
2853 (list #:tests? #f ; requires internet access
2854 #:configure-flags
2855 #~'("-DPREFER_SYSTEM_LIB=ON")))
2856 (inputs (list libjuice libsrtp nlohmann-json openssl plog usrsctp))
2857 (home-page "https://libdatachannel.org/")
2858 (synopsis "WebRTC Data Channels and WebSockets library")
2859 (description "@code{libdatachannel} is a standalone implementation of WebRTC
2860Data Channels, WebRTC Media Transport, and WebSockets in C++17 with C bindings
2861for POSIX platforms. WebRTC is a W3C and IETF standard enabling real-time
2862peer-to-peer data and media exchange between two devices.")
2863 (license license:mpl2.0)))
2864
2865(define-public liboauth
2866 (package
2867 (name "liboauth")
2868 (version "1.0.3")
2869 (source (origin
2870 (method url-fetch)
2871 (uri (string-append "mirror://sourceforge/liboauth/liboauth-"
2872 version ".tar.gz"))
2873 (sha256
2874 (base32
2875 "07w1aq8y8wld43wmbk2q8134p3bfkp2vma78mmsfgw2jn1bh3xhd"))))
2876 (build-system gnu-build-system)
2877 (arguments
2878 (list
2879 #:configure-flags ''("--enable-nss")
2880 #:phases
2881 #~(modify-phases %standard-phases
2882 (add-after 'unpack 'use-C-unicode-locale
2883 (lambda _
2884 (substitute* "tests/commontest.c"
2885 (("en_US\\.UTF-8")
2886 "C.UTF-8")))))))
2887 (native-inputs (list pkg-config))
2888 (propagated-inputs
2889 (list curl nss))
2890 (home-page "https://sourceforge.net/projects/liboauth")
2891 (synopsis "C library implementing the OAuth API")
2892 (description
2893 "liboauth is a collection of C functions implementing the OAuth API.
2894liboauth provides functions to escape and encode strings according to OAuth
2895specifications and offers high-level functionality built on top to sign
2896requests or verify signatures using either NSS or OpenSSL for calculating the
2897hash/signatures.")
2898 ;; Source code may be distributed under either license.
2899 (license (list license:expat license:gpl2+))))
2900
2901(define-public libquvi-scripts
2902 (package
2903 (name "libquvi-scripts")
2904 (version "0.4.21")
2905 (source
2906 (origin
2907 (method url-fetch)
2908 (uri (string-append
2909 "mirror://sourceforge/quvi/" (version-major+minor version) "/"
2910 name "/" name "-" version ".tar.xz"))
2911 (sha256
2912 (base32 "0d0giry6bb57pnidymvdl7i5x9bq3ljk3g4bs294hcr5mj3cq0kw"))))
2913 (build-system gnu-build-system)
2914 (home-page "https://quvi.sourceforge.net/")
2915 (synopsis "Media stream URL parser")
2916 (description "This package contains support scripts called by libquvi to
2917parse media stream properties.")
2918 (license license:lgpl2.1+)))
2919
2920(define-public libquvi
2921 (package
2922 (name "libquvi")
2923 (version "0.4.1")
2924 (source
2925 (origin
2926 (method url-fetch)
2927 (uri (string-append
2928 "mirror://sourceforge/quvi/" (version-major+minor version) "/" name "/"
2929 name "-" version ".tar.xz"))
2930 (sha256
2931 (base32 "00x9gbmzc5cns0gnfag0hsphcr3cb33vbbb9s7ppvvd6bxz2z1mm"))))
2932 (build-system gnu-build-system)
2933 (native-inputs (list pkg-config))
2934 (inputs
2935 (list curl
2936 cyrus-sasl
2937 libquvi-scripts
2938 lua-5.1
2939 openssl
2940 zlib))
2941 (arguments
2942 ;; Lua provides no .pc file, so add CFLAGS/LIBS manually.
2943 '(#:configure-flags
2944 (let ((lua (assoc-ref %build-inputs "lua")))
2945 (list
2946 (string-append "liblua_CFLAGS=-I" lua "/include")
2947 (string-append "liblua_LIBS=-L" lua "/libs -llua")))))
2948 (home-page "https://quvi.sourceforge.net/")
2949 (synopsis "Media stream URL parser")
2950 (description "libquvi is a library with a C API for parsing media stream
2951URLs and extracting their actual media files.")
2952 (license license:lgpl2.1+)))
2953
2954(define-public quvi
2955 (package
2956 (name "quvi")
2957 (version "0.4.2")
2958 (source
2959 (origin
2960 (method url-fetch)
2961 (uri (string-append
2962 "mirror://sourceforge/" name "/" (version-major+minor version)
2963 "/" name "/" name "-" version ".tar.xz"))
2964 (sha256
2965 (base32 "09lhl6dv5zpryasx7yjslfrcdcqlsbwapvd5lg7w6sm5x5n3k8ci"))))
2966 (build-system gnu-build-system)
2967 (native-inputs (list pkg-config))
2968 (inputs
2969 (list curl libquvi))
2970 (home-page "https://quvi.sourceforge.net/")
2971 (synopsis "Media stream URL parser")
2972 (description "quvi is a command-line-tool suite to extract media files
2973from streaming URLs. It is a command-line wrapper for the libquvi library.")
2974 (license license:lgpl2.1+)))
2975
2976(define-public serf
2977 (package
2978 (name "serf")
2979 (version "1.3.10")
2980 (source
2981 (origin
2982 (method url-fetch)
2983 (uri (string-append "mirror://apache/serf/serf-"
2984 version ".tar.bz2"))
2985 (sha256
2986 (base32 "1rk4q0fv9xs57fivjy5mxqkk5g7pvvvssxvalz6nwld2p84fz0dy"))))
2987 (build-system scons-build-system)
2988 (propagated-inputs
2989 (list apr apr-util openssl))
2990 (inputs
2991 (list ;; TODO: Fix build with gss.
2992 ;;("gss" ,gss)
2993 zlib))
2994 (arguments
2995 `(#:scons-flags (list "CFLAGS=-g -O2 -Wno-error=incompatible-pointer-types"
2996 (string-append "APR=" (assoc-ref %build-inputs "apr"))
2997 (string-append "APU=" (assoc-ref %build-inputs "apr-util"))
2998 (string-append "OPENSSL=" (assoc-ref %build-inputs "openssl"))
2999 ;; (string-append "GSSAPI=" (assoc-ref %build-inputs "gss"))
3000 (string-append "ZLIB=" (assoc-ref %build-inputs "zlib"))
3001 (string-append "PREFIX=" %output))
3002 #:phases
3003 (modify-phases %standard-phases
3004 (add-after 'unpack 'scons-propagate-environment
3005 (lambda _
3006 ;; By design, SCons does not, by default, propagate
3007 ;; environment variables to subprocesses. See:
3008 ;; <http://comments.gmane.org/gmane.linux.distributions.nixos/4969>
3009 ;; Here, we modify the SConstruct file to arrange for
3010 ;; environment variables to be propagated.
3011 (substitute* "SConstruct"
3012 (("^env = Environment\\(")
3013 "env = Environment(ENV=os.environ, "))))
3014 (add-before 'check 'disable-broken-tests
3015 (lambda _
3016 ;; These tests rely on SSL certificates that expired 2017-04-18.
3017 ;; While there are newer certs available upstream, we don't want
3018 ;; this package to suddenly "expire" some time in the future.
3019 ;; https://bugs.gnu.org/26671
3020 (let ((broken-tests
3021 '("test_ssl_trust_rootca"
3022 "test_ssl_certificate_chain_with_anchor"
3023 "test_ssl_certificate_chain_all_from_server"
3024 "test_ssl_no_servercert_callback_allok"
3025 "test_ssl_large_response"
3026 "test_ssl_large_request"
3027 "test_ssl_client_certificate"
3028 "test_ssl_future_server_cert"
3029 "test_setup_ssltunnel"
3030 "test_ssltunnel_basic_auth"
3031 "test_ssltunnel_basic_auth_server_has_keepalive_off"
3032 "test_ssltunnel_basic_auth_proxy_has_keepalive_off"
3033 "test_ssltunnel_basic_auth_proxy_close_conn_on_200resp"
3034 "test_ssltunnel_digest_auth")))
3035 (for-each
3036 (lambda (test)
3037 (substitute* "test/test_context.c"
3038 (((string-append "SUITE_ADD_TEST\\(suite, " test "\\);")) "")))
3039 broken-tests)
3040 #t))))))
3041 (home-page "https://serf.apache.org/")
3042 (synopsis "High-performance asynchronous HTTP client library")
3043 (description
3044 "serf is a C-based HTTP client library built upon the Apache Portable
3045Runtime (APR) library. It multiplexes connections, running the read/write
3046communication asynchronously. Memory copies and transformations are kept to a
3047minimum to provide high performance operation.")
3048 ;; Most of the code is covered by the Apache License, Version 2.0, but the
3049 ;; bundled CuTest framework uses a different non-copyleft license.
3050 (properties
3051 '((release-monitoring-url . "https://serf.apache.org/download")))
3052 (license (list license:asl2.0 (license:non-copyleft "file://test/CuTest-README.txt")))))
3053
3054(define-public libsass
3055 (package
3056 (name "libsass")
3057 ;; When updating, check whether sassc/libsass-3.5 is still needed.
3058 (version "3.6.4")
3059 (source (origin
3060 (method git-fetch)
3061 (uri (git-reference
3062 (url "https://github.com/sass/libsass")
3063 (commit version)))
3064 (file-name (git-file-name name version))
3065 (sha256
3066 (base32
3067 "0r8lfqvr3rjhjd8r036zd1wc9q17gyiskppcw9m13jks9an7xp4j"))))
3068 (build-system gnu-build-system)
3069 (arguments
3070 `(#:phases
3071 (modify-phases %standard-phases
3072 (add-before 'bootstrap 'set-LIBSASS_VERSION
3073 (lambda _
3074 (setenv "LIBSASS_VERSION" ,version)
3075 #t)))))
3076 (native-inputs
3077 (list autoconf automake libtool))
3078 (home-page "https://sass-lang.com/libsass")
3079 (synopsis "SASS Compiler, implemented as a C/C++ library")
3080 (description
3081 "LibSass is a @acronym{SASS,Syntactically awesome style sheets} compiler
3082library designed for portability and efficiency. To actually compile SASS
3083stylesheets, you'll need to use another program that uses this library,
3084@var{sassc} for example.")
3085 (license license:expat)))
3086
3087(define-public sassc
3088 (package
3089 (name "sassc")
3090 (version "3.6.2")
3091 (source (origin
3092 (method git-fetch)
3093 (uri (git-reference
3094 (url "https://github.com/sass/sassc")
3095 (commit version)))
3096 (file-name (git-file-name name version))
3097 (sha256
3098 (base32
3099 "0m7flrs0hz3ivib8kvsgn3d0fgkabqviadkp1dyspa6iibx3gjwd"))))
3100 (build-system gnu-build-system)
3101 (arguments
3102 `(#:make-flags
3103 (list "CC=gcc"
3104 (string-append "PREFIX=" (assoc-ref %outputs "out")))
3105 #:tests? #f ; no test suite
3106 #:phases
3107 (modify-phases %standard-phases
3108 (add-after 'unpack 'patch-Makefile
3109 (lambda _
3110 (substitute* "Makefile"
3111 (("build-shared: \\$\\(RESOURCES\\) \\$\\(OBJECTS\\) \\$\\(LIB_SHARED\\)")
3112 "build-shared: $(RESOURCES) $(OBJECTS)")
3113 (("\\$\\(SASSC_EXE\\): libsass build")
3114 "$(SASSC_EXE): build")
3115 (("install: libsass-install-\\$\\(BUILD\\) \\\\")
3116 "install: \\"))
3117 #t))
3118 ;; This phase fails because…
3119 (delete 'bootstrap)
3120 ;; …there is no configure script to be generated.
3121 (delete 'configure)
3122 (add-before 'build 'setup-environment
3123 (lambda _
3124 (setenv "BUILD" "shared")
3125 (setenv "SASSC_VERSION" ,version)
3126 #t)))))
3127 (inputs
3128 (list libsass))
3129 (synopsis "CSS pre-processor")
3130 (description "SassC is a compiler written in C for the CSS pre-processor
3131language known as SASS.")
3132 (home-page "https://sass-lang.com/libsass")
3133 (license license:expat)))
3134
3135(define-public sassc/libsass-3.5
3136 ;; Newer libsass versions suffor from a memory leak when building (some?)
3137 ;; GTK themes <https://github.com/sass/libsass/issues/3033>.
3138 (package
3139 (inherit sassc)
3140 (name "sassc")
3141 (inputs
3142 (list (package (inherit libsass)
3143 (name "libsass")
3144 (version "3.5.5")
3145 (source (origin (method git-fetch)
3146 (uri (git-reference (url
3147 "https://github.com/sass/libsass")
3148 (commit version)))
3149 (file-name (git-file-name name version))
3150 (sha256 (base32
3151 "0830pjcvhzxh6yixj82x5k5r1xnadjqzi16kp53213icbly0r9ma")))))))
3152 (properties '((hidden? . #t)))))
3153
3154(define-public guile-safsaf
3155 (let ((commit "8b354103ee2b7182bebcc944c36741469ddf4fb8")
3156 (revision "1"))
3157 (package
3158 (name "guile-safsaf")
3159 (version (git-version "0.5" revision commit))
3160 (source (origin
3161 (method git-fetch)
3162 (uri (git-reference
3163 (url "https://forge.cbaines.net/cbaines/safsaf.git")
3164 (commit commit)))
3165 (sha256
3166 (base32
3167 "0pw09cw0d52xhjbqj76c4bl44qnmw53ppg6hnhkliv9ssbrlccar"))
3168 (file-name (git-file-name name version))))
3169 (build-system gnu-build-system)
3170 (native-inputs
3171 (list pkg-config
3172 autoconf
3173 automake
3174 guile-3.0-latest
3175 guile-lib
3176 guile-fibers
3177 guile-knots
3178 guile-webutils
3179 guile-documenta
3180 guile-json-4
3181 guile-gcrypt))
3182 (inputs
3183 (list guile-3.0-latest))
3184 (propagated-inputs
3185 (list guile-fibers
3186 guile-knots
3187 guile-webutils
3188 guile-json-4
3189 guile-gcrypt))
3190 (home-page "https://cbaines.codeberg.page/safsaf/")
3191 (synopsis "Web framework for GNU Guile")
3192 (description
3193 "Safsaf is a web framework for GNU Guile, built on Guile Fibers using the
3194Guile Knots web server. It features include:
3195@itemize
3196@item Request routing
3197@item Middleware for logging, CORS, CSRF protection, sessions (signed
3198cookies), security headers, trailing-slash normalization, exception handling
3199@item Request helpers for form body parsing, multipart parsing, query strings,
3200cookies
3201@item Response helpers for HTML/SXML, JSON, redirects, plain text, static
3202files with Last-Modified / Cache-Control
3203@item Server-Sent Events (SSE): streaming text/event-stream responses with
3204keepalives and Last-Event-ID replay
3205@item Declarative parameter parsing with built-in processors, CSRF
3206integration, and error inspection
3207@item Internationalisation: gettext-style t / tn helpers backed by an
3208in-Scheme catalog loaded from .po files, with a locale handler wrapper that
3209selects per-request from route params, cookie, or Accept-Language
3210@end itemize")
3211 (license license:lgpl3+))))
3212
3213
3214(define-public perl-apache-logformat-compiler
3215 (package
3216 (name "perl-apache-logformat-compiler")
3217 (version "0.36")
3218 (source
3219 (origin
3220 (method url-fetch)
3221 (uri (string-append "mirror://cpan/authors/id/K/KA/KAZEBURO/"
3222 "Apache-LogFormat-Compiler-" version ".tar.gz"))
3223 (sha256
3224 (base32 "05xcl7j65vakx7x79jqjikyw0nzf60bc2w6hhc0q5sklxq1ral4l"))))
3225 (build-system perl-build-system)
3226 (native-inputs
3227 (list perl-http-message perl-module-build-tiny perl-test-mocktime
3228 perl-try-tiny perl-uri))
3229 (propagated-inputs
3230 (list perl-posix-strftime-compiler))
3231 (arguments `(#:tests? #f)) ; TODO: Timezone test failures
3232 (home-page "https://metacpan.org/release/Apache-LogFormat-Compiler")
3233 (synopsis "Compile a log format string to perl-code")
3234 (description "This module provides methods to compile a log format string
3235to perl-code, for faster generation of access_log lines.")
3236 (license license:perl-license)))
3237
3238(define-public perl-authen-sasl
3239 (package
3240 (name "perl-authen-sasl")
3241 (version "2.16")
3242 (source
3243 (origin
3244 (method url-fetch)
3245 (uri (string-append "mirror://cpan/authors/id/G/GB/GBARR/"
3246 "Authen-SASL-" version ".tar.gz"))
3247 (sha256
3248 (base32
3249 "02afhlrdq5hh5g8b32fa79fqq5i76qzwfqqvfi9zi57h31szl536"))))
3250 (build-system perl-build-system)
3251 (arguments
3252 '(#:phases
3253 (modify-phases %standard-phases
3254 (add-after 'unpack 'set-env
3255 ;; Fix the build with Perl 5.26.0. Try removing this phase for later
3256 ;; versions of perl-authen-sasl.
3257 (lambda _ (setenv "PERL_USE_UNSAFE_INC" "1") #t)))))
3258 (propagated-inputs
3259 (list perl-digest-hmac perl-gssapi))
3260 (home-page "https://metacpan.org/release/Authen-SASL")
3261 (synopsis "SASL authentication framework")
3262 (description "Authen::SASL provides an SASL authentication framework.")
3263 (license license:perl-license)))
3264
3265(define-public perl-catalyst-action-renderview
3266 (package
3267 (name "perl-catalyst-action-renderview")
3268 (version "0.16")
3269 (source
3270 (origin
3271 (method url-fetch)
3272 (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
3273 "Catalyst-Action-RenderView-"
3274 version ".tar.gz"))
3275 (sha256
3276 (base32
3277 "0j1rrld13cjk7ks92b5hv3xw4rfm2lvmksb4rlzd8mx0a0wj0rc5"))))
3278 (build-system perl-build-system)
3279 (native-inputs
3280 (list perl-http-request-ascgi perl-module-install))
3281 (propagated-inputs
3282 (list perl-catalyst-runtime perl-data-visitor perl-mro-compat))
3283 (home-page "https://metacpan.org/release/Catalyst-Action-RenderView")
3284 (synopsis "Sensible default Catalyst action")
3285 (description "This Catalyst action implements a sensible default end
3286action, which will forward to the first available view.")
3287 (license license:perl-license)))
3288
3289(define-public perl-catalyst-action-rest
3290 (package
3291 (name "perl-catalyst-action-rest")
3292 (version "1.21")
3293 (source (origin
3294 (method url-fetch)
3295 (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/"
3296 "Catalyst-Action-REST-" version ".tar.gz"))
3297 (sha256
3298 (base32
3299 "086bykggzalbjfk0islac4b48g9s2ypj7y81d6ns1lq0aax1py6c"))))
3300 (build-system perl-build-system)
3301 (native-inputs
3302 (list perl-test-requires perl-module-install))
3303 (propagated-inputs
3304 (list perl-catalyst-runtime
3305 perl-class-inspector
3306 perl-config-general
3307 perl-cpanel-json-xs
3308 perl-libwww
3309 perl-moose
3310 perl-mro-compat
3311 perl-namespace-autoclean
3312 perl-params-validate
3313 perl-uri-find
3314 perl-xml-simple))
3315 (home-page "https://metacpan.org/release/Catalyst-Action-REST")
3316 (synopsis "Automated REST Method Dispatching")
3317 (description "This Action handles doing automatic method dispatching for
3318REST requests. It takes a normal Catalyst action, and changes the dispatch to
3319append an underscore and method name. First it will try dispatching to an
3320action with the generated name, and failing that it will try to dispatch to a
3321regular method.")
3322 (license license:perl-license)))
3323
3324(define-public perl-catalyst-authentication-store-dbix-class
3325 (package
3326 (name "perl-catalyst-authentication-store-dbix-class")
3327 (version "0.1506")
3328 (source
3329 (origin
3330 (method url-fetch)
3331 (uri (string-append "mirror://cpan/authors/id/I/IL/ILMARI/"
3332 "Catalyst-Authentication-Store-DBIx-Class-"
3333 version ".tar.gz"))
3334 (sha256
3335 (base32
3336 "0i5ja7690fs9nhxcij6lw51j804sm8s06m5mvk1n8pi8jljrymvw"))))
3337 (build-system perl-build-system)
3338 (native-inputs
3339 (list perl-catalyst-plugin-authorization-roles
3340 perl-catalyst-plugin-session-state-cookie perl-dbd-sqlite
3341 perl-module-install perl-test-www-mechanize-catalyst))
3342 (propagated-inputs
3343 (list perl-catalyst-runtime perl-catalyst-plugin-authentication
3344 perl-dbix-class perl-catalyst-model-dbic-schema))
3345 (home-page
3346 "https://metacpan.org/release/Catalyst-Authentication-Store-DBIx-Class")
3347 (synopsis "Storage class for Catalyst authentication using DBIx::Class")
3348 (description "The Catalyst::Authentication::Store::DBIx::Class class
3349provides access to authentication information stored in a database via
3350DBIx::Class.")
3351 (license license:perl-license)))
3352
3353(define-public perl-catalyst-component-instancepercontext
3354 (package
3355 (name "perl-catalyst-component-instancepercontext")
3356 (version "0.001001")
3357 (source
3358 (origin
3359 (method url-fetch)
3360 (uri (string-append "mirror://cpan/authors/id/G/GR/GRODITI/"
3361 "Catalyst-Component-InstancePerContext-"
3362 version ".tar.gz"))
3363 (sha256
3364 (base32
3365 "0wfj4vnn2cvk6jh62amwlg050p37fcwdgrn9amcz24z6w4qgjqvz"))))
3366 (build-system perl-build-system)
3367 (native-inputs
3368 (list perl-module-install))
3369 (propagated-inputs
3370 (list perl-catalyst-runtime perl-moose))
3371 (home-page
3372 "https://metacpan.org/release/Catalyst-Component-InstancePerContext")
3373 (synopsis "Create only one instance of Moose component per context")
3374 (description "Catalyst::Component::InstancePerContext returns a new
3375instance of a component on each request.")
3376 (license license:perl-license)))
3377
3378(define-public perl-catalyst-devel
3379 (package
3380 (name "perl-catalyst-devel")
3381 (version "1.42")
3382 (source
3383 (origin
3384 (method url-fetch)
3385 (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
3386 "Catalyst-Devel-" version ".tar.gz"))
3387 (sha256
3388 (base32 "1gcaqivyxwsdq87v9za1ijjibh6llirzqsbpwjbw1f5mravg1iky"))))
3389 (build-system perl-build-system)
3390 (native-inputs
3391 (list perl-file-sharedir-install perl-test-fatal))
3392 (propagated-inputs
3393 (list perl-catalyst-action-renderview
3394 perl-catalyst-plugin-configloader
3395 perl-catalyst-plugin-static-simple
3396 perl-catalyst-runtime
3397 perl-config-general
3398 perl-file-changenotify
3399 perl-file-copy-recursive
3400 perl-file-sharedir
3401 perl-module-install
3402 perl-moose
3403 perl-moosex-emulate-class-accessor-fast
3404 perl-namespace-autoclean
3405 perl-namespace-clean
3406 perl-path-class
3407 perl-template-toolkit))
3408 (home-page "https://metacpan.org/release/Catalyst-Devel")
3409 (synopsis "Catalyst Development Tools")
3410 (description "The Catalyst-Devel distribution includes a variety of
3411modules useful for the development of Catalyst applications, but not required
3412to run them. Catalyst-Devel includes the Catalyst::Helper system, which
3413autogenerates scripts and tests; Module::Install::Catalyst, a Module::Install
3414extension for Catalyst; and requirements for a variety of development-related
3415modules.")
3416 (license license:perl-license)))
3417
3418(define-public perl-catalyst-dispatchtype-regex
3419 (package
3420 (name "perl-catalyst-dispatchtype-regex")
3421 (version "5.90035")
3422 (source
3423 (origin
3424 (method url-fetch)
3425 (uri (string-append "mirror://cpan/authors/id/M/MG/MGRIMES/"
3426 "Catalyst-DispatchType-Regex-" version ".tar.gz"))
3427 (sha256
3428 (base32
3429 "06jq1lmpq88rmp9zik5gqczg234xac0hiyc3l698iif7zsgcyb80"))))
3430 (build-system perl-build-system)
3431 (native-inputs
3432 (list perl-module-build ;needs Module::Build >= 0.4004
3433 perl-namespace-autoclean perl-catalyst-runtime))
3434 (propagated-inputs
3435 (list perl-moose perl-text-simpletable))
3436 (home-page "https://metacpan.org/release/Catalyst-DispatchType-Regex")
3437 (synopsis "Regex DispatchType for Catalyst")
3438 (description "Dispatch type managing path-matching behaviour using
3439regexes. Regex dispatch types have been deprecated and removed from Catalyst
3440core. It is recommend that you use Chained methods or other techniques
3441instead. As part of the refactoring, the dispatch priority of Regex vs Regexp
3442vs LocalRegex vs LocalRegexp may have changed. Priority is now influenced by
3443when the dispatch type is first seen in your application.")
3444 (license license:perl-license)))
3445
3446(define-public perl-catalyst-model-dbic-schema
3447 (package
3448 (name "perl-catalyst-model-dbic-schema")
3449 (version "0.65")
3450 (source
3451 (origin
3452 (method url-fetch)
3453 (uri (string-append "mirror://cpan/authors/id/G/GB/GBJK/"
3454 "Catalyst-Model-DBIC-Schema-"
3455 version ".tar.gz"))
3456 (sha256
3457 (base32
3458 "1spfjcjc0b9dv3k2gbanqj1m1cqzyxb32p76dhdwizzpbvpi3a96"))))
3459 (build-system perl-build-system)
3460 (native-inputs
3461 (list perl-dbd-sqlite perl-module-install perl-test-exception
3462 perl-test-requires))
3463 (propagated-inputs
3464 (list perl-carp-clan
3465 perl-catalyst-component-instancepercontext
3466 perl-catalyst-runtime
3467 perl-catalystx-component-traits
3468 perl-dbix-class
3469 perl-dbix-class-cursor-cached
3470 perl-dbix-class-schema-loader
3471 perl-hash-merge
3472 perl-list-moreutils
3473 perl-module-runtime
3474 perl-moose
3475 perl-moosex-markasmethods
3476 perl-moosex-nonmoose
3477 perl-moosex-types
3478 perl-moosex-types-loadableclass
3479 perl-namespace-autoclean
3480 perl-namespace-clean
3481 perl-tie-ixhash
3482 perl-try-tiny))
3483 (home-page "https://metacpan.org/release/Catalyst-Model-DBIC-Schema")
3484 (synopsis "DBIx::Class::Schema Model Class")
3485 (description "This is a Catalyst Model for DBIx::Class::Schema-based
3486Models.")
3487 (license license:perl-license)))
3488
3489(define-public perl-catalyst-plugin-accesslog
3490 (package
3491 (name "perl-catalyst-plugin-accesslog")
3492 (version "1.10")
3493 (source
3494 (origin
3495 (method url-fetch)
3496 (uri (string-append "mirror://cpan/authors/id/A/AR/ARODLAND/"
3497 "Catalyst-Plugin-AccessLog-" version ".tar.gz"))
3498 (sha256
3499 (base32
3500 "0811rj45q4v2y8wka3wb9d5m4vbyhcmkvddf2wz4x69awzjbhgc7"))))
3501 (build-system perl-build-system)
3502 (propagated-inputs
3503 (list perl-catalyst-runtime perl-datetime perl-moose
3504 perl-namespace-autoclean))
3505 (home-page "https://metacpan.org/release/Catalyst-Plugin-AccessLog")
3506 (synopsis "Request logging from within Catalyst")
3507 (description "This Catalyst plugin enables you to create \"access logs\"
3508from within a Catalyst application instead of requiring a webserver to do it
3509for you. It will work even with Catalyst debug logging turned off.")
3510 (license license:perl-license)))
3511
3512(define-public perl-catalyst-plugin-authentication
3513 (package
3514 (name "perl-catalyst-plugin-authentication")
3515 (version "0.10023")
3516 (source
3517 (origin
3518 (method url-fetch)
3519 (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
3520 "Catalyst-Plugin-Authentication-"
3521 version ".tar.gz"))
3522 (sha256
3523 (base32
3524 "0v6hb4r1wv3djrnqvnjcn3xx1scgqzx8nyjdg9lfc1ybvamrl0rn"))))
3525 (build-system perl-build-system)
3526 (native-inputs
3527 (list perl-module-install))
3528 (propagated-inputs
3529 (list perl-catalyst-plugin-session
3530 perl-catalyst-runtime
3531 perl-class-inspector
3532 perl-moose
3533 perl-moosex-emulate-class-accessor-fast
3534 perl-mro-compat
3535 perl-namespace-autoclean
3536 perl-string-rewriteprefix
3537 perl-test-exception
3538 perl-try-tiny))
3539 (home-page "https://metacpan.org/release/Catalyst-Plugin-Authentication")
3540 (synopsis "Infrastructure plugin for the Catalyst authentication framework")
3541 (description "The authentication plugin provides generic user support for
3542Catalyst apps. It is the basis for both authentication (checking the user is
3543who they claim to be), and authorization (allowing the user to do what the
3544system authorises them to do).")
3545 (license license:perl-license)))
3546
3547(define-public perl-catalyst-plugin-authorization-roles
3548 (package
3549 (name "perl-catalyst-plugin-authorization-roles")
3550 (version "0.09")
3551 (source
3552 (origin
3553 (method url-fetch)
3554 (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
3555 "Catalyst-Plugin-Authorization-Roles-"
3556 version ".tar.gz"))
3557 (sha256
3558 (base32
3559 "0l83lkwmq0lngwh8b1rv3r719pn8w1gdbyhjqm74rnd0wbjl8h7f"))))
3560 (build-system perl-build-system)
3561 (native-inputs
3562 (list perl-module-install perl-test-exception))
3563 (propagated-inputs
3564 (list perl-catalyst-plugin-authentication perl-catalyst-runtime
3565 perl-set-object perl-universal-isa))
3566 (home-page
3567 "https://metacpan.org/release/Catalyst-Plugin-Authorization-Roles")
3568 (synopsis "Role-based authorization for Catalyst")
3569 (description "Catalyst::Plugin::Authorization::Roles provides role-based
3570authorization for Catalyst based on Catalyst::Plugin::Authentication.")
3571 (license license:perl-license)))
3572
3573(define-public perl-catalyst-plugin-captcha
3574 (package
3575 (name "perl-catalyst-plugin-captcha")
3576 (version "0.04")
3577 (source
3578 (origin
3579 (method url-fetch)
3580 (uri (string-append "mirror://cpan/authors/id/D/DI/DIEGOK/"
3581 "Catalyst-Plugin-Captcha-" version ".tar.gz"))
3582 (sha256
3583 (base32
3584 "0llyj3v5nx9cx46jdbbvxf1lc9s9cxq5ml22xmx3wkb201r5qgaa"))))
3585 (build-system perl-build-system)
3586 (propagated-inputs
3587 (list perl-catalyst-plugin-session perl-catalyst-runtime
3588 perl-gd-securityimage perl-http-date))
3589 (home-page "https://metacpan.org/release/Catalyst-Plugin-Captcha")
3590 (synopsis "Captchas for Catalyst")
3591 (description "This plugin creates and validates Captcha images for
3592Catalyst.")
3593 (license license:perl-license)))
3594
3595(define-public perl-catalyst-plugin-configloader
3596 (package
3597 (name "perl-catalyst-plugin-configloader")
3598 (version "0.35")
3599 (source
3600 (origin
3601 (method url-fetch)
3602 (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
3603 "Catalyst-Plugin-ConfigLoader-"
3604 version ".tar.gz"))
3605 (sha256
3606 (base32 "0w8r3bbxqnlykvra6sx3sh3wh8ylkj914xg5ql6nw11ddy56jaly"))))
3607 (build-system perl-build-system)
3608 (native-inputs
3609 (list perl-path-class perl-module-install))
3610 (propagated-inputs
3611 (list perl-catalyst-runtime perl-config-any perl-data-visitor
3612 perl-mro-compat))
3613 (home-page "https://metacpan.org/release/Catalyst-Plugin-ConfigLoader")
3614 (synopsis "Load config files of various types")
3615 (description "This module will attempt to load find and load configuration
3616files of various types. Currently it supports YAML, JSON, XML, INI and Perl
3617formats.")
3618 (license license:perl-license)))
3619
3620(define-public perl-catalyst-plugin-session
3621 (package
3622 (name "perl-catalyst-plugin-session")
3623 (version "0.41")
3624 (source
3625 (origin
3626 (method url-fetch)
3627 (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/"
3628 "Catalyst-Plugin-Session-" version ".tar.gz"))
3629 (sha256
3630 (base32 "0a451997zc2vjx7rvndgx1ldbrpic8sfbddyvncynh0zr8bhlqc5"))))
3631 (build-system perl-build-system)
3632 (native-inputs
3633 (list perl-module-install perl-test-deep perl-test-exception))
3634 (propagated-inputs
3635 (list perl-catalyst-runtime
3636 perl-moose
3637 perl-moosex-emulate-class-accessor-fast
3638 perl-mro-compat
3639 perl-namespace-clean
3640 perl-object-signature
3641 perl-test-www-mechanize-psgi))
3642 (home-page "https://metacpan.org/release/Catalyst-Plugin-Session")
3643 (synopsis "Catalyst generic session plugin")
3644 (description "This plugin links the two pieces required for session
3645management in web applications together: the state, and the store.")
3646 (license license:perl-license)))
3647
3648(define-public perl-catalyst-plugin-session-state-cookie
3649 (package
3650 (name "perl-catalyst-plugin-session-state-cookie")
3651 (version "0.17")
3652 (source
3653 (origin
3654 (method url-fetch)
3655 (uri (string-append "mirror://cpan/authors/id/M/MS/MSTROUT/"
3656 "Catalyst-Plugin-Session-State-Cookie-"
3657 version ".tar.gz"))
3658 (sha256
3659 (base32
3660 "1rvxbfnpf9x2pc2zgpazlcgdlr2dijmxgmcs0m5nazs0w6xikssb"))))
3661 (build-system perl-build-system)
3662 (native-inputs
3663 (list perl-module-install))
3664 (propagated-inputs
3665 (list perl-catalyst-plugin-session perl-catalyst-runtime perl-moose
3666 perl-mro-compat perl-namespace-autoclean))
3667 (home-page
3668 "https://metacpan.org/release/Catalyst-Plugin-Session-State-Cookie")
3669 (synopsis "Maintain session IDs using cookies")
3670 (description "In order for Catalyst::Plugin::Session to work, the session
3671ID needs to be stored on the client, and the session data needs to be stored
3672on the server. This plugin stores the session ID on the client using the
3673cookie mechanism.")
3674 (license license:perl-license)))
3675
3676(define-public perl-catalyst-plugin-session-store-fastmmap
3677 (package
3678 (name "perl-catalyst-plugin-session-store-fastmmap")
3679 (version "0.16")
3680 (source
3681 (origin
3682 (method url-fetch)
3683 (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
3684 "Catalyst-Plugin-Session-Store-FastMmap-"
3685 version ".tar.gz"))
3686 (sha256
3687 (base32
3688 "0x3j6zv3wr41jlwr6yb2jpmcx019ibyn11y8653ffnwhpzbpzsxs"))))
3689 (build-system perl-build-system)
3690 (propagated-inputs
3691 (list perl-cache-fastmmap
3692 perl-catalyst-plugin-session
3693 perl-catalyst-runtime
3694 perl-moosex-emulate-class-accessor-fast
3695 perl-mro-compat
3696 perl-path-class))
3697 (home-page
3698 "https://metacpan.org/release/Catalyst-Plugin-Session-Store-FastMmap")
3699 (synopsis "FastMmap session storage backend")
3700 (description "Catalyst::Plugin::Session::Store::FastMmap is a fast session
3701storage plugin for Catalyst that uses an mmap'ed file to act as a shared
3702memory interprocess cache. It is based on Cache::FastMmap.")
3703 (license license:perl-license)))
3704
3705(define-public perl-catalyst-plugin-stacktrace
3706 (package
3707 (name "perl-catalyst-plugin-stacktrace")
3708 (version "0.12")
3709 (source
3710 (origin
3711 (method url-fetch)
3712 (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
3713 "Catalyst-Plugin-StackTrace-" version ".tar.gz"))
3714 (sha256
3715 (base32
3716 "1b2ksz74cpigxqzf63rddar3vfmnbpwpdcbs11v0ml89pb8ar79j"))))
3717 (build-system perl-build-system)
3718 (native-inputs
3719 (list perl-module-install))
3720 (propagated-inputs
3721 (list perl-catalyst-runtime perl-devel-stacktrace perl-mro-compat))
3722 (home-page "https://metacpan.org/release/Catalyst-Plugin-StackTrace")
3723 (synopsis "Stack trace on the Catalyst debug screen")
3724 (description "This plugin enhances the standard Catalyst debug screen by
3725including a stack trace of your application up to the point where the error
3726occurred. Each stack frame is displayed along with the package name, line
3727number, file name, and code context surrounding the line number.")
3728 (license license:perl-license)))
3729
3730(define-public perl-catalyst-plugin-static-simple
3731 (package
3732 (name "perl-catalyst-plugin-static-simple")
3733 (version "0.36")
3734 (source
3735 (origin
3736 (method url-fetch)
3737 (uri (string-append "mirror://cpan/authors/id/I/IL/ILMARI/"
3738 "Catalyst-Plugin-Static-Simple-" version ".tar.gz"))
3739 (sha256
3740 (base32
3741 "0m4l627p2fvzr4i6sgdxhdvsx4wpa6qmaibsbxlg5x5yjs7k7drn"))))
3742 (build-system perl-build-system)
3743 (native-inputs
3744 (list perl-module-install))
3745 (propagated-inputs
3746 (list perl-catalyst-runtime perl-mime-types perl-moose
3747 perl-moosex-types perl-namespace-autoclean))
3748 (home-page "https://metacpan.org/release/Catalyst-Plugin-Static-Simple")
3749 (synopsis "Simple serving of static pages")
3750 (description "The Static::Simple plugin is designed to make serving static
3751content in your application during development quick and easy, without
3752requiring a single line of code from you. This plugin detects static files by
3753looking at the file extension in the URL (such as .css or .png or .js). The
3754plugin uses the lightweight MIME::Types module to map file extensions to
3755IANA-registered MIME types, and will serve your static files with the correct
3756MIME type directly to the browser, without being processed through Catalyst.")
3757 (license license:perl-license)))
3758
3759(define-public perl-catalyst-runtime
3760 (package
3761 (name "perl-catalyst-runtime")
3762 (version "5.90124")
3763 (source
3764 (origin
3765 (method url-fetch)
3766 (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/"
3767 "Catalyst-Runtime-" version ".tar.gz"))
3768 (sha256
3769 (base32
3770 "001yk1i0xwn4v308qx15nvnp6v9qfdigdlvz1rgw5zpnq7kwnq1a"))))
3771 (build-system perl-build-system)
3772 (native-inputs
3773 (list perl-test-fatal))
3774 (propagated-inputs
3775 (list perl-cgi-simple
3776 perl-cgi-struct
3777 perl-class-c3-adopt-next
3778 perl-class-date
3779 perl-class-load
3780 perl-data-dump
3781 perl-http-body
3782 perl-http-message
3783 perl-json-maybexs
3784 perl-libwww
3785 perl-module-pluggable
3786 perl-moose
3787 perl-moosex-emulate-class-accessor-fast
3788 perl-moosex-getopt
3789 perl-moosex-methodattributes
3790 perl-namespace-clean
3791 perl-path-class
3792 perl-perlio-utf8_strict
3793 perl-plack
3794 perl-plack-middleware-fixmissingbodyinredirect
3795 perl-plack-middleware-methodoverride
3796 perl-plack-middleware-removeredundantbody
3797 perl-plack-middleware-reverseproxy
3798 perl-plack-test-externalserver
3799 perl-safe-isa
3800 perl-string-rewriteprefix
3801 perl-text-simpletable
3802 perl-tree-simple
3803 perl-tree-simple-visitorfactory
3804 perl-try-tiny
3805 perl-uri
3806 perl-uri-ws))
3807 (home-page "https://metacpan.org/release/Catalyst-Runtime")
3808 (synopsis "The Catalyst Framework Runtime")
3809 (description "Catalyst is a modern framework for making web applications.
3810It is designed to make it easy to manage the various tasks you need to do to
3811run an application on the web, either by doing them itself, or by letting you
3812\"plug in\" existing Perl modules that do what you need.")
3813 (license license:perl-license)))
3814
3815(define-public perl-catalyst-traitfor-request-proxybase
3816 (package
3817 (name "perl-catalyst-traitfor-request-proxybase")
3818 (version "0.000005")
3819 (source
3820 (origin
3821 (method url-fetch)
3822 (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
3823 "Catalyst-TraitFor-Request-ProxyBase-"
3824 version ".tar.gz"))
3825 (sha256
3826 (base32
3827 "02kir63d5cs2ipj3fn1qlmmx3gqi1xqzrxfr4pv5vjhjgsm0zgx7"))))
3828 (build-system perl-build-system)
3829 (native-inputs
3830 (list perl-catalyst-runtime perl-catalystx-roleapplicator
3831 perl-http-message perl-module-install))
3832 (propagated-inputs
3833 (list perl-moose perl-namespace-autoclean perl-uri))
3834 (home-page
3835 "https://metacpan.org/release/Catalyst-TraitFor-Request-ProxyBase")
3836 (synopsis "Replace request base with value passed by HTTP proxy")
3837 (description "This module is a Moose::Role which allows you more
3838flexibility in your application's deployment configurations when deployed
3839behind a proxy. Using this module, the request base ($c->req->base) is
3840replaced with the contents of the X-Request-Base header.")
3841 (license license:perl-license)))
3842
3843(define-public perl-catalyst-view-download
3844 (package
3845 (name "perl-catalyst-view-download")
3846 (version "0.09")
3847 (source
3848 (origin
3849 (method url-fetch)
3850 (uri (string-append "mirror://cpan/authors/id/G/GA/GAUDEON/"
3851 "Catalyst-View-Download-" version ".tar.gz"))
3852 (sha256
3853 (base32
3854 "1qgq6y9iwfbhbkbgpw9czang2ami6z8jk1zlagrzdisy4igqzkvs"))))
3855 (build-system perl-build-system)
3856 (native-inputs
3857 (list perl-catalyst-runtime
3858 perl-module-install
3859 perl-test-simple
3860 perl-test-www-mechanize-catalyst
3861 perl-text-csv
3862 perl-xml-simple))
3863 (home-page "https://metacpan.org/release/Catalyst-View-Download")
3864 (synopsis "Download data in many formats")
3865 (description "The purpose of this module is to provide a method for
3866downloading data into many supportable formats. For example, downloading a
3867table based report in a variety of formats (CSV, HTML, etc.).")
3868 (license license:perl-license)))
3869
3870(define-public perl-catalyst-view-json
3871 (package
3872 (name "perl-catalyst-view-json")
3873 (version "0.37")
3874 (source
3875 (origin
3876 (method url-fetch)
3877 (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
3878 "Catalyst-View-JSON-" version ".tar.gz"))
3879 (sha256
3880 (base32
3881 "1v4xkzazs743sc7cd1kxkbi99cf00a4dadyyancckcbpi9p3znn5"))))
3882 (build-system perl-build-system)
3883 (native-inputs
3884 (list perl-module-install perl-yaml))
3885 (inputs
3886 (list perl-catalyst-runtime perl-json-maybexs perl-mro-compat))
3887 (home-page "https://metacpan.org/release/Catalyst-View-JSON")
3888 (synopsis "Catalyst JSON view")
3889 (description "Catalyst::View::JSON is a Catalyst View handler that returns
3890stash data in JSON format.")
3891 (license license:perl-license)))
3892
3893(define-public perl-catalyst-view-tt
3894 (package
3895 (name "perl-catalyst-view-tt")
3896 (version "0.45")
3897 (source
3898 (origin
3899 (method url-fetch)
3900 (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
3901 "Catalyst-View-TT-" version ".tar.gz"))
3902 (sha256
3903 (base32 "0jzgpkgq5pwq82zlb0nykdyk40dfpsyn9ilz91d0wpixgi9i5pr8"))))
3904 (build-system perl-build-system)
3905 (propagated-inputs
3906 (list perl-catalyst-runtime
3907 perl-class-accessor
3908 perl-data-dump
3909 perl-mro-compat
3910 perl-path-class
3911 perl-template-timer
3912 perl-template-toolkit))
3913 (home-page "https://metacpan.org/release/Catalyst-View-TT")
3914 (synopsis "Template View Class")
3915 (description "This module is a Catalyst view class for the Template
3916Toolkit.")
3917 (license license:perl-license)))
3918
3919(define-public perl-catalystx-component-traits
3920 (package
3921 (name "perl-catalystx-component-traits")
3922 (version "0.19")
3923 (source
3924 (origin
3925 (method url-fetch)
3926 (uri (string-append "mirror://cpan/authors/id/R/RK/RKITOVER/"
3927 "CatalystX-Component-Traits-" version ".tar.gz"))
3928 (sha256
3929 (base32
3930 "0iq4ci8m6g2c4g01fvdl568y7pjz28f3widk986v3pyhr7ll8j88"))))
3931 (build-system perl-build-system)
3932 (native-inputs
3933 (list perl-moose perl-catalyst-runtime perl-moosex-methodattributes))
3934 (propagated-inputs
3935 (list perl-catalyst-runtime
3936 perl-class-load
3937 perl-moose
3938 perl-moosex-traits-pluggable
3939 perl-namespace-autoclean
3940 perl-list-moreutils))
3941 (home-page "https://metacpan.org/release/CatalystX-Component-Traits")
3942 (synopsis "Trait Loading and Resolution for Catalyst Components")
3943 (description "Adds a \"COMPONENT\" in Catalyst::Component method to your
3944Catalyst component base class that reads the optional \"traits\" parameter
3945from app and component config and instantiates the component subclass with
3946those traits using \"new_with_traits\" in MooseX::Traits from
3947MooseX::Traits::Pluggable.")
3948 (license license:perl-license)))
3949
3950(define-public perl-catalystx-roleapplicator
3951 (package
3952 (name "perl-catalystx-roleapplicator")
3953 (version "0.005")
3954 (source
3955 (origin
3956 (method url-fetch)
3957 (uri (string-append "mirror://cpan/authors/id/H/HD/HDP/"
3958 "CatalystX-RoleApplicator-" version ".tar.gz"))
3959 (sha256
3960 (base32
3961 "0vwaapxn8g5hs2xp63c4dwv9jmapmji4272fakssvgc9frklg3p2"))))
3962 (build-system perl-build-system)
3963 (propagated-inputs
3964 (list perl-catalyst-runtime perl-moose perl-moosex-relatedclassroles))
3965 (home-page "https://metacpan.org/release/CatalystX-RoleApplicator")
3966 (synopsis "Apply roles to Catalyst classes")
3967 (description "CatalystX::RoleApplicator applies roles to Catalyst
3968application classes.")
3969 (license license:perl-license)))
3970
3971(define-public perl-catalystx-script-server-starman
3972 (package
3973 (name "perl-catalystx-script-server-starman")
3974 (version "0.03")
3975 (source
3976 (origin
3977 (method url-fetch)
3978 (uri (string-append "mirror://cpan/authors/id/A/AB/ABRAXXA/"
3979 "CatalystX-Script-Server-Starman-"
3980 version ".tar.gz"))
3981 (sha256
3982 (base32
3983 "08jvibq4v8xjj0c3cr93h0w8w0c88ajwjn37xjy7ygxl9krlffp6"))))
3984 (build-system perl-build-system)
3985 (native-inputs
3986 (list perl-module-install perl-pod-parser perl-test-www-mechanize-catalyst))
3987 (propagated-inputs
3988 (list perl-catalyst-runtime perl-moose perl-namespace-autoclean
3989 starman))
3990 (home-page "https://metacpan.org/release/CatalystX-Script-Server-Starman")
3991 (synopsis "Catalyst development server with Starman")
3992 (description "This module provides a Catalyst extension to replace the
3993development server with Starman.")
3994 (license license:perl-license)))
3995
3996(define-public perl-cgi
3997 (package
3998 (name "perl-cgi")
3999 (version "4.55")
4000 (source
4001 (origin
4002 (method url-fetch)
4003 (uri (string-append "mirror://cpan/authors/id/L/LE/LEEJO/"
4004 "CGI-" version ".tar.gz"))
4005 (sha256
4006 (base32 "1ck4ik5i0v394qgg9qah4p6x9hyls311g6iwi6ildprzn6a5x2b7"))))
4007 (build-system perl-build-system)
4008 (native-inputs
4009 (list perl-test-nowarnings perl-test-warn))
4010 (propagated-inputs
4011 (list perl-html-parser))
4012 (home-page "https://metacpan.org/release/CGI")
4013 (synopsis "Handle Common Gateway Interface requests and responses")
4014 (description "CGI.pm is a stable, complete and mature solution for
4015processing and preparing HTTP requests and responses. Major features include
4016processing form submissions, file uploads, reading and writing cookies, query
4017string generation and manipulation, and processing and preparing HTTP
4018headers.")
4019 (license license:perl-license)))
4020
4021(define-public perl-cgi-formbuilder
4022 (package
4023 (name "perl-cgi-formbuilder")
4024 (version "3.10")
4025 (source
4026 (origin
4027 (method url-fetch)
4028 (uri (string-append
4029 "https://cpan.metacpan.org/authors/id/B/BI/BIGPRESH/"
4030 "CGI-FormBuilder-" version ".tar.gz"))
4031 (sha256
4032 (base32
4033 "163ixq9kninqq094z2rnkg9pv3bcmvjphlww4vksfrzhq3h9pjdf"))))
4034 (build-system perl-build-system)
4035 (inputs (list perl-cgi))
4036 (home-page
4037 "https://metacpan.org/release/CGI-FormBuilder")
4038 (synopsis
4039 "Generate and process stateful forms")
4040 (description
4041 "@code{CGI::FormBuilder} provides an easy way to generate and process CGI
4042form-based applications.")
4043 (license license:perl-license)))
4044
4045(define-public perl-cgi-session
4046 (package
4047 (name "perl-cgi-session")
4048 (version "4.48")
4049 (source
4050 (origin
4051 (method url-fetch)
4052 (uri (string-append
4053 "mirror://cpan/authors/id/M/MA/MARKSTOS/CGI-Session-"
4054 version
4055 ".tar.gz"))
4056 (sha256
4057 (base32
4058 "1xsl2pz1jrh127pq0b01yffnj4mnp9nvkp88h5mndrscq9hn8xa6"))))
4059 (build-system perl-build-system)
4060 (native-inputs
4061 (list perl-module-build))
4062 (inputs (list perl-cgi))
4063 (home-page
4064 "https://metacpan.org/release/CGI-Session")
4065 (synopsis
4066 "Persistent session data in CGI applications")
4067 (description
4068 "@code{CGI::Session} provides modular session management system across
4069HTTP requests.")
4070 (license license:perl-license)))
4071
4072(define-public perl-cgi-simple
4073 (package
4074 (name "perl-cgi-simple")
4075 (version "1.22")
4076 (source
4077 (origin
4078 (method url-fetch)
4079 (uri (string-append "mirror://cpan/authors/id/M/MA/MANWAR/"
4080 "CGI-Simple-" version ".tar.gz"))
4081 (sha256
4082 (base32 "13c7iwnnavky10ab87pi8jc1kqph03s0rhvj7myn7szhbfisc4gn"))))
4083 (build-system perl-build-system)
4084 (native-inputs
4085 (list perl-io-stringy ; for IO::Scalar
4086 perl-module-build perl-test-exception perl-test-nowarnings))
4087 (home-page "https://metacpan.org/release/CGI-Simple")
4088 (synopsis "CGI interface that is CGI.pm compliant")
4089 (description "CGI::Simple provides a relatively lightweight drop in
4090replacement for CGI.pm. It shares an identical OO interface to CGI.pm for
4091parameter parsing, file upload, cookie handling and header generation.")
4092 (license license:perl-license)))
4093
4094(define-public perl-cgi-struct
4095 (package
4096 (name "perl-cgi-struct")
4097 (version "1.21")
4098 (source
4099 (origin
4100 (method url-fetch)
4101 (uri (string-append "mirror://cpan/authors/id/F/FU/FULLERMD/"
4102 "CGI-Struct-" version ".tar.gz"))
4103 (sha256
4104 (base32
4105 "0v4xq2qpryr7i6jngw1wpn8yr2kiib10yxp4aih90vfdznkqsgfi"))))
4106 (build-system perl-build-system)
4107 (native-inputs
4108 (list perl-test-deep))
4109 (home-page "https://metacpan.org/release/CGI-Struct")
4110 (synopsis "Build structures from CGI data")
4111 (description "This is a module for building structured data from CGI
4112inputs, in a manner reminiscent of how PHP does.")
4113 (license license:bsd-2)))
4114
4115(define-public perl-datetime-format-http
4116 (package
4117 (name "perl-datetime-format-http")
4118 (version "0.42")
4119 (source
4120 (origin
4121 (method url-fetch)
4122 (uri (string-append "mirror://cpan/authors/id/C/CK/CKRAS/"
4123 "DateTime-Format-HTTP-" version ".tar.gz"))
4124 (sha256
4125 (base32
4126 "0h6qqdg1yzqkdxp7hqlp0qa7d1y64nilgimxs79dys2ryjfpcknh"))))
4127 (build-system perl-build-system)
4128 (native-inputs
4129 (list perl-module-build))
4130 (propagated-inputs
4131 (list perl-datetime perl-http-date))
4132 (home-page "https://metacpan.org/release/DateTime-Format-HTTP")
4133 (synopsis "Date conversion routines")
4134 (description "This module provides functions that deal with the date
4135formats used by the HTTP protocol.")
4136 (license license:perl-license)))
4137
4138(define-public perl-digest-md5-file
4139 (package
4140 (name "perl-digest-md5-file")
4141 (version "0.08")
4142 (source
4143 (origin
4144 (method url-fetch)
4145 (uri (string-append "mirror://cpan/authors/id/D/DM/DMUEY/"
4146 "Digest-MD5-File-" version ".tar.gz"))
4147 (sha256
4148 (base32
4149 "060jzf45dlwysw5wsm7av1wvpl06xgk415kwwpvv89r6wda3md5d"))))
4150 (build-system perl-build-system)
4151 (propagated-inputs
4152 (list perl-libwww))
4153 (home-page "https://metacpan.org/release/Digest-MD5-File")
4154 (synopsis "MD5 sums for files and urls")
4155 (description "Digest::MD5::File is a Perl extension for getting MD5 sums
4156for files and urls.")
4157 (license license:perl-license)))
4158
4159(define-public perl-encode-locale
4160 (package
4161 (name "perl-encode-locale")
4162 (version "1.05")
4163 (source (origin
4164 (method url-fetch)
4165 (uri (string-append
4166 "mirror://cpan/authors/id/G/GA/GAAS/Encode-Locale-"
4167 version ".tar.gz"))
4168 (sha256
4169 (base32
4170 "1h8fvcdg3n20c2yp7107yhdkkx78534s9hnvn7ps8hpmf4ks0vqp"))))
4171 (build-system perl-build-system)
4172 (license license:perl-license)
4173 (synopsis "Perl locale encoding determination")
4174 (description
4175 "The POSIX locale system is used to specify both the language
4176conventions requested by the user and the preferred character set to
4177consume and output. The Encode::Locale module looks up the charset and
4178encoding (called a CODESET in the locale jargon) and arranges for the
4179Encode module to know this encoding under the name \"locale\". It means
4180bytes obtained from the environment can be converted to Unicode strings
4181by calling Encode::encode(locale => $bytes) and converted back again
4182with Encode::decode(locale => $string).")
4183 (home-page "https://metacpan.org/release/Encode-Locale")))
4184
4185(define-public perl-feed-find
4186 (package
4187 (name "perl-feed-find")
4188 (version "0.07")
4189 (source (origin
4190 (method url-fetch)
4191 (uri (string-append "mirror://cpan/authors/id/B/BT/BTROTT/"
4192 "Feed-Find-" version ".tar.gz"))
4193 (sha256
4194 (base32
4195 "0sa33cm8ww55cymnl8j7b5yspi2y5xkkkgqqa4h6fs3wdqylz600"))))
4196 (build-system perl-build-system)
4197 (arguments
4198 ;; Tests expect to query files at http://stupidfool.org/perl/feeds/
4199 `(#:tests? #f
4200 #:phases
4201 (modify-phases %standard-phases
4202 (add-after 'unpack 'set-env
4203 (lambda _ (setenv "PERL_USE_UNSAFE_INC" "1"))))))
4204 (inputs
4205 (list perl-class-errorhandler perl-html-parser perl-libwww perl-uri))
4206 (home-page "https://metacpan.org/release/Feed-Find")
4207 (synopsis "Syndication feed auto-discovery")
4208 (description "@code{Feed::Find} implements feed auto-discovery for finding
4209syndication feeds, given a URI. It will discover the following feed formats:
4210RSS 0.91, RSS 1.0, RSS 2.0, Atom.")
4211 (license license:perl-license)))
4212
4213(define-public perl-file-listing
4214 (package
4215 (name "perl-file-listing")
4216 (version "6.15")
4217 (source (origin
4218 (method url-fetch)
4219 (uri (string-append
4220 "mirror://cpan/authors/id/P/PL/PLICEASE/File-Listing-"
4221 version ".tar.gz"))
4222 (sha256
4223 (base32
4224 "033p2ckkjbxrl390x8aq4wq4fpj5aidsazkbw82mhqxrksgzpi26"))))
4225 (build-system perl-build-system)
4226 (propagated-inputs
4227 (list perl-http-date))
4228 (license license:perl-license)
4229 (synopsis "Perl directory listing parser")
4230 (description
4231 "The File::Listing module exports a single function called parse_dir(),
4232which can be used to parse directory listings.")
4233 (home-page "https://metacpan.org/release/File-Listing")))
4234
4235(define-public perl-finance-quote
4236 (package
4237 (name "perl-finance-quote")
4238 (version "1.71")
4239 (source
4240 (origin
4241 (method url-fetch)
4242 (uri (string-append "https://cpan.metacpan.org/authors/id/B/BP/BPSCHUCK/"
4243 "Finance-Quote-" version ".tar.gz"))
4244 (sha256
4245 (base32 "1vszmwzpim5hcnasc4fl7gbw14wc8ycwlpwqfn866rl83bh0y4ri"))))
4246 (build-system perl-build-system)
4247 (arguments
4248 (list
4249 #:phases
4250 #~(modify-phases %standard-phases
4251 (add-before 'check 'set-tz
4252 (lambda _
4253 (setenv "TZ" "Europe/Prague"))))))
4254 (native-inputs
4255 (list perl-test-harness
4256 perl-date-manip
4257 perl-date-range
4258 perl-date-simple
4259 perl-datetime
4260 perl-datetime-format-iso8601
4261 perl-string-util
4262 perl-pathtools
4263 perl-test-pod
4264 perl-test-pod-coverage))
4265 (propagated-inputs
4266 (list perl-datetime
4267 perl-datetime-format-strptime
4268 perl-html-parser
4269 perl-html-tableextract
4270 perl-html-tokeparser-simple
4271 perl-html-tree
4272 perl-html-treebuilder-xpath
4273 perl-http-cookiejar
4274 perl-http-cookies
4275 perl-http-message
4276 perl-io-string
4277 perl-json
4278 perl-libwww
4279 perl-lwp-protocol-https
4280 perl-mozilla-ca
4281 perl-spreadsheet-xlsx
4282 perl-readonly
4283 perl-string-util
4284 perl-text-template
4285 perl-timedate
4286 perl-try-tiny
4287 perl-web-scraper
4288 perl-xml-libxml))
4289 (home-page "https://metacpan.org/release/Finance-Quote")
4290 (synopsis "Stock and mutual fund quotes")
4291 (description
4292 "The @code{Finance::Quote} module retries stock quotes from various
4293internet sources, including Yahoo! Finance, Fidelity Investments, and the
4294Australian Stock Exchange.")
4295 (license license:gpl2)))
4296
4297(define-public perl-gssapi
4298 (package
4299 (name "perl-gssapi")
4300 (version "0.28")
4301 (source
4302 (origin
4303 (method url-fetch)
4304 (uri (string-append "mirror://cpan/authors/id/A/AG/AGROLMS/"
4305 "GSSAPI-" version ".tar.gz"))
4306 (sha256
4307 (base32
4308 "1mkhwxjjlhr58pd770i9gnf7zy7jj092iv6jfbnb8bvnc5xjr3vx"))))
4309 (build-system perl-build-system)
4310 (inputs `(("gssapi" ,mit-krb5)))
4311 (arguments
4312 `(#:make-maker-flags
4313 `(,(string-append "--gssapiimpl=" (assoc-ref %build-inputs "gssapi")))))
4314 (home-page "https://metacpan.org/release/GSSAPI")
4315 (synopsis "Perl extension providing access to the GSSAPIv2 library")
4316 (description "This is a Perl extension for using GSSAPI C bindings as
4317described in RFC 2744.")
4318 (license license:perl-license)))
4319
4320(define-public perl-html-element-extended
4321 (package
4322 (name "perl-html-element-extended")
4323 (version "1.18")
4324 (source
4325 (origin
4326 (method url-fetch)
4327 (uri (string-append "mirror://cpan/authors/id/M/MS/MSISK/"
4328 "HTML-Element-Extended-" version ".tar.gz"))
4329 (sha256
4330 (base32
4331 "0axknss8c368r5i082yhkfj8mq0w4nglfrpcxcayyzzj13qimvzk"))))
4332 (build-system perl-build-system)
4333 (propagated-inputs
4334 (list perl-html-tree))
4335 (home-page "https://metacpan.org/release/HTML-Element-Extended")
4336 (synopsis "Manipulate tables of HTML::Element")
4337 (description
4338 "HTML::Element::Extended is a Perl extension for manipulating a table
4339composed of HTML::Element style components.")
4340 (license license:perl-license)))
4341
4342(define-public perl-html-form
4343 (package
4344 (name "perl-html-form")
4345 (version "6.05")
4346 (source
4347 (origin
4348 (method url-fetch)
4349 (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
4350 "HTML-Form-" version ".tar.gz"))
4351 (sha256
4352 (base32 "14i4ldyvdvhdhvfhh9kiq6z853q2f84biq8vcpv1k5w2r80wdiin"))))
4353 (build-system perl-build-system)
4354 (propagated-inputs
4355 (list perl-html-parser perl-html-tagset perl-http-message
4356 perl-lwp-mediatypes perl-uri))
4357 (home-page "https://metacpan.org/release/HTML-Form")
4358 (synopsis "Perl class representing an HTML form element")
4359 (description "Objects of the HTML::Form class represents a single HTML
4360<form> ... </form> instance.")
4361 (license license:perl-license)))
4362
4363(define-public perl-html-scrubber
4364 (package
4365 (name "perl-html-scrubber")
4366 (version "0.17")
4367 (source
4368 (origin
4369 (method url-fetch)
4370 (uri (string-append
4371 "mirror://cpan/authors/id/N/NI/NIGELM/HTML-Scrubber-"
4372 version
4373 ".tar.gz"))
4374 (sha256
4375 (base32
4376 "06p7w4zd42b2yh541mlzyqj40lwmvvn3fyqi8big4mf34la7m2jm"))))
4377 (build-system perl-build-system)
4378 (native-inputs
4379 (list perl-module-build
4380 perl-test-cpan-meta
4381 perl-test-differences
4382 perl-test-eol
4383 perl-test-memory-cycle
4384 perl-test-notabs))
4385 (inputs
4386 (list perl-html-parser))
4387 (home-page
4388 "https://metacpan.org/release/HTML-Scrubber")
4389 (synopsis
4390 "Perl extension for scrubbing/sanitizing html")
4391 (description
4392 "@code{HTML::Scrubber} Perl extension for scrubbing/sanitizing HTML.")
4393 (license license:perl-license)))
4394
4395(define-public perl-html-lint
4396 (package
4397 (name "perl-html-lint")
4398 (version "2.32")
4399 (source
4400 (origin
4401 (method url-fetch)
4402 (uri (string-append "mirror://cpan/authors/id/P/PE/PETDANCE/"
4403 "HTML-Lint-" version ".tar.gz"))
4404 (sha256
4405 (base32 "0lk02xpfxcg7ij4dvpsa4wjlzhmiizj0jfr3rwmdpbj69nvc93br"))))
4406 (build-system perl-build-system)
4407 (propagated-inputs
4408 (list perl-html-parser perl-html-tagset perl-libwww))
4409 (home-page "https://metacpan.org/release/HTML-Lint")
4410 (synopsis "Check for HTML errors in a string or file")
4411 (description "HTML::Lint is a pure-Perl HTML parser and checker for
4412syntactic legitmacy.")
4413 (license license:artistic2.0)))
4414
4415(define-public perl-html-selector-xpath
4416 (package
4417 (name "perl-html-selector-xpath")
4418 (version "0.28")
4419 (source
4420 (origin
4421 (method url-fetch)
4422 (uri (string-append
4423 "mirror://cpan/authors/id/C/CO/CORION/HTML-Selector-XPath-" version
4424 ".tar.gz"))
4425 (sha256
4426 (base32 "03wdwnrf0bvr2dw01njnz3a9mw2kl7ad7krh25j3vkyj7vq1f9s3"))))
4427 (build-system perl-build-system)
4428 (native-inputs (list perl-test-base
4429 perl-test-pod))
4430 (home-page "https://metacpan.org/release/HTML-Selector-XPath")
4431 (synopsis "CSS Selector to XPath compiler")
4432 (description "@code{HTML::Selector::XPath} is a Perl module for parsing
4433and scraping XML/HTML documents using XPath expressions.")
4434 (license license:perl-license)))
4435
4436(define-public perl-html-tableextract
4437 (package
4438 (name "perl-html-tableextract")
4439 (version "2.13")
4440 (source
4441 (origin
4442 (method url-fetch)
4443 (uri (string-append "https://cpan.metacpan.org/authors/id/M/MS/MSISK/"
4444 "HTML-TableExtract-" version ".tar.gz"))
4445 (sha256
4446 (base32
4447 "01jimmss3q68a89696wmclvqwb2ybz6xgabpnbp6mm6jcni82z8a"))))
4448 (build-system perl-build-system)
4449 (propagated-inputs
4450 (list perl-html-element-extended perl-html-parser))
4451 (home-page "https://metacpan.org/release/HTML-TableExtract")
4452 (synopsis "Extract contents from HTML tables")
4453 (description
4454 "HTML::TableExtract is a Perl module for extracting the content contained
4455in tables within an HTML document, either as text or encoded element trees.")
4456 (license license:perl-license)))
4457
4458(define-public perl-html-tokeparser-simple
4459 (package
4460 (name "perl-html-tokeparser-simple")
4461 (version "3.16")
4462 (source
4463 (origin
4464 (method url-fetch)
4465 (uri (string-append
4466 "mirror://cpan/authors/id/O/OV/OVID/HTML-TokeParser-Simple-"
4467 version ".tar.gz"))
4468 (sha256
4469 (base32 "17aa1v62sp8ycxcicwhankmj4brs6nnfclk9z7mf1rird1f164gd"))))
4470 (build-system perl-build-system)
4471 (native-inputs (list perl-module-build))
4472 (propagated-inputs (list perl-html-parser
4473 perl-html-tagset
4474 perl-sub-override))
4475 (home-page "https://metacpan.org/release/HTML-TokeParser-Simple")
4476 (synopsis "Easy to use parsing interface")
4477 (description "Provides @code{HTML::TokeParser::Simple}, a simpler interface
4478to @code{HTML::TokeParser} for parsing HTML.")
4479 (license license:perl-license)))
4480
4481(define-public perl-html-tree
4482 (package
4483 (name "perl-html-tree")
4484 (version "5.07")
4485 (source
4486 (origin
4487 (method url-fetch)
4488 (uri (string-append "mirror://cpan/authors/id/K/KE/KENTNL/"
4489 "HTML-Tree-" version ".tar.gz"))
4490 (sha256
4491 (base32
4492 "1gyvm4qlwm9y6hczkpnrdfl303ggbybr0nqxdjw09hii8yw4sdzh"))))
4493 (build-system perl-build-system)
4494 (native-inputs
4495 (list perl-module-build perl-test-fatal))
4496 (propagated-inputs
4497 (list perl-html-parser perl-html-tagset perl-libwww))
4498 (home-page "https://metacpan.org/release/HTML-Tree")
4499 (synopsis "Work with HTML in a DOM-like tree structure")
4500 (description "This distribution contains a suite of modules for
4501representing, creating, and extracting information from HTML syntax trees.")
4502 (license license:perl-license)))
4503
4504(define-public perl-html-parser
4505 (package
4506 (name "perl-html-parser")
4507 (version "3.85")
4508 (source (origin
4509 (method url-fetch)
4510 (uri (string-append
4511 "mirror://cpan/authors/id/O/OA/OALDERS/HTML-Parser-"
4512 version ".tar.gz"))
4513 (sha256
4514 (base32
4515 "0w8cisygx7mg8sdyara47rl5y1l075n29gjpmpq1q907prmblhpx"))))
4516 (build-system perl-build-system)
4517 (propagated-inputs (list perl-html-tagset
4518 perl-http-message ;for HTTP::Headers
4519 perl-uri))
4520 (license license:perl-license)
4521 (synopsis "Perl HTML parser class")
4522 (description
4523 "Objects of the HTML::Parser class will recognize markup and separate
4524it from plain text (alias data content) in HTML documents. As different
4525kinds of markup and text are recognized, the corresponding event handlers
4526are invoked.")
4527 (home-page "https://metacpan.org/release/HTML-Parser")))
4528
4529(define-public perl-html-tagset
4530 (package
4531 (name "perl-html-tagset")
4532 (version "3.20")
4533 (source (origin
4534 (method url-fetch)
4535 (uri (string-append
4536 "mirror://cpan/authors/id/P/PE/PETDANCE/HTML-Tagset-"
4537 version ".tar.gz"))
4538 (sha256
4539 (base32
4540 "1qh8249wgr4v9vgghq77zh1d2zs176bir223a8gh3k9nksn7vcdd"))))
4541 (build-system perl-build-system)
4542 (license license:perl-license)
4543 (synopsis "Perl data tables useful in parsing HTML")
4544 (description
4545 "The HTML::Tagset module contains several data tables useful in various
4546kinds of HTML parsing operations.")
4547 (home-page "https://metacpan.org/release/HTML-Tagset")))
4548
4549(define-public perl-html-template
4550 (package
4551 (name "perl-html-template")
4552 (version "2.97")
4553 (source (origin
4554 (method url-fetch)
4555 (uri (string-append "mirror://cpan/authors/id/S/SA/SAMTREGAR/"
4556 "HTML-Template-" version ".tar.gz"))
4557 (sha256
4558 (base32
4559 "17qjw8swj2q4b1ic285pndgrkmvpsqw0j68nhqzpk1daydhsyiv5"))))
4560 (build-system perl-build-system)
4561 (propagated-inputs
4562 (list perl-cgi))
4563 (home-page "https://metacpan.org/release/HTML-Template")
4564 (synopsis "HTML-like templates")
4565 (description
4566 "This module attempts to make using HTML templates simple and natural.
4567It extends standard HTML with a few new HTML-esque tags: @code{<TMPL_VAR>},
4568@code{<TMPL_LOOP>}, @code{<TMPL_INCLUDE>}, @code{<TMPL_IF>},
4569@code{<TMPL_ELSE>} and @code{<TMPL_UNLESS>}. The file written with HTML and
4570these new tags is called a template. Using this module you fill in the values
4571for the variables, loops and branches declared in the template. This allows
4572you to separate design from the data.")
4573 (license license:perl-license)))
4574
4575(define-public perl-html-treebuilder-xpath
4576 (package
4577 (name "perl-html-treebuilder-xpath")
4578 (version "0.14")
4579 (source
4580 (origin
4581 (method url-fetch)
4582 (uri (string-append
4583 "mirror://cpan/authors/id/M/MI/MIROD/HTML-TreeBuilder-XPath-"
4584 version ".tar.gz"))
4585 (sha256
4586 (base32 "1wx4i1scng20n405fp3a4vrwvvq9bvbmg977wnd5j2ja8jrbvsr5"))))
4587 (build-system perl-build-system)
4588 (propagated-inputs (list perl-html-tree perl-xml-xpathengine))
4589 (home-page "https://metacpan.org/release/HTML-TreeBuilder-XPath")
4590 (synopsis "XPath support for @code{HTML::TreeBuilder}")
4591 (description "This module implements @code{HTML::TreeBuilder::XPath} for
4592@code{HTML::TreeBuilder}, making it easy to parse documents using XPath.")
4593 (license license:perl-license)))
4594
4595(define-public perl-http-body
4596 (package
4597 (name "perl-http-body")
4598 (version "1.22")
4599 (source
4600 (origin
4601 (method url-fetch)
4602 (uri (string-append "mirror://cpan/authors/id/G/GE/GETTY/"
4603 "HTTP-Body-" version ".tar.gz"))
4604 (sha256
4605 (base32
4606 "15vj488i62mdp4ps9k77h39prj70i7anb6b0j8nm7l9vbdc2q3gw"))))
4607 (build-system perl-build-system)
4608 (native-inputs
4609 (list perl-test-deep))
4610 (propagated-inputs
4611 (list perl-file-temp perl-http-message)) ;For HTTP::Headers
4612 (home-page "https://metacpan.org/release/HTTP-Body")
4613 (synopsis "HTTP Body Parser")
4614 (description "HTTP::Body parses chunks of HTTP POST data and supports
4615application/octet-stream, application/json, application/x-www-form-urlencoded,
4616and multipart/form-data.")
4617 (license license:perl-license)))
4618
4619(define-public perl-http-cookiejar
4620 (package
4621 (name "perl-http-cookiejar")
4622 (version "0.014")
4623 (source
4624 (origin
4625 (method url-fetch)
4626 (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
4627 "HTTP-CookieJar-" version ".tar.gz"))
4628 (sha256
4629 (base32
4630 "0wvyqh69ryjkwp58xq4c83212glnk97ap0syp1ix4dpmj5ffm53h"))))
4631 (build-system perl-build-system)
4632 (native-inputs
4633 (list perl-test-deep perl-test-requires perl-time-mock perl-uri))
4634 (inputs
4635 (list perl-time-local perl-http-date))
4636 (home-page "https://metacpan.org/release/HTTP-CookieJar")
4637 (synopsis "Minimalist HTTP user agent cookie jar")
4638 (description "This module (@code{HTTP::CookieJar::LWP}) implements a minimalist
4639HTTP user agent cookie jar in conformance with
4640@uref{http://tools.ietf.org/html/rfc6265, RFC 6265}.")
4641 (license license:asl2.0)))
4642
4643(define-public perl-http-cookies
4644 (package
4645 (name "perl-http-cookies")
4646 (version "6.10")
4647 (source (origin
4648 (method url-fetch)
4649 (uri (string-append
4650 "mirror://cpan/authors/id/O/OA/OALDERS/HTTP-Cookies-"
4651 version ".tar.gz"))
4652 (sha256
4653 (base32
4654 "01vhppq18g6ppn3z9mvdfghfzibwg1sczzvnp3jbbrjw7iikcvz3"))))
4655 (build-system perl-build-system)
4656 (propagated-inputs
4657 (list perl-http-message))
4658 (license license:perl-license)
4659 (synopsis "Perl HTTP cookie jars")
4660 (description
4661 "The HTTP::Cookies class is for objects that represent a cookie jar,
4662that is, a database of all the HTTP cookies that a given LWP::UserAgent
4663object knows about.")
4664 (home-page "https://metacpan.org/release/GAAS/HTTP-Cookies-6.01")))
4665
4666(define-public perl-http-daemon
4667 (package
4668 (name "perl-http-daemon")
4669 (version "6.14")
4670 (source (origin
4671 (method url-fetch)
4672 (uri (string-append
4673 "mirror://cpan/authors/id/O/OA/OALDERS/HTTP-Daemon-"
4674 version ".tar.gz"))
4675 (sha256
4676 (base32
4677 "079fkcq2vdrzdf0bml52kz73n9gdv1xg0qf72c9v505v7izpwxph"))))
4678 (build-system perl-build-system)
4679 (native-inputs
4680 (list perl-module-build perl-test-needs))
4681 (propagated-inputs
4682 (list perl-http-message perl-lwp-mediatypes))
4683 (license license:perl-license)
4684 (synopsis "Perl simple http server class")
4685 (description
4686 "Instances of the HTTP::Daemon class are HTTP/1.1 servers that listen
4687on a socket for incoming requests. The HTTP::Daemon is a subclass of
4688IO::Socket::INET, so you can perform socket operations directly on it too.")
4689 (home-page "https://metacpan.org/release/HTTP-Daemon")))
4690
4691(define-public perl-http-date
4692 (package
4693 (name "perl-http-date")
4694 (version "6.05")
4695 (source (origin
4696 (method url-fetch)
4697 (uri (string-append
4698 "mirror://cpan/authors/id/O/OA/OALDERS/HTTP-Date-"
4699 version ".tar.gz"))
4700 (sha256
4701 (base32
4702 "0awjdbz7x0jd5pna55dwxhs3k6xp3sw6b2zg3p2yndxxvya64p9n"))))
4703 (build-system perl-build-system)
4704 (license license:perl-license)
4705 (synopsis "Perl date conversion routines")
4706 (description
4707 "The HTTP::Date module provides functions that deal with date formats
4708used by the HTTP protocol (and then some more).")
4709 (home-page "https://metacpan.org/release/HTTP-Date")))
4710
4711(define-public perl-http-lite
4712 (package
4713 (name "perl-http-lite")
4714 (version "2.44")
4715 (source
4716 (origin
4717 (method url-fetch)
4718 (uri (string-append
4719 "mirror://cpan/authors/id/N/NE/NEILB/HTTP-Lite-"
4720 version ".tar.gz"))
4721 (sha256
4722 (base32
4723 "0z77nflj8zdcfg70kc93glq5kmd6qxn2nf7h70x4xhfg25wkvr1q"))))
4724 (build-system perl-build-system)
4725 (native-inputs (list perl-cgi))
4726 (home-page "https://metacpan.org/release/HTTP-Lite")
4727 (synopsis "Lightweight HTTP implementation")
4728 (description "@code{HTTP::Lite} is a stand-alone lightweight
4729HTTP/1.1 implementation for perl. It is intended for use in
4730situations where it is desirable to install the minimal number of
4731modules to achieve HTTP support. @code{HTTP::Lite} is ideal for
4732CGI (or mod_perl) programs or for bundling for redistribution with
4733larger packages where only HTTP GET and POST functionality are
4734necessary. @code{HTTP::Lite} is compliant with the Host header,
4735necessary for name based virtual hosting, and supports proxies.
4736Additionally, @code{HTTP::Lite} supports a callback to allow
4737processing of request data as it arrives.")
4738 (license license:perl-license)))
4739
4740(define-public perl-http-message
4741 (package
4742 (name "perl-http-message")
4743 (version "6.37")
4744 (source (origin
4745 (method url-fetch)
4746 (uri (string-append
4747 "mirror://cpan/authors/id/O/OA/OALDERS/HTTP-Message-"
4748 version ".tar.gz"))
4749 (sha256
4750 (base32
4751 "00nq0xnpdba4valzgvzy3fgvck1ijrksdyzb4w9q6j72hl5dln8f"))))
4752 (build-system perl-build-system)
4753 (native-inputs
4754 (list perl-test-needs perl-try-tiny))
4755 (propagated-inputs
4756 (list perl-encode-locale perl-http-date perl-io-html
4757 perl-lwp-mediatypes perl-uri))
4758 (license license:perl-license)
4759 (synopsis "Perl HTTP style message")
4760 (description
4761 "An HTTP::Message object contains some headers and a content body.")
4762 (home-page "https://metacpan.org/release/ETHER/HTTP-Message-6.11")))
4763
4764(define-public perl-http-negotiate
4765 (package
4766 (name "perl-http-negotiate")
4767 (version "6.01")
4768 (source (origin
4769 (method url-fetch)
4770 (uri (string-append
4771 "mirror://cpan/authors/id/G/GA/GAAS/HTTP-Negotiate-"
4772 version ".tar.gz"))
4773 (sha256
4774 (base32
4775 "05p053vjs5g91v5cmjnny7a3xzddz5k7vnjw81wfh01ilqg9qwhw"))))
4776 (build-system perl-build-system)
4777 (propagated-inputs
4778 (list perl-http-message))
4779 (license license:perl-license)
4780 (synopsis "Perl http content negotiation")
4781 (description
4782 "The HTTP::Negotiate module provides a complete implementation of the
4783HTTP content negotiation algorithm specified in
4784draft-ietf-http-v11-spec-00.ps chapter 12. Content negotiation allows for
4785the selection of a preferred content representation based upon attributes
4786of the negotiable variants and the value of the various Accept* header
4787fields in the request.")
4788 (home-page "https://metacpan.org/release/HTTP-Negotiate")))
4789
4790(define-public perl-http-parser
4791 (package
4792 (name "perl-http-parser")
4793 (version "0.06")
4794 (source
4795 (origin
4796 (method url-fetch)
4797 (uri (string-append "mirror://cpan/authors/id/E/ED/EDECA/"
4798 "HTTP-Parser-" version ".tar.gz"))
4799 (sha256
4800 (base32
4801 "0idwq3jk595xil65lmxz128ha7s3r2n5zknisddpgwnqrghs3igq"))))
4802 (build-system perl-build-system)
4803 (propagated-inputs
4804 (list perl-http-message perl-uri))
4805 (home-page "https://metacpan.org/release/HTTP-Parser")
4806 (synopsis "Parse HTTP/1.1 requests")
4807 (description "This is an HTTP request parser. It takes chunks of text as
4808received and returns a @code{hint} as to what is required, or returns the
4809HTTP::Request when a complete request has been read. HTTP/1.1 chunking is
4810supported.")
4811 (license license:perl-license)))
4812
4813(define-public perl-http-parser-xs
4814 (package
4815 (name "perl-http-parser-xs")
4816 (version "0.17")
4817 (source
4818 (origin
4819 (method url-fetch)
4820 (uri (string-append "mirror://cpan/authors/id/K/KA/KAZUHO/"
4821 "HTTP-Parser-XS-" version ".tar.gz"))
4822 (sha256
4823 (base32
4824 "02d84xq1mm53c7jl33qyb7v5w4372vydp74z6qj0vc96wcrnhkkr"))))
4825 (build-system perl-build-system)
4826 (native-inputs
4827 (list perl-module-install))
4828 (home-page "https://metacpan.org/release/HTTP-Parser-XS")
4829 (synopsis "Fast HTTP request parser")
4830 (description "HTTP::Parser::XS is a fast, primitive HTTP request/response
4831parser.")
4832 (license license:perl-license)))
4833
4834(define-public perl-http-request-ascgi
4835 (package
4836 (name "perl-http-request-ascgi")
4837 (version "1.2")
4838 (source
4839 (origin
4840 (method url-fetch)
4841 (uri (string-append "mirror://cpan/authors/id/F/FL/FLORA/"
4842 "HTTP-Request-AsCGI-" version ".tar.gz"))
4843 (sha256
4844 (base32
4845 "1smwmiarwcgq7vjdblnb6ldi2x1s5sk5p15p7xvm5byiqq3znnwl"))))
4846 (build-system perl-build-system)
4847 (propagated-inputs
4848 (list perl-class-accessor perl-http-message))
4849 (home-page "https://metacpan.org/release/HTTP-Request-AsCGI")
4850 (synopsis "Set up a CGI environment from an HTTP::Request")
4851 (description "This module provides a convenient way to set up a CGI
4852environment from an HTTP::Request.")
4853 (license license:perl-license)))
4854
4855(define-public perl-http-server-simple
4856 (package
4857 (name "perl-http-server-simple")
4858 (version "0.52")
4859 (source
4860 (origin
4861 (method url-fetch)
4862 (uri (string-append "mirror://cpan/authors/id/B/BP/BPS/"
4863 "HTTP-Server-Simple-" version ".tar.gz"))
4864 (sha256
4865 (base32
4866 "0k6bg7k6mjixfzxdkkdrhqvaqmdhjszx0zsk8g0bimiby6j9z4yq"))))
4867 (build-system perl-build-system)
4868 (propagated-inputs
4869 (list perl-cgi))
4870 (arguments
4871 ;; See the discussion of a related tests issue at
4872 ;; https://lists.gnu.org/archive/html/guix-devel/2015-01/msg00346.html
4873 `(#:tests? #f
4874
4875 #:phases (modify-phases %standard-phases
4876 (add-before 'configure 'set-search-path
4877 (lambda _
4878 ;; Work around "dotless @INC" build failure.
4879 (setenv "PERL5LIB"
4880 (string-append (getcwd) ":"
4881 (getenv "PERL5LIB")))
4882 #t)))))
4883 (home-page "https://metacpan.org/release/HTTP-Server-Simple")
4884 (synopsis "Lightweight HTTP server")
4885 (description "HTTP::Server::Simple is a simple standalone HTTP daemon with
4886no non-core module dependencies. It can be used for building a standalone
4887http-based UI to your existing tools.")
4888 (license license:perl-license)))
4889
4890(define-public perl-http-tiny
4891 (package
4892 (name "perl-http-tiny")
4893 (version "0.076")
4894 (source
4895 (origin
4896 (method url-fetch)
4897 (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
4898 "HTTP-Tiny-" version ".tar.gz"))
4899 (sha256
4900 (base32
4901 "11wkxxqj3ff84rgj9q2gzkdgscwp3fzj205846k9ycqinlpsmgfx"))))
4902 (build-system perl-build-system)
4903 (inputs
4904 (list perl-http-cookiejar perl-io-socket-ip perl-io-socket-ssl
4905 perl-mozilla-ca perl-net-ssleay))
4906 (home-page "https://metacpan.org/release/HTTP-Tiny")
4907 (synopsis "HTTP/1.1 client")
4908 (description "This is a very simple HTTP/1.1 client, designed for doing
4909simple requests without the overhead of a large framework like LWP::UserAgent.
4910It supports proxies and redirection. It also correctly resumes after EINTR.")
4911 (license license:perl-license)))
4912
4913(define-public perl-http-tinyish
4914 (package
4915 (name "perl-http-tinyish")
4916 (version "0.15")
4917 (source
4918 (origin
4919 (method url-fetch)
4920 (uri (string-append
4921 "mirror://cpan/authors/id/M/MI/MIYAGAWA/HTTP-Tinyish-"
4922 version
4923 ".tar.gz"))
4924 (sha256
4925 (base32
4926 "199sa722amvwhq0czjfb7psj3hbqmvni5vxkrm579r5943pg0rax"))))
4927 (build-system perl-build-system)
4928 (propagated-inputs
4929 (list perl-file-which perl-ipc-run3))
4930 (home-page "https://metacpan.org/release/HTTP-Tinyish")
4931 (synopsis "@code{HTTP::Tiny} compatible HTTP client wrappers")
4932 (description
4933 "@code{HTTP::Tinyish} is a wrapper module for @acronym{LWP,libwww-perl},
4934@code{HTTP::Tiny}, curl and wget.
4935
4936It provides an API compatible to HTTP::Tiny.")
4937 (license license:perl-license)))
4938
4939(define-public perl-io-html
4940 (package
4941 (name "perl-io-html")
4942 (version "1.00")
4943 (source (origin
4944 (method url-fetch)
4945 (uri (string-append
4946 "mirror://cpan/authors/id/C/CJ/CJM/IO-HTML-"
4947 version ".tar.gz"))
4948 (sha256
4949 (base32
4950 "06nj3a0xgp5jxwxx6ayglfk2v7npf5a7gwkqsjlkapjkybarzqh4"))))
4951 (build-system perl-build-system)
4952 (license license:perl-license)
4953 (synopsis "Perl module to open an HTML file with automatic charset detection")
4954 (description
4955 "IO::HTML provides an easy way to open a file containing HTML while
4956automatically determining its encoding. It uses the HTML5 encoding sniffing
4957algorithm specified in section 8.2.2.1 of the draft standard.")
4958 (home-page "https://metacpan.org/release/IO-HTML")))
4959
4960(define-public perl-io-socket-ip
4961 (package
4962 (name "perl-io-socket-ip")
4963 (version "0.41")
4964 (source
4965 (origin
4966 (method url-fetch)
4967 (uri (string-append "mirror://cpan/authors/id/P/PE/PEVANS/"
4968 "IO-Socket-IP-" version ".tar.gz"))
4969 (sha256
4970 (base32 "0ihlpxrkq1xrvhnq52nhghanskic718ch8kpp642afgq72i4b6l4"))))
4971 (build-system perl-build-system)
4972 (native-inputs (list perl-module-build))
4973 (home-page "https://metacpan.org/release/IO-Socket-IP")
4974 (synopsis "Family-neutral IP socket supporting both IPv4 and IPv6")
4975 (description "This module provides a protocol-independent way to use IPv4
4976and IPv6 sockets, intended as a replacement for IO::Socket::INET.")
4977 (license license:perl-license)))
4978
4979(define-public perl-io-socket-ssl
4980 (package
4981 (name "perl-io-socket-ssl")
4982 (version "2.089")
4983 (source (origin
4984 (method url-fetch)
4985 (uri (string-append "mirror://cpan/authors/id/S/SU/SULLR/"
4986 "IO-Socket-SSL-" version ".tar.gz"))
4987 (sha256
4988 (base32
4989 "1l8l78p9sq2mj0xb4bpjn8rph0fdxi9xa6pm968px5j22qn130zn"))))
4990 (build-system perl-build-system)
4991 (propagated-inputs
4992 (list perl-net-ssleay
4993 ;; for IDN support
4994 perl-uri))
4995 (synopsis "Nearly transparent SSL encapsulation for IO::Socket::INET")
4996 (description
4997 "IO::Socket::SSL makes using SSL/TLS much easier by wrapping the
4998necessary functionality into the familiar IO::Socket interface and providing
4999secure defaults whenever possible. This way existing applications can be made
5000SSL-aware without much effort, at least if you do blocking I/O and don't use
5001select or poll.")
5002 (license license:perl-license)
5003 (home-page "https://github.com/noxxi/p5-io-socket-ssl")))
5004
5005(define-public perl-libwww
5006 (package
5007 (name "perl-libwww")
5008 (version "6.78")
5009 (source (origin
5010 (method url-fetch)
5011 (uri (string-append
5012 "mirror://cpan/authors/id/O/OA/OALDERS/libwww-perl-"
5013 version ".tar.gz"))
5014 (sha256
5015 (base32
5016 "0i4sga0hydhhvkq81skinfbpyd43pi3yr0rbzn0vpip2ak7vsf5p"))))
5017 (build-system perl-build-system)
5018 (native-inputs
5019 (list perl-http-cookiejar
5020 perl-test-fatal
5021 perl-test-leaktrace
5022 perl-test-needs
5023 perl-test-requiresinternet))
5024 (propagated-inputs
5025 (list perl-encode-locale
5026 perl-file-listing
5027 perl-html-parser
5028 perl-http-cookies
5029 perl-http-daemon
5030 perl-http-date
5031 perl-http-message
5032 perl-http-negotiate
5033 perl-net-http
5034 perl-try-tiny
5035 perl-uri
5036 perl-www-robotrules))
5037 (license license:perl-license)
5038 (synopsis "Perl modules for the WWW")
5039 (description
5040 "The libwww-perl collection is a set of Perl modules which provides a
5041simple and consistent application programming interface to the
5042World-Wide Web. The main focus of the library is to provide classes
5043and functions that allow you to write WWW clients. The library also
5044contains modules that are of more general use and even classes that
5045help you implement simple HTTP servers.")
5046 (home-page "https://metacpan.org/release/libwww-perl")))
5047
5048(define-public perl-lwp-online
5049 (package
5050 (name "perl-lwp-online")
5051 (version "1.08")
5052 (source
5053 (origin
5054 (method url-fetch)
5055 (uri (string-append
5056 "mirror://cpan/authors/id/A/AD/ADAMK/LWP-Online-"
5057 version ".tar.gz"))
5058 (sha256
5059 (base32
5060 "176f6vbk1018i0y7xj9d406ndbjgwzan2j9nihxnsahzg2vr2vz2"))))
5061 (build-system perl-build-system)
5062 (propagated-inputs
5063 (list perl-libwww perl-uri))
5064 (native-inputs
5065 (list perl-module-install))
5066 (home-page "https://metacpan.org/release/LWP-Online")
5067 (synopsis "Checks whether your process has access to the web")
5068 (description "This module attempts to answer, as accurately as it can, one
5069of the nastiest technical questions there is: am I on the internet?
5070
5071A host of networking and security issues make this problem very difficult.
5072There are firewalls, proxies (both well behaved and badly behaved). We might
5073not have DNS. We might not have a network card at all!")
5074 (license license:perl-license)))
5075
5076(define-public perl-lwp-mediatypes
5077 (package
5078 (name "perl-lwp-mediatypes")
5079 (version "6.04")
5080 (source (origin
5081 (method url-fetch)
5082 (uri (string-append
5083 "mirror://cpan/authors/id/O/OA/OALDERS/LWP-MediaTypes-"
5084 version ".tar.gz"))
5085 (sha256
5086 (base32
5087 "1n8rg6csv3dsvymg06cmxipimr6cb1g9r903ghm1qsmiv89cl6wg"))))
5088 (build-system perl-build-system)
5089 (native-inputs
5090 (list perl-test-fatal))
5091 (license license:perl-license)
5092 (synopsis "Perl module to guess the media type for a file or a URL")
5093 (description
5094 "The LWP::MediaTypes module provides functions for handling media (also
5095known as MIME) types and encodings. The mapping from file extensions to
5096media types is defined by the media.types file. If the ~/.media.types file
5097exists it is used instead.")
5098 (home-page "https://metacpan.org/release/LWP-MediaTypes")))
5099
5100(define-public perl-lwp-protocol-https
5101 (package
5102 (name "perl-lwp-protocol-https")
5103 (version "6.09")
5104 (source
5105 (origin
5106 (method url-fetch)
5107 (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
5108 "LWP-Protocol-https-" version ".tar.gz"))
5109 (sha256
5110 (base32 "14pm785cgyrnppks6ccasb2vkqifh0a8fz36nmnhc2v926jy3kqn"))))
5111 (build-system perl-build-system)
5112 (native-inputs
5113 ;; For tests.
5114 (list perl-test-requiresinternet))
5115 (propagated-inputs
5116 (list perl-io-socket-ssl perl-libwww perl-mozilla-ca perl-net-http))
5117 (home-page "https://metacpan.org/release/LWP-Protocol-https")
5118 (synopsis "HTTPS support for LWP::UserAgent")
5119 (description "The LWP::Protocol::https module provides support for using
5120https schemed URLs with LWP.")
5121 (license license:perl-license)))
5122
5123(define-public perl-lwp-useragent-cached
5124 (package
5125 (name "perl-lwp-useragent-cached")
5126 (version "0.08")
5127 (source
5128 (origin
5129 (method url-fetch)
5130 (uri (string-append "mirror://cpan/authors/id/O/OL/OLEG/"
5131 "LWP-UserAgent-Cached-" version ".tar.gz"))
5132 (sha256
5133 (base32
5134 "1hw7wy7f82kl61xjwkgmhv1ixgg56dhgfr45wxn6ahc0qys5mkix"))))
5135 (build-system perl-build-system)
5136 (propagated-inputs
5137 (list perl-libwww))
5138 (home-page "https://metacpan.org/release/LWP-UserAgent-Cached")
5139 (synopsis "Simple caching for LWP::UserAgent")
5140 (description "LWP::UserAgent::Cached is an LWP::UserAgent subclass with
5141cache support. It returns responses from the local file system, if available,
5142instead of making an HTTP request.")
5143 (license license:perl-license)))
5144
5145(define-public perl-lwp-useragent-determined
5146 (package
5147 (name "perl-lwp-useragent-determined")
5148 (version "1.07")
5149 (source
5150 (origin
5151 (method url-fetch)
5152 (uri (string-append "mirror://cpan/authors/id/A/AL/ALEXMV/"
5153 "LWP-UserAgent-Determined-" version ".tar.gz"))
5154 (sha256
5155 (base32
5156 "0lyvbpjng7yfvyha9rp2y2c6liz5hhplmd2grc8jlsfkih7dbn06"))))
5157 (build-system perl-build-system)
5158 (propagated-inputs
5159 (list perl-libwww))
5160 (home-page "https://metacpan.org/release/LWP-UserAgent-Determined")
5161 (synopsis "Virtual browser that retries errors")
5162 (description "LWP::UserAgent::Determined works just like LWP::UserAgent,
5163except that when you use it to get a web page but run into a
5164possibly-temporary error (like a DNS lookup timeout), it'll wait a few seconds
5165and retry a few times.")
5166 (license license:perl-license)))
5167
5168(define-public perl-lwpx-paranoidagent
5169 (package
5170 (name "perl-lwpx-paranoidagent")
5171 (version "1.12")
5172 (source
5173 (origin
5174 (method url-fetch)
5175 (uri (string-append
5176 "mirror://cpan/authors/id/S/SA/SAXJAZMAN/lwp/LWPx-ParanoidAgent-"
5177 version ".tar.gz"))
5178 (sha256
5179 (base32
5180 "0gfhw3jbs25yya2dryv8xvyn9myngcfcmsybj7gkq62fnznil16c"))))
5181 (build-system perl-build-system)
5182 (propagated-inputs
5183 (list perl-libwww
5184 ;; Users should instead make sure SSL_ca_path is set properly.
5185 ;; ("perl-mozilla-ca" ,perl-mozilla-ca)
5186 perl-net-dns))
5187 (home-page "https://metacpan.org/release/LWPx-ParanoidAgent")
5188 (synopsis "Security enhanced subclass of LWP::UserAgent")
5189 (description "@code{LWPx::ParanoidAgent} is a class subclassing
5190@code{LWP::UserAgent} but paranoid against attackers. Its purpose is
5191to vet requests for a remote resource on behalf of a possibly
5192malicious user. The class can do the same as @code{LWP::UserAgent},
5193except that proxy support has been removed. Support for URI schemes
5194is limited to http and https.")
5195 (license license:perl-license)))
5196
5197(define-public perl-net-amazon-s3
5198 (package
5199 (name "perl-net-amazon-s3")
5200 (version "0.60")
5201 (source
5202 (origin
5203 (method url-fetch)
5204 (uri (string-append "mirror://cpan/authors/id/P/PF/PFIG/"
5205 "Net-Amazon-S3-" version ".tar.gz"))
5206 (sha256
5207 (base32
5208 "10dcsq4s2kc9cb1vccx17r187c81drirc3s1hbxh3rb8489kg2b2"))
5209 (patches (search-patches
5210 "perl-net-amazon-s3-moose-warning.patch"))))
5211 (build-system perl-build-system)
5212 (native-inputs
5213 (list perl-libwww perl-test-exception))
5214 (propagated-inputs
5215 (list perl-data-stream-bulk
5216 perl-datetime-format-http
5217 perl-digest-hmac
5218 perl-digest-md5-file
5219 perl-file-find-rule
5220 perl-http-date
5221 perl-http-message
5222 perl-lwp-useragent-determined
5223 perl-mime-types
5224 perl-moose
5225 perl-moosex-strictconstructor
5226 perl-moosex-types-datetime-morecoercions
5227 perl-path-class
5228 perl-regexp-common
5229 perl-term-encoding
5230 perl-term-progressbar-simple
5231 perl-uri
5232 perl-xml-libxml))
5233 (home-page "https://metacpan.org/release/Net-Amazon-S3")
5234 (synopsis "Perl interface to Amazon S3")
5235 (description "This module provides a Perlish interface to Amazon S3.")
5236 (license license:perl-license)))
5237
5238(define-public perl-net-http
5239 (package
5240 (name "perl-net-http")
5241 (version "6.22")
5242 (source (origin
5243 (method url-fetch)
5244 (uri (string-append
5245 "mirror://cpan/authors/id/O/OA/OALDERS/"
5246 "Net-HTTP-" version ".tar.gz"))
5247 (sha256
5248 (base32
5249 "18m1b1274wmsl3cdfwg27pm7s1fgrrlhwy4gw4zl8da2p2jzkyk2"))))
5250 (build-system perl-build-system)
5251 (propagated-inputs
5252 (list perl-io-socket-ssl perl-uri))
5253 (license license:perl-license)
5254 (synopsis "Perl low-level HTTP connection (client)")
5255 (description
5256 "The Net::HTTP class is a low-level HTTP client. An instance of the
5257Net::HTTP class represents a connection to an HTTP server. The HTTP protocol
5258is described in RFC 2616. The Net::HTTP class supports HTTP/1.0 and
5259HTTP/1.1.")
5260 (home-page "https://metacpan.org/release/Net-HTTP")))
5261
5262(define-public perl-net-server
5263 (package
5264 (name "perl-net-server")
5265 (version "2.009")
5266 (source
5267 (origin
5268 (method url-fetch)
5269 (uri (string-append "mirror://cpan/authors/id/R/RH/RHANDOM/"
5270 "Net-Server-" version ".tar.gz"))
5271 (sha256
5272 (base32
5273 "0gw1k9gcw7habbkxvsfa2gz34brlbwcidk6khgsf1qjm0dbccrw2"))))
5274 (build-system perl-build-system)
5275 (home-page "https://metacpan.org/release/Net-Server")
5276 (synopsis "Extensible Perl server engine")
5277 (description "Net::Server is an extensible, generic Perl server engine.
5278It attempts to be a generic server as in Net::Daemon and NetServer::Generic.
5279It includes with it the ability to run as an inetd
5280process (Net::Server::INET), a single connection server (Net::Server or
5281Net::Server::Single), a forking server (Net::Server::Fork), a preforking
5282server which maintains a constant number of preforked
5283children (Net::Server::PreForkSimple), or as a managed preforking server which
5284maintains the number of children based on server load (Net::Server::PreFork).
5285In all but the inetd type, the server provides the ability to connect to one
5286or to multiple server ports.")
5287 (license license:perl-license)))
5288
5289(define-public perl-net-smtp-ssl
5290 (package
5291 (name "perl-net-smtp-ssl")
5292 (version "1.04")
5293 (source
5294 (origin
5295 (method url-fetch)
5296 (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
5297 "Net-SMTP-SSL-" version ".tar.gz"))
5298 (sha256
5299 (base32
5300 "001a6dcfahf7kkyirqkc8jd4fh4fkal7n7vm9c4dblqrvmdc8abv"))))
5301 (build-system perl-build-system)
5302 (propagated-inputs
5303 (list perl-io-socket-ssl))
5304 (home-page "https://metacpan.org/release/Net-SMTP-SSL")
5305 (synopsis "SSL support for Net::SMTP")
5306 (description "SSL support for Net::SMTP.")
5307 (license license:perl-license)))
5308
5309(define-public perl-plack
5310 (package
5311 (name "perl-plack")
5312 (version "1.0033")
5313 (source
5314 (origin
5315 (method url-fetch)
5316 (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
5317 "Plack-" version ".tar.gz"))
5318 (sha256
5319 (base32
5320 "081jg0xddzpg2anmqi9i6d7vs6c8z7k557bf8xl6vgb3h95pin5w"))))
5321 (build-system perl-build-system)
5322 (native-inputs
5323 (list perl-test-requires perl-file-sharedir-install))
5324 (propagated-inputs
5325 (list perl-apache-logformat-compiler
5326 perl-devel-stacktrace
5327 perl-devel-stacktrace-ashtml
5328 perl-file-sharedir
5329 perl-hash-multivalue
5330 perl-http-body
5331 perl-http-message
5332 perl-http-tiny
5333 perl-libwww
5334 perl-stream-buffered
5335 perl-test-tcp
5336 perl-try-tiny
5337 perl-uri))
5338 (home-page "https://metacpan.org/release/Plack")
5339 (synopsis "Perl Superglue for Web frameworks and servers (PSGI toolkit)")
5340 (description "Plack is a set of tools for using the PSGI stack. It
5341contains middleware components, a reference server, and utilities for Web
5342application frameworks. Plack is like Ruby's Rack or Python's Paste for
5343WSGI.")
5344 (license license:perl-license)))
5345
5346(define-public perl-plack-middleware-deflater
5347 (package
5348 (name "perl-plack-middleware-deflater")
5349 (version "0.12")
5350 (source
5351 (origin
5352 (method url-fetch)
5353 (uri (string-append
5354 "mirror://cpan/authors/id/K/KA/KAZEBURO/"
5355 "Plack-Middleware-Deflater-" version ".tar.gz"))
5356 (sha256
5357 (base32
5358 "0xf2visi16hgwgyp9q0cjr10ikbn474hjia5mj8mb2scvbkrbni8"))))
5359 (build-system perl-build-system)
5360 (native-inputs
5361 (list perl-module-install perl-test-requires))
5362 (propagated-inputs
5363 (list perl-plack))
5364 (home-page "https://metacpan.org/release/Plack-Middleware-Deflater")
5365 (synopsis "Compress response body with Gzip or Deflate")
5366 (description
5367 "Plack::Middleware::Deflater is a middleware to encode your response body
5368in gzip or deflate, based on \"Accept-Encoding\" HTTP request header. It
5369would save the bandwidth a little bit but should increase the Plack server
5370load, so ideally you should handle this on the frontend reverse proxy
5371servers.")
5372 (license license:perl-license)))
5373
5374(define-public perl-plack-middleware-fixmissingbodyinredirect
5375 (package
5376 (name "perl-plack-middleware-fixmissingbodyinredirect")
5377 (version "0.12")
5378 (source
5379 (origin
5380 (method url-fetch)
5381 (uri (string-append "mirror://cpan/authors/id/S/SW/SWEETKID/"
5382 "Plack-Middleware-FixMissingBodyInRedirect-"
5383 version ".tar.gz"))
5384 (sha256
5385 (base32
5386 "14dkrmccq7a5vpymx5dv8032gfcvhsw2i6v5sh3c4ym5ymlx08kc"))))
5387 (build-system perl-build-system)
5388 (native-inputs
5389 (list perl-html-parser ;for HTML::Entities
5390 perl-http-message perl-plack)) ;for Plack::Test
5391 (home-page
5392 "https://metacpan.org/release/Plack-Middleware-FixMissingBodyInRedirect")
5393 (synopsis "Plack::Middleware which sets body for redirect response")
5394 (description "This module sets the body in redirect response, if it's not
5395already set.")
5396 (license license:perl-license)))
5397
5398(define-public perl-plack-middleware-methodoverride
5399 (package
5400 (name "perl-plack-middleware-methodoverride")
5401 (version "0.20")
5402 (source
5403 (origin
5404 (method url-fetch)
5405 (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
5406 "Plack-Middleware-MethodOverride-"
5407 version ".tar.gz"))
5408 (sha256
5409 (base32 "1wdmmav3rbhv49zpw311zrxxqmg1fz3f3q9src0ypgs8zcp5myyv"))))
5410 (build-system perl-build-system)
5411 (native-inputs
5412 (list perl-module-build))
5413 (propagated-inputs
5414 (list perl-plack))
5415 (home-page "https://metacpan.org/release/Plack-Middleware-MethodOverride")
5416 (synopsis "Override REST methods to Plack apps via POST")
5417 (description "This middleware allows for POST requests that pretend to be
5418something else: by adding either a header named X-HTTP-Method-Override to the
5419request, or a query parameter named x-tunneled-method to the URI, the client
5420can say what method it actually meant.")
5421 (license license:perl-license)))
5422
5423(define-public perl-plack-middleware-removeredundantbody
5424 (package
5425 (name "perl-plack-middleware-removeredundantbody")
5426 (version "0.09")
5427 (source
5428 (origin
5429 (method url-fetch)
5430 (uri (string-append "mirror://cpan/authors/id/S/SW/SWEETKID/"
5431 "Plack-Middleware-RemoveRedundantBody-"
5432 version ".tar.gz"))
5433 (sha256
5434 (base32 "0zh83001rn5aqwpc1pn3di2h3ibzlf2dvkmkv05hnadpss9mzm40"))))
5435 (build-system perl-build-system)
5436 (propagated-inputs
5437 (list perl-plack))
5438 (home-page
5439 "https://metacpan.org/release/Plack-Middleware-RemoveRedundantBody")
5440 (synopsis "Plack::Middleware which removes body for HTTP response")
5441 (description "This module removes the body in an HTTP response if it's not
5442required.")
5443 (license license:perl-license)))
5444
5445(define-public perl-plack-middleware-reverseproxy
5446 (package
5447 (name "perl-plack-middleware-reverseproxy")
5448 (version "0.16")
5449 (source
5450 (origin
5451 (method url-fetch)
5452 (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
5453 "Plack-Middleware-ReverseProxy-"
5454 version ".tar.gz"))
5455 (sha256
5456 (base32 "0a512n62pnk5ayj3zdzyj50iy1qi8nwh6ygks2h7nrh7gp9k2jc7"))))
5457 (build-system perl-build-system)
5458 (native-inputs
5459 (list perl-module-install))
5460 (propagated-inputs
5461 (list perl-plack))
5462 (home-page "https://metacpan.org/release/Plack-Middleware-ReverseProxy")
5463 (synopsis "Supports app to run as a reverse proxy backend")
5464 (description "Plack::Middleware::ReverseProxy resets some HTTP headers,
5465which are changed by reverse-proxy. You can specify the reverse proxy address
5466and stop fake requests using @code{enable_if} directive in your app.psgi.")
5467 (license license:perl-license)))
5468
5469(define-public perl-plack-test-externalserver
5470 (package
5471 (name "perl-plack-test-externalserver")
5472 (version "0.02")
5473 (source
5474 (origin
5475 (method url-fetch)
5476 (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
5477 "Plack-Test-ExternalServer-" version ".tar.gz"))
5478 (sha256
5479 (base32 "1l1yj1l25679x7cbpd27ii7s1f1ajpkspif9xqnl21hczrbmrbsv"))))
5480 (build-system perl-build-system)
5481 (propagated-inputs
5482 (list perl-plack))
5483 (home-page "https://metacpan.org/release/Plack-Test-ExternalServer")
5484 (synopsis "Run HTTP tests on external live servers")
5485 (description "This module allows your to run your Plack::Test tests
5486against an external server instead of just against a local application through
5487either mocked HTTP or a locally spawned server.")
5488 (license license:perl-license)))
5489
5490(define-public perl-test-tcp
5491 (package
5492 (name "perl-test-tcp")
5493 (version "2.22")
5494 (source
5495 (origin
5496 (method url-fetch)
5497 (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
5498 "Test-TCP-" version ".tar.gz"))
5499 (sha256
5500 (base32 "0mvv9rqwrwlcfh8qrs0s47p85rhlnw15d4gbpyi802bddp0c6lry"))))
5501 (build-system perl-build-system)
5502 (propagated-inputs
5503 (list perl-test-sharedfork))
5504 (arguments `(#:tests? #f)) ;related to signaling in t/05_sigint.t
5505 (home-page "https://metacpan.org/release/Test-TCP")
5506 (synopsis "Testing TCP programs")
5507 (description "Test::TCP is test utilities for TCP/IP programs.")
5508 (license license:perl-license)))
5509
5510(define-public perl-test-www-mechanize
5511 (package
5512 (name "perl-test-www-mechanize")
5513 (version "1.52")
5514 (source
5515 (origin
5516 (method url-fetch)
5517 (uri (string-append "mirror://cpan/authors/id/P/PE/PETDANCE/"
5518 "Test-WWW-Mechanize-" version ".tar.gz"))
5519 (sha256
5520 (base32 "1jsywlbxhqw39ij7s8vmgff5vys58vlfaq27072awacnxc65aal4"))))
5521 (build-system perl-build-system)
5522 (propagated-inputs
5523 (list perl-carp-assert-more
5524 perl-html-form
5525 perl-html-lint
5526 perl-http-server-simple
5527 perl-libwww
5528 perl-test-longstring
5529 perl-www-mechanize))
5530 (home-page "https://metacpan.org/release/Test-WWW-Mechanize")
5531 (synopsis "Testing-specific WWW::Mechanize subclass")
5532 (description "Test::WWW::Mechanize is a subclass of the Perl module
5533WWW::Mechanize that incorporates features for web application testing.")
5534 (license license:artistic2.0)))
5535
5536(define-public perl-test-www-mechanize-catalyst
5537 (package
5538 (name "perl-test-www-mechanize-catalyst")
5539 (version "0.62")
5540 (source
5541 (origin
5542 (method url-fetch)
5543 (uri (string-append "mirror://cpan/authors/id/M/MS/MSTROUT/"
5544 "Test-WWW-Mechanize-Catalyst-" version ".tar.gz"))
5545 (sha256
5546 (base32 "1cdc2q16vs6fb335pzaislz2rx1ph9acaxyp7v5hv9xbwwddwfqq"))))
5547 (build-system perl-build-system)
5548 (native-inputs
5549 (list perl-catalyst-plugin-session
5550 perl-catalyst-plugin-session-state-cookie
5551 perl-module-install
5552 perl-test-exception
5553 perl-test-pod
5554 perl-test-utf8))
5555 (propagated-inputs
5556 (list perl-catalyst-runtime
5557 perl-class-load
5558 perl-libwww
5559 perl-moose
5560 perl-namespace-clean
5561 perl-test-www-mechanize
5562 perl-www-mechanize))
5563 (home-page "https://metacpan.org/release/Test-WWW-Mechanize-Catalyst")
5564 (synopsis "Test::WWW::Mechanize for Catalyst")
5565 (description "The Test::WWW::Mechanize::Catalyst module meshes the
5566Test::WWW:Mechanize module and the Catalyst web application framework to allow
5567testing of Catalyst applications without needing to start up a web server.")
5568 (license license:perl-license)))
5569
5570(define-public perl-test-www-mechanize-psgi
5571 (package
5572 (name "perl-test-www-mechanize-psgi")
5573 (version "0.38")
5574 (source
5575 (origin
5576 (method url-fetch)
5577 (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
5578 "Test-WWW-Mechanize-PSGI-" version ".tar.gz"))
5579 (sha256
5580 (base32
5581 "0fsh2i05kf1kfavv2r9kmnjl7qlyqrd11ikc0qcqzzxsqzzjkg9r"))))
5582 (build-system perl-build-system)
5583 (native-inputs
5584 (list perl-test-pod))
5585 (propagated-inputs
5586 (list perl-plack perl-test-www-mechanize))
5587 (home-page "https://metacpan.org/release/Test-WWW-Mechanize-PSGI")
5588 (synopsis "Test PSGI programs using WWW::Mechanize")
5589 (description "PSGI is a specification to decouple web server environments
5590from web application framework code. Test::WWW::Mechanize is a subclass of
5591WWW::Mechanize that incorporates features for web application testing. The
5592Test::WWW::Mechanize::PSGI module meshes the two to allow easy testing of PSGI
5593applications.")
5594 (license license:perl-license)))
5595
5596(define-public perl-uri
5597 (package
5598 (name "perl-uri")
5599 (version "5.05")
5600 (source (origin
5601 (method url-fetch)
5602 (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
5603 "URI-" version ".tar.gz"))
5604 (sha256
5605 (base32
5606 "1v3r3ck67w272kzfgm1nd3wb41av1hlnza56vkxxj1i7s3917hd5"))))
5607 (build-system perl-build-system)
5608 (native-inputs
5609 ;; For tests.
5610 (list perl-test-needs))
5611 (license license:perl-license)
5612 (synopsis "Perl Uniform Resource Identifiers (absolute and relative)")
5613 (description
5614 "The URI module implements the URI class. Objects of this class
5615represent \"Uniform Resource Identifier references\" as specified in RFC 2396
5616and updated by RFC 2732.")
5617 (home-page "https://metacpan.org/release/URI")))
5618
5619(define-public perl-uri-fetch
5620 (package
5621 (name "perl-uri-fetch")
5622 (version "0.15")
5623 (source (origin
5624 (method url-fetch)
5625 (uri (string-append "mirror://cpan/authors/id/N/NE/NEILB/"
5626 "URI-Fetch-" version ".tar.gz"))
5627 (sha256
5628 (base32
5629 "0355rnw3xbgfwy9fgs6zrjmrsychzmwpkc9jcd9mrbkd9kr3k7rp"))))
5630 (build-system perl-build-system)
5631 (arguments
5632 `(#:tests? #f)) ; Tests require internet connection to succeed
5633 (inputs
5634 (list perl-class-errorhandler perl-libwww perl-uri))
5635 (home-page "https://metacpan.org/release/URI-Fetch")
5636 (synopsis "Smart URI fetching/caching")
5637 (description "@code{URI::Fetch} is a smart client for fetching HTTP pages,
5638notably syndication feeds (RSS, Atom, and others), in an intelligent, bandwidth-
5639and time-saving way.")
5640 (license license:perl-license)))
5641
5642(define-public perl-uri-find
5643 (package
5644 (name "perl-uri-find")
5645 (version "20160806")
5646 (source
5647 (origin
5648 (method url-fetch)
5649 (uri (string-append "mirror://cpan/authors/id/M/MS/MSCHWERN/"
5650 "URI-Find-" version ".tar.gz"))
5651 (sha256
5652 (base32
5653 "1mk3jv8x0mcq3ajrn9garnxd0jc7sw4pkwqi88r5apqvlljs84z2"))))
5654 (build-system perl-build-system)
5655 (native-inputs
5656 (list perl-module-build))
5657 (propagated-inputs
5658 (list perl-uri))
5659 (home-page "https://metacpan.org/release/URI-Find")
5660 (synopsis "Find URIs in arbitrary text")
5661 (description "This module finds URIs and URLs (according to what URI.pm
5662considers a URI) in plain text. It only finds URIs which include a
5663scheme (http:// or the like), for something a bit less strict, consider
5664URI::Find::Schemeless. For a command-line interface, urifind is provided.")
5665 (license license:perl-license)))
5666
5667(define-public perl-uri-ws
5668 (package
5669 (name "perl-uri-ws")
5670 (version "0.03")
5671 (source
5672 (origin
5673 (method url-fetch)
5674 (uri (string-append "mirror://cpan/authors/id/P/PL/PLICEASE/"
5675 "URI-ws-" version ".tar.gz"))
5676 (sha256
5677 (base32
5678 "1vs1wm80sq685944g1l4a0fxcbccc00c0f9648yabdmcf90hwsvf"))))
5679 (build-system perl-build-system)
5680 (propagated-inputs
5681 (list perl-uri))
5682 (home-page "https://metacpan.org/release/URI-ws")
5683 (synopsis "WebSocket support for URI package")
5684 (description "With this module, the URI package provides the same set of
5685methods for WebSocket URIs as it does for HTTP URIs.")
5686 (license license:perl-license)))
5687
5688(define-public perl-web-scraper
5689 (package
5690 (name "perl-web-scraper")
5691 (version "0.38")
5692 (source
5693 (origin
5694 (method url-fetch)
5695 (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/Web-Scraper-"
5696 version ".tar.gz"))
5697 (sha256
5698 (base32 "1gs3fmbc83j34c0sig1hkpnm26ngnyi5kgq5dl8vxvkzimgnwnzr"))))
5699 (build-system perl-build-system)
5700 (native-inputs (list perl-module-build-tiny
5701 perl-test-base
5702 perl-test-requires))
5703 (propagated-inputs (list perl-html-parser
5704 perl-html-selector-xpath
5705 perl-html-tagset
5706 perl-html-tree
5707 perl-html-treebuilder-xpath
5708 perl-libwww
5709 perl-universal-require
5710 perl-uri
5711 perl-xml-xpathengine
5712 perl-yaml))
5713 (home-page "https://metacpan.org/release/Web-Scraper")
5714 (synopsis
5715 "Web Scraping toolkit using HTML and CSS Selectors or XPath expressions")
5716 (description "Perl module @code{Web::Scraper} is a toolkit for
5717traversing and scraping sites, inspired by Ruby's Scapi.")
5718 (license license:perl-license)))
5719
5720(define-public perl-uri-template
5721 (package
5722 (name "perl-uri-template")
5723 (version "0.24")
5724 (source (origin
5725 (method url-fetch)
5726 (uri (string-append "mirror://cpan/authors/id/B/BR/BRICAS/URI-Template-"
5727 version ".tar.gz"))
5728 (sha256
5729 (base32
5730 "1phibcmam2hklrddzj79l43va1gcqpyszbw21ynxq53ynmhjvbk8"))))
5731 (build-system perl-build-system)
5732 (inputs
5733 (list perl-uri))
5734 (native-inputs
5735 (list perl-test-pod-coverage perl-test-pod perl-module-install
5736 perl-json))
5737 (home-page "https://metacpan.org/release/URI-Template")
5738 (synopsis "Object for handling URI templates")
5739 (description "This perl module provides a wrapper around URI templates as described in
5740RFC 6570.")
5741 (license license:perl-license)))
5742
5743(define-public perl-www-curl
5744 (package
5745 (name "perl-www-curl")
5746 (version "4.17")
5747 (source (origin
5748 (method url-fetch)
5749 (uri (string-append
5750 "mirror://cpan/authors/id/S/SZ/SZBALINT/WWW-Curl-"
5751 version".tar.gz"))
5752 (patches (search-patches "perl-www-curl-fix-struct-void.patch"
5753 "perl-www-curl-remove-symbol.patch"))
5754 (sha256
5755 (base32
5756 "1fmp9aib1kaps9vhs4dwxn7b15kgnlz9f714bxvqsd1j1q8spzsj"))))
5757 (build-system perl-build-system)
5758 (arguments
5759 '(#:tests? #f ;XXX: tests require network access
5760 #:phases (modify-phases %standard-phases
5761 (add-before 'configure 'set-search-path
5762 (lambda _
5763 ;; Work around "dotless @INC" build failure.
5764 (setenv "PERL5LIB"
5765 (string-append (getcwd) ":"
5766 (getenv "PERL5LIB")))
5767 #t)))))
5768 (native-inputs
5769 (list perl-module-install))
5770 (inputs (list curl))
5771 (synopsis "Perl extension interface for libcurl")
5772 (description
5773 "This is a Perl extension interface for the libcurl file downloading
5774library.")
5775 (license license:perl-license)
5776 (home-page "https://metacpan.org/release/WWW-Curl")))
5777
5778(define-public perl-www-mechanize
5779 (package
5780 (name "perl-www-mechanize")
5781 (version "1.91")
5782 (source
5783 (origin
5784 (method url-fetch)
5785 (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
5786 "WWW-Mechanize-" version ".tar.gz"))
5787 (sha256
5788 (base32 "0cb14m1vhaf0mgn2fqwi5hm72xhfi77hpq2g57swgy0w83x7m27b"))))
5789 (build-system perl-build-system)
5790 (native-inputs ;only for tests
5791 (list perl-cgi perl-test-deep perl-test-fatal perl-test-output
5792 perl-test-warnings))
5793 (propagated-inputs
5794 (list perl-html-form
5795 perl-html-parser
5796 perl-html-tree
5797 perl-http-message
5798 perl-http-server-simple
5799 perl-libwww
5800 perl-test-warn
5801 perl-uri))
5802 (home-page "https://metacpan.org/release/WWW-Mechanize")
5803 (synopsis "Web browsing in a Perl object")
5804 (description "WWW::Mechanize is a Perl module for stateful programmatic
5805web browsing, used for automating interaction with websites.")
5806 (license license:perl-license)))
5807
5808(define-public perl-www-opensearch
5809 (package
5810 (name "perl-www-opensearch")
5811 (version "0.17")
5812 (source (origin
5813 (method url-fetch)
5814 (uri (string-append "mirror://cpan/authors/id/B/BR/BRICAS/"
5815 "WWW-OpenSearch-" version ".tar.gz"))
5816 (sha256
5817 (base32
5818 "1yxplx1q1qk2fvnzqrbk01lz26fy1lyhay51a3ky7q3jgh9p01rb"))))
5819 (build-system perl-build-system)
5820 (native-inputs
5821 (list perl-class-errorhandler
5822 perl-datetime
5823 perl-datetime-format-mail
5824 perl-datetime-format-w3cdtf
5825 perl-feed-find
5826 perl-module-install
5827 perl-module-pluggable
5828 perl-uri-fetch
5829 perl-test-simple
5830 perl-xml-atom
5831 perl-xml-rss))
5832 (inputs
5833 (list perl-data-page
5834 perl-libwww
5835 perl-uri
5836 perl-uri-template
5837 perl-xml-feed
5838 perl-xml-libxml))
5839 (home-page "https://metacpan.org/release/WWW-OpenSearch")
5840 (synopsis "Search A9 OpenSearch compatible engines")
5841 (description
5842 "@code{WWW::OpenSearch} is a module to search @url{A9's OpenSearch,
5843http://opensearch.a9.com} compatible search engines.")
5844 (license license:perl-license)))
5845
5846(define-public perl-www-robotrules
5847 (package
5848 (name "perl-www-robotrules")
5849 (version "6.02")
5850 (source (origin
5851 (method url-fetch)
5852 (uri (string-append
5853 "mirror://cpan/authors/id/G/GA/GAAS/WWW-RobotRules-"
5854 version ".tar.gz"))
5855 (sha256
5856 (base32
5857 "07m50dp5n5jxv3m93i55qvnd67a6g7cvbvlik115kmc8lbkh5da6"))))
5858 (build-system perl-build-system)
5859 (propagated-inputs
5860 (list perl-uri))
5861 (license license:perl-license)
5862 (synopsis "Perl database of robots.txt-derived permissions")
5863 (description
5864 "The WWW::RobotRules module parses /robots.txt files as specified in
5865\"A Standard for Robot Exclusion\", at
5866<http://www.robotstxt.org/wc/norobots.html>. Webmasters can use the
5867/robots.txt file to forbid conforming robots from accessing parts of
5868their web site.")
5869 (home-page "https://metacpan.org/release/WWW-RobotRules")))
5870
5871;; XXX: No fresh release since 2019.
5872(define-public python-lambda-4dn
5873 (package
5874 (name "python-lambda-4dn")
5875 (version "0.12.3")
5876 (source (origin
5877 (method url-fetch)
5878 (uri (pypi-uri "python-lambda-4dn" version))
5879 (sha256
5880 (base32
5881 "1p5i8wsi8q5fpq63i7n7ri1w1lnh4gpn17f88vhkbh14aah5wxj1"))))
5882 (properties '(("upstream-name" . "python-lambda-4dn")))
5883 (build-system pyproject-build-system)
5884 (arguments
5885 (list
5886 #:tests? #f ;no tests in PyPI archive
5887 #:phases
5888 #~(modify-phases %standard-phases
5889 (add-after 'unpack 'fix-pip-install
5890 (lambda _
5891 (substitute* "aws_lambda/aws_lambda.py"
5892 ;; This package uses pip to install Python packages, wrap them
5893 ;; up, and push them to AWS Lambda. We need to reset
5894 ;; GUIX_PYTHONPATH to avoid introducing package conflicts that
5895 ;; would cause pip to fail.
5896 (("(subprocess.call\\(\\[sys.executable.*'--no-cache-dir'\\])\\)" _ m)
5897 (string-append m ", env={\"GUIX_PYTHONPATH\":\""
5898 #$(this-package-input "python")
5899 "/lib/python"
5900 #$(version-major+minor
5901 (package-version (this-package-input "python")))
5902 "/site-packages/\"})"))
5903 ;; Zipfile uses the mtime of the temporary directory to build
5904 ;; a zip file. But the temp directory has a timestamp of 0,
5905 ;; and zipfile refuses to build a zip archive dated before
5906 ;; 1980. So we reset the mtime of all temp files before they
5907 ;; are added to the zip archive.
5908 (("^( +)arcname = os.path.join" line indent)
5909 (string-append indent
5910 "os.utime(os.path.join(root, file), (315619200, 315619200))\n"
5911 line))))))))
5912 (native-inputs
5913 (list python-setuptools))
5914 (inputs (list python))
5915 (propagated-inputs
5916 (list python-boto3
5917 python-botocore
5918 python-docutils
5919 python-pip ;it's imported in aws_lambda/aws_lambda.py
5920 python-virtualenv))
5921 (home-page "https://github.com/4dn-dcic/python-lambda")
5922 (synopsis
5923 "Toolkit for developing and deploying Python code in AWS Lambda")
5924 (description
5925 "This is a toolset for developing and deploying serverless Python code in
5926AWS Lambda. This is a fork of Nick Ficano's Python-lambda package. It is
5927frozen for the needs of projects at the 4D Nucleome Data Coordination and
5928Integration Center (4DN-DCIC).")
5929 (license (list license:isc license:expat))))
5930
5931(define-public python-feedparser
5932 (package
5933 (name "python-feedparser")
5934 (version "6.0.12")
5935 (source
5936 (origin
5937 (method url-fetch)
5938 (uri (pypi-uri "feedparser" version ".tar.gz"))
5939 (sha256
5940 (base32 "0a22z6jx9lhw5glfb2nxf77bq9nfa0xqs3yy3rfyzs731blnrxv4"))))
5941 (build-system pyproject-build-system)
5942 (arguments
5943 (list
5944 #:test-backend #~'custom
5945 #:test-flags #~(list "tests/runtests.py")))
5946 (native-inputs (list python-setuptools python-wheel))
5947 (propagated-inputs (list python-sgmllib3k))
5948 (home-page "https://github.com/kurtmckee/feedparser")
5949 (synopsis "Parse feeds in Python")
5950 (description
5951 "Universal feed parser which handles RSS 0.9x, RSS 1.0, RSS 2.0,
5952CDF, Atom 0.3, and Atom 1.0 feeds.")
5953 (license (list license:bsd-2 ; source code
5954 license:freebsd-doc)))) ; documentation
5955
5956(define-public python-tibanna
5957 (package
5958 (name "python-tibanna")
5959 (version "5.4.3")
5960 (source (origin
5961 (method url-fetch)
5962 (uri (pypi-uri "tibanna" version))
5963 (sha256
5964 (base32
5965 "11pbyw881qaj08syc9mwr301rm3jhy6vyci98pxin2dwvyzkgwhd"))))
5966 (build-system pyproject-build-system)
5967 (arguments
5968 ;; Tests require AWS credentials and access to the internet.
5969 (list #:tests? #false))
5970 (propagated-inputs
5971 (list python-benchmark-4dn
5972 python-boto3 python-botocore
5973 python-lambda-4dn python-tomlkit))
5974 (native-inputs
5975 (list python-poetry-core
5976 python-pytest
5977 python-pytest-mock))
5978 (home-page "https://github.com/4dn-dcic/tibanna")
5979 (synopsis "Tibanna runs portable workflows on the AWS Cloud")
5980 (description
5981 "Tibanna runs portable pipelines (in CWL/WDL and Snakemake) on the AWS
5982Cloud.")
5983 (license license:expat)))
5984
5985(define-public guix-data-service
5986 (let ((commit "029880e5633789ce96ec363a94d98aed6451430f")
5987 (revision "79"))
5988 (package
5989 (name "guix-data-service")
5990 (version (string-append "0.0.1-" revision "." (string-take commit 7)))
5991 (source (origin
5992 (method git-fetch)
5993 (uri (git-reference
5994 (url "https://codeberg.org/guix/data-service.git")
5995 (commit commit)))
5996 (file-name (git-file-name name version))
5997 (sha256
5998 (base32
5999 "1h7k30k2hrql2r5kg1qhsq5haxzs2qzzkc195aidigr2vnj7xkm0"))))
6000 (build-system gnu-build-system)
6001 (arguments
6002 (list
6003 #:modules '((guix build utils)
6004 (guix build gnu-build-system)
6005 (ice-9 ftw)
6006 (ice-9 match)
6007 (ice-9 rdelim)
6008 (ice-9 popen))
6009 #:test-target "check-with-tmp-database"
6010 #:phases
6011 #~(modify-phases %standard-phases
6012 (add-before 'build 'set-GUILE_AUTO_COMPILE
6013 (lambda _
6014 ;; To avoid warnings relating to 'guild'.
6015 (setenv "GUILE_AUTO_COMPILE" "0")))
6016 (add-after 'install 'wrap-executable
6017 (lambda* (#:key inputs outputs #:allow-other-keys)
6018 (let* ((out (assoc-ref outputs "out"))
6019 (bin (string-append out "/bin"))
6020 (guile-effective-version
6021 (read-line
6022 (open-pipe* OPEN_READ (which "guile")
6023 "-c" "(display (effective-version))")))
6024 (scm (string-append out "/share/guile/site/"
6025 guile-effective-version))
6026 (go (string-append out "/lib/guile/"
6027 guile-effective-version
6028 "/site-ccache")))
6029 (for-each
6030 (lambda (file)
6031 (simple-format (current-error-port)
6032 "wrapping: ~A\n"
6033 (string-append bin "/" file))
6034 (wrap-program (string-append bin "/" file)
6035 `("PATH" ":" prefix
6036 ,(cons*
6037 bin
6038 (map (lambda (file)
6039 (search-input-file inputs file))
6040 '("/bin/pg_tmp" ;ephemeralpg
6041 "/bin/ionice" ;util-linux
6042 "/bin/psql")))) ;postgresql
6043 `("GUILE_LOAD_PATH" ":" prefix
6044 (,scm ,(getenv "GUILE_LOAD_PATH")))
6045 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
6046 (,go ,(getenv "GUILE_LOAD_COMPILED_PATH")))))
6047 (scandir bin
6048 (match-lambda
6049 ((or "." "..") #f)
6050 (_ #t)))))))
6051 (delete 'strip)))) ; As the .go files aren't compatible
6052 (inputs
6053 (list bash-minimal
6054 ephemeralpg
6055 util-linux
6056 postgresql-13
6057 sqitch
6058 bash-minimal))
6059 (propagated-inputs
6060 (list guix
6061 guile-fibers
6062 guile-safsaf
6063 guile-knots
6064 guile-json-4
6065 guile-email
6066 guile-prometheus
6067 guile-squee
6068 guile-lzlib))
6069 (native-inputs
6070 (list guile-3.0-latest
6071 autoconf
6072 automake
6073 emacs-minimal
6074 emacs-htmlize
6075 pkg-config))
6076 (synopsis "Store and provide data about GNU Guix")
6077 (description
6078 "The Guix Data Service stores data about GNU Guix, and provides this
6079through a web interface. It supports listening to the guix-commits mailing
6080list to find out about new revisions, then loads the data from these in to a
6081PostgreSQL database.")
6082 (home-page "https://data.guix.gnu.org/")
6083 (license license:agpl3+))))
6084
6085(define-public gumbo-parser
6086 (package
6087 (name "gumbo-parser")
6088 (version "0.10.1")
6089 (source (origin
6090 (method git-fetch)
6091 (uri (git-reference
6092 (url "https://github.com/google/gumbo-parser")
6093 (commit (string-append "v" version))))
6094 (file-name (git-file-name name version))
6095 (sha256
6096 (base32
6097 "0xslckwdh2i0g2qjsb6rnm8mjmbagvziz0hjlf7d1lbljfms1iw1"))))
6098 (build-system gnu-build-system)
6099 (arguments
6100 `(#:tests? #f)) ;tests require bundling googletest sources
6101 ;; The release tarball lacks the generated files.
6102 (native-inputs
6103 (list autoconf automake libtool))
6104 (home-page "https://github.com/google/gumbo-parser")
6105 (synopsis "HTML5 parsing library")
6106 (description
6107 "Gumbo is an implementation of the HTML5 parsing algorithm implemented as
6108a pure C99 library.")
6109 (license license:asl2.0)))
6110
6111(define-public uwsgi
6112 (package
6113 (name "uwsgi")
6114 (version "2.0.31")
6115 (source (origin
6116 (method url-fetch)
6117 (uri (pypi-uri name version))
6118 (sha256
6119 (base32
6120 "0mv2qz8gjvsc4rdsqdmrjszi972jdw9vjisjls9zy1n1ri8b7y78"))))
6121 (build-system gnu-build-system)
6122 (outputs '("out" "python"))
6123 (arguments
6124 (list
6125 ;; XXX: The 'check' target runs cppcheck to do static code analysis.
6126 ;; But there is no obvious way to run the real tests.
6127 #:tests? #f
6128 #:phases
6129 #~(modify-phases %standard-phases
6130 (replace 'configure
6131 ;; Configuration is done by writing an ini file.
6132 (lambda* (#:key outputs #:allow-other-keys)
6133 (let* ((out (assoc-ref outputs "out"))
6134 (bindir (string-append out "/bin"))
6135 (plugindir (string-append out "/lib/uwsgi")))
6136 ;; The build phase outputs files to these directories directly.
6137 (mkdir-p bindir)
6138 (mkdir-p plugindir)
6139 ;; XXX: Enable other plugins.
6140 (call-with-output-file "buildconf/guix.ini"
6141 (lambda (port)
6142 (format port "[uwsgi]
6143yaml = libyaml
6144bin_name = ~a/uwsgi
6145plugin_dir = ~a
6146
6147inherit = base
6148plugins = cgi,python
6149embedded_plugins =
6150" bindir plugindir))))
6151 (setenv "PROFILE" "guix")))
6152 (replace 'install
6153 ;; Move plugins into their own output.
6154 (lambda _
6155 (let* ((plugindir (string-append #$output "/lib/uwsgi"))
6156 (python-plugin (string-append plugindir
6157 "/python_plugin.so")))
6158 (install-file python-plugin
6159 (string-append #$output:python "/lib/uwsgi"))
6160 (delete-file python-plugin)))))))
6161 (native-inputs
6162 (list pkg-config python-wrapper))
6163 (inputs
6164 (list jansson
6165 libxml2
6166 libyaml
6167 openssl
6168 pcre2
6169 zlib
6170 ;; For plugins.
6171 python))
6172 (home-page "https://uwsgi-docs.readthedocs.io/")
6173 (synopsis "Application container server")
6174 (description
6175 "uWSGI presents a complete stack for networked/clustered web applications,
6176implementing message/object passing, caching, RPC and process management.
6177It uses the uwsgi protocol for all the networking/interprocess communications.")
6178 (license license:gpl2+))) ; with linking exception
6179
6180(define-public jq
6181 (package
6182 (name "jq")
6183 (version "1.8.2")
6184 (source
6185 (origin
6186 (method git-fetch)
6187 (uri (git-reference
6188 (url "https://github.com/jqlang/jq")
6189 (commit (string-append "jq-" version))))
6190 (file-name (git-file-name name version))
6191 (sha256
6192 (base32 "1m798zky0s4smpf4jxl5g0ndg8ybd9f6ca8vhld4yma1ga7r71vk"))
6193 (modules '((guix build utils)))
6194 (snippet
6195 #~(begin
6196 (delete-file "jq.1.prebuilt")
6197 (delete-file "tests/man.test")
6198 (delete-file "tests/manonig.test")
6199 ;; TODO: unbundle decnumber, which is maintained in GCC.
6200 ;; Remove bundled onigurama.
6201 (delete-file-recursively "vendor/oniguruma")
6202 (substitute* "Makefile.am"
6203 (("SUBDIRS = vendor/oniguruma") ""))))))
6204 (arguments
6205 (list #:configure-flags
6206 #~'("--enable-docs" "--disable-static")
6207 #:phases
6208 #~(modify-phases %standard-phases
6209 (add-before 'bootstrap 'unrequire-git-and-pipenv
6210 (lambda* (#:key inputs #:allow-other-keys)
6211 (substitute* "configure.ac"
6212 (("^m4_define\\(\\[jq_version\\], .*\\)")
6213 (simple-format #f "m4_define([jq_version], [~a])"
6214 #$(package-version this-package))))
6215 ;; configure tries to launch $PIPENV.
6216 (setenv "PIPENV" "true")
6217 (substitute* "Makefile.am"
6218 (("\\$\\(PIPENV\\) run python (.*\\.py)" all prog)
6219 ;; Schema validation requires python-jsonschema,
6220 ;; which transitively depends on rustc.
6221 ;; Since jq is a transitive dependency of guix,
6222 ;; skipping this static analysis helps
6223 ;; with its bootstrapping cost.
6224 (if (string=? prog "validate_manual_schema.py")
6225 "true"
6226 (string-append "python3 " prog)))))))))
6227 (inputs
6228 (list oniguruma))
6229 (native-inputs
6230 (cons*
6231 autoconf
6232 automake
6233 libtool
6234 ;; Docs dependencies:
6235 python
6236 python-lxml
6237 python-markdown
6238 python-pyyaml
6239 ;; Test dependencies:
6240 tzdata-for-tests
6241 (if (member (%current-system)
6242 (package-supported-systems valgrind/pinned))
6243 (list valgrind/pinned)
6244 '())))
6245 (build-system gnu-build-system)
6246 (home-page "https://jqlang.org")
6247 (synopsis "Command-line JSON processor")
6248 (description "jq is like sed for JSON data – you can use it to slice and
6249filter and map and transform structured data with the same ease that sed, awk,
6250grep and friends let you play with text. It is written in portable C. jq can
6251mangle the data format that you have into the one that you want with very
6252little effort, and the program to do so is often shorter and simpler than
6253you'd expect.")
6254 (properties
6255 '((lint-hidden-cve
6256 ;; CVE's with incorrectly versions limits; solved in these commits:
6257 . (list "CVE-2026-39979";2f09060afab23fe9390cce7cb860b10416e1bf5f
6258 "CVE-2026-33948" ;6374ae0bcdfe33a18eb0ae6db28493b1f34a0a5b
6259 "CVE-2026-44777")))) ;f58787c41835d9b17795730cb04925fdba25c71c
6260 (license (list license:cc-by3.0 ;docs
6261 license:x11 ;vendor/decNumber
6262 license:expat)))) ;rest
6263
6264(define-public go-jqp
6265 (package
6266 (name "go-jqp")
6267 (version "0.8.0")
6268 (source
6269 (origin
6270 (method git-fetch)
6271 (uri (git-reference
6272 (url "https://github.com/noahgorstein/jqp")
6273 (commit (string-append "v" version))))
6274 (file-name (git-file-name name version))
6275 (sha256
6276 (base32 "1j5nc3l8qzvzrfggvyh4xg3wxx4hsmkm89437sjw5gcmgscsy9d4"))))
6277 (build-system go-build-system)
6278 (arguments
6279 (list
6280 #:install-source? #f
6281 #:import-path "github.com/noahgorstein/jqp"
6282 #:embed-files #~(list ".*.xml")))
6283 (native-inputs
6284 (list go-github-com-alecthomas-chroma-v2
6285 go-github-com-atotto-clipboard
6286 go-github-com-charmbracelet-bubbles
6287 go-github-com-charmbracelet-bubbletea
6288 go-github-com-charmbracelet-lipgloss
6289 go-github-com-itchyny-gojq
6290 go-github-com-muesli-termenv
6291 go-github-com-spf13-cobra
6292 go-github-com-spf13-viper))
6293 (home-page "https://github.com/noahgorstein/jqp")
6294 (synopsis "TUI playground to experiment with jq")
6295 (description
6296 "This package provides an interactive TUI to explor the @code{jq} command
6297line utility. The command accepts an optional query argument which will be
6298executed against the input JSON or newline-delimited JSON (NDJSON).")
6299 (license license:expat)))
6300
6301(define-public pup
6302 (let ((revision "2")
6303 (commit "5a57cf111366c7c08999a34b2afd7ba36d58a96d"))
6304 (package
6305 (name "pup")
6306 (version (git-version "0.4.0" revision commit))
6307 (source
6308 (origin
6309 (method git-fetch)
6310 (uri (git-reference
6311 (url "https://github.com/ericchiang/pup")
6312 (commit commit)))
6313 (file-name (git-file-name name version))
6314 (sha256
6315 (base32 "18595sr6lh49w7ncvhp39p1ybvxfvdyx6655wr5vvfyv2ggn1rrd"))))
6316 (build-system go-build-system)
6317 (arguments
6318 (list
6319 #:install-source? #f
6320 #:import-path "github.com/ericchiang/pup"))
6321 (native-inputs
6322 (list go-github-com-fatih-color
6323 go-github-com-mattn-go-colorable
6324 go-golang-org-x-net
6325 go-golang-org-x-text))
6326 (home-page "https://github.com/ericchiang/pup")
6327 (synopsis "Parse HTML at the command line")
6328 (description
6329 "@command{pup} is a command line tool for processing HTML. It reads
6330from stdin, prints to stdout, and allows the user to filter parts of the page
6331using CSS selectors. Inspired by @command{jq}, @command{pup} aims to be a
6332fast and flexible way of exploring HTML from the terminal.")
6333 (license license:expat))))
6334
6335(define-public uhttpmock
6336 (package
6337 (name "uhttpmock")
6338 (version "0.11.0")
6339 (source
6340 (origin
6341 (method url-fetch)
6342 (uri (string-append "https://tecnocode.co.uk/downloads/uhttpmock/"
6343 "uhttpmock-" version ".tar.xz"))
6344 (sha256
6345 (base32 "1gw4g3m99j00rjd3flbxigv3qgbkafnkhf77c76hv7yy58dc1vgy"))))
6346 (build-system meson-build-system)
6347 (native-inputs
6348 (list gobject-introspection
6349 ;; For check phase.
6350 glib-networking gsettings-desktop-schemas pkg-config))
6351 (inputs (list libsoup))
6352 (arguments
6353 (list #:glib-or-gtk? #t
6354 #:configure-flags #~(list "-Dgtk_doc=false")
6355 #:phases
6356 #~(modify-phases %standard-phases
6357 (add-before 'check 'set-home-for-tests
6358 (lambda _
6359 (setenv "HOME" "/tmp"))))))
6360 (home-page "https://gitlab.com/groups/uhttpmock")
6361 (synopsis "Library for mocking web service APIs which use HTTP or HTTPS")
6362 (description
6363 "Uhttpmock is a project for mocking web service APIs which use HTTP or
6364HTTPS. It provides a library, libuhttpmock, which implements recording and
6365playback of HTTP request/response traces.")
6366 (license license:lgpl2.1+)))
6367
6368(define-public uhttpmock-with-libsoup2
6369 (package
6370 (inherit uhttpmock)
6371 (version "0.5.3")
6372 (source
6373 (origin
6374 (method url-fetch)
6375 (uri (string-append "https://tecnocode.co.uk/downloads/uhttpmock/"
6376 "uhttpmock-" version ".tar.xz"))
6377 (sha256
6378 (base32 "0bqizz69hxk8rn4z57asz1d45vizl1rj6i5k3rzxn2x3qcik514h"))))
6379 (build-system glib-or-gtk-build-system)
6380 (arguments
6381 (list #:phases
6382 #~(modify-phases %standard-phases
6383 (add-before 'check 'set-home-for-tests
6384 (lambda _
6385 (setenv "HOME" "/tmp"))))))
6386 (inputs (list libsoup-minimal-2))))
6387
6388(define-public woof
6389 (package
6390 (name "woof")
6391 (version "20220202")
6392 (source (origin
6393 (method git-fetch)
6394 (uri (git-reference
6395 (url "https://github.com/simon-budig/woof")
6396 (commit (string-append name "-" version))))
6397 (file-name (git-file-name name version))
6398 (sha256
6399 (base32
6400 "0rm8xs5dhy42jhjpx30vwnvps2rnmrh8scfr89j6dnihc6mpjkmn"))))
6401 (build-system trivial-build-system)
6402 (arguments
6403 '(#:modules ((guix build utils))
6404 #:builder
6405 (begin
6406 (use-modules (guix build utils))
6407 (let* ((source (assoc-ref %build-inputs "source"))
6408 (out (assoc-ref %outputs "out"))
6409 (bin (string-append out "/bin"))
6410 (python (assoc-ref %build-inputs "python")))
6411 (mkdir-p bin)
6412 (with-directory-excursion bin
6413 (copy-file (in-vicinity source "woof") "woof")
6414 (patch-shebang "woof" (list (string-append python "/bin"))))
6415 #t))))
6416 (inputs (list python))
6417 (home-page "http://www.home.unix-ag.org/simon/woof.html")
6418 (synopsis "Single file web server")
6419 (description "Woof (Web Offer One File) is a small simple web server that
6420can easily be invoked on a single file. Your partner can access the file with
6421tools they trust (e.g. wget).")
6422 (license license:gpl2+)))
6423
6424(define netsurf-buildsystem
6425 (package
6426 (name "netsurf-buildsystem")
6427 (version "1.10")
6428 (source
6429 (origin
6430 (method url-fetch)
6431 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6432 "buildsystem-" version ".tar.gz"))
6433 (sha256
6434 (base32
6435 "0yadmrpgvl9r08b56qiy5f77jracc7g9n4krn727fip4d7akjgix"))))
6436 (build-system gnu-build-system)
6437 (inputs `(("perl" ,perl)))
6438 (arguments
6439 '(#:make-flags (list (string-append "PREFIX=" %output))
6440 #:tests? #f ;no tests
6441 #:phases (modify-phases %standard-phases
6442 (delete 'configure)
6443 (delete 'build))))
6444 (home-page "https://www.netsurf-browser.org")
6445 (synopsis "Build system for the Netsurf project")
6446 (description
6447 "This package provides the shared build system for Netsurf project
6448libraries.")
6449 (license license:expat)))
6450
6451(define netsurf-buildsystem-arguments
6452 `(#:make-flags `("COMPONENT_TYPE=lib-shared"
6453 "CC=gcc -Wno-error=calloc-transposed-args"
6454 "BUILD_CC=gcc -Wno-error=calloc-transposed-args"
6455 ,(string-append "PREFIX=" %output)
6456 ,(string-append "NSSHARED="
6457 (assoc-ref %build-inputs
6458 "netsurf-buildsystem")
6459 "/share/netsurf-buildsystem"))
6460 #:test-target "test"
6461 #:phases (modify-phases %standard-phases
6462 (delete 'configure))))
6463
6464(define-public libparserutils
6465 (package
6466 (name "libparserutils")
6467 (version "0.2.5")
6468 (source
6469 (origin
6470 (method url-fetch)
6471 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6472 name "-" version "-src.tar.gz"))
6473 (sha256
6474 (base32
6475 "0ffi5q1jlcdl66nk3cax0mnzvhrjvvjvlx0rfasjfygi333xazii"))))
6476 (build-system gnu-build-system)
6477 (native-inputs
6478 (list netsurf-buildsystem pkg-config perl)) ;for test harness
6479 (arguments netsurf-buildsystem-arguments)
6480 (home-page "https://www.netsurf-browser.org/projects/libparserutils/")
6481 (synopsis "Parser building library")
6482 (description
6483 "LibParserUtils is a library for building efficient parsers, written in
6484C. It is developed as part of the NetSurf project.")
6485 (license license:expat)))
6486
6487(define-public hubbub
6488 (package
6489 (name "hubbub")
6490 (version "0.3.8")
6491 (source
6492 (origin
6493 (method url-fetch)
6494 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6495 "libhubbub-" version "-src.tar.gz"))
6496 (sha256
6497 (base32
6498 "19fm5h8arnsgxd4w5vr9s2fcb422acciffar3la0b36lygsydhca"))
6499 (patches (search-patches "hubbub-sort-entities.patch"))))
6500 (build-system gnu-build-system)
6501 (native-inputs
6502 (list netsurf-buildsystem
6503 pkg-config
6504 doxygen
6505 gperf
6506 json-c
6507 perl))
6508 (propagated-inputs
6509 (list libparserutils)) ;for libhubbub.pc
6510 (arguments netsurf-buildsystem-arguments)
6511 (home-page "https://www.netsurf-browser.org/projects/hubbub/")
6512 (synopsis "HTML5 compliant parsing library")
6513 (description
6514 "Hubbub is an HTML5 compliant parsing library, written in C, which can
6515parse both valid and invalid web content. It is developed as part of the
6516NetSurf project.")
6517 (license license:expat)))
6518
6519(define-public iter-vitae
6520 (package
6521 (name "iter-vitae")
6522 (version "0.5.1")
6523 (source
6524 (origin
6525 (method git-fetch)
6526 (uri (git-reference
6527 (url "https://codeberg.org/jjba23/iter-vitae.git")
6528 (commit (string-append "v" version))))
6529 (file-name (git-file-name name version))
6530 (sha256
6531 (base32 "08rak4lq732mil2q7mlqm6dh57s2k1n94isrshj3k3ahspcdl1p3"))))
6532 (arguments
6533 `(#:source-directory "src"
6534 #:phases (modify-phases %standard-phases
6535 (add-before 'build 'install-program-files
6536 (lambda* (#:key outputs #:allow-other-keys)
6537 (let ((bin (string-append (assoc-ref outputs "out")
6538 "/bin"))
6539 (share (string-append (assoc-ref outputs "out")
6540 "/share")))
6541 (install-file "resources/help.txt"
6542 (string-append share "/resources"))
6543 (install-file "resources/css/iter-vitae.olive.min.css"
6544 (string-append share "/resources/css"))
6545 (install-file "scripts/iter-vitae" bin)
6546 (install-file "scripts/log.bash"
6547 (string-append share "/scripts/"))
6548 (chmod (string-append bin "/iter-vitae") #o755)))))))
6549 (build-system guile-build-system)
6550 (native-inputs (list guile-3.0))
6551 (inputs (list guile-3.0 bash-minimal))
6552 (synopsis
6553 "Resume / @acronym{CV, Curriculum Vitae} generator written in Guile Scheme")
6554 (description
6555 "Iter Vitae is a command-line utility that allows you to generate a
6556Resume / @acronym{CV, Curriculum Vitae}, by reading a S-expression version
6557of your CV details (in Scheme code).
6558
6559With a @acronym{MVC, model-view-controller} approach,
6560it lets you separate the data from the presentation (how the document looks).
6561
6562This tool creates a web-site version of your CV (using SXML and Olive CSS),
6563and is designed for long-term use, so you can update and evolve your CV over the years.
6564The program supports multilingual content and is fully extensible.")
6565 (home-page "https://codeberg.org/jjba23/iter-vitae")
6566 (license license:agpl3+)))
6567
6568(define-public ikiwiki
6569 (package
6570 (name "ikiwiki")
6571 (version "3.20200202.4")
6572 (source
6573 (origin
6574 (method git-fetch)
6575 (uri (git-reference
6576 (url "git://git.ikiwiki.info/")
6577 (commit version)))
6578 (file-name (git-file-name name version))
6579 (sha256
6580 (base32
6581 "04ijislp7png18bg1carb71xk3sij9x5xpizfkxp6jbip6wdxsml"))
6582 (snippet
6583 '(begin
6584 ;; The POT file requires write permission during the build
6585 ;; phase.
6586 (chmod "po/ikiwiki.pot" #o644)))))
6587 (build-system perl-build-system)
6588 (arguments
6589 `(#:phases
6590 (modify-phases %standard-phases
6591 (add-after 'patch-source-shebangs 'patch-Makefiles
6592 (lambda _
6593 (substitute* "Makefile.PL"
6594 (("SYSCONFDIR\\?=") "SYSCONFDIR?=$(PREFIX)"))
6595 (with-directory-excursion "po"
6596 (substitute* "Makefile"
6597 (("PERL5LIB=") "PERL5LIB=${PERL5LIB}:")))))
6598 (add-before 'build 'set-modification-times
6599 ;; The wiki '--refresh' steps, which are executed during
6600 ;; the check phase, require recent timestamps on files in
6601 ;; the 'doc' and 'underlays' directories.
6602 (lambda _
6603 (invoke "find" "doc" "underlays" "-type" "f" "-exec"
6604 "touch" "{}" "+")))
6605 (add-before 'check 'pre-check
6606 (lambda* (#:key inputs #:allow-other-keys)
6607 ;; Six tests use IPC::Run. For these tests the PERL5LIB
6608 ;; variable is needed in the runtime environment and also
6609 ;; in the search path list in the setup file.
6610 (substitute*
6611 '("t/aggregate-file.t" "t/git-cgi.t" "t/git-untrusted.t"
6612 "t/passwordauth.t" "t/relativity.t" "t/wrapper-environ.t")
6613 (("(.*)\"perl\"(.*)$" _ prefix suffix)
6614 (string-append prefix "qw(env), 'PERL5LIB='.$ENV{PERL5LIB}"
6615 ", qw(perl)" suffix))
6616 (("(.*) PERL5LIB=(.*) perl(.*)$" _ prefix middle suffix)
6617 (string-append prefix "), 'PERL5LIB='.$ENV{PERL5LIB}.':"
6618 middle "', qw(perl" suffix))
6619 (("(.*)setup(.* )getcwd(.*)$" _ prefix middle suffix)
6620 (string-append prefix "setup" middle
6621 "$ENV{PERL5LIB}.':'.getcwd" suffix))
6622 (("^ENV(.*): '(.*)$" _ middle suffix)
6623 (string-append "ENV" middle
6624 ": '$ENV{PERL5LIB}:" suffix)))
6625 ;; rcs_getctime does not work with breezy
6626 (substitute* "t/bazaar.t"
6627 (("rcs_getctime\\(\"test2.mdwn\"\\)" all)
6628 (string-append all "//time()")))
6629 ;; XDG_DATA_DIRS is needed by the podcast.t test.
6630 (setenv "XDG_DATA_DIRS"
6631 (string-append (assoc-ref inputs "shared-mime-info")
6632 "/share"))
6633 ;; This test fails: "Cannot read from a file without refname".
6634 (rename-file "t/po.t" "t/po.t-")
6635 ;; CC is needed by IkiWiki/Wrapper.pm.
6636 (setenv "CC" "gcc")))
6637 (add-after 'install 'wrap-programs
6638 (lambda* (#:key outputs #:allow-other-keys)
6639 (let* ((out (assoc-ref outputs "out"))
6640 (bin (string-append out "/bin/"))
6641 (path (getenv "PERL5LIB")))
6642 (for-each (lambda (file)
6643 (wrap-program file
6644 `("PERL5LIB" ":" prefix (,path))))
6645 (find-files bin))))))))
6646 (native-inputs
6647 (list which
6648 gettext-minimal
6649 subversion
6650 git
6651 breezy
6652 cvs
6653 mercurial))
6654 (inputs
6655 (list bash-minimal
6656 python-wrapper
6657 perl-authen-passphrase
6658 perl-cgi-simple
6659 perl-db-file
6660 perl-file-mimeinfo
6661 perl-html-tagset
6662 perl-image-magick
6663 perl-ipc-run
6664 perl-lwpx-paranoidagent
6665 perl-xml-feed
6666 perl-xml-sax
6667 perl-xml-twig
6668 perl-yaml-tiny
6669
6670 ;; Ikiwiki loads po4a as a library, and thus needs the po4a dependencies
6671 ;; available. Duplicate them here.
6672 ;; XXX: It would be ideal to hard code these in po4a somehow.
6673 perl-syntax-keyword-try
6674 perl-xs-parse-keyword
6675 po4a))
6676 (propagated-inputs
6677 (list perl-cgi-formbuilder
6678 perl-cgi-session
6679 perl-html-parser
6680 perl-html-scrubber
6681 perl-html-template
6682 perl-json
6683 perl-mail-sendmail
6684 perl-text-markdown-discount
6685 perl-timedate
6686 perl-uri
6687 perl-xml-simple
6688 perl-yaml-libyaml))
6689 (home-page "https://ikiwiki.info/")
6690 (synopsis "Wiki compiler, capable of generating HTML")
6691 (description
6692 "Ikiwiki is a wiki compiler, capable of generating a static set of web
6693pages, but also incorporating dynamic features like a web based editor and
6694commenting.")
6695 (license license:gpl2+)))
6696
6697(define-public libwapcaplet
6698 (package
6699 (name "libwapcaplet")
6700 (version "0.4.3")
6701 (source
6702 (origin
6703 (method url-fetch)
6704 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6705 "libwapcaplet-" version "-src.tar.gz"))
6706 (sha256
6707 (base32
6708 "0p0c2q9lsj4vs97aa7vjllfhw33zv3dpysdkjblzhib6dpfs2alv"))))
6709 (build-system gnu-build-system)
6710 (native-inputs
6711 (list netsurf-buildsystem pkg-config check-0.14)) ;for tests
6712 (arguments netsurf-buildsystem-arguments)
6713 (home-page "https://www.netsurf-browser.org/projects/libwapcaplet/")
6714 (synopsis "String internment library")
6715 (description
6716 "LibWapcaplet provides a reference counted string internment system
6717designed to store small strings and allow rapid comparison of them. It is
6718developed as part of the Netsurf project.")
6719 (license license:expat)))
6720
6721(define-public libcss
6722 (package
6723 (name "libcss")
6724 (version "0.9.2")
6725 (source
6726 (origin
6727 (method url-fetch)
6728 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6729 "libcss-" version "-src.tar.gz"))
6730 (sha256
6731 (base32
6732 "0khmf5bdpkc09fpsgwzi23sihpadvyr02jx0q5h1vm9lxjxibwid"))
6733 (patches (search-patches "libcss-check-format.patch"))))
6734 (build-system gnu-build-system)
6735 (native-inputs
6736 (list netsurf-buildsystem pkg-config perl))
6737 (propagated-inputs ;needed for libcss.pc
6738 (list libparserutils libwapcaplet))
6739 (arguments netsurf-buildsystem-arguments)
6740 (home-page "https://www.netsurf-browser.org/projects/libcss/")
6741 (synopsis "CSS parser and selection library")
6742 (description
6743 "LibCSS is a CSS (Cascading Style Sheet) parser and selection engine,
6744written in C. It is developed as part of the NetSurf project.")
6745 (license license:expat)))
6746
6747(define-public libdom
6748 (package
6749 (name "libdom")
6750 (version "0.4.2") ;TODO include patch for additional tags?
6751 (source
6752 (origin
6753 (method url-fetch)
6754 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6755 "libdom-" version "-src.tar.gz"))
6756 (sha256
6757 (base32
6758 "0g0gqcglk8f8gbygbcq5ylcx84zsf0vczbm3n3118w2l2splapnh"))))
6759 (build-system gnu-build-system)
6760 (native-inputs
6761 (list netsurf-buildsystem
6762 pkg-config
6763 perl ;for test harness
6764 perl-libxml
6765 perl-switch
6766 perl-xml-xpath))
6767 (inputs
6768 (list libparserutils libwapcaplet))
6769 (propagated-inputs
6770 (list expat ;needed for headers and linking
6771 hubbub)) ;for libdom.pc
6772 (arguments
6773 `(#:tests? #f ;TODO: re-enable. tests take a looong time.
6774 ,@netsurf-buildsystem-arguments))
6775 (home-page "https://www.netsurf-browser.org/projects/libdom/")
6776 (synopsis "Implementation of the W3C DOM")
6777 (description
6778 "LibDOM is an implementation of the W3C DOM, written in C. It is
6779developed as part of the NetSurf project.")
6780 (license license:expat)))
6781
6782(define-public libsvgtiny
6783 (package
6784 (name "libsvgtiny")
6785 (version "0.1.8")
6786 (source
6787 (origin
6788 (method url-fetch)
6789 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6790 name "-" version "-src.tar.gz"))
6791 (sha256
6792 (base32
6793 "0750q884ax8wygl64wq03zdjj8h838ch3f8jdfkv4gz809zj4my3"))))
6794 (build-system gnu-build-system)
6795 (native-inputs
6796 (list netsurf-buildsystem pkg-config gperf))
6797 (inputs
6798 (list libwapcaplet))
6799 (propagated-inputs
6800 (list libdom)) ;for libsvgtiny.pc
6801 (arguments netsurf-buildsystem-arguments)
6802 (home-page "https://www.netsurf-browser.org/projects/libsvgtiny/")
6803 (synopsis "Library for parsing SVG files")
6804 (description
6805 "Libsvgtiny takes some SVG as input and returns a list of paths and texts
6806which can be rendered easily, as defined in
6807@url{http://www.w3.org/TR/SVGMobile/}. It is developed as part of the NetSurf
6808project.")
6809 (license license:expat)))
6810
6811(define-public libnsbmp
6812 (package
6813 (name "libnsbmp")
6814 (version "0.1.7")
6815 (source
6816 (origin
6817 (method url-fetch)
6818 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6819 name "-" version "-src.tar.gz"))
6820 (sha256
6821 (base32
6822 "14r2v1ich4lxn3sdwpiwq5adydrd1qlhbd8mbamalaqj59laf1sl"))))
6823 (build-system gnu-build-system)
6824 (native-inputs
6825 (list netsurf-buildsystem))
6826 (arguments netsurf-buildsystem-arguments)
6827 (home-page "https://www.netsurf-browser.org/projects/libnsbmp/")
6828 (synopsis "Decoding library for BMP and ICO files")
6829 (description
6830 "Libnsbmp is a decoding library for BMP and ICO image file formats,
6831written in C. It is developed as part of the NetSurf project.")
6832 (license license:expat)))
6833
6834(define-public libnsfb
6835 (package
6836 (name "libnsfb")
6837 (version "0.2.2")
6838 (source
6839 (origin
6840 (method url-fetch)
6841 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6842 name "-" version "-src.tar.gz"))
6843 (sha256
6844 (base32 "16m3kv8x8mlic4z73h2s3z8lqmyp0z8i30x95lzr1pslxfinqi5y"))))
6845 (build-system gnu-build-system)
6846 (native-inputs
6847 (list netsurf-buildsystem pkg-config))
6848 (inputs
6849 ;; SDL is needed to accept any (keyboard, mouse) input. Don't propagate it
6850 ;; to satisfy libnsfb.pc: netsurf is the only user and not worth the pain.
6851 (list sdl))
6852 (arguments netsurf-buildsystem-arguments)
6853 (home-page "https://www.netsurf-browser.org/projects/libnsfb/")
6854 (synopsis "Framebuffer display abstraction library")
6855 (description
6856 "LibNSFB is a framebuffer abstraction library, written in C. It is
6857developed as part of the NetSurf project and is intended to be suitable for use
6858in other projects too.
6859
6860The overall idea of the library is to provide a generic abstraction to a linear
6861section of memory which corresponds to a visible array of pixel elements on a
6862display device. Different colour depths are supported and the library provides
6863routines for tasks such as drawing onto the framebuffer and rectangle copy
6864operations.")
6865 (license license:expat)))
6866
6867(define-public libnsgif
6868 (package
6869 (name "libnsgif")
6870 (version "1.0.0")
6871 (source
6872 (origin
6873 (method url-fetch)
6874 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6875 name "-" version "-src.tar.gz"))
6876 (sha256
6877 (base32
6878 "06q69hn0nz3c6hnwmzfcldyrppkvimx3s97ql3sx4m0lyr1ch530"))))
6879 (build-system gnu-build-system)
6880 (native-inputs
6881 (list netsurf-buildsystem))
6882 (arguments netsurf-buildsystem-arguments)
6883 (home-page "https://www.netsurf-browser.org/projects/libnsgif/")
6884 (synopsis "Decoding library for GIF files")
6885 (description
6886 "Libnsgif is a decoding library for the GIF image file format, written in
6887C. It is developed as part of the NetSurf project.")
6888 (license license:expat)))
6889
6890(define-public libnslog
6891 (package
6892 (name "libnslog")
6893 (version "0.1.3")
6894 (source
6895 (origin
6896 (method url-fetch)
6897 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6898 "libnslog-" version "-src.tar.gz"))
6899 (sha256
6900 (base32
6901 "1l2k0kdv9iv18svhv360vszjavhl4g09cp8a8yb719pgsylxr67w"))))
6902 (build-system gnu-build-system)
6903 (native-inputs
6904 (list netsurf-buildsystem
6905 pkg-config
6906 check ; For tests
6907 bison
6908 flex))
6909 (arguments netsurf-buildsystem-arguments)
6910 (home-page "https://www.netsurf-browser.org/")
6911 (synopsis "Logging library")
6912 (description
6913 "Libnslog provides a category-based logging library which supports
6914complex logging filters, multiple log levels, and provides context through to
6915client applications. It is developed as part of the NetSurf project.")
6916 (license license:expat)))
6917
6918(define-public libnsutils
6919 (package
6920 (name "libnsutils")
6921 (version "0.1.1")
6922 (source
6923 (origin
6924 (method url-fetch)
6925 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6926 name "-" version "-src.tar.gz"))
6927 (sha256
6928 (base32
6929 "14pakllwf7a205d0dkvyg8jhmqfbi5sh5riw840d13j5dr9b952n"))))
6930 (build-system gnu-build-system)
6931 (native-inputs
6932 (list netsurf-buildsystem))
6933 (arguments netsurf-buildsystem-arguments)
6934 (home-page "https://www.netsurf-browser.org/")
6935 (synopsis "Utility library for NetSurf")
6936 (description
6937 "Libnsutils provides a small number of useful utility routines. It is
6938developed as part of the NetSurf project.")
6939 (license license:expat)))
6940
6941(define-public libnspsl
6942 (package
6943 (name "libnspsl")
6944 (version "0.1.7")
6945 (source
6946 (origin
6947 (method url-fetch)
6948 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6949 "libnspsl-" version "-src.tar.gz"))
6950 (sha256
6951 (base32
6952 "105cjkb622wz11z26il4j1n4ydyrrgv0nglr67aawpam5z1wx11n"))))
6953 (build-system gnu-build-system)
6954 (native-inputs
6955 (list netsurf-buildsystem))
6956 (arguments netsurf-buildsystem-arguments)
6957 (home-page "https://www.netsurf-browser.org/")
6958 (synopsis "Library to generate a static Public Suffix List")
6959 (description
6960 "Libnspsl is a library to generate a static code representation of the
6961Public Suffix List. It is developed as part of the NetSurf project.")
6962 (license license:expat)))
6963
6964(define-public nsgenbind
6965 (package
6966 (name "nsgenbind")
6967 (version "0.9")
6968 (source
6969 (origin
6970 (method url-fetch)
6971 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6972 "nsgenbind-" version "-src.tar.gz"))
6973 (sha256
6974 (base32
6975 "0p9q9ffn9hf1qrphz2qxq2xvyysn5kg2dbl8cbnkwb5wdkvf0b13"))))
6976 (build-system gnu-build-system)
6977 (native-inputs
6978 (list netsurf-buildsystem bison flex))
6979 (arguments
6980 (substitute-keyword-arguments netsurf-buildsystem-arguments
6981 ((#:make-flags flags)
6982 `(delete "COMPONENT_TYPE=lib-shared" ,flags))))
6983 (home-page "https://www.netsurf-browser.org/")
6984 (synopsis "Generate JavaScript to DOM bindings")
6985 (description
6986 "@code{nsgenbind} is a tool to generate JavaScript to DOM bindings from
6987w3c webidl files and a binding configuration file.")
6988 (license license:expat)))
6989
6990(define-public netsurf
6991 (package
6992 (name "netsurf")
6993 (version "3.11")
6994 (source
6995 (origin
6996 (method url-fetch)
6997 (uri (string-append "https://download.netsurf-browser.org/netsurf/"
6998 "releases/source/netsurf-" version "-src.tar.gz"))
6999 (sha256
7000 (base32
7001 "1chw40nx7krpy7m14bajfrcj88h98if8py0k7c2qshpfxxm652n2"))
7002 (patches (search-patches "netsurf-system-utf8proc.patch"
7003 "netsurf-y2038-tests.patch"
7004 "netsurf-longer-test-timeout.patch"
7005 "netsurf-message-timestamp.patch"))))
7006 (build-system glib-or-gtk-build-system)
7007 (arguments
7008 (list
7009 #:make-flags
7010 #~(list
7011 (string-append "CC=" #$(cc-for-target))
7012 (string-append "BUILD_CC=" #$(cc-for-target))
7013 "TARGET=gtk3"
7014 (string-append "PREFIX=" #$output)
7015 (string-append "NSSHARED="
7016 #$(this-package-native-input "netsurf-buildsystem")
7017 "/share/netsurf-buildsystem"))
7018 #:test-target "test"
7019 #:modules `((ice-9 rdelim)
7020 (ice-9 match)
7021 (srfi srfi-1)
7022 (sxml simple)
7023 ,@%glib-or-gtk-build-system-default-modules)
7024 #:phases
7025 #~(modify-phases %standard-phases
7026 (delete 'configure)
7027 (add-after 'unpack 'remove-timestamps
7028 ;; Avoid embedding timestamp for reproducible builds
7029 (lambda _
7030 (substitute* "tools/git-testament.pl"
7031 (("WT_COMPILEDATE ..$compiledate")
7032 "WT_COMPILEDATE \\\""))))
7033 (add-after 'build 'adjust-welcome
7034 (lambda _
7035 (substitute* "frontends/gtk/res/welcome.html"
7036 ;; Close some XHTML tags.
7037 (("<(img|input)([^>]*)>" _ tag contents)
7038 (string-append "<" tag contents " />"))
7039 ;; Increase freedom.
7040 ((" open source") ", free software"))
7041 (with-atomic-file-replacement "frontends/gtk/res/welcome.html"
7042 (lambda (in out)
7043 ;; Leave the DOCTYPE header as is.
7044 (display (read-line in 'concat) out)
7045 (sxml->xml
7046 (let rec
7047 ((sxml (xml->sxml in #:default-entity-handler
7048 (lambda (port name)
7049 (string-append "<ENTITY>"
7050 (symbol->string name)
7051 "</ENTITY>")))))
7052 ;; We'd like to use sxml-match here, but it can't
7053 ;; match against generic tag symbols...
7054 (match sxml
7055 ;; Remove default links so it doesn't seem we're
7056 ;; endorsing them.
7057 (`(div (@ (class "links")) . ,rest)
7058 '())
7059 ;; Prefer a more privacy-respecting default search
7060 ;; engine.
7061 (`(form . ,rest)
7062 `(form (@ (action "https://lite.duckduckgo.com/lite/")
7063 (method "post"))
7064 (div (@ (class "websearch"))
7065 (input (@ (type "text")
7066 (size "42")
7067 (name "q")
7068 (autocomplete "off")
7069 (value "")))
7070 (input (@ (type "submit")
7071 (value "DuckDuckGo Search"))))))
7072 (`(ENTITY ,ent)
7073 `(*ENTITY* ,ent))
7074 ((x ...)
7075 (map rec x))
7076 (x x)))
7077 out)))))
7078 (add-before 'check 'patch-check
7079 (lambda* (#:key inputs #:allow-other-keys)
7080 (substitute* '("test/bloom.c" "test/hashtable.c")
7081 (("/usr/share/dict/words")
7082 (search-input-file inputs "/share/web2")))))
7083 (add-after 'install 'install-more
7084 (lambda _
7085 (let* ((share (string-append #$output "/share/"))
7086 (desktop (string-append share
7087 "applications/netsurf.desktop")))
7088 (mkdir-p (dirname desktop))
7089 (copy-file "frontends/gtk/res/netsurf-gtk.desktop" desktop)
7090 (substitute* desktop
7091 (("netsurf-gtk")
7092 (string-append #$output "/bin/netsurf-gtk3"))
7093 (("netsurf.png")
7094 (string-append share "/netsurf/netsurf.xpm")))
7095 (install-file "docs/netsurf-gtk.1"
7096 (string-append share "man/man1/"))))))))
7097 (native-inputs
7098 (list netsurf-buildsystem
7099 nsgenbind
7100 libidn ;only for tests
7101 check
7102 perl
7103 perl-html-parser
7104 pkg-config
7105 xxd))
7106 (inputs
7107 (list curl
7108 gtk+
7109 openssl
7110 utf8proc
7111 libpng
7112 libjpeg-turbo
7113 libcss
7114 libdom
7115 libnsbmp
7116 libnsgif
7117 libnslog
7118 libnspsl
7119 libnsutils
7120 libsvgtiny
7121 miscfiles))
7122 (home-page "https://www.netsurf-browser.org")
7123 (synopsis "Web browser")
7124 (description
7125 "NetSurf is a lightweight web browser that has its own layout and
7126rendering engine entirely written from scratch. It is small and capable of
7127handling many of the web standards in use today.")
7128 (license license:gpl2+)))
7129
7130(define-public superhtml
7131 (package
7132 (name "superhtml")
7133 (version "0.6.2")
7134 (source (origin
7135 (method git-fetch)
7136 (uri (git-reference
7137 (url "https://github.com/kristoff-it/superhtml")
7138 (commit (string-append "v" version))))
7139 (file-name (git-file-name name version))
7140 (sha256
7141 (base32
7142 "1ii2c2ssjpg0f8yr19gi4knhly7xcbfxpwq7889b8k2mmzrxri6g"))
7143 (snippet
7144 (rename-zig-dependencies
7145 '(("known_folders" . "zig-known-folders")
7146 ("lsp_kit" . "zig-lsp-kit")
7147 ("scripty" . "zig-scripty")
7148 ("tracy" . "zig-tracy"))))))
7149 (build-system zig-build-system)
7150 (arguments (list #:zig zig-0.15
7151 #:install-source? #f))
7152 (inputs (list zig-known-folders-for-zig-0.15
7153 zig-lsp-kit-for-zig-0.15
7154 zig-scripty
7155 zig-tracy))
7156 (home-page "https://github.com/kristoff-it/superhtml")
7157 (synopsis "HTML validator, formatter, LSP, and templating language library")
7158 (description "SuperHTML is an HTML validator, formatter, @acronym{LSP,
7159Language Server Protocol}, and templating language library. It provides the
7160@command{superhtml} command that can validate and autoformat HTML files. The
7161tool can be used either directly (for example by running it on save), or
7162through a LSP client implementation.")
7163 (license license:expat)))
7164
7165(define-public surfraw
7166 (let ((commit "ebb8131c7c623ef90d3345cd9d64203693861013")
7167 (revision "0"))
7168 (package
7169 (name "surfraw")
7170 (version (git-version "2.3.0" revision commit))
7171 (source
7172 (origin
7173 (method git-fetch)
7174 (uri (git-reference
7175 (url "https://gitlab.com/surfraw/Surfraw/")
7176 (commit commit)))
7177 (file-name (git-file-name name version))
7178 (sha256
7179 (base32 "1y3qybbyv8fnfpaw76xkh1b53pd7dvx1zr9pj71df649g4kbbibs"))))
7180 (build-system gnu-build-system)
7181 (arguments
7182 `(#:phases (modify-phases %standard-phases
7183 (add-before 'configure 'patch-perl
7184 (lambda* (#:key inputs #:allow-other-keys)
7185 (let ((perl (assoc-ref inputs "perl")))
7186 (substitute* "surfraw.IN"
7187 (("perl -e")
7188 (string-append perl "/bin/perl -e"))) #t)))
7189 (add-after 'install 'compress-elvi.1sr
7190 (lambda* (#:key outputs #:allow-other-keys)
7191 ;; The manpages of the elvis are symlinks to elvi.1sr.gz
7192 ;; but elvi.1sr does not get compressed by our manpage phase.
7193 (let* ((out (assoc-ref %outputs "out"))
7194 (man (string-append out "/share/man/man1")))
7195 (with-directory-excursion man
7196 (invoke "gzip" "elvi.1sr"))))))))
7197 (native-inputs (list autoconf automake))
7198 (inputs (list perl perl-www-opensearch perl-html-parser perl-libwww))
7199 (synopsis "Unix command line interface to the www")
7200 (description
7201 "Surfraw (Shell Users' Revolutionary Front Rage Against the Web)
7202provides a unix command line interface to a variety of popular www search engines
7203and similar services.")
7204 (home-page "http://surfraw.org/")
7205 (license license:public-domain))))
7206
7207(define-public bookmarkfs
7208 (package
7209 (name "bookmarkfs")
7210 (version "0.1.4")
7211 (source (origin
7212 (method git-fetch)
7213 (uri (git-reference
7214 (url "https://codeberg.org/cismonx/bookmarkfs")
7215 (commit (string-append "v" version))))
7216 (file-name (git-file-name name version))
7217 (sha256
7218 (base32
7219 "0ad7h3ffwj7dg7c788znc8b0wr6v5xx83sans8xa6f93x9c56frm"))))
7220 (build-system gnu-build-system)
7221 (arguments (list
7222 #:tests? #f ; tests seem to not work in sandbox
7223 #:configure-flags #~(list
7224 "--enable-bookmarkfs-util"
7225 "--enable-bookmarkfs-mount"
7226 "--enable-bookmarkfs-fsck"
7227 "--enable-bookmarkfs-mkfs"
7228 "--enable-bookmarkctl"
7229 "--enable-backend-firefox"
7230 "--enable-backend-chromium"
7231 "--enable-fsck-handler-tcl")
7232 #:phases
7233 #~(modify-phases %standard-phases
7234 (add-before 'build 'patch-flush
7235 (lambda _
7236 (substitute* "src/fs_ops.c"
7237 (("fi->noflush = 1;") "fi->flush = 0;"))))
7238 (add-before 'configure 'patch-configure
7239 (lambda _
7240 (substitute* "configure"
7241 (("AX_PTHREAD") "")))))))
7242 (inputs (list fuse
7243 libseccomp
7244 nettle
7245 jansson
7246 readline
7247 tcl
7248 uriparser
7249 zlib
7250 xxhash
7251 sqlite))
7252 (native-inputs (list autoconf-2.72
7253 autoconf-archive
7254 automake
7255 libtool
7256 pkg-config))
7257 (home-page "https://www.nongnu.org/bookmarkfs/")
7258 (synopsis "FUSE filesystem based interface to the bookmark data of web browsers")
7259 (description "BookmarkFS is a FUSE-based pseudo-filesystem which provides an
7260interface to the bookmark data of web browsers.
7261
7262Currently, the following browsers (and their derivatives) are supported:
7263- @code{firefox}
7264- @code{chromium}.")
7265 (license license:gpl3+)))
7266
7267(define-public darkhttpd
7268 (package
7269 (name "darkhttpd")
7270 (version "1.17")
7271 (source
7272 (origin
7273 (method git-fetch)
7274 (uri (git-reference
7275 (url "https://github.com/emikulic/darkhttpd")
7276 (commit (string-append "v" version))))
7277 (file-name (git-file-name name version))
7278 (sha256
7279 (base32 "1i492a0g640hkpvmv3vdf8hy61kfc649y8myj7r5hva4im8l76kp"))))
7280 (build-system gnu-build-system)
7281 (arguments
7282 (list
7283 #:make-flags #~(list (string-append "CC=" #$(cc-for-target)))
7284 #:test-target "test"
7285 #:phases
7286 #~(modify-phases %standard-phases
7287 (delete 'configure) ; no configure script
7288 (replace 'install
7289 (lambda _
7290 (install-file "darkhttpd" (string-append #$output "/bin")))))))
7291 (native-inputs (list which python-minimal))
7292 (synopsis "Simple static web server")
7293 (description "darkhttpd is a simple static web server. It is
7294standalone and does not need inetd or ucspi-tcp. It does not need any
7295config files---you only have to specify the www root.")
7296 (home-page "https://unix4lyfe.org/darkhttpd/")
7297 (license license:isc)))
7298
7299(define-public goaccess
7300 (package
7301 (name "goaccess")
7302 (version "1.11")
7303 (source (origin
7304 (method url-fetch)
7305 (uri (string-append "http://tar.goaccess.io/goaccess-"
7306 version ".tar.gz"))
7307 (sha256
7308 (base32
7309 "0wgz4md1ig10x2bdlgdbawmwp0qwbfskwrd4wyzq4icpkh94n0h1"))
7310 (modules '((guix build utils)))
7311 (snippet '(substitute* '("src/error.h"
7312 "src/parser.c")
7313 (("__DATE__") "\"1970-01-01\"")
7314 (("__TIME__") "\"00:00:00\"")))))
7315 (build-system gnu-build-system)
7316 (arguments
7317 (list
7318 #:configure-flags
7319 '(list "--enable-geoip=mmdb"
7320 "--enable-utf8"
7321 "--with-openssl"
7322 "--with-zlib")))
7323 (inputs
7324 (list glib ncurses libmaxminddb openssl zlib))
7325 (native-inputs
7326 (list pkg-config))
7327 (home-page "https://goaccess.io")
7328 (synopsis "Analyze Web server logs in real time")
7329 (description
7330 "GoAccess is a real-time web log analyzer and interactive viewer that
7331runs in a terminal or through your browser. It provides fast and valuable
7332HTTP statistics for system administrators that require a visual server report
7333on the fly.")
7334 (license license:x11)))
7335
7336(define-public hitch
7337 (package
7338 (name "hitch")
7339 (version "1.7.3")
7340 (home-page "https://hitch-tls.org/")
7341 (source (origin
7342 (method url-fetch)
7343 (uri (string-append home-page "source/hitch-" version ".tar.gz"))
7344 (sha256
7345 (base32
7346 "11wp50zs5irb5bj5xyanm060nlvna6ha328wqf6p2nvpbnaz86qs"))))
7347 (build-system gnu-build-system)
7348 (arguments
7349 `(#:phases (modify-phases %standard-phases
7350 (add-before 'check 'pre-check
7351 (lambda _
7352 ;; Our grep is compiled without perl regexp support. So,
7353 ;; rewrite the grep command to not use it. \t tab
7354 ;; characters are supported only in perl regexps. So,
7355 ;; put in literal tabs using printf instead.
7356 (substitute* "src/tests/test32-proxy-authority.sh"
7357 (("grep -Pq") "grep -q")
7358 (("extension:\\\\tdefault")
7359 "extension:$(printf '\\011')default"))
7360 ;; Most tests attempts to access hitch-tls.org which is
7361 ;; unavailable in the build container. Run them against
7362 ;; a dummy local web server instead.
7363 (for-each (lambda (test)
7364 (substitute* test
7365 (("\\[hitch-tls\\.org\\]:80")
7366 "[localhost]:8000")))
7367 (find-files "src/tests" "\\.sh$"))
7368 (system "python3 -m http.server &")
7369
7370 ;; The build container does not reap zombie processes,
7371 ;; causing stop_hitch to hang indefinitely while waiting
7372 ;; for the process to terminate because 'kill -0' never
7373 ;; succeeds. Use a different test to see whether the
7374 ;; process has shut down.
7375 (substitute* "src/tests/hitch_test.sh"
7376 (("kill -0 \"\\$HITCH_PID\"")
7377 "$(ps -p $HITCH_PID -o state= | grep -qv '^Z$')")))))))
7378 (native-inputs
7379 (list pkg-config
7380
7381 ;; For tests.
7382 curl
7383 grep
7384 lsof
7385 procps
7386 python))
7387 (inputs
7388 (list libev openssl))
7389 (synopsis "Scalable TLS proxy")
7390 (description
7391 "Hitch is a performant TLS proxy based on @code{libev}. It terminates
7392SSL/TLS connections and forwards the unencrypted traffic to a backend such
7393as a web server. It is designed to handle many thousand connections on
7394multicore machines.")
7395 (license license:bsd-2)))
7396
7397(define-public httptunnel
7398 (package
7399 (name "httptunnel")
7400 (version "3.3")
7401 (source
7402 (origin
7403 (method url-fetch)
7404 ;; git repository has no tags, so difficult to figure out which commit
7405 ;; corresponds to which version.
7406 (uri (string-append "https://www.nocrew.org/software/httptunnel/"
7407 name "-" version ".tar.gz"))
7408 (sha256
7409 (base32
7410 "0mn5s6p68n32xzadz6ds5i6bp44dyxzkq68r1yljlv470jr84bql"))
7411 (modules '((guix build utils)))
7412 ;; Remove non-free IETF RFC documentation.
7413 (snippet #~(delete-file-recursively "doc"))))
7414 (build-system gnu-build-system)
7415 (arguments
7416 (list
7417 #:phases
7418 #~(modify-phases %standard-phases
7419 ;; The default configure phase tries to pass environment variables as
7420 ;; command-line arguments, which confuses the ./configure script.
7421 (replace 'configure
7422 (lambda _
7423 (setenv "CONFIG_SHELL" (which "bash"))
7424 (setenv "CFLAGS" (string-append
7425 "-O2 -g "
7426 "-Wno-error=implicit-int "
7427 "-Wno-error=implicit-function-declaration"))
7428 (invoke "./configure"
7429 (string-append "--prefix=" #$output)))))))
7430 (home-page "https://www.nocrew.org/software/httptunnel.html")
7431 (synopsis "Tunnel data connections through HTTP requests")
7432 (description "httptunnel creates a bidirectional virtual data connection
7433tunnelled through HTTP (HyperText Transfer Protocol) requests. This can be
7434useful for users behind restrictive firewalls. As long as Web traffic is
7435allowed, even through a HTTP-only proxy, httptunnel can be combined with other
7436tools like SSH (Secure Shell) to reach the outside world.")
7437 (license license:gpl2+)))
7438
7439(define-public stunnel
7440 (package
7441 (name "stunnel")
7442 (version "5.75")
7443 (source
7444 (origin
7445 (method url-fetch)
7446 (uri (string-append "https://www.stunnel.org/downloads/stunnel-"
7447 version ".tar.gz"))
7448 (sha256
7449 (base32 "10snpaiq3xyijs3hxlf0qxs38f6njbxp9zllrgf78294hpnz07hc"))))
7450 (build-system gnu-build-system)
7451 (arguments
7452 (list #:configure-flags
7453 #~(list (string-append "--with-ssl="
7454 #$(this-package-input "openssl")))
7455 #:tests? (and (not (%current-target-system))
7456 (this-package-native-input "python-cryptography"))
7457 #:phases
7458 #~(modify-phases %standard-phases
7459 (add-after 'unpack 'patch-output-directories
7460 (lambda _
7461 ;; Some (not all) Makefiles have a hard-coded incorrect docdir.
7462 (substitute* (list "Makefile.in"
7463 "doc/Makefile.in"
7464 "tools/Makefile.in")
7465 (("/doc/stunnel")
7466 (string-append "/doc/" #$name "-" #$version)))))
7467 (add-after 'install 'prune-documentation
7468 (lambda _
7469 (let* ((doc (string-append #$output "/share/doc/"
7470 #$name "-" #$version)))
7471 (for-each delete-file (find-files doc "^INSTALL"))))))))
7472 (native-inputs
7473 ;; For tests.
7474 (if (supported-package? python-cryptography)
7475 (list iproute
7476 netcat
7477 procps
7478 python
7479 python-cryptography)
7480 '()))
7481 (inputs (list openssl perl))
7482 (home-page "https://www.stunnel.org")
7483 (synopsis "TLS proxy for clients or servers")
7484 (description "Stunnel is a proxy designed to add TLS encryption
7485functionality to existing clients and servers without any changes in the
7486programs' code. Its architecture is optimized for security, portability, and
7487scalability (including load-balancing), making it suitable for large
7488deployments.")
7489 (license license:gpl2+)))
7490
7491(define-public varnish
7492 (package
7493 (name "varnish")
7494 (home-page "https://varnish-cache.org/")
7495 (version "7.6.0")
7496 (source (origin
7497 (method url-fetch)
7498 (uri (string-append home-page "_downloads/varnish-" version ".tgz"))
7499 (sha256
7500 (base32
7501 "0p2xf4a8bk2w8j9q20fazrc93fwcfhw8zcvdd8ssbahvlg2q78mb"))))
7502 (build-system gnu-build-system)
7503 (arguments
7504 (append
7505 (if (target-x86-32?)
7506 '(#:make-flags
7507 (list "CFLAGS+=-fexcess-precision=standard"))
7508 '())
7509 (list
7510 #:configure-flags
7511 #~(list (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib")
7512 (string-append "CC=" #$(cc-for-target))
7513 ;; Use absolute path of GCC so it's found at runtime.
7514 (string-append "PTHREAD_CC="
7515 (search-input-file %build-inputs
7516 "/bin/gcc"))
7517 "--localstatedir=/var")
7518 #:phases
7519 #~(modify-phases %standard-phases
7520 (add-after 'unpack 'use-absolute-file-names
7521 (lambda _
7522 (substitute* '("bin/varnishtest/vtc_varnish.c"
7523 "bin/varnishtest/vtc_process.c"
7524 "bin/varnishtest/vtc_haproxy.c"
7525 "bin/varnishtest/tests/u00014.vtc"
7526 "bin/varnishd/mgt/mgt_vcc.c")
7527 (("/bin/sh") (which "bash")))
7528 (let* ((rm (which "rm")))
7529 (substitute* "bin/varnishd/mgt/mgt_shmem.c"
7530 (("rm -rf") (string-append rm " -rf")))
7531 (substitute* "bin/varnishtest/vtc_main.c"
7532 (("/bin/rm") rm))
7533 (substitute* "bin/varnishd/mgt/mgt_main.c"
7534 (("rm -rf") (string-append rm " -rf"))))
7535 (substitute* "bin/varnishtest/tests/u00000.vtc"
7536 (("/bin/echo") (which "echo")))))
7537 (add-after 'unpack 'remove-failing-tests
7538 (lambda _
7539 ;; This test seems to fail because of
7540 ;; Failed: Servname not supported for ai_socktype
7541 (delete-file "bin/varnishtest/tests/b00085.vtc")))
7542 (add-before 'install 'patch-Makefile
7543 (lambda _
7544 (substitute* "Makefile"
7545 ;; Do not create /var/varnish during install.
7546 (("^install-data-am: install-data-local")
7547 "install-data-am: "))))
7548 (add-after 'install 'wrap-varnishd
7549 ;; Varnish uses GCC to compile VCL, so wrap it with required GCC
7550 ;; environment variables to avoid propagating them to profiles.
7551 (lambda* (#:key inputs #:allow-other-keys)
7552 (wrap-program (string-append #$output "/sbin/varnishd")
7553 ;; Add binutils to PATH so gcc finds the 'as' executable.
7554 `("PATH" ":" prefix (,(dirname (which "as"))))
7555 ;; Make sure 'crti.o' et.al is found.
7556 `("LIBRARY_PATH" ":" prefix
7557 (,(dirname
7558 (search-input-file inputs "lib/libc.so")))))))))))
7559 (native-inputs
7560 (list pkg-config
7561 python-sphinx
7562 python-docutils))
7563 (inputs
7564 (list bash-minimal
7565 coreutils-minimal
7566 jemalloc
7567 ncurses
7568 pcre2
7569 python-minimal
7570 readline))
7571 (synopsis "Web application accelerator")
7572 (description
7573 "Varnish is a high-performance HTTP accelerator. It acts as a caching
7574reverse proxy and load balancer. You install it in front of any server that
7575speaks HTTP and configure it to cache the contents through an extensive
7576configuration language.")
7577 (properties
7578 '((release-monitoring-url . "https://varnish-cache.org/releases/index.html")))
7579 (license (list license:bsd-2 ;main distribution
7580 license:zlib ;lib/libvgz/*
7581 license:public-domain ;bin/varnishncsa/as64.c, include/miniobj.h
7582 license:bsd-3)))) ;include/vqueue.h, lib/libvarnishcompat/daemon.c
7583
7584(define-public varnish-modules
7585 (package
7586 (name "varnish-modules")
7587 (home-page "https://github.com/varnish/varnish-modules")
7588 (version "0.25.0")
7589 (source (origin
7590 (method git-fetch)
7591 (uri (git-reference (url home-page) (commit version)))
7592 (file-name (git-file-name name version))
7593 (sha256
7594 (base32
7595 "1jan3lwynp14awh6jk4zc052lm8m02vqms8ryc7zmjnm5jifdzlv"))))
7596 (build-system gnu-build-system)
7597 (native-inputs
7598 (list pkg-config
7599 ;; For bootstrapping.
7600 autoconf
7601 automake
7602 libtool
7603 ;; For generating manuals.
7604 python-docutils))
7605 (inputs
7606 (list python varnish))
7607 (synopsis "Collection of Varnish modules")
7608 (description
7609 "This package provides a collection of modules (@dfn{vmods}) for the Varnish
7610cache server, extending the @acronym{VCL, Varnish Configuration Language} with
7611additional capabilities.")
7612 (license license:bsd-2)))
7613
7614(define-public xinetd
7615 (package
7616 (name "xinetd")
7617 ;; This is the maintenance fork currently used by openSUSE and Debian.
7618 (version "2.3.15.4")
7619 (source
7620 (origin
7621 (method git-fetch)
7622 (uri (git-reference
7623 (url "https://github.com/openSUSE/xinetd")
7624 (commit version)))
7625 (file-name (git-file-name name version))
7626 (sha256
7627 (base32 "0lrp3lcj6azhjplwxws2rx40bkyp6i6bp7n77ndcisb7ninad30q"))))
7628 (build-system gnu-build-system)
7629 (arguments
7630 `(#:configure-flags '("--with-loadavg")
7631 #:tests? #f)) ; no tests
7632 (native-inputs
7633 (list autoconf automake libtool pkg-config))
7634 (home-page "https://github.com/openSUSE/xinetd")
7635 (synopsis "Internet services daemon")
7636 (description "@code{xinetd}, a more secure replacement for @code{inetd},
7637listens for incoming requests over a network and launches the appropriate
7638service for that request. Requests are made using port numbers as identifiers
7639and xinetd usually launches another daemon to handle the request. It can be
7640used to start services with both privileged and non-privileged port numbers.")
7641 (license (license:fsf-free "file://COPYRIGHT"))))
7642
7643(define-public tidy-html
7644 (package
7645 (name "tidy-html")
7646 (version "5.8.0")
7647 (source
7648 (origin
7649 (method git-fetch)
7650 (uri (git-reference
7651 (url "https://github.com/htacg/tidy-html5")
7652 (commit version)))
7653 (file-name (git-file-name name version))
7654 (sha256
7655 (base32
7656 "1vd50q6xqxvidaclinsm89p6r0494wj72j1gpk32vkkhhx15cddz"))))
7657 (build-system cmake-build-system)
7658 (outputs '("out"
7659 "static")) ; 1.3MiB of .a files
7660 (arguments
7661 `(#:tests? #f ; no tests available
7662 #:build-type "Release"
7663 #:phases
7664 (modify-phases %standard-phases
7665 (add-after 'install 'move-static-libraries
7666 (lambda* (#:key outputs #:allow-other-keys)
7667 ;; Move static libraries to the "static" output.
7668 (let* ((out (assoc-ref outputs "out"))
7669 (lib (string-append out "/lib"))
7670 (static (assoc-ref outputs "static"))
7671 (slib (string-append static "/lib")))
7672 (mkdir-p slib)
7673 (for-each (lambda (file)
7674 (install-file file slib)
7675 (delete-file file))
7676 (find-files lib "\\.a$"))
7677 #t))))))
7678 (native-inputs
7679 (list libxslt))
7680 (home-page "https://www.html-tidy.org/")
7681 (synopsis "HTML Tidy with HTML5 support")
7682 (description
7683 "Tidy is a console application which corrects and cleans up
7684HTML and XML documents by fixing markup errors and upgrading
7685legacy code to modern standards.
7686
7687Tidy also provides @code{libtidy}, a C static and dynamic library that
7688developers can integrate into their applications to make use of the
7689functions of Tidy.")
7690 (license license:bsd-3)))
7691
7692(define-public hiawatha
7693 (package
7694 (name "hiawatha")
7695 (version "11.2")
7696 (source
7697 (origin
7698 (method url-fetch)
7699 (uri (string-append "https://www.hiawatha-webserver.org/files/"
7700 "hiawatha-" version ".tar.gz"))
7701 (sha256
7702 (base32 "1i8vrxbvpcj6yxmshbg19gm9g8vrxds6pdra0sgld4vzj9v4zilr"))))
7703 (build-system cmake-build-system)
7704 (arguments
7705 `(#:tests? #f ; no tests included
7706 #:configure-flags (list (string-append "-DUSE_SYSTEM_MBEDTLS=on")
7707 (string-append "-DENABLE_HTTP2=on")
7708 (string-append "-DUSE_SYSTEM_NGHTTP2=on")
7709 (string-append "-DENABLE_TOMAHAWK=on")
7710 (string-append "-DLOG_DIR=/var/log/hiawatha")
7711 (string-append "-DPID_DIR=/run")
7712 (string-append "-DWEBROOT_DIR="
7713 (assoc-ref %outputs "out")
7714 "/share/hiawatha/html")
7715 (string-append "-DWORK_DIR=/var/lib/hiawatha"))
7716 #:phases
7717 (modify-phases %standard-phases
7718 (add-after 'unpack 'install-no-empty-directories
7719 (lambda _
7720 (substitute* "CMakeLists.txt"
7721 (("install\\(DIRECTORY DESTINATION" match)
7722 (string-append "#" match)))
7723 #t))
7724 (add-after 'install 'wrap
7725 (lambda* (#:key inputs outputs #:allow-other-keys)
7726 ;; Make sure 'hiawatha' finds 'mbedtls'.
7727 (let* ((out (assoc-ref outputs "out"))
7728 (sbin (string-append out "/sbin"))
7729 (mbed (assoc-ref inputs "mbedtls")))
7730 (wrap-program (string-append sbin "/hiawatha")
7731 `("PATH" ":" prefix (,mbed)))))))))
7732 (inputs
7733 ;; TODO: package "hiawatha-monitor", an optional dependency of "hiawatha".
7734 (list bash-minimal libxcrypt libxslt libxml2 mbedtls-for-hiawatha
7735 `(,nghttp2 "lib") zlib))
7736 (home-page "https://www.hiawatha-webserver.org")
7737 (synopsis "Webserver with focus on security")
7738 (description
7739 "Hiawatha has been written with security in mind.
7740Features include the ability to stop SQL injections, XSS and CSRF attacks and
7741exploit attempts.")
7742 (license license:gpl2)))
7743
7744(define-public python-httpbin
7745 (package
7746 (name "python-httpbin")
7747 (version "0.10.2")
7748 (source
7749 (origin
7750 (method url-fetch)
7751 (uri (pypi-uri "httpbin" version))
7752 (sha256
7753 (base32 "1a8pcf6411pqkpl3c5z93wml0nw4xb6j9dnjl976ij31h9llh8b3"))))
7754 (build-system pyproject-build-system)
7755 (native-inputs
7756 (list python-pytest
7757 python-setuptools))
7758 (propagated-inputs
7759 (list python-brotlicffi
7760 python-decorator
7761 python-flasgger
7762 python-flask
7763 python-greenlet
7764 python-itsdangerous
7765 python-markupsafe
7766 python-six
7767 python-werkzeug))
7768 ;; The archive in PyPI points to a fork of
7769 ;; <https://github.com/postmanlabs/httpbin> which is unmaintained for 6y,
7770 ;; where <https://github.com/Runscope/httpbin> rediects to. See
7771 ;; <https://github.com/postmanlabs/httpbin/issues/719>
7772 (home-page "https://github.com/psf/httpbin")
7773 (synopsis "HTTP request and response service")
7774 (description
7775 "Testing an HTTP Library can become difficult sometimes.
7776@code{RequestBin} is fantastic for testing POST requests, but doesn't let you
7777control the response. This exists to cover all kinds of HTTP scenarios. All
7778endpoint responses are JSON-encoded.")
7779 (license license:isc)))
7780
7781(define-public python-pytest-httpbin
7782 ;; TODO: Move to (gnu packages python-check).
7783 (package
7784 (name "python-pytest-httpbin")
7785 (version "2.1.0")
7786 (source
7787 (origin
7788 (method git-fetch)
7789 (uri (git-reference
7790 (url "https://github.com/kevin1024/pytest-httpbin")
7791 (commit (string-append "v" version))))
7792 (file-name (git-file-name name version))
7793 (sha256
7794 (base32 "1d5r21mr6cfwfqgjfrh35sjidkaq4nbihp34y0n29ag943ar8i40"))))
7795 (build-system pyproject-build-system)
7796 (native-inputs
7797 (list python-pytest-bootstrap
7798 python-requests
7799 python-setuptools))
7800 (propagated-inputs
7801 (list python-httpbin))
7802 (home-page "https://github.com/kevin1024/pytest-httpbin")
7803 (synopsis "Test your HTTP library against a local copy of httpbin")
7804 (description
7805 "@code{Pytest-httpbin} creates a @code{pytest} fixture that is
7806dependency-injected into your tests. It automatically starts up a HTTP server
7807in a separate thread running @code{httpbin} and provides your test with the
7808URL in the fixture.")
7809 (license license:expat)))
7810
7811(define-public http-parser
7812 (let ((commit "ec8b5ee63f0e51191ea43bb0c6eac7bfbff3141d")
7813 (revision "1"))
7814 (package
7815 (name "http-parser")
7816 (version (git-version "2.9.4" revision commit))
7817 (home-page "https://github.com/nodejs/http-parser")
7818 (source
7819 (origin
7820 (method git-fetch)
7821 (uri (git-reference (url home-page)
7822 (commit commit)))
7823 (sha256
7824 (base32 "0f297hrbx0kvy3qwgm9rhmbnjww6iljlcz9grsc9d4km1qj1071i"))
7825 (file-name (git-file-name name version))
7826 (patches
7827 (append
7828 (search-patches "http-parser-CVE-2020-8287.patch")
7829 (list
7830 (origin
7831 ;; Treat an empty port (e.g. `http://hostname:/`) when parsing
7832 ;; URLs as if no port were specified. This patch is applied
7833 ;; to Fedora's http-parser and to libgit2's bundled version.
7834 (method url-fetch)
7835 (uri (string-append
7836 "https://src.fedoraproject.org/rpms/http-parser/raw/"
7837 "e89b4c4e2874c19079a5a1a2d2ccc61b551aa289/"
7838 "f/0001-url-treat-empty-port-as-default.patch"))
7839 (sha256
7840 (base32
7841 "0pbxf2nq9pcn299k2b2ls8ldghaqln9glnp79gi57mamx4iy0f6g"))))))
7842 (modules '((guix build utils)))
7843 (snippet
7844 '(begin
7845 ;; This assertion fails when building for i686-linux.
7846 (substitute* "test.c"
7847 (("assert\\(sizeof\\(http_parser\\) == 32\\);")
7848 "assert(1);"))
7849 #t))))
7850 (build-system gnu-build-system)
7851 (arguments
7852 `(#:test-target "test"
7853 #:make-flags
7854 (list (string-append "PREFIX="
7855 (assoc-ref %outputs "out"))
7856 "library"
7857 ,@(if (%current-target-system)
7858 '()
7859 '("CC=gcc")))
7860 #:phases
7861 (modify-phases %standard-phases
7862 ,@(if (%current-target-system)
7863 '((replace 'configure
7864 (lambda* (#:key target #:allow-other-keys)
7865 (substitute* (find-files "." "Makefile")
7866 (("CC\\?=.*$")
7867 (string-append "CC=" target "-gcc\n"))
7868 (("AR\\?=.*$")
7869 (string-append "AR=" target "-ar\n")))
7870 #t)))
7871 '((delete 'configure))))))
7872 (synopsis "HTTP request/response parser for C")
7873 (description "This is a parser for HTTP messages written in C. It
7874parses both requests and responses. The parser is designed to be used in
7875high-performance HTTP applications. It does not make any syscalls nor
7876allocations, it does not buffer data, it can be interrupted at anytime.
7877Depending on your architecture, it only requires about 40 bytes of data per
7878message stream (in a web server that is per connection).")
7879 (license license:expat))))
7880
7881(define-public llhttp
7882 (package
7883 (name "llhttp")
7884 (version "9.1.3")
7885 (source (origin
7886 (method git-fetch)
7887 (uri (git-reference
7888 (url "https://github.com/nodejs/llhttp")
7889 (commit (string-append "release/v" version))))
7890 (file-name (git-file-name name version))
7891 (sha256
7892 (base32
7893 "1nkv64c5fs8x6n5f9f6g28w5hvg776p55cwa0f82ni548nx279s1"))))
7894 (build-system cmake-build-system)
7895 (arguments (list #:tests? #f)) ;FIXME: tests depend on node-mocha
7896 (home-page "https://github.com/nodejs/llhttp")
7897 (synopsis "Port of http_parser to llparse")
7898 (description "@code{llparse} is a port of @code{http_parser} to
7899@code{llparse} which aims making it more maintainable, verifiable and
7900efficient where possible.")
7901 (license license:expat)))
7902
7903(define-public jo
7904 (package
7905 (name "jo")
7906 (version "1.9")
7907 (source
7908 (origin
7909 (method url-fetch)
7910 (uri (string-append "https://github.com/jpmens/jo/releases/download/"
7911 version "/jo-" version ".tar.gz"))
7912 (sha256
7913 (base32 "17y73657z5v792ik3plcvk9f5g5h2yawv6afahhkq42159pwv581"))))
7914 (build-system gnu-build-system)
7915 (home-page "https://github.com/jpmens/jo")
7916 (synopsis "Output JSON from a shell")
7917 (description "@command{jo} is a command-line utility to create JSON objects
7918or arrays. It creates a JSON string on stdout from words provided as
7919command-line arguments or read from stdin.")
7920 (license (list license:gpl2+
7921 license:expat)))) ; json.c, json.h
7922
7923(define-public python-internetarchive
7924 (package
7925 (name "python-internetarchive")
7926 (version "5.11.1")
7927 (source
7928 (origin
7929 (method git-fetch)
7930 (uri (git-reference
7931 (url "https://github.com/jjjake/internetarchive")
7932 (commit (string-append "v" version))))
7933 (file-name (git-file-name name version))
7934 (sha256
7935 (base32
7936 "1l71qyhmhfwyb4zqprkg4585wsbarnryhbk6rh5idh835yj17d1b"))))
7937 (build-system pyproject-build-system)
7938 (arguments
7939 (list
7940 #:test-flags
7941 ;; Run only the offline test suite.
7942 '(list "-m" "not network")))
7943 (propagated-inputs
7944 (list python-jsonpatch
7945 python-requests
7946 python-schema
7947 python-tqdm
7948 python-urllib3))
7949 (native-inputs
7950 (list nss-certs-for-test
7951 python-pytest
7952 python-responses
7953 python-setuptools
7954 python-wheel))
7955 (home-page "https://github.com/jjjake/internetarchive")
7956 (synopsis "Command-line interface to archive.org")
7957 (description "@code{ia} is a command-line tool for using
7958@url{archive.org} from the command-line. It also implements the
7959internetarchive python module for programmatic access to archive.org.")
7960 (license license:agpl3+)))
7961
7962(define-public python-clf
7963 (let ((commit-test-clf "d01d25923c599d3261910f79fb948825b4270d07")) ; 0.5.7
7964 (package
7965 (name "python-clf")
7966 (version "0.5.7")
7967 (source
7968 (origin
7969 (method url-fetch)
7970 (uri (pypi-uri "clf" version))
7971 (sha256
7972 (base32
7973 "0zlkzqnpz7a4iavsq5vaz0nf5nr7qm5znpg1vlpz6rwnx6hikjdb"))))
7974 (build-system pyproject-build-system)
7975 (arguments
7976 (list
7977 #:test-flags
7978 #~(list
7979 ;; These tests require an Internet connection.
7980 "--exclude=test_browse"
7981 "--exclude=test_command"
7982 "--exclude=test_search")
7983 #:phases
7984 #~(modify-phases %standard-phases
7985 (add-after 'unpack 'get-tests
7986 (lambda* (#:key inputs #:allow-other-keys)
7987 (copy-file (assoc-ref inputs "test-clf") "test_clf.py"))))))
7988 (propagated-inputs
7989 (list python-docopt
7990 python-pygments
7991 python-requests))
7992 (inputs
7993 `(("test-clf"
7994 ,(origin
7995 (method url-fetch)
7996 (uri (string-append "https://raw.githubusercontent.com"
7997 "/ncrocfer/clf/" commit-test-clf
7998 "/test_clf.py"))
7999 (sha256
8000 (base32
8001 "19lr5zdzsmxgkg7wrjq1yzkiahd03wi4k3dskssyhmjls8c10nqd"))))))
8002 (native-inputs (list python-pynose python-setuptools))
8003 (home-page "https://github.com/ncrocfer/clf")
8004 (synopsis "Search code snippets on @url{https://commandlinefu.com}")
8005 (description "@code{clf} is a command line tool for searching code
8006snippets on @url{https://commandlinefu.com}.")
8007 (license license:expat))))
8008
8009(define-public nntpit
8010 (let ((commit "c0d654736460d174a680b2e06c3a81ce883fc09a")
8011 (revision "0"))
8012 (package
8013 (name "nntpit")
8014 (version (git-version "0" revision commit))
8015 (source (origin
8016 (method git-fetch)
8017 (uri (git-reference
8018 (url "https://github.com/taviso/nntpit")
8019 (commit commit)))
8020 (file-name (git-file-name name version))
8021 (sha256
8022 (base32
8023 "1kkdh2qpkfw97hzw9jsxy5jzmhhv8261bj63mvr5c9qwlp6qs46g"))))
8024 (build-system gnu-build-system)
8025 (native-inputs (list autoconf automake glib pkg-config))
8026 (inputs (list curl json-c libev))
8027 (synopsis "Minimal reddit2nntp gateway server")
8028 (description
8029 "This is a simple reddit2nntp gateway server that lets you use a newsreader
8030 to follow discussions on reddit. The intention is for you to run it locally,
8031 tell your newsreader to connect to localhost, and subreddits will appear as newsgroups!")
8032 (home-page "https://github.com/taviso/nntpit")
8033 (license license:expat))))
8034
8035(define-public rdrview
8036 (package
8037 (name "rdrview")
8038 (version "0.1.5")
8039 (source
8040 (origin
8041 (method git-fetch)
8042 (uri (git-reference
8043 (url "https://github.com/eafer/rdrview")
8044 (commit (string-append "v" version))))
8045 (file-name (git-file-name name version))
8046 (sha256
8047 (base32 "115qc7qpq899jzkna28brjni0m2a50g1li52kg9pqykgsp15f6z4"))))
8048 (build-system gnu-build-system)
8049 (arguments
8050 (list
8051 #:tests? #f ;they seem to require user input.
8052 #:make-flags
8053 #~(list (string-append "CC=" #$(cc-for-target))
8054 (string-append "PREFIX=" #$output))
8055 #:phases
8056 #~(modify-phases %standard-phases
8057 (delete 'configure))))
8058 (inputs (list curl libseccomp libxml2))
8059 (home-page "https://github.com/eafer/rdrview")
8060 (synopsis "Firefox reader view as a command line tool")
8061 (description
8062 "@code{rdrview} is command line tool to extract the main content from a
8063webpage, as done by the reader view feature of most modern browsers.")
8064 (license license:apsl2)))
8065
8066(define-public rss-bridge
8067 (package
8068 (name "rss-bridge")
8069 (version "2020-11-10")
8070 (source
8071 (origin
8072 (method git-fetch)
8073 (uri (git-reference
8074 (url "https://github.com/RSS-Bridge/rss-bridge")
8075 (commit version)))
8076 (file-name (git-file-name name version))
8077 (sha256
8078 (base32 "1mir6mcm37sbdrhl5kgs6schpp3l4r5mfamhiic0yfbz4hqwmg44"))))
8079 (build-system copy-build-system)
8080 (arguments
8081 '(#:install-plan
8082 '(("." "share/rss-bridge"))
8083 #:phases
8084 (modify-phases %standard-phases
8085 ;;Change paths to not use source directory.
8086 (add-before 'install 'patch-paths
8087 (lambda _
8088 (substitute* "lib/rssbridge.php"
8089 (("PATH_ROOT . 'cache/'")
8090 "'/var/cache/rss-bridge/'")
8091 (("PATH_ROOT . 'whitelist.txt'")
8092 "'/etc/rss-bridge/whitelist.txt'")
8093 (("PATH_ROOT . 'config.ini.php'")
8094 "'/etc/rss-bridge/config.ini.php'")))))))
8095 (home-page "https://github.com/RSS-Bridge/rss-bridge")
8096 (synopsis "Generate Atom feeds for social networking websites")
8097 (description "rss-bridge generates Atom feeds for social networking
8098websites lacking feeds. Supported websites include Facebook, Twitter,
8099Instagram and YouTube.")
8100 (license (list license:public-domain
8101 license:expat)))) ; vendor/simplehtmldom/simple_html_dom.php
8102
8103(define-public linkchecker
8104 (package
8105 (name "linkchecker")
8106 (version "10.5.0")
8107 (source
8108 (origin
8109 (method git-fetch)
8110 (uri (git-reference
8111 (url "https://github.com/linkchecker/linkchecker")
8112 (commit (string-append "v" version))))
8113 (file-name (git-file-name name version))
8114 (sha256
8115 (base32 "19giahk5bs2r2ay54cc6b2ba5hr3lszn5a89m7zmwb0bk9655z56"))))
8116 (build-system pyproject-build-system)
8117 (arguments
8118 (list
8119 #:test-flags
8120 #~(list
8121 ;; OSError: Command ... '-m', 'linkcheck', '-V']' returned non-zero
8122 ;; exit status 2.
8123 "--deselect=tests/test_linkchecker.py::TestLinkchecker::test_linkchecker"
8124 ;; FileNotFoundError: [Errno 2] No such file or directory: 'msgfmt'
8125 "--deselect=tests/test_po.py::TestPo::test_pos")))
8126 (native-inputs
8127 (list python-hatch-vcs
8128 python-hatchling
8129 python-pytest
8130 python-setuptools-scm))
8131 (inputs
8132 (list python-beautifulsoup4
8133 python-dnspython
8134 python-requests))
8135 (home-page "https://linkchecker.github.io/linkchecker/")
8136 (synopsis "Check websites for broken links")
8137 (description "LinkChecker is a website validator. It checks for broken
8138links in websites. It is recursive and multithreaded providing output in
8139colored or normal text, HTML, SQL, CSV, XML or as a sitemap graph. It
8140supports checking HTTP/1.1, HTTPS, FTP, mailto, news, nntp, telnet and local
8141file links.")
8142 (license (list license:gpl2+
8143 license:bsd-2 ; linkcheck/better_exchook2.py
8144 license:bsd-3 ; linkcheck/colorama.py
8145 license:psfl ; linkcheck/gzip2.py
8146 license:expat)))) ; linkcheck/mem.py
8147
8148(define-public castor
8149 (package
8150 (name "castor")
8151 (version "0.9.0")
8152 (source
8153 (origin
8154 (method git-fetch)
8155 (uri (git-reference
8156 (url "https://git.sr.ht/~julienxx/castor")
8157 (commit version)))
8158 (file-name (git-file-name name version))
8159 (sha256
8160 (base32 "1gda77ya2qbmjxfbw3yfr64inm8xw8243iwnfsgwwiwl35pw70n9"))))
8161 (build-system cargo-build-system)
8162 (arguments
8163 (list
8164 #:phases
8165 #~(modify-phases %standard-phases
8166 (add-after 'unpack 'relax-cargo-requirements
8167 (lambda _
8168 (substitute* "Cargo.toml" (("~") ""))))
8169 (add-after 'install 'install-data
8170 (lambda _
8171 (invoke "make" (string-append "PREFIX=" #$output)
8172 "copy-data"))))
8173 #:parallel-tests? #f ; As per the Makefile
8174 #:install-source? #f))
8175 (native-inputs
8176 (list pkg-config))
8177 (inputs
8178 (cons* at-spi2-core
8179 cairo
8180 gdk-pixbuf
8181 gtk+
8182 openssl
8183 pango
8184 (cargo-inputs 'castor)))
8185 (home-page "https://git.sr.ht/~julienxx/castor")
8186 (synopsis "Graphical client for plain-text protocols")
8187 (description
8188 "Castor is a graphical client for plain-text protocols written in
8189Rust with GTK. It currently supports the Gemini, Gopher and Finger
8190protocols.")
8191 (license license:expat)))
8192
8193(define-public civetweb
8194 (package
8195 (name "civetweb")
8196 (version "1.16")
8197 (source
8198 (origin
8199 (method git-fetch)
8200 (uri (git-reference
8201 (url "https://github.com/civetweb/civetweb")
8202 (commit (string-append "v" version))))
8203 (file-name (git-file-name name version))
8204 (sha256
8205 (base32 "1rdajgr0243ma8sg7qn03v6f8pnbj9w2dghi751zrdg1d1zzjxkr"))))
8206 (build-system cmake-build-system)
8207 (arguments
8208 (list
8209 #:tests? #f
8210 #:configure-flags
8211 #~(list "-DBUILD_SHARED_LIBS=ON"
8212 "-DCIVETWEB_ENABLE_CXX=ON"
8213 "-DCIVETWEB_ENABLE_ZLIB=ON"
8214 ;; The tests rely on downloading their fork of Check.
8215 "-DCIVETWEB_BUILD_TESTING=OFF")))
8216 (inputs (list zlib))
8217 (home-page "https://github.com/civetweb/civetweb")
8218 (synopsis "C/C++ embeddable web server")
8219 (description
8220 "CivetWeb is a web server with optional @acronym{CGI, Common Gateway
8221Interface} and @acronym{SSL, Secure Sockets Layer} support. It can be
8222embedded into C/C++ applications or used as a standalone web server.")
8223 (license license:expat)))
8224
8225(define-public copyparty
8226 (package
8227 (name "copyparty")
8228 (version "1.20.16")
8229 (source
8230 (origin
8231 (method git-fetch)
8232 (uri (git-reference
8233 (url "https://github.com/9001/copyparty")
8234 (commit (string-append "v" version))))
8235 (sha256
8236 (base32 "01jhj8kb6xh50401qfrcgbyvq6xyngjnqxaj0f6hi1vmy78kq9j4"))
8237 (modules '((guix build utils)))
8238 (snippet
8239 ;; The modules in this directory are meant to be de-vendorable.
8240 #~(delete-file-recursively "copyparty/stolen"))))
8241 (build-system pyproject-build-system)
8242 (arguments
8243 (list #:test-backend #~'unittest))
8244 (native-inputs
8245 (list python-setuptools))
8246 (propagated-inputs
8247 (list python-dnslib
8248 python-ifaddr
8249 python-jinja2
8250 python-mfusepy
8251 python-qrcodegen))
8252 (home-page "https://github.com/9001/copyparty")
8253 (synopsis "Portable file server")
8254 (description
8255 "@code{copyparty} is a file server featuring fast, resumable uploads,
8256deduplication, WebDAV, FTP/TFTP, SMP/CIFS, upnp/zeroconf/mdns, video
8257thumbnails, audio streaming with transcoding, search, and account-based access
8258control.")
8259 (license license:expat)))
8260
8261(define-public python-py-ubjson
8262 (package
8263 (name "python-py-ubjson")
8264 (version "0.16.1")
8265 (source
8266 (origin
8267 (method git-fetch)
8268 (uri (git-reference
8269 (url "https://github.com/Iotic-Labs/py-ubjson/")
8270 (commit (string-append "v" version))))
8271 (file-name (git-file-name name version))
8272 (sha256
8273 (base32 "1frn97xfa88zrfmpnvdk1pc03yihlchhph99bhjayvzlfcrhm5v3"))
8274 (patches
8275 (search-patches "python-py-ubjson-recursion-test.patch"))))
8276 (build-system pyproject-build-system)
8277 (arguments (list #:test-backend #~'unittest))
8278 (native-inputs (list python-setuptools))
8279 (home-page "https://github.com/Iotic-Labs/py-ubjson")
8280 (synopsis "Universal Binary JSON encoder/decoder")
8281 (description
8282 "Py-ubjson is a Python module providing an Universal Binary JSON
8283encoder/decoder based on the draft-12 specification for UBJSON.")
8284 (license license:asl2.0)))
8285
8286(define-public java-tomcat
8287 (package
8288 (name "java-tomcat")
8289 (version "8.5.63")
8290 (source (origin
8291 (method url-fetch)
8292 (uri (string-append "mirror://apache/tomcat/tomcat-8/v"
8293 version "/src/apache-tomcat-" version "-src.tar.gz"))
8294 (sha256
8295 (base32
8296 "1wr6mpgbk2gs18vp8mdggiq6vifj68a875dd1fkdf7cs31q54rns"))
8297 (modules '((guix build utils)))
8298 ;; Delete bundled jars.
8299 (snippet
8300 '(begin
8301 (for-each delete-file (find-files "." "\\.jar$"))
8302 (for-each delete-file (find-files "." "\\.bat$"))
8303 #t))))
8304 (build-system ant-build-system)
8305 (inputs
8306 (list java-commons-daemon java-ecj))
8307 (arguments
8308 `(#:build-target "deploy"
8309 #:tests? #f; requires downloading some files.
8310 #:phases
8311 (modify-phases %standard-phases
8312 (add-after 'unpack 'prevent-download
8313 (lambda _
8314 ;; This directory must exist
8315 (mkdir "downloads")
8316 ;; We patch build.xml so it doesn't download any dependency, because
8317 ;; we already have all of them.
8318 (substitute* "build.xml"
8319 (("download-compile,") "")
8320 (("depends=\"validate\"") "depends=\"build-prepare\"")
8321 ((",download-validate") ""))
8322 #t))
8323 (add-after 'unpack 'strip-timestamps
8324 (lambda _
8325 (substitute* "build.xml"
8326 (("<filter token=\"YEAR\" value=.*")
8327 "<filter token=\"YEAR\" value=\"1970\"/>")
8328 (("<filter token=\"VERSION_BUILT\" value=.*")
8329 "<filter token=\"VERSION_BUILT\" value=\"Jan 1 1970 00:00:00 UTC\"/>"))
8330 #t))
8331 (add-after 'unpack 'modify-deploy
8332 (lambda _
8333 ;; The Tomcat build downloads and copies these files to the
8334 ;; bin and lib directory.
8335 ;; We instead symlink to the input (see below).
8336 (substitute* "build.xml"
8337 (("<copy tofile=\"\\$\\{tomcat.build\\}/bin/commons-daemon.jar.*") "")
8338 (("<copy file=\"\\$\\{jdt.jar\\}\" todir=\"\\$\\{tomcat.build\\}/lib\"/>")
8339 ""))
8340 #t))
8341 (add-after 'install 'symlink-commons-daemon
8342 (lambda* (#:key inputs outputs #:allow-other-keys)
8343 (let* ((commons-daemon (assoc-ref inputs "java-commons-daemon"))
8344 (files (find-files commons-daemon "commons-daemon-.*\\.jar"))
8345 (daemon-jar (car files))
8346 (out-bin (string-append (assoc-ref outputs "out") "/bin"))
8347 (target (string-append out-bin "/commons-daemon.jar")))
8348 (symlink daemon-jar target)
8349 #t)))
8350 (add-after 'install 'symlink-java-ecj
8351 (lambda* (#:key inputs outputs #:allow-other-keys)
8352 (let* ((java-ecj (assoc-ref inputs "java-ecj"))
8353 (files (find-files java-ecj "ecj.*\\.jar"))
8354 (java-ecj-jar (car files))
8355 (out-lib (string-append (assoc-ref outputs "out") "/lib"))
8356 (target (string-append out-lib "/java-ecj.jar")))
8357 (symlink java-ecj-jar target)
8358 #t)))
8359 (add-after 'unpack 'generate-properties
8360 (lambda _
8361 ;; This could have been passed to make-flags, but getcwd returns
8362 ;; a different directory then.
8363 (with-output-to-file "build.properties"
8364 (lambda _
8365 (display
8366 (string-append "base.path=" (getcwd) "/downloads\n"))))
8367 #t))
8368 (replace 'install
8369 (lambda* (#:key outputs #:allow-other-keys)
8370 (let ((out (assoc-ref outputs "out")))
8371 (copy-recursively "output/build" out))
8372 #t)))))
8373 (properties '((cpe-name . "tomcat")))
8374 (home-page "https://tomcat.apache.org")
8375 (synopsis "Java Servlet, JavaServer Pages, Java Expression Language and Java
8376WebSocket")
8377 (description "Apache Tomcat is a free implementation of the Java
8378Servlet, JavaServer Pages, Java Expression Language and Java WebSocket
8379technologies.")
8380 (license license:asl2.0)))
8381
8382(define-public java-eclipse-jetty-test-helper
8383 (package
8384 (name "java-eclipse-jetty-test-helper")
8385 (version "4.2")
8386 (source (origin
8387 (method git-fetch)
8388 (uri (git-reference
8389 (url "https://github.com/eclipse/jetty.toolchain/")
8390 (commit (string-append "jetty-test-helper-" version))))
8391 (file-name (git-file-name name version))
8392 (sha256
8393 (base32
8394 "1g7cdh03nfwbdxzvwm84ysgvw08xx7431lsjryj2gmf3lrqpizgb"))))
8395 (build-system ant-build-system)
8396 (arguments
8397 `(#:jar-name "eclipse-jetty-test-helper.jar"
8398 #:source-dir "src/main/java"
8399 #:test-dir "src/test"
8400 #:jdk ,icedtea-8
8401 #:phases
8402 (modify-phases %standard-phases
8403 (add-before 'configure 'chdir
8404 (lambda _
8405 (chdir "jetty-test-helper")
8406 #t))
8407 (add-before 'build 'fix-paths
8408 (lambda _
8409 ;; TODO:
8410 ;; This file assumes that the build directory is named "target"
8411 ;; but it is not the case with our ant-build-system. Once we have
8412 ;; maven though, we will have to rebuild this package because this
8413 ;; assumption is correct with maven-build-system.
8414 (substitute*
8415 "src/main/java/org/eclipse/jetty/toolchain/test/MavenTestingUtils.java"
8416 (("\"target\"") "\"build\"")
8417 (("\"tests\"") "\"test-classes\""))
8418 ;; Tests assume we are building with maven, so that the build
8419 ;; directory is named "target", and not "build".
8420 (with-directory-excursion "src/test/java/org/eclipse/jetty/toolchain/test"
8421 (substitute* '("FSTest.java" "OSTest.java" "TestingDirTest.java"
8422 "MavenTestingUtilsTest.java")
8423 (("target/tests") "build/test-classes")
8424 (("\"target") "\"build")))
8425 #t)))))
8426 (inputs
8427 `(("junit" ,java-junit)
8428 ("hamcrest" ,java-hamcrest-all)))
8429 (home-page "https://www.eclipse.org/jetty/")
8430 (synopsis "Helper classes for jetty tests")
8431 (description "This package contains helper classes for testing the Jetty
8432Web Server.")
8433 ;; This program is licensed under both epl and asl.
8434 (license (list license:epl1.0 license:asl2.0))))
8435
8436(define-public java-eclipse-jetty-perf-helper
8437 (package
8438 (inherit java-eclipse-jetty-test-helper)
8439 (name "java-eclipse-jetty-perf-helper")
8440 (arguments
8441 `(#:jar-name "eclipse-jetty-perf-helper.jar"
8442 #:source-dir "src/main/java"
8443 #:tests? #f; no tests
8444 #:jdk ,icedtea-8
8445 #:phases
8446 (modify-phases %standard-phases
8447 (add-before 'configure 'chdir
8448 (lambda _
8449 (chdir "jetty-perf-helper")
8450 #t)))))
8451 (inputs
8452 `(("hdrhistogram" ,java-hdrhistogram)))))
8453
8454(define-public java-eclipse-jetty-util
8455 (package
8456 (name "java-eclipse-jetty-util")
8457 (version "9.4.39")
8458 (source (origin
8459 (method url-fetch)
8460 (uri (string-append "https://github.com/eclipse/jetty.project/"
8461 "archive/jetty-" version ".v20210325.tar.gz"))
8462 (sha256
8463 (base32
8464 "0b4hy4zmdmfbqk9bzmxk7v75y2ysqiappkip4z3hb9lxjvjh0b19"))))
8465 (build-system ant-build-system)
8466 (arguments
8467 `(#:jar-name "eclipse-jetty-util.jar"
8468 #:source-dir "src/main/java"
8469 #:tests? #f; require junit 5
8470 #:test-exclude
8471 (list "**/Abstract*.java"
8472 ;; requires network
8473 "**/InetAddressSetTest.java"
8474 ;; Assumes we are using maven
8475 "**/TypeUtilTest.java"
8476 ;; Error on the style of log
8477 "**/StdErrLogTest.java")
8478 #:jdk ,icedtea-8
8479 #:phases
8480 (modify-phases %standard-phases
8481 (add-before 'configure 'chdir
8482 (lambda _
8483 (chdir "jetty-util")
8484 #t)))))
8485 (inputs
8486 `(("slf4j" ,java-slf4j-api)
8487 ("servlet" ,java-javaee-servletapi)))
8488 (home-page "https://www.eclipse.org/jetty/")
8489 (synopsis "Utility classes for Jetty")
8490 (description "The Jetty Web Server provides an HTTP server and Servlet
8491container capable of serving static and dynamic content either from a standalone
8492or embedded instantiation. This package provides utility classes.")
8493 (license (list license:epl1.0 license:asl2.0))))
8494
8495;; This version is required by maven-wagon
8496(define-public java-eclipse-jetty-util-9.2
8497 (package
8498 (inherit java-eclipse-jetty-util)
8499 (version "9.2.22")
8500 (source (origin
8501 (method url-fetch)
8502 (uri (string-append "https://github.com/eclipse/jetty.project/"
8503 "archive/jetty-" version ".v20170606.tar.gz"))
8504 (sha256
8505 (base32
8506 "1i51qlsd7h06d35kx5rqpzbfadbcszycx1iwr6vz7qc9gf9f29la"))))
8507 (arguments
8508 `(#:jar-name "eclipse-jetty-util.jar"
8509 #:source-dir "src/main/java"
8510 #:jdk ,icedtea-8
8511 #:test-exclude
8512 (list "**/Abstract*.java"
8513 ;; requires network
8514 "**/InetAddressSetTest.java"
8515 ;; Assumes we are using maven
8516 "**/TypeUtilTest.java"
8517 ;; We don't have an implementation for slf4j
8518 "**/LogTest.java"
8519 ;; Error on the style of log
8520 "**/StdErrLogTest.java")
8521 #:phases
8522 (modify-phases %standard-phases
8523 (add-before 'configure 'chdir
8524 (lambda _
8525 (chdir "jetty-util")
8526 #t))
8527 (add-before 'build 'fix-test-sources
8528 (lambda _
8529 ;; We need to fix issues caused by changes in newer versions of
8530 ;; jetty-test-helper
8531 (let ((src "src/test/java/org/eclipse/jetty/util/resource"))
8532 (substitute* (string-append src "/AbstractFSResourceTest.java")
8533 (("testdir.getDir\\(\\)") "testdir.getPath().toFile()")
8534 (("testdir.getFile\\(\"foo\"\\)")
8535 "testdir.getPathFile(\"foo\").toFile()")
8536 (("testdir.getFile\\(name\\)")
8537 "testdir.getPathFile(name).toFile()")))
8538 #t)))))
8539 (native-inputs
8540 `(("java-junit" ,java-junit)
8541 ("java-hamcrest-all" ,java-hamcrest-all)
8542 ("perf-helper" ,java-eclipse-jetty-perf-helper)
8543 ("test-helper" ,java-eclipse-jetty-test-helper)))))
8544
8545(define-public java-eclipse-jetty-io
8546 (package
8547 (inherit java-eclipse-jetty-util)
8548 (name "java-eclipse-jetty-io")
8549 (arguments
8550 `(#:jar-name "eclipse-jetty-io.jar"
8551 #:source-dir "src/main/java"
8552 #:jdk ,icedtea-8
8553 #:tests? #f; require junit 5
8554 #:test-exclude (list "**/Abstract*.java"
8555 ;; Abstract class
8556 "**/EndPointTest.java")
8557 #:phases
8558 (modify-phases %standard-phases
8559 (add-before 'configure 'chdir
8560 (lambda _
8561 (chdir "jetty-io")
8562 #t)))))
8563 (inputs
8564 `(("slf4j" ,java-slf4j-api)
8565 ("servlet" ,java-javaee-servletapi)
8566 ("util" ,java-eclipse-jetty-util)))
8567 (synopsis "Jetty :: IO Utility")
8568 (description "The Jetty Web Server provides an HTTP server and Servlet
8569container capable of serving static and dynamic content either from a standalone
8570or embedded instantiation. This package provides IO-related utility classes.")))
8571
8572(define-public java-eclipse-jetty-io-9.2
8573 (package
8574 (inherit java-eclipse-jetty-io)
8575 (version (package-version java-eclipse-jetty-util-9.2))
8576 (source (package-source java-eclipse-jetty-util-9.2))
8577 (inputs
8578 `(("util" ,java-eclipse-jetty-util-9.2)
8579 ,@(package-inputs java-eclipse-jetty-util-9.2)))
8580 (native-inputs
8581 `(("mockito" ,java-mockito-1)
8582 ("cglib" ,java-cglib)
8583 ("objenesis" ,java-objenesis)
8584 ("asm" ,java-asm)
8585 ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
8586
8587(define-public java-eclipse-jetty-http
8588 (package
8589 (inherit java-eclipse-jetty-util)
8590 (name "java-eclipse-jetty-http")
8591 (arguments
8592 `(#:jar-name "eclipse-jetty-http.jar"
8593 #:source-dir "src/main/java"
8594 #:jdk ,icedtea-8
8595 #:tests? #f; require junit 5
8596 #:phases
8597 (modify-phases %standard-phases
8598 (add-before 'configure 'chdir
8599 (lambda _
8600 (chdir "jetty-http")
8601 #t))
8602 (add-before 'build 'copy-resources
8603 (lambda _
8604 (mkdir-p "build/classes")
8605 (copy-recursively "src/main/resources/" "build/classes/")
8606 #t)))))
8607 (inputs
8608 `(("slf4j" ,java-slf4j-api)
8609 ("servlet" ,java-javaee-servletapi)
8610 ("io" ,java-eclipse-jetty-io)
8611 ("util" ,java-eclipse-jetty-util)))
8612 (synopsis "Jetty :: Http Utility")
8613 (description "The Jetty Web Server provides an HTTP server and Servlet
8614container capable of serving static and dynamic content either from a standalone
8615or embedded instantiation. This package provides HTTP-related utility classes.")))
8616
8617(define-public java-eclipse-jetty-http-9.2
8618 (package
8619 (inherit java-eclipse-jetty-http)
8620 (version (package-version java-eclipse-jetty-util-9.2))
8621 (source (package-source java-eclipse-jetty-util-9.2))
8622 (inputs
8623 `(("util" ,java-eclipse-jetty-util-9.2)
8624 ("io" ,java-eclipse-jetty-io-9.2)
8625 ,@(package-inputs java-eclipse-jetty-util-9.2)))))
8626
8627(define-public java-eclipse-jetty-jmx
8628 (package
8629 (inherit java-eclipse-jetty-util)
8630 (name "java-eclipse-jetty-jmx")
8631 (arguments
8632 `(#:jar-name "eclipse-jetty-jmx.jar"
8633 #:source-dir "src/main/java"
8634 #:jdk ,icedtea-8
8635 #:tests? #f; FIXME: requires com.openpojo.validation
8636 #:phases
8637 (modify-phases %standard-phases
8638 (add-before 'configure 'chdir
8639 (lambda _
8640 (chdir "jetty-jmx")
8641 #t)))))
8642 (inputs
8643 `(("slf4j" ,java-slf4j-api)
8644 ("servlet" ,java-javaee-servletapi)
8645 ("util" ,java-eclipse-jetty-util)))
8646 (synopsis "Jetty :: JMX Management")
8647 (description "The Jetty Web Server provides an HTTP server and Servlet
8648container capable of serving static and dynamic content either from a standalone
8649or embedded instantiation. This package provides the JMX management.")))
8650
8651(define-public java-eclipse-jetty-jmx-9.2
8652 (package
8653 (inherit java-eclipse-jetty-jmx)
8654 (version (package-version java-eclipse-jetty-util-9.2))
8655 (source (package-source java-eclipse-jetty-util-9.2))
8656 (inputs
8657 `(("util" ,java-eclipse-jetty-util-9.2)
8658 ,@(package-inputs java-eclipse-jetty-util-9.2)))))
8659
8660(define java-eclipse-jetty-http-test-classes
8661 (package
8662 (inherit java-eclipse-jetty-util)
8663 (name "java-eclipse-jetty-http-test-classes")
8664 (arguments
8665 `(#:jar-name "eclipse-jetty-http.jar"
8666 #:source-dir "src/test"
8667 #:tests? #f
8668 #:jdk ,icedtea-8
8669 #:phases
8670 (modify-phases %standard-phases
8671 (add-before 'configure 'chdir
8672 (lambda _
8673 (chdir "jetty-http")
8674 #t)))))
8675 (inputs
8676 `(("slf4j" ,java-slf4j-api)
8677 ("java-javaee-servletapi" ,java-javaee-servletapi)
8678 ("http" ,java-eclipse-jetty-http)
8679 ("io" ,java-eclipse-jetty-io)
8680 ("util" ,java-eclipse-jetty-util)))))
8681
8682(define java-eclipse-jetty-http-test-classes-9.2
8683 (package
8684 (inherit java-eclipse-jetty-http-test-classes)
8685 (version (package-version java-eclipse-jetty-util-9.2))
8686 (source (package-source java-eclipse-jetty-util-9.2))
8687 (inputs
8688 `(("http" ,java-eclipse-jetty-http-9.2)
8689 ,@(package-inputs java-eclipse-jetty-http-9.2)))
8690 (native-inputs (package-native-inputs java-eclipse-jetty-util-9.2))))
8691
8692(define-public java-eclipse-jetty-server
8693 (package
8694 (inherit java-eclipse-jetty-util)
8695 (name "java-eclipse-jetty-server")
8696 (arguments
8697 `(#:jar-name "eclipse-jetty-server.jar"
8698 #:source-dir "src/main/java"
8699 #:jdk ,icedtea-8
8700 #:tests? #f; requires a mockito version we don't have
8701 #:phases
8702 (modify-phases %standard-phases
8703 (add-before 'configure 'chdir
8704 (lambda _
8705 (chdir "jetty-server")
8706 #t))
8707 (add-before 'build 'fix-source
8708 (lambda _
8709 ;; Explicit casts to prevent build failures
8710 (substitute* "src/main/java/org/eclipse/jetty/server/Request.java"
8711 (("append\\(LazyList")
8712 "append((CharSequence)LazyList"))
8713 (substitute*
8714 "src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java"
8715 (((string-append
8716 "Class<\\? extends EventListener> clazz = _classLoader==null"
8717 "\\?Loader.loadClass\\(ContextHandler.class,className\\):"
8718 "_classLoader.loadClass\\(className\\);"))
8719 (string-append "Class<? extends EventListener> clazz = "
8720 "(Class<? extends EventListener>) "
8721 "(_classLoader==null?Loader.loadClass("
8722 "ContextHandler.class,className):"
8723 "_classLoader.loadClass(className));")))
8724 #t)))))
8725 (inputs
8726 `(("slf4j" ,java-slf4j-api)
8727 ("servlet" ,java-javaee-servletapi)
8728 ("http" ,java-eclipse-jetty-http)
8729 ("io" ,java-eclipse-jetty-io)
8730 ("jmx" ,java-eclipse-jetty-jmx)
8731 ("util" ,java-eclipse-jetty-util)))
8732 (synopsis "Core jetty server artifact")
8733 (description "The Jetty Web Server provides an HTTP server and Servlet
8734container capable of serving static and dynamic content either from a standalone
8735or embedded instantiation. This package provides the core jetty server
8736artifact.")))
8737
8738(define-public java-eclipse-jetty-server-9.2
8739 (package
8740 (inherit java-eclipse-jetty-server)
8741 (version (package-version java-eclipse-jetty-util-9.2))
8742 (source (package-source java-eclipse-jetty-util-9.2))
8743 (inputs
8744 `(("util" ,java-eclipse-jetty-util-9.2)
8745 ("jmx" ,java-eclipse-jetty-jmx-9.2)
8746 ("io" ,java-eclipse-jetty-io-9.2)
8747 ("http" ,java-eclipse-jetty-http-9.2)
8748 ,@(package-inputs java-eclipse-jetty-util-9.2)))
8749 (native-inputs
8750 `(("test-classes" ,java-eclipse-jetty-http-test-classes-9.2)
8751 ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
8752
8753(define-public java-eclipse-jetty-security
8754 (package
8755 (inherit java-eclipse-jetty-util)
8756 (name "java-eclipse-jetty-security")
8757 (arguments
8758 `(#:jar-name "eclipse-jetty-security.jar"
8759 #:source-dir "src/main/java"
8760 #:jdk ,icedtea-8
8761 #:tests? #f; require junit 5
8762 #:test-exclude (list "**/ConstraintTest.*") ; This test fails
8763 #:phases
8764 (modify-phases %standard-phases
8765 (add-before 'configure 'chdir
8766 (lambda _
8767 (chdir "jetty-security")
8768 #t)))))
8769 (inputs
8770 `(("slf4j" ,java-slf4j-api)
8771 ("servlet" ,java-javaee-servletapi)
8772 ("http" ,java-eclipse-jetty-http)
8773 ("server" ,java-eclipse-jetty-server)
8774 ("util" ,java-eclipse-jetty-util)))
8775 (synopsis "Jetty security infrastructure")
8776 (description "The Jetty Web Server provides an HTTP server and Servlet
8777container capable of serving static and dynamic content either from a standalone
8778or embedded instantiation. This package provides the core jetty security
8779infrastructure")))
8780
8781(define-public java-eclipse-jetty-security-9.2
8782 (package
8783 (inherit java-eclipse-jetty-security)
8784 (version (package-version java-eclipse-jetty-util-9.2))
8785 (source (package-source java-eclipse-jetty-util-9.2))
8786 (inputs
8787 `(("util" ,java-eclipse-jetty-util-9.2)
8788 ("http" ,java-eclipse-jetty-http-9.2)
8789 ("server" ,java-eclipse-jetty-server-9.2)
8790 ,@(package-inputs java-eclipse-jetty-util-9.2)))
8791 (native-inputs
8792 `(("io" ,java-eclipse-jetty-io-9.2)
8793 ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
8794
8795(define-public java-eclipse-jetty-util-ajax
8796 (package
8797 (inherit java-eclipse-jetty-util)
8798 (name "java-eclipse-jetty-util-ajax")
8799 (arguments
8800 `(#:jar-name "eclipse-jetty-util-ajax.jar"
8801 #:source-dir "jetty-util-ajax/src/main/java"
8802 #:tests? #f)); require junit 5
8803 (inputs
8804 (list java-eclipse-jetty-util java-javaee-servletapi))))
8805
8806(define-public java-eclipse-jetty-servlet
8807 (package
8808 (inherit java-eclipse-jetty-util)
8809 (name "java-eclipse-jetty-servlet")
8810 (arguments
8811 `(#:jar-name "eclipse-jetty-servlet.jar"
8812 #:source-dir "src/main/java"
8813 #:jdk ,icedtea-8
8814 #:tests? #f; require junit 5
8815 #:phases
8816 (modify-phases %standard-phases
8817 (add-before 'configure 'chdir
8818 (lambda _
8819 (chdir "jetty-servlet")
8820 #t)))))
8821 (inputs
8822 `(("slf4j" ,java-slf4j-api)
8823 ("java-javaee-servletapi" ,java-javaee-servletapi)
8824 ("java-eclipse-jetty-util-ajax" ,java-eclipse-jetty-util-ajax)
8825 ("http" ,java-eclipse-jetty-http)
8826 ("io" ,java-eclipse-jetty-io)
8827 ("jmx" ,java-eclipse-jetty-jmx)
8828 ("security" ,java-eclipse-jetty-security)
8829 ("server" ,java-eclipse-jetty-server)
8830 ("util" ,java-eclipse-jetty-util)))
8831 (synopsis "Jetty Servlet Container")
8832 (description "The Jetty Web Server provides an HTTP server and Servlet
8833container capable of serving static and dynamic content either from a standalone
8834or embedded instantiation. This package provides the core jetty servlet
8835container.")))
8836
8837(define-public java-eclipse-jetty-servlet-9.2
8838 (package
8839 (inherit java-eclipse-jetty-servlet)
8840 (version (package-version java-eclipse-jetty-util-9.2))
8841 (source (package-source java-eclipse-jetty-util-9.2))
8842 (arguments
8843 `(#:jar-name "eclipse-jetty-servlet.jar"
8844 #:source-dir "src/main/java"
8845 #:jdk ,icedtea-8
8846 #:tests? #f; doesn't work
8847 #:phases
8848 (modify-phases %standard-phases
8849 (add-before 'configure 'chdir
8850 (lambda _
8851 (chdir "jetty-servlet")
8852 #t)))))
8853 (inputs
8854 `(("util" ,java-eclipse-jetty-util-9.2)
8855 ("jmx" ,java-eclipse-jetty-jmx-9.2)
8856 ("io" ,java-eclipse-jetty-io-9.2)
8857 ("http" ,java-eclipse-jetty-http-9.2)
8858 ("security" ,java-eclipse-jetty-security-9.2)
8859 ("http-test" ,java-eclipse-jetty-http-test-classes-9.2)
8860 ("server" ,java-eclipse-jetty-server-9.2)
8861 ,@(package-inputs java-eclipse-jetty-util-9.2)))))
8862
8863(define-public java-eclipse-jetty-xml
8864 (package
8865 (inherit java-eclipse-jetty-util)
8866 (name "java-eclipse-jetty-xml")
8867 (arguments
8868 `(#:jar-name "eclipse-jetty-xml.jar"
8869 #:source-dir "src/main/java"
8870 #:jdk ,icedtea-8
8871 #:tests? #f; most tests require network
8872 #:phases
8873 (modify-phases %standard-phases
8874 (add-before 'configure 'chdir
8875 (lambda _
8876 (chdir "jetty-xml")
8877 #t)))))
8878 (inputs
8879 (list java-eclipse-jetty-util))
8880 (native-inputs
8881 (modify-inputs native-inputs
8882 (prepend java-eclipse-jetty-io)))))
8883
8884(define-public java-eclipse-jetty-xml-9.2
8885 (package
8886 (inherit java-eclipse-jetty-xml)
8887 (version (package-version java-eclipse-jetty-util-9.2))
8888 (source (package-source java-eclipse-jetty-util-9.2))
8889 (arguments
8890 `(#:jar-name "eclipse-jetty-xml.jar"
8891 #:source-dir "src/main/java"
8892 #:jdk ,icedtea-8
8893 #:tests? #f; most tests require network
8894 #:phases
8895 (modify-phases %standard-phases
8896 (add-before 'configure 'chdir
8897 (lambda _
8898 (chdir "jetty-xml")
8899 #t)))))
8900 (inputs
8901 `(("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
8902 ,@(package-inputs java-eclipse-jetty-util-9.2)))
8903 (native-inputs
8904 `(("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
8905 ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
8906
8907(define-public java-eclipse-jetty-webapp
8908 (package
8909 (inherit java-eclipse-jetty-util)
8910 (name "java-eclipse-jetty-webapp")
8911 (arguments
8912 `(#:jar-name "eclipse-jetty-webapp.jar"
8913 #:source-dir "src/main/java"
8914 #:jdk ,icedtea-8
8915 #:tests? #f; require junit 5
8916 ;; One test fails
8917 #:test-exclude (list "**/WebAppContextTest.java")
8918 #:phases
8919 (modify-phases %standard-phases
8920 (add-before 'configure 'chdir
8921 (lambda _
8922 (chdir "jetty-webapp")
8923 #t)))))
8924 (inputs
8925 (list java-eclipse-jetty-util
8926 java-eclipse-jetty-http
8927 java-eclipse-jetty-io
8928 java-eclipse-jetty-server
8929 java-eclipse-jetty-servlet
8930 java-eclipse-jetty-security
8931 java-eclipse-jetty-xml
8932 java-javaee-servletapi))))
8933
8934(define-public java-eclipse-jetty-webapp-9.2
8935 (package
8936 (inherit java-eclipse-jetty-webapp)
8937 (version (package-version java-eclipse-jetty-util-9.2))
8938 (source (package-source java-eclipse-jetty-util-9.2))
8939 (arguments
8940 `(#:jar-name "eclipse-jetty-webapp.jar"
8941 #:source-dir "src/main/java"
8942 #:jdk ,icedtea-8
8943 #:test-exclude (list "**/WebAppContextTest.java")
8944 #:phases
8945 (modify-phases %standard-phases
8946 (add-before 'configure 'chdir
8947 (lambda _
8948 (chdir "jetty-webapp")
8949 #t)))))
8950 (inputs
8951 `(("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
8952 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
8953 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
8954 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
8955 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
8956 ("java-eclipse-jetty-xml-9.2" ,java-eclipse-jetty-xml-9.2)
8957 ("java-javaee-servletapi" ,java-javaee-servletapi)
8958 ,@(package-inputs java-eclipse-jetty-util-9.2)))
8959 (native-inputs
8960 `(("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
8961 ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
8962
8963(define-public java-jsoup
8964 (package
8965 (name "java-jsoup")
8966 (version "1.10.3")
8967 (source (origin
8968 (method git-fetch)
8969 (uri (git-reference
8970 (url "https://github.com/jhy/jsoup")
8971 (commit (string-append "jsoup-" version))))
8972 (file-name (git-file-name name version))
8973 (sha256
8974 (base32
8975 "1hdpdx0x140r5x3yc251v7dj1h4j5a7nh9k885aw9q5vvz49lkf4"))))
8976 (build-system ant-build-system)
8977 (arguments
8978 `(#:jar-name "jsoup.jar"
8979 #:source-dir "src/main/java"
8980 #:phases
8981 (modify-phases %standard-phases
8982 (add-before 'build 'copy-resources
8983 (lambda _
8984 (let ((classes-dir (string-append (getcwd) "/build/classes")))
8985 (with-directory-excursion "src/main/java"
8986 (for-each (lambda (file)
8987 (let ((dist (string-append classes-dir "/" file)))
8988 (mkdir-p (dirname dist))
8989 (copy-file file dist)))
8990 (find-files "." ".*.properties"))))
8991 #t)))))
8992 (native-inputs
8993 (list java-junit java-hamcrest-core java-gson))
8994 (home-page "https://jsoup.org")
8995 (synopsis "HTML parser")
8996 (description "Jsoup is a Java library for working with real-world HTML. It
8997provides a very convenient API for extracting and manipulating data, using the
8998best of DOM, CSS, and jQuery-like methods.")
8999 (license license:expat)))
9000
9001(define-public java-jsoup-1.15.3
9002 (package
9003 (inherit java-jsoup)
9004 (name "java-jsoup")
9005 (version "1.15.3")
9006 (source
9007 (origin
9008 (method git-fetch)
9009 (uri (git-reference
9010 (url "https://github.com/jhy/jsoup.git")
9011 (commit (string-append "jsoup-" version))))
9012 (file-name (git-file-name "java-jsoup" version))
9013 (sha256
9014 (base32 "1rp35w2138qkmpy7q7sn7yx50v3ks4dabd6ij50i9258yx38x3v9"))))
9015 (arguments
9016 `(#:jar-name "jsoup.jar"
9017 #:source-dir "src/main/java"
9018 #:tests? #f
9019 #:phases
9020 (modify-phases %standard-phases
9021 (add-before 'build 'copy-resources
9022 (lambda _
9023 (let ((classes-dir (string-append (getcwd) "/build/classes")))
9024 (with-directory-excursion "src/main/java"
9025 (for-each (lambda (file)
9026 (let ((dist (string-append classes-dir "/" file)))
9027 (mkdir-p (dirname dist))
9028 (copy-file file dist)))
9029 (find-files "." ".*\\.properties"))))
9030 #t))
9031 (replace 'install
9032 (install-from-pom "pom.xml")))))
9033 (inputs
9034 (list java-jsr305))))
9035
9036(define-public java-signpost-core
9037 (package
9038 (name "java-signpost-core")
9039 (version "1.2.1.2")
9040 (source (origin
9041 (method git-fetch)
9042 (uri (git-reference
9043 (url "https://github.com/mttkay/signpost")
9044 (commit version)))
9045 (file-name (git-file-name name version))
9046 (sha256
9047 (base32
9048 "1l04yj2znch3hpyw90c4g4jan453w7d88l84bgl0c72i2kbb8z7h"))))
9049 (build-system ant-build-system)
9050 (arguments
9051 `(#:jar-name "signpost-core.jar"
9052 #:source-dir "signpost-core/src/main/java"
9053 #:test-dir "signpost-core/src/test"
9054 ;; Tests all fail with InstantiationException from mockito
9055 #:tests? #f))
9056 (propagated-inputs
9057 (list java-commons-codec))
9058 (home-page "https://github.com/mttkay/signpost")
9059 (synopsis "Lightweight client-side OAuth library for Java")
9060 (description "Signpost is the easy and intuitive solution for signing
9061HTTP messages on the Java platform in conformance with the OAuth Core 1.0a
9062standard. Signpost follows a modular and flexible design, allowing you to
9063combine it with different HTTP messaging layers.")
9064 (license license:asl2.0)))
9065
9066(define-public tidyp
9067 (package
9068 (name "tidyp")
9069 (version "1.04")
9070 (source
9071 (origin
9072 (method url-fetch)
9073 (uri (string-append "https://github.com/downloads/petdance/tidyp/tidyp-"
9074 version ".tar.gz"))
9075 (sha256
9076 (base32
9077 "0f5ky0ih4vap9c6j312jn73vn8m2bj69pl2yd3a5nmv35k9zmc10"))))
9078 (build-system gnu-build-system)
9079 ;; ./test-thing.sh tries to run ./testall.sh, which is not included.
9080 (arguments `(#:tests? #f))
9081 (home-page "http://www.tidyp.com/")
9082 (synopsis "Validate HTML")
9083 (description "Tidyp is a program that can validate your HTML, as well as
9084modify it to be more clean and standard. tidyp does not validate HTML 5.
9085
9086libtidyp is the library on which the program is based. It can be used by any
9087other program that can interface to it. The Perl module @code{HTML::Tidy} is
9088based on this library, allowing Perl programmers to easily validate HTML.")
9089 ;; See htmldoc/license.html
9090 (license license:bsd-3)))
9091
9092(define-public perl-html-tidy
9093 (package
9094 (name "perl-html-tidy")
9095 (version "1.60")
9096 (source
9097 (origin
9098 (method url-fetch)
9099 (uri (string-append "mirror://cpan/authors/id/P/PE/PETDANCE/HTML-Tidy-"
9100 version ".tar.gz"))
9101 (sha256
9102 (base32
9103 "1iyp2fd6j75cn1xvcwl2lxr8qpjxssy2360cyqn6g3kzd1fzdyxw"))))
9104 (build-system perl-build-system)
9105 (arguments
9106 '(#:phases
9107 (modify-phases %standard-phases
9108 (add-after 'unpack 'fix-tidyp-paths
9109 (lambda* (#:key inputs #:allow-other-keys)
9110 (substitute* "Makefile.PL"
9111 (("^my \\$inc = \"" line)
9112 (string-append line
9113 "-I" (assoc-ref inputs "tidyp") "/include/tidyp "))
9114 (("-L/usr/lib")
9115 (string-append
9116 "-L" (assoc-ref inputs "tidyp") "/lib")))
9117 #t)))))
9118 (inputs
9119 (list perl-libwww tidyp))
9120 (native-inputs
9121 (list perl-test-exception))
9122 (home-page "https://metacpan.org/release/HTML-Tidy")
9123 (synopsis "(X)HTML validation in a Perl object")
9124 (description "@code{HTML::Tidy} is an HTML checker in a handy dandy
9125object. It's meant as a replacement for @code{HTML::Lint}, which is written
9126in Perl but is not nearly as capable as @code{HTML::Tidy}.")
9127 (license license:artistic2.0)))
9128
9129(define-public gophernicus
9130 ;; Contains some unreleased fixes.
9131 (let ((commit "da3390089c2a856db1ab2e3bd9751b9a9101a33a")
9132 (revision "0"))
9133 (package
9134 (name "gophernicus")
9135 (version (git-version "3.1.1" revision commit))
9136 (source
9137 (origin
9138 (method git-fetch)
9139 (uri (git-reference
9140 (url "https://github.com/gophernicus/gophernicus")
9141 (commit commit)))
9142 (file-name (git-file-name name version))
9143 (sha256
9144 (base32 "0a7kpymwqcsqzszdxvcqppbg61bpyg9f7raj783pldm4kf2wjyij"))))
9145 (build-system gnu-build-system)
9146 (arguments
9147 (list #:tests? #f ; No tests
9148 #:configure-flags
9149 ;; Listener and hostname used only in configuration files, which
9150 ;; we don't install.
9151 ;; This is what's done in the release.sh script.
9152 #~(list "--listener=none" "--hostname=HOSTNAME")
9153 #:phases
9154 #~(modify-phases %standard-phases
9155 (add-after 'unpack 'fix-version
9156 (lambda _
9157 (substitute* "Makefile.in"
9158 (("^(VERSION += ).*" _ prefix)
9159 (string-append prefix #$version "\n")))
9160 ;; This is done in the release.sh script.
9161 (substitute* "README.md"
9162 (("^(This release: Version )DEVEL\\b.*" _ prefix)
9163 (string-append prefix #$version "\n"))
9164 (("^NOTE: The master branch is rolling Development\\b.*")
9165 ""))))
9166 (replace 'configure
9167 ;; The configure script is hand-written, not from GNU autotools.
9168 (lambda* (#:key configure-flags #:allow-other-keys)
9169 (setenv "CC" #$(cc-for-target))
9170 (setenv "HOSTCC" "gcc")
9171 (apply invoke "./configure"
9172 (string-append "--prefix=" #$output)
9173 configure-flags))))))
9174 ;; TODO: Make configure script find libwrap.
9175 ;;(inputs
9176 ;; (list tcp-wrappers))
9177 (home-page "https://gophernicus.org/")
9178 (synopsis "Gopher protocol server")
9179 (description
9180 "Gophernicus is a Gopher protocol server. Its features include:
9181@itemize
9182@item written with security in mind;
9183@item automatically generated Gopher menus;
9184@item gophertags for virtually renaming directories;
9185@item personal gopherspaces, located in @file{~/public_gopher/};
9186@item virtual hosting;
9187@item CGI support;
9188@item output filtering and PHP support;
9189@item charset support and conversions;
9190@item selector rewriting;
9191@item session tracking and statistics;
9192@item TLS/SSL and proxy support.
9193@end itemize")
9194 (license license:bsd-2))))
9195
9196(define-public gemget
9197 (package
9198 (name "gemget")
9199 (version "1.9.0")
9200 (source
9201 (origin
9202 (method git-fetch)
9203 (uri (git-reference
9204 (url "https://github.com/makew0rld/gemget")
9205 (commit (string-append "v" version))))
9206 (file-name (git-file-name name version))
9207 (sha256
9208 (base32 "03x9apk73lwyafc4fd2vs033z7vcpk4k0jf97452l7pnlx2v57rz"))))
9209 (build-system go-build-system)
9210 (native-inputs
9211 (list go-github-com-dustin-go-humanize
9212 go-github-com-makeworld-the-better-one-go-gemini
9213 go-github-com-makeworld-the-better-one-go-gemini-socks5
9214 go-github-com-schollz-progressbar-v3
9215 go-github-com-spf13-pflag))
9216 (arguments
9217 (list
9218 #:install-source? #f
9219 #:import-path "github.com/makeworld-the-better-one/gemget"))
9220 (home-page "https://github.com/makew0rld/gemget")
9221 (synopsis "Command line downloader for the Gemini protocol")
9222 (description
9223 "Gemget is a command line downloader for the Gemini protocol.
9224It works well with streams and can print headers for debugging as well.")
9225 (license license:expat)))
9226
9227(define-public geomyidae
9228 (package
9229 (name "geomyidae")
9230 (version "0.34")
9231 (source
9232 (origin
9233 (method git-fetch)
9234 (uri (git-reference
9235 (url "git://r-36.net/geomyidae")
9236 (commit (string-append "v" version))))
9237 (file-name (git-file-name name version))
9238 (sha256
9239 (base32 "02afgrk36wkdkflyqr2xgh49v9zq6ma454jshk7igvhpxfb5l3ks"))))
9240 (build-system gnu-build-system)
9241 (arguments
9242 `(#:make-flags (list "CC=gcc"
9243 (string-append "PREFIX="
9244 (assoc-ref %outputs "out")))
9245 #:tests? #f ; no tests
9246 #:phases (modify-phases %standard-phases
9247 (delete 'configure))))
9248 (home-page "http://r-36.net/scm/geomyidae/file/README.html")
9249 (synopsis "Small Gopher server")
9250 (description
9251 "Geomyidae is a server for distributed hypertext protocol Gopher. Its
9252features include:
9253
9254@enumerate
9255@item Gopher menus (see @file{index.gph} for an example);
9256@item directory listings (if no @file{index.gph} was found);
9257@item CGI support (@file{.cgi} files are executed);
9258@item search support in CGI files;
9259@item logging with multiple log levels.
9260@end enumerate\n")
9261 (license license:expat)))
9262
9263(define-public monsterid
9264 (let ((commit "5597f177b473343ff5cad9a6e0e5b255312c6096")
9265 (revision "0"))
9266 (package
9267 (name "monsterid")
9268 (version (git-version "0" revision commit))
9269 (source
9270 (origin
9271 (method git-fetch)
9272 (uri (git-reference
9273 (url "https://github.com/splitbrain/monsterID")
9274 (commit commit)))
9275 (file-name (git-file-name name version))
9276 (sha256
9277 (base32 "0ixyrrcbw96plcdna2rx1pqwisqy9hnr57kvamgj13lzlv2whdb3"))))
9278 (build-system copy-build-system)
9279 (arguments
9280 '(#:install-plan '(("monsterid.php" "share/web/monsterid/")
9281 ("parts/" "share/web/monsterid/parts/"
9282 #:include-regexp ("\\.png$")))))
9283 (home-page "https://www.splitbrain.org/projects/monsterid")
9284 (synopsis "The original MonsterID implementation")
9285 (description
9286 "MonsterID is a method to generate a unique monster image based upon a
9287certain identifier (IP address, email address, whatever). It can be
9288used to automatically provide personal avatar images in blog comments
9289or other community services.")
9290 (license license:expat))))
9291
9292(define-public cat-avatar-generator
9293 (let ((commit "9360ea33f79d1dad3e43494b09878b5e3f6b41fa")
9294 (revision "1"))
9295 (package
9296 (name "cat-avatar-generator")
9297 (version (git-version "1" revision commit))
9298 (source (origin
9299 (method git-fetch)
9300 (uri (git-reference
9301 (url "https://framagit.org/Deevad/cat-avatar-generator.git")
9302 (commit commit)))
9303 (file-name (git-file-name name version))
9304 (sha256
9305 (base32
9306 "0js4grqzsm4gvmcbmxv7zw4samfzi6nk4mn977ddcvla9g222rkm"))))
9307 (build-system trivial-build-system)
9308 (arguments
9309 `(#:modules ((guix build utils))
9310 #:builder
9311 (begin
9312 (use-modules (guix build utils)
9313 (srfi srfi-1)
9314 (srfi srfi-26))
9315 (let ((source (assoc-ref %build-inputs "source"))
9316 (php-dir (string-append %output "/share/web/" ,name)))
9317 (install-file (string-append source "/cat-avatar-generator.php") php-dir)
9318 (copy-recursively (string-append source "/avatars") (string-append php-dir "/avatars"))
9319 ;; The cache directory must not be in the store, but in a writable
9320 ;; location. The webserver will give us this location.
9321 (substitute* (string-append php-dir "/cat-avatar-generator.php")
9322 (("\\$cachepath = .*")
9323 "if(isset($_SERVER['CACHE_DIR']))
9324$cachepath = $_SERVER['CACHE_DIR'];
9325else
9326die('You need to set the CACHE_DIR variable first.');"))
9327 #t))))
9328 (home-page "https://framagit.org/Deevad/cat-avatar-generator")
9329 (synopsis "Random avatar generator")
9330 (description "Cat avatar generator is a generator of cat pictures optimised
9331to generate random avatars, or defined avatar from a \"seed\". This is a
9332derivation by David Revoy from the original MonsterID by Andreas Gohr.")
9333 ;; expat for the code, CC-BY 4.0 for the artwork
9334 (license (list license:expat
9335 license:cc-by4.0)))))
9336
9337(define-public nghttp2
9338 (package
9339 (name "nghttp2")
9340 (version "1.69.0")
9341 (source
9342 (origin
9343 (method url-fetch)
9344 (uri (string-append "https://github.com/nghttp2/nghttp2/"
9345 "releases/download/v" version "/"
9346 "nghttp2-" version ".tar.xz"))
9347 (sha256
9348 (base32
9349 "1b88wp8ghfpnlpbqzsbwwylry86qzwwl33v5w2yzcmicxjv29cqz"))))
9350 (build-system gnu-build-system)
9351 (outputs (list "out"
9352 "lib")) ; only libnghttp2
9353 (native-inputs
9354 (list pkg-config
9355 ;; Required by tests.
9356 cunit python tzdata-for-tests))
9357 (inputs
9358 ;; Required to build the tools (i.e. without ‘--enable-lib-only’).
9359 (append
9360 (if (target-hurd?)
9361 `((,openssl "static"))
9362 (list jemalloc)) ; fight nghttpd{,x} heap fragmentation
9363 (list c-ares
9364 jansson ; for HPACK tools
9365 libev
9366 libxml2 ; for ‘nghttp -a’
9367 openssl)))
9368 (arguments
9369 (list
9370 #:configure-flags
9371 #~(list (string-append "--libdir=" #$output:lib "/lib")
9372 "--enable-app" ; build all the tools
9373 "--enable-hpack-tools" ; ...all the tools
9374 "--disable-examples"
9375 "--disable-static" ; don't bother building .a files
9376 #$@(if (%current-target-system)
9377 '("--disable-python-bindings")
9378 '()))
9379 #:phases
9380 #~(modify-phases %standard-phases
9381 (add-after 'unpack 'break-circular-reference
9382 ;; libnghttp2.pc by default retains a reference to the ‘out’ output,
9383 ;; which is not allowed. Break this cycle. While we could install
9384 ;; only the library to ‘out’ and move everything else to a separate
9385 ;; output, this would inconvenience the majority of (human) users.
9386 (lambda _
9387 (substitute* "lib/libnghttp2.pc.in"
9388 (("@prefix@")
9389 #$output:lib))))
9390 (add-before 'check 'set-timezone-directory
9391 (lambda* (#:key inputs native-inputs #:allow-other-keys)
9392 (setenv "TZDIR" (search-input-directory
9393 (or native-inputs inputs)
9394 "share/zoneinfo")))))))
9395 (home-page "https://nghttp2.org/")
9396 (synopsis "HTTP/2 protocol client, proxy, server, and library")
9397 (description
9398 "nghttp2 implements the Hypertext Transfer Protocol, version
93992 (@dfn{HTTP/2}).
9400
9401A reusable C library provides the HTTP/2 framing layer, with several tools built
9402on top of it:
9403
9404@itemize
9405@item @command{nghttp}, a command-line HTTP/2 client. It exposes many advanced
9406and low-level aspects of the protocol and is useful for debugging.
9407@item @command{nghttpd}, a fast, multi-threaded HTTP/2 static web server that
9408serves files from a local directory.
9409@item @command{nghttpx}, a fast, multi-threaded HTTP/2 reverse proxy that can be
9410deployed in front of existing web servers that don't support HTTP/2.
9411Both @command{nghttpd} and @command{nghttpx} can fall back to HTTP/1.1 for
9412backwards compatibility with clients that don't speak HTTP/2.
9413@item @command{h2load} for benchmarking (only!) your own HTTP/2 servers.
9414@item HTTP/2 uses a header compression method called @dfn{HPACK}.
9415nghttp2 provides a HPACK encoder and decoder as part of its public API.
9416@item @command{deflatehd} converts JSON data or HTTP/1-style header fields to
9417compressed JSON header blocks.
9418@item @command{inflatehd} converts such compressed headers back to JSON pairs.
9419@end itemize\n")
9420 (license license:expat)))
9421
9422(define-public nghttp2-for-node-bootstrap
9423 (package
9424 (inherit nghttp2)
9425 (version "1.58.0")
9426 (source
9427 (origin
9428 (method url-fetch)
9429 (uri (string-append "https://github.com/nghttp2/nghttp2/"
9430 "releases/download/v" version "/"
9431 "nghttp2-" version ".tar.xz"))
9432 (sha256
9433 (base32
9434 "1q4ps8acr7nyia7mf2z11m0yh3fn1imhyv855j3xjbx91l2a6s2a"))))
9435 (properties '((hidden? . #t)))))
9436
9437(define-public nghttp2-for-node-lts
9438 (package
9439 (inherit nghttp2)
9440 (version "1.69.0")
9441 (source
9442 (origin
9443 (method url-fetch)
9444 (uri (string-append "https://github.com/nghttp2/nghttp2/"
9445 "releases/download/v" version "/"
9446 "nghttp2-" version ".tar.xz"))
9447 (sha256
9448 (base32
9449 "1b88wp8ghfpnlpbqzsbwwylry86qzwwl33v5w2yzcmicxjv29cqz"))))
9450 (properties '((hidden? . #t)))))
9451
9452(define-public nghttp3
9453 (package
9454 (name "nghttp3")
9455 (version "1.11.0")
9456 (source
9457 (origin
9458 (method url-fetch)
9459 (uri (string-append "https://github.com/ngtcp2/nghttp3/"
9460 "releases/download/v" version "/"
9461 "nghttp3-" version ".tar.gz"))
9462 (sha256
9463 (base32
9464 "04ds0h2ppajx9brafd9rx4k9jsqm6cb0qjkj2lvpps1d5bd0pliw"))))
9465 (build-system gnu-build-system)
9466 (native-inputs
9467 (list pkg-config))
9468 (arguments
9469 (list
9470 #:configure-flags
9471 #~(list "--enable-lib-only")))
9472 (home-page "https://nghttp2.org/nghttp3/")
9473 (synopsis "HTTP/3 protocol library")
9474 (description
9475 "nghttp3 is an implementation of RFC 9114 HTTP/3 mapping over QUIC and
9476RFC 9204 QPACK in C. It does not depend on any particular QUIC transport
9477implementation.
9478
9479It implements extensions specified in RFC 9218 and RFC 9220. It supports
9480SETTINGS_H3_DATAGRAM from RFC 9297.
9481
9482It does not support server push.")
9483 (license license:expat)))
9484
9485(define-public hpcguix-web
9486 (package
9487 (name "hpcguix-web")
9488 (version "0.4.3")
9489 (source (origin
9490 (method git-fetch)
9491 (uri (git-reference
9492 (url "https://github.com/UMCUGenetics/hpcguix-web")
9493 (commit (string-append "v" version))))
9494 (file-name (git-file-name name version))
9495 (sha256
9496 (base32
9497 "1mcy4p5pw623gmwcx5jpry27njqyq1fp74wpq1c34s06gkhdarji"))))
9498 (build-system gnu-build-system)
9499 (arguments
9500 `(#:modules ((guix build gnu-build-system)
9501 (guix build utils)
9502 (srfi srfi-26)
9503 (ice-9 popen)
9504 (ice-9 rdelim))
9505 #:phases
9506 (modify-phases %standard-phases
9507 (add-before 'configure 'set-variables
9508 (lambda _
9509 ;; This prevents a few warnings
9510 (setenv "GUILE_AUTO_COMPILE" "0")
9511 (setenv "XDG_CACHE_HOME" (getcwd))))
9512 (add-after 'install 'wrap-program
9513 (lambda* (#:key inputs outputs #:allow-other-keys)
9514 (let* ((out (assoc-ref outputs "out"))
9515 (guix (assoc-ref inputs "guix"))
9516 (guile (assoc-ref inputs "guile"))
9517 (gcrypt (assoc-ref inputs "guile-gcrypt"))
9518 (git (assoc-ref inputs "guile-git"))
9519 (gnutls (assoc-ref inputs "guile-gnutls"))
9520 (bs (assoc-ref inputs "guile-bytestructures"))
9521 (json (assoc-ref inputs "guile-json"))
9522 (zlib (assoc-ref inputs "guile-zlib"))
9523 (syntax (assoc-ref inputs "guile-syntax-highlight"))
9524 (guile-cm (assoc-ref inputs
9525 "guile-commonmark"))
9526 (deps (list guile gcrypt git gnutls bs zlib guile-cm
9527 syntax guix json))
9528 (effective
9529 (read-line
9530 (open-pipe* OPEN_READ
9531 (string-append guile "/bin/guile")
9532 "-c" "(display (effective-version))")))
9533 (path (string-join
9534 (map (cut string-append <>
9535 "/share/guile/site/"
9536 effective)
9537 deps)
9538 ":"))
9539 (gopath (string-join
9540 (map (cut string-append <>
9541 "/lib/guile/" effective
9542 "/site-ccache")
9543 deps)
9544 ":")))
9545 (wrap-program (string-append out "/bin/hpcguix-web")
9546 `("GUILE_LOAD_PATH" ":" prefix (,path))
9547 `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,gopath)))))))))
9548 (native-inputs
9549 (list autoconf automake uglify-js pkg-config
9550 (lookup-package-native-input guix "guile")))
9551 (inputs
9552 (list bash-minimal
9553 (lookup-package-native-input guix "guile")
9554 guix
9555 guile-zlib
9556 guile-commonmark
9557 guile-json-4
9558 guile-syntax-highlight
9559 guile-gnutls ;used to connect to https://disarchive.guix.gnu.org
9560 bash-minimal))
9561 (home-page "https://github.com/UMCUGenetics/hpcguix-web")
9562 (synopsis "Web interface for cluster deployments of Guix")
9563 (description "Hpcguix-web provides a web interface to the list of packages
9564provided by Guix. The list of packages is searchable and provides
9565instructions on how to use Guix in a shared HPC environment.")
9566 (license license:agpl3+)))
9567
9568(define-public httrack
9569 (let ((commit "748c35de7858ead963daf1393ad023d75b7820c2")) ;version bump
9570 (package
9571 (name "httrack")
9572 (version "3.49.6")
9573 (source
9574 (origin
9575 (method git-fetch)
9576 (uri (git-reference
9577 (url "https://github.com/xroche/httrack")
9578 (commit commit)))
9579 (file-name (git-file-name name version))
9580 (sha256
9581 (base32
9582 "0z24ki0idiv4cqd8gl4521f2hfbzic85wlfgxfzqcpmd5yn3k1c8"))))
9583 (build-system gnu-build-system)
9584 (arguments
9585 (list
9586 #:phases
9587 #~(modify-phases %standard-phases
9588 (add-after 'unpack 'autogen
9589 ;; Force reconfiguration to generate "test-driver".
9590 (lambda _
9591 (substitute* "configure.ac"
9592 ;; Fix errors when running "configure" script.
9593 (("AX_CHECK_(COMPILE|LINK)_FLAG\\(.*") "")
9594 (("AX_CHECK_ALIGNED_ACCESS_REQUIRED") "")
9595 (("gl_VISIBILITY") ""))
9596 (invoke "autoreconf" "-vif")))
9597 (add-after 'unpack 'copy-coucal-source
9598 ;; Install Coucal source to work around missing submodule.
9599 (lambda* (#:key inputs #:allow-other-keys)
9600 (for-each (lambda (f) (install-file f "src/coucal"))
9601 (find-files #$(this-package-input "coucal")
9602 "\\.(c|h|diff|orig)$")))))))
9603 (native-inputs
9604 (list autoconf-2.71 automake libtool))
9605 (inputs
9606 (list coucal libressl zlib))
9607 (home-page "https://www.httrack.com/")
9608 (synopsis "Easy-to-use offline browser utility")
9609 (description "HTTrack allows you to download a World Wide Web site from
9610the Internet to a local directory, building recursively all directories,
9611getting HTML, images, and other files from the server to your computer.
9612
9613HTTrack arranges the original site's relative link-structure. Simply open
9614a page of the @emph{mirrored} website in your browser, and you can browse the
9615site from link to link, as if you were viewing it online. HTTrack can also
9616update an existing mirrored site, and resume interrupted downloads.
9617
9618HTTrack is fully configurable, and has an integrated help system.")
9619 (license license:gpl3+))))
9620
9621(define-public binaryen
9622 (package
9623 (name "binaryen")
9624 (version "125")
9625 (source
9626 (origin
9627 (method git-fetch)
9628 (uri (git-reference
9629 (url "https://github.com/WebAssembly/binaryen")
9630 (commit (string-append "version_" version))))
9631 (file-name (git-file-name name version))
9632 (sha256
9633 (base32 "1hgwgl7kwsxg7cihzz46lvsfzpkpy6w7w5c9gm4bhkfwz231jvs0"))))
9634 (build-system cmake-build-system)
9635 (arguments
9636 (list
9637 #:tests? #f
9638 #:phases
9639 #~(modify-phases %standard-phases
9640 (add-after 'unpack 'use-system-googletest
9641 (lambda _
9642 (substitute* "third_party/CMakeLists.txt"
9643 ((" googletest/.*") "")
9644 (("add_library\\(gtest.*") "")
9645 (("target_compile_options\\(gtest.*") "")
9646 (("target_compile_options\\(gtest_main.*") ""))
9647 (substitute* "CMakeLists.txt"
9648 (("add_subdirectory\\(test/gtest\\)")
9649 "find_package(GTest REQUIRED)"))))
9650 (add-after 'unpack 'fix-gcc14-compatibility
9651 (lambda _
9652 ;; Disable -Werror to fix GCC 14 build failure.
9653 (substitute* "CMakeLists.txt"
9654 (("-Werror") "")))))))
9655 (native-inputs (list googletest))
9656 (home-page "https://github.com/WebAssembly/binaryen")
9657 (synopsis "Optimizer and compiler/toolchain library for WebAssembly")
9658 (description "Binaryen is a compiler and toolchain infrastructure library
9659for WebAssembly, written in C++. It aims to make compiling to WebAssembly
9660easy, fast, and effective.")
9661 (license license:asl2.0)))
9662
9663(define-public buku
9664 (package
9665 (name "buku")
9666 (version "5.1")
9667 (source
9668 (origin
9669 (method git-fetch)
9670 (uri (git-reference
9671 (url "https://github.com/jarun/buku")
9672 (commit (string-append "v" version))))
9673 (file-name (git-file-name name version))
9674 (sha256
9675 (base32 "0krg13q2fa3r29knrl7ngq28dgzzxc9gif12gxkkm4djma2c1v7d"))))
9676 (build-system pyproject-build-system)
9677 (arguments
9678 (list
9679 ;; XXX: missing inputs for bukuserver
9680 #:test-flags
9681 #~(list "--ignore=tests/test_server.py"
9682 "--ignore=tests/test_views.py"
9683 "--deselect=tests/test_buku.py::test_fetch_data_with_url")
9684 #:phases
9685 #~(modify-phases %standard-phases
9686 (delete 'sanity-check))))
9687 (native-inputs (list python-pytest python-pyyaml python-setuptools))
9688 (inputs (list python-beautifulsoup4
9689 python-certifi
9690 python-cryptography
9691 python-flask
9692 python-html5lib
9693 python-urllib3))
9694 (home-page "https://github.com/jarun/buku")
9695 (synopsis "Bookmark manager")
9696 (description
9697 "buku is a powerful bookmark manager written in Python3 and SQLite3.
9698@command{buku} can auto-import bookmarks from your browser and present them
9699in an interactive command-line interface that lets you compose and update
9700bookmarks directly. It can also present them in a web interface with
9701@command{bukuserver}.")
9702 (license license:gpl3+)))
9703
9704(define-public buku-run
9705 (package
9706 (name "buku-run")
9707 (version "0.1.1")
9708 (source (origin
9709 (method git-fetch)
9710 (uri (git-reference
9711 (url "https://github.com/carnager/buku_run")
9712 (commit version)))
9713 (file-name (git-file-name name version))
9714 (sha256
9715 (base32
9716 "1zyjjf3b8g3dnymcrg683rbnc6qrvx8ravfm833n7kjrqky3bczn"))))
9717 (build-system gnu-build-system)
9718 (arguments
9719 (list #:tests? #f ;no tests
9720 #:make-flags
9721 #~(list (string-append "DESTDIR=" #$output)
9722 "PREFIX=")
9723 #:phases
9724 #~(modify-phases %standard-phases
9725 (delete 'configure)
9726 (add-after 'unpack 'fixpath
9727 (lambda* (#:key inputs #:allow-other-keys)
9728 (substitute* "buku_run"
9729 ((" \\<(rofi)\\>" all cmd)
9730 (string-append " " (search-input-file inputs "/bin/rofi")))
9731 (("\\<(buku)\\> " all cmd)
9732 (string-append (search-input-file inputs "/bin/buku") " "))
9733 (("\\<(awk|gawk)\\>" cmd)
9734 (search-input-file inputs "/bin/awk"))
9735 (("/etc/buku_run.config" path)
9736 (string-append #$output path))))))))
9737 (inputs (list buku rofi))
9738 (home-page "https://github.com/carnager/buku_run")
9739 (synopsis "@command{rofi} frontend for buku bookmarks manager")
9740 (description
9741 "This package provides a rofi frontend for the buku bookmark manager.")
9742 (license license:gpl3+)))
9743
9744(define-public tissue
9745 (package
9746 (name "tissue")
9747 (version "0.1.0")
9748 (source (origin
9749 (method url-fetch)
9750 (uri (string-append "https://tissue.systemreboot.net/releases/tissue-"
9751 version ".tar.lz"))
9752 (sha256
9753 (base32
9754 "0vsybgnzv8nnwf58pnxrs4101xczl8jvxd1wzmk4vmdyrp8a2kkm"))))
9755 (build-system gnu-build-system)
9756 (arguments
9757 (list #:make-flags #~(list (string-append "prefix=" #$output))
9758 #:modules `(((guix build guile-build-system)
9759 #:select (target-guile-effective-version))
9760 (guix build gnu-build-system)
9761 (guix build utils))
9762 #:phases
9763 (with-imported-modules '((guix build guile-build-system))
9764 #~(modify-phases %standard-phases
9765 (replace 'patch-source-shebangs
9766 (lambda* (#:key inputs #:allow-other-keys)
9767 (substitute* "bin/tissue"
9768 (("^exec guile")
9769 (string-append "exec "
9770 (search-input-file inputs "/bin/guile"))))))
9771 (delete 'configure)
9772 (add-after 'install 'wrap
9773 (lambda* (#:key inputs outputs #:allow-other-keys)
9774 (let ((out (assoc-ref outputs "out"))
9775 (effective-version (target-guile-effective-version)))
9776 (wrap-program (string-append out "/bin/tissue")
9777 `("GUILE_LOAD_PATH" prefix
9778 (,(string-append out "/share/guile/site/" effective-version)
9779 ,(getenv "GUILE_LOAD_PATH")))
9780 `("GUILE_LOAD_COMPILED_PATH" prefix
9781 (,(string-append out "/lib/guile/"
9782 effective-version "/site-ccache")
9783 ,(getenv "GUILE_LOAD_COMPILED_PATH")))))))))))
9784 (inputs (list bash-minimal guile-3.0 guile-filesystem guile-git guile-xapian))
9785 (native-inputs (list lzip))
9786 (propagated-inputs (list skribilo))
9787 (home-page "https://tissue.systemreboot.net")
9788 (synopsis "Text based project information management system")
9789 (description "tissue is an issue tracker and project information
9790management system built on plain text files and git. It is specifically
9791intended for small free software projects. It features a static site
9792generator to build a project website and a powerful search interface to search
9793through project issues and documentation. The search interface is built on
9794the Xapian search engine library, and is available both as a command-line
9795program and as a web server.")
9796 (license license:gpl3+)))
9797
9798(define-public anonip
9799 (package
9800 (name "anonip")
9801 (version "1.1.0")
9802 ;; The version on PyPi does not include fixture definitions for tests.
9803 (source (origin
9804 (method git-fetch)
9805 (uri (git-reference
9806 (url "https://github.com/DigitaleGesellschaft/Anonip")
9807 (commit "beab328945547b0147a53655f32c5cc76ab4488b")))
9808 (file-name (git-file-name name version))
9809 (sha256
9810 (base32
9811 "0cssdcridadjzichz1vv1ng7jwphqkn8ihh83hpz9mcjmxyb94qc"))))
9812 (build-system pyproject-build-system)
9813 (arguments
9814 (list #:test-flags #~(list "tests.py" "anonip.py")))
9815 (native-inputs
9816 (list python-pytest python-setuptools))
9817 (home-page "https://github.com/DigitaleGesellschaft/Anonip")
9818 (synopsis "Anonymize IP addresses in log files")
9819 (description
9820 "Anonip masks the last bits of IPv4 and IPv6 addresses in log files.
9821That way most of the relevant information is preserved, while the IP address
9822does not match a particular individuum anymore.
9823
9824Depending on your Web server, the log entries may be piped to Anonip directly
9825or via a FIFO (named pipe). Thus the unmasked IP addresses will never be
9826written to any file.
9827
9828It's also possible to rewrite existing log files.
9829
9830Anonip can also be uses as a Python module in your own Python application.")
9831 (license license:bsd-3)))
9832
9833(define-public poussetaches
9834 (package
9835 (name "poussetaches")
9836 (version "0.0.2")
9837 (source
9838 (origin
9839 (method git-fetch)
9840 (uri (git-reference
9841 (url "https://github.com/tsileo/poussetaches")
9842 (commit version)))
9843 (file-name (git-file-name name version))
9844 (sha256
9845 (base32
9846 "0kckcwvqklavd855np9aq5js6mg84isrlwchr504yigwma0sm7hm"))))
9847 (build-system go-build-system)
9848 (propagated-inputs
9849 (list go-github-com-robfig-cron-v3 go-golang-org-x-time))
9850 (arguments
9851 `(#:import-path "github.com/tsileo/poussetaches"))
9852 (home-page "https://github.com/tsileo/poussetaches")
9853 (synopsis "Lightweight asynchronous task execution service")
9854 (description "Poussetaches (which literally means \"push tasks\" in
9855French) is a lightweight asynchronous task execution service that aims to
9856replace Celery and RabbitMQ for small Python applications.
9857
9858The app posts base64-encoded payload to poussetaches and specifies the
9859endpoint that will be used to trigger the task. Poussetaches makes HTTP
9860requests with the registered payload until the right status code is
9861returned.")
9862 (license license:isc)))
9863
9864(define-public htmlcxx
9865 (package
9866 (name "htmlcxx")
9867 (version "0.87")
9868 (source
9869 (origin
9870 (method url-fetch)
9871 (uri
9872 (string-append "mirror://sourceforge/htmlcxx/v"
9873 version "/htmlcxx-" version ".tar.gz"))
9874 (sha256
9875 (base32 "1j3mzjlczjrk4ahc43s6kzpvzypzjmqz4sillnca5yadrwwgjf2x"))))
9876 (build-system gnu-build-system)
9877 (arguments
9878 ;; ISO C++17 does not allow dynamic exception specifications
9879 `(#:configure-flags '("CXXFLAGS=-std=c++11")))
9880 (home-page "https://htmlcxx.sourceforge.net/")
9881 (synopsis "Simple non-validating CSS1 and HTML parser for C++")
9882 (description "htmlcxx is a simple non-validating CSS1 and HTML parser for
9883C++. Although there are several other HTML parsers available, htmlcxx has some
9884characteristics that make it unique:
9885@itemize
9886@item STL like navigation of DOM tree, using excelent's tree.hh library from
9887Kasper Peeters
9888@item It is possible to reproduce exactly, character by character, the original
9889document from the parse tree
9890@item Bundled CSS parser
9891@item Optional parsing of attributes
9892@item C++ code that looks like C++ (not so true anymore)
9893@item Offsets of tags/elements in the original document are stored in the nodes
9894of the DOM tree
9895@end itemize")
9896 (license (list license:lgpl2.0
9897 license:gpl2
9898 license:asl2.0))))
9899
9900(define-public librocket
9901 (package
9902 (name "librocket")
9903 (version "1.3.0.0")
9904 (source
9905 (origin
9906 (method git-fetch)
9907 (uri
9908 (git-reference
9909 (url "https://github.com/libRocket/libRocket")
9910 (commit (string-append "release-" version))))
9911 (file-name (git-file-name name version))
9912 (sha256
9913 (base32 "1n6gq007vqijyfasfnfg6c8d2rc9qarl4bhzbgkz062m4h5izlfs"))))
9914 (build-system cmake-build-system)
9915 (arguments
9916 `(#:tests? #f ; No tests.
9917 #:phases
9918 (modify-phases %standard-phases
9919 (add-after 'unpack 'chdir
9920 (lambda _
9921 (chdir "Build"))))))
9922 (inputs
9923 (list freetype))
9924 (home-page "https://github.com/libRocket/libRocket") ; http://librocket.com/ is down.
9925 (synopsis "HTML/CSS user interface library")
9926 (description "libRocket is a C++ user interface package based on the HTML
9927and CSS standards. libRocket uses the open standards XHTML1.0 and
9928CSS2.0 (while borrowing features from HTML5 and CSS3), and extends them with
9929features suited towards real-time applications. It is designed as a complete
9930solution for any project's interface needs:
9931
9932@itemize
9933@item Dynamic layout system.
9934@item Efficient application-wide styling, with a custom-built templating engine.
9935@item Fully featured control set: buttons, sliders, drop-downs, etc.
9936@item Runtime visual debugging suite.
9937@item Easily integrated and extensible with Python or Lua scripting.
9938@end itemize\n")
9939 (license license:expat)))
9940
9941(define-public gmid
9942 (package
9943 (name "gmid")
9944 (version "2.1.1")
9945 (source (origin
9946 (method url-fetch)
9947 (uri (string-append
9948 "https://github.com/omar-polo/gmid/releases/download/"
9949 version "/gmid-" version ".tar.gz"))
9950 (sha256
9951 (base32
9952 "1gy41858xxgbvngw7b162sq8vddd104a3cdd53pp2vk1f91gxc4y"))))
9953 (build-system gnu-build-system)
9954 (arguments
9955 (list #:test-target "regress"
9956 #:phases
9957 #~(modify-phases %standard-phases
9958 (replace 'configure
9959 (lambda _
9960 (setenv "CC" #$(cc-for-target))
9961 (invoke "./configure"
9962 (string-append "PREFIX=" #$output)))))))
9963 (native-inputs (list bison
9964 coreutils
9965 flex
9966 pkg-config
9967 procps))
9968 (inputs (list libevent libressl))
9969 (home-page "https://gmid.omarpolo.com/")
9970 (synopsis "Simple and secure Gemini server")
9971 (description "@command{gmid} is a fast Gemini server written with security
9972in mind. It has features such as:
9973@itemize
9974@item reload the running configuration without interruption
9975@item automatic redirect/error pages
9976@item IRI support (RFC3987)
9977@item reverse proxying
9978@item CGI and FastCGI support
9979@item virtual hosts
9980@item location rules
9981@item event-based asynchronous I/O model
9982@item low memory footprint.
9983@end itemize")
9984 (license license:isc)))
9985
9986(define-public kiln
9987 (package
9988 (name "kiln")
9989 (version "0.4.1")
9990 (source (origin
9991 (method git-fetch)
9992 (uri (git-reference
9993 (url "https://git.sr.ht/~adnano/kiln")
9994 (commit version)))
9995 (file-name (git-file-name name version))
9996 (sha256
9997 (base32
9998 "1ynb079jsyv6viwdksavwar5lqj84ssfw39dl5da98z683xrvch5"))))
9999 (build-system go-build-system)
10000 (arguments
10001 (list
10002 #:import-path "git.sr.ht/~adnano/kiln"
10003 #:install-source? #f
10004 #:phases
10005 #~(modify-phases %standard-phases
10006 (add-after 'install 'install-man
10007 (lambda _
10008 (let ((man1 (string-append #$output "/share/man/man1")))
10009 (system (string-append
10010 "scdoc"
10011 "< src/git.sr.ht/~adnano/kiln/docs/kiln.1.scd"
10012 "> kiln.1"))
10013 (install-file "kiln.1" man1)))))))
10014 (native-inputs
10015 (list scdoc))
10016 (propagated-inputs
10017 (list go-github-com-google-shlex
10018 go-github-com-pelletier-go-toml
10019 go-gopkg-in-yaml-v3))
10020 (home-page "https://kiln.adnano.co/")
10021 (synopsis "Simple static site generator")
10022 (description
10023 "Kiln takes a different approach to building static sites.
10024Instead of packing all functionality into kiln itself, the core is lightweight
10025and can be extended with the use of external commands.")
10026 (license license:expat)))
10027
10028(define-public xoa
10029 (package
10030 (name "xoa")
10031 (version "0.5.1")
10032 (source
10033 (origin
10034 (method fossil-fetch)
10035 (uri (fossil-reference
10036 (uri "https://chim.loan/xoa")
10037 (check-in version)))
10038 (sha256 (base32 "1dl274bl88nhcjp4si2wm49nlsidg0222yy7w2dzfdvjrn0nm20n"))
10039 (modules '((guix build utils)))
10040 (snippet #~(delete-file-recursively "doc/djot")))) ;bundled docs
10041 (build-system gnu-build-system)
10042 (arguments
10043 (list
10044 #:tests?
10045 #f ;no test
10046 #:make-flags
10047 #~(list (string-append "PREFIX=" #$output))
10048 #:phases
10049 #~(modify-phases %standard-phases
10050 (delete 'configure)
10051 (add-after 'install 'wrap
10052 (lambda* (#:key inputs #:allow-other-keys)
10053 (let ((program (string-append #$output "/bin/xoa")))
10054 (substitute* program
10055 (("eqn( -T MathML )" all args)
10056 (string-append (search-input-file inputs "bin/eqn")
10057 args)))
10058 (wrap-program program
10059 `("GUIX_LUA_CPATH" ";" = (,(getenv "GUIX_LUA_CPATH")))
10060 `("GUIX_LUA_PATH" ";" = (,(getenv "GUIX_LUA_PATH"))))))))))
10061 (native-inputs
10062 (list findutils help2man))
10063 (inputs
10064 (list bash-minimal
10065 fennel
10066 groff ;for eqn
10067 lua
10068 lua-djot
10069 lua-filesystem
10070 lua-scintillua))
10071 (home-page "https://chim.loan/xoa")
10072 (synopsis "Basic static website generator")
10073 (description
10074 "Xoa is a basic generator of static websites. It takes care
10075of rendering the content of web feeds and pages, while the user defines
10076the directory and document structures.")
10077 (license (list license:cc0 ;manual page
10078 license:agpl3+))))
10079
10080(define-public siege
10081 (package
10082 (name "siege")
10083 (version "4.1.7")
10084 (source (origin
10085 (method url-fetch)
10086 (uri (string-append "http://download.joedog.org/siege/siege-"
10087 version ".tar.gz"))
10088 (sha256
10089 (base32
10090 "09ihp4sycjm8ixd0k4c7lyni4b0w2nh8gghdss1r75srs7nhq57c"))))
10091 (build-system gnu-build-system)
10092 (arguments
10093 '(#:configure-flags (list (string-append "--with-zlib="
10094 (assoc-ref %build-inputs "zlib"))
10095 (string-append "--with-ssl="
10096 (assoc-ref %build-inputs
10097 "openssl")))))
10098 (inputs (list openssl zlib))
10099 (home-page "https://www.joedog.org/siege-home/")
10100 (synopsis "HTTP/FTP load tester and benchmarking utility")
10101 (description
10102 "Siege is a multi-threaded HTTP/FTP load tester and benchmarking utility. It
10103can stress test a single URL with a user defined number of simulated users, or
10104it can read many URLs into memory and stress them simultaneously. The program
10105reports the total number of hits recorded, bytes transferred, response time,
10106concurrency, and return status.")
10107 ;; GPLv3+ with OpenSSL linking exception.
10108 (license license:gpl3+)))
10109
10110(define-public hurl
10111 (package
10112 (name "hurl")
10113 (version "8.0.1")
10114 (source
10115 (origin
10116 ;; The crates.io tarball does not include the hurlfmt crate.
10117 (method git-fetch)
10118 (uri (git-reference
10119 (url "https://github.com/Orange-OpenSource/hurl")
10120 (commit version)))
10121 (file-name (git-file-name name version))
10122 (sha256
10123 (base32 "0wsw9khfznc638qzp8zx2zwgnrg5d160ky5gnslwm9frz3p5hp0d"))))
10124 (build-system cargo-build-system)
10125 (arguments
10126 (list
10127 #:install-source? #f
10128 #:cargo-install-paths ''("packages/hurl" "packages/hurlfmt")
10129 #:cargo-test-flags
10130 '(list
10131 ;; Excluding doctests since rust-1.93 does not support them.
10132 "--lib" "--bins" "--tests")
10133 #:phases
10134 #~(modify-phases %standard-phases
10135 (add-after 'unpack 'relax-rust-version
10136 (lambda _
10137 ;; Upstream requires the latest stable Rust.
10138 (substitute* '("packages/hurl/Cargo.toml"
10139 "packages/hurlfmt/Cargo.toml")
10140 (("rust-version = \"1.95.0\"")
10141 "rust-version = \"1.93.0\""))))
10142 (add-before 'check 'start-test-server
10143 (lambda _
10144 ;; The integration tests expect a Flask test server
10145 ;; listening on port 8000.
10146 (with-directory-excursion "integration/hurl"
10147 (mkdir-p "build")
10148 (spawn "python3"
10149 '("python3" "server.py"
10150 "--host" "127.0.0.1" "--port" "8000")))
10151 ;; Wait for the server to come up.
10152 (let loop ((attempts 30))
10153 (unless (false-if-exception
10154 (let ((s (socket PF_INET SOCK_STREAM 0)))
10155 (connect s AF_INET
10156 (inet-pton AF_INET "127.0.0.1") 8000)
10157 (close-port s)))
10158 (when (zero? attempts)
10159 (error "test server did not start"))
10160 (sleep 1)
10161 (loop (1- attempts))))))
10162 (add-before 'install 'generate-man-pages
10163 (lambda _
10164 ;; Build the man pages from their Markdown sources.
10165 (for-each (lambda (name)
10166 (with-output-to-file (string-append
10167 "docs/manual/" name ".1")
10168 (lambda ()
10169 (invoke "python3" "bin/docs/build_man.py"
10170 (string-append
10171 "docs/manual/" name ".md")))))
10172 '("hurl" "hurlfmt"))))
10173 (add-before 'install 'generate-completions
10174 (lambda _
10175 ;; Generate the shell completions from the option spec
10176 ;; files, using upstream's script. This runs only the
10177 ;; completion part of generate_all.py, since the other
10178 ;; parts rewrite the source tree.
10179 (setenv "PYTHONPATH" "bin/spec/options")
10180 (invoke "python3" "-c"
10181 "import generate_all as g
10182for name in ('hurl', 'hurlfmt'):
10183 g.generate_completion_files(name, g.get_option_files('docs/spec/options/' + name))")))
10184 (add-after 'install 'install-man-pages
10185 (lambda _
10186 (let ((man1 (string-append #$output "/share/man/man1")))
10187 (for-each (lambda (page)
10188 (install-file page man1))
10189 '("docs/manual/hurl.1" "docs/manual/hurlfmt.1")))))
10190 (add-after 'install 'install-completions
10191 (lambda _
10192 (let ((bash (string-append #$output
10193 "/share/bash-completion/completions"))
10194 (fish (string-append #$output
10195 "/share/fish/vendor_completions.d"))
10196 (zsh (string-append #$output "/share/zsh/site-functions")))
10197 (for-each (lambda (name)
10198 ;; Bash completion files must be named after
10199 ;; the command, without the .bash extension.
10200 (mkdir-p bash)
10201 (copy-file (string-append "completions/"
10202 name ".bash")
10203 (string-append bash "/" name))
10204 (install-file (string-append "completions/"
10205 name ".fish")
10206 fish)
10207 (install-file (string-append "completions/_"
10208 name)
10209 zsh))
10210 '("hurl" "hurlfmt"))))))))
10211 (native-inputs
10212 (list clang
10213 pkg-config
10214 python
10215 python-flask
10216 python-waitress))
10217 (inputs
10218 (cons* curl
10219 libxml2
10220 openssl
10221 zlib
10222 (cargo-inputs 'hurl)))
10223 (home-page "https://hurl.dev")
10224 (synopsis "Run and test HTTP requests")
10225 (description
10226 "Hurl is a command line tool that runs HTTP requests defined in a plain
10227text format. It can chain requests, capture values and evaluate queries on
10228headers and body response. This package also provides @command{hurlfmt},
10229a formatter and linter for Hurl files.")
10230 (license license:asl2.0)))
10231
10232(define-public gmnisrv
10233 (package
10234 (name "gmnisrv")
10235 (version "1.0")
10236 (home-page "https://git.sr.ht/~sircmpwn/gmnisrv")
10237 (source
10238 (origin
10239 (method git-fetch)
10240 (uri (git-reference
10241 (url home-page)
10242 (commit version)))
10243 (sha256
10244 (base32 "115r1dw9k08r2nvygy8ll21qvsc5kmzi5jcqm7g7r8q8hifxglap"))
10245 (file-name (git-file-name name version))))
10246 (build-system gnu-build-system)
10247 (arguments
10248 `(#:tests? #f ;no check target
10249 #:configure-flags (list "--sysconfdir=/etc"
10250 (string-append "--with-mimedb="
10251 (assoc-ref %build-inputs "mailcap")
10252 "/etc/mime.types"))
10253 #:make-flags (list (string-append "CC=" ,(cc-for-target)))))
10254 (inputs
10255 (list mailcap openssl))
10256 (native-inputs
10257 (list pkg-config scdoc))
10258 (synopsis "Simple Gemini protocol server")
10259 (description "gmnisrv is a simple Gemini protocol server written in C.")
10260 (license (list license:gpl3+
10261 license:bsd-3)))) ;; for ini.c and ini.h
10262
10263(define-public kineto
10264 (package
10265 (name "kineto")
10266 (properties '((commit . "edd4fe31f16f9eb9565d2b6a329738ceedea8de9")
10267 (revision . "0")
10268 (go-pseudo-version . "0.0.0-20250122093821-1f4e0667bc21")))
10269 (version (git-version "0.0.0"
10270 (assoc-ref properties 'revision)
10271 (assoc-ref properties 'commit)))
10272 (source
10273 (origin
10274 (method git-fetch)
10275 (uri (git-reference
10276 (url "https://git.sr.ht/~sircmpwn/kineto")
10277 (commit (assoc-ref properties 'commit))))
10278 (file-name (git-file-name name version))
10279 (sha256
10280 (base32 "1dldfz5irdhaza6dj2bdv99c8bwprl34n9rvlyvvvd8mpvsl6459"))))
10281 (build-system go-build-system)
10282 (arguments
10283 (list
10284 #:install-source? #f
10285 #:import-path "git.sr.ht/~sircmpwn/kineto/"))
10286 (native-inputs
10287 (list go-git-sr-ht-sircmpwn-getopt
10288 go-git-sr-ht-adnano-go-gemini))
10289 (home-page "https://git.sr.ht/~sircmpwn/kineto/")
10290 (synopsis "HTTP proxy for Gemini")
10291 (description
10292 "This is an @acronym{HTTP} to
10293@url{https://gemini.circumlunar.space/,Gemini} proxy designed to provide
10294service for a single domain, i.e. to make your Gemini site available over
10295HTTP. It can proxy to any domain in order to facilitate linking to the rest
10296of Geminispace, but it defaults to a specific domain.")
10297 (license license:gpl3+)))
10298
10299(define-public maildir-rank-addr
10300 (package
10301 (name "maildir-rank-addr")
10302 (version "1.4.1")
10303 (source
10304 (origin
10305 (method git-fetch)
10306 (uri (git-reference
10307 (url "https://github.com/ferdinandyb/maildir-rank-addr")
10308 (commit (string-append "v" version))))
10309 (file-name (git-file-name name version))
10310 (sha256
10311 (base32 "19dhlfb5d8sqayfyv3pj3rnrw3gbkq9vzj7gwcj2g3whx1ayy86y"))))
10312 (build-system go-build-system)
10313 (arguments
10314 (list
10315 #:install-source? #f
10316 #:import-path "github.com/ferdinandyb/maildir-rank-addr"))
10317 (native-inputs
10318 (list go-github-com-emersion-go-message
10319 go-github-com-emersion-go-mbox
10320 go-github-com-mitchellh-go-homedir
10321 go-github-com-spf13-pflag
10322 go-github-com-spf13-viper
10323 go-github-com-stretchr-testify
10324 go-golang-org-x-text))
10325 (home-page "https://github.com/ferdinandyb/maildir-rank-addr")
10326 (synopsis "Generate an addressbook from locally available email")
10327 (description
10328 "This package generates a ranked addressbook from your locally available
10329email. It can be used in MUA's like @url{http://aerc-mail.org, aerc} or
10330@url{http://www.mutt.org/,mutt} by grepping the list.")
10331 (license license:expat)))
10332
10333(define-public libzim
10334 (let* ((testsuite-version "0.9.0")
10335 (testsuite-file-name (git-file-name "zim-testing-suite"
10336 testsuite-version)))
10337 (package
10338 (name "libzim")
10339 (version "9.8.1")
10340 (source (origin
10341 (method git-fetch)
10342 (uri (git-reference
10343 (url "https://github.com/openzim/libzim")
10344 (commit version)))
10345 (sha256
10346 (base32
10347 "0daczgl9jyj52mjh2c79zh0zxij77rcsfmzzkpia9vpkvbf021ay"))
10348 (file-name (git-file-name name version))))
10349 (build-system meson-build-system)
10350 (arguments
10351 (list
10352 #:configure-flags
10353 #~(list
10354 (string-append "-Dtest_data_dir="
10355 #+(this-package-native-input testsuite-file-name)
10356 "/data"))))
10357 (propagated-inputs
10358 ;; In Requires.private of libzim.pc.
10359 (list icu4c
10360 xapian
10361 xz
10362 (list zstd "lib") ))
10363 (inputs
10364 (list python-wrapper ; for libzim-compile-resources
10365 (list util-linux "lib")))
10366 (native-inputs
10367 (list pkg-config
10368 googletest
10369 ;; The testsuite is a pre-generated artifact that can be
10370 ;; regenerated from the upstream repository, but it
10371 ;; explicitely advises against it. Use it pregenerated.
10372 ;; Using git-fetch allows us to avoid additional unpacking.
10373 (origin
10374 (method git-fetch)
10375 (uri (git-reference
10376 (url "https://github.com/openzim/zim-testing-suite")
10377 (commit testsuite-version)))
10378 (file-name testsuite-file-name)
10379 (sha256
10380 (base32 "14ac58i0zzvzssl5fyykc494jlw4ia8dhfr10hmi8h3gfn08dm62")))))
10381 (home-page "https://wiki.openzim.org/wiki/Main_Page")
10382 (synopsis "Reference implementation of the ZIM specification")
10383 (description "The openZIM project proposes offline storage solutions for
10384content coming from the Web. The zimlib is the standard implementation of the
10385ZIM specification. It is a library which implements the read and write method
10386for ZIM files.")
10387 (license license:gpl2))))
10388
10389(define-public kiwix-lib
10390 (package
10391 (name "kiwix-lib")
10392 (version "14.2.0")
10393 (home-page "https://github.com/kiwix/kiwix-lib/")
10394 (source (origin
10395 (method git-fetch)
10396 (uri (git-reference
10397 (url home-page)
10398 (commit version)))
10399 (sha256
10400 (base32
10401 "17chyyrbj239fd4iwcnb01yyk7p1zyxbn7fw1a9pr7r05ngsax1s"))
10402 (file-name (git-file-name name version))))
10403 (build-system meson-build-system)
10404 (arguments
10405 `(#:phases
10406 (modify-phases %standard-phases
10407 (add-before 'configure 'fix-paths-and-includes
10408 (lambda* (#:key inputs #:allow-other-keys)
10409 (substitute* "src/aria2.cpp"
10410 (("ARIA2_CMD \"aria2c\"")
10411 (string-append "ARIA2_CMD \""
10412 (search-input-file inputs "/bin/aria2c")
10413 "\""))))))))
10414 (inputs
10415 (list aria2
10416 curl
10417 icu4c
10418 libmicrohttpd
10419 libzim
10420 pugixml
10421 xapian
10422 zlib
10423 `(,zstd "lib")))
10424 (native-inputs
10425 (list cpp-mustache
10426 pkg-config
10427 ;; for kiwix-compile-resources
10428 python-wrapper))
10429 (synopsis "Common code base for all Kiwix ports")
10430 (description "The Kiwix library provides the Kiwix software suite core.
10431It contains the code shared by all Kiwix ports.")
10432 (license license:gpl3)))
10433
10434(define-public kiwix-lib-13
10435 (package
10436 (inherit kiwix-lib)
10437 (name "kiwix-lib")
10438 (version "13.1.0")
10439 (source (origin
10440 (method git-fetch)
10441 (uri (git-reference
10442 (url "https://github.com/kiwix/kiwix-lib/")
10443 (commit version)))
10444 (file-name (git-file-name name version))
10445 (sha256
10446 (base32
10447 "0mgzmqar70rj83x27a4zh7qr6yl5pi95g6i3fvvxysdjy76v18qc"))))
10448 (arguments
10449 (substitute-keyword-arguments arguments
10450 ((#:phases phases)
10451 #~(modify-phases #$phases
10452 (add-before 'configure 'set-cflags
10453 (lambda _
10454 ;; Needed due to deprecation in libzim
10455 (setenv "CPPFLAGS" "-Wno-error=deprecated-declarations")))))))))
10456
10457(define-public kiwix-desktop
10458 (package
10459 (name "kiwix-desktop")
10460 (version "2.5.1")
10461 (source (origin
10462 (method url-fetch)
10463 (uri (string-append
10464 "https://download.kiwix.org/release/kiwix-desktop/kiwix-desktop-"
10465 version
10466 ".tar.gz"))
10467 (sha256
10468 (base32
10469 "14dgv92fpb9nzvqa59446818gzhf19sn32f5vgvxrb9llbn6z4rh"))))
10470 (build-system qt-build-system)
10471 (arguments
10472 (list
10473 #:qtbase qtbase
10474 #:tests? #f ; no tests
10475 #:modules '((guix build qt-build-system)
10476 ((guix build gnu-build-system) #:prefix gnu:)
10477 (guix build utils))
10478 #:phases
10479 #~(modify-phases %standard-phases
10480 (replace 'configure
10481 (lambda* (#:key outputs #:allow-other-keys)
10482 (invoke "qmake"
10483 (string-append "PREFIX="
10484 (assoc-ref outputs "out")))))
10485 (replace 'build (assoc-ref gnu:%standard-phases 'build))
10486 (replace 'install (assoc-ref gnu:%standard-phases 'install)))))
10487 (inputs
10488 (list bash-minimal
10489 curl
10490 icu4c
10491 kiwix-lib
10492 libmicrohttpd
10493 libzim
10494 pugixml
10495 qtbase
10496 qtdeclarative
10497 qtsvg
10498 qtwebchannel
10499 qtwebengine
10500 qtwayland
10501 xapian
10502 zlib
10503 `(,zstd "lib")))
10504 (native-inputs
10505 (list pkg-config
10506 qtbase))
10507 (home-page "https://wiki.kiwix.org/wiki/Software")
10508 (synopsis "Viewer and manager of ZIM files")
10509 (description "Kiwix Desktop allows you to enjoy a lot of different content
10510offline (such as Wikipedia), without any access to Internet.")
10511 (license license:gpl3)))
10512
10513(define-public kiwix-tools
10514 (package
10515 (name "kiwix-tools")
10516 (version "3.8.2")
10517 (source (origin
10518 (method url-fetch)
10519 (uri (string-append "https://download.kiwix.org/release/"
10520 "kiwix-tools/kiwix-tools-" version ".tar.xz"))
10521 (sha256
10522 (base32
10523 "1y99r4vg8d3wy16s5f1i5j1prksv5g1cxxj6ysprhp7vhiczhf0j"))))
10524 (build-system meson-build-system)
10525 (inputs
10526 (list curl
10527 icu4c
10528 kiwix-lib
10529 libmicrohttpd
10530 libzim
10531 pugixml
10532 docopt-cpp
10533 xapian
10534 zlib
10535 `(,zstd "lib")))
10536 (native-inputs
10537 (list pkg-config))
10538 (home-page "https://wiki.kiwix.org/wiki/Software")
10539 (synopsis "Kiwix command line tools")
10540 (description "The Kiwix tools are a collection of Kiwix-related command line
10541tools:
10542@itemize
10543@item kiwix-manage: Manage XML based library of ZIM files
10544@item kiwix-read: Read ZIM file content
10545@item kiwix-search: Fulltext search in ZIM files
10546@item kiwix-serve: HTTP daemon serving ZIM files
10547@end itemize\n")
10548 (license license:gpl3+)))
10549
10550(define-public offpunk
10551 (let ((commit "947f813de43d07590a7b60e760cd3df85223af52")
10552 (revision "1"))
10553 (package
10554 (name "offpunk")
10555 (version (git-version "3.0" revision commit))
10556 (source
10557 (origin
10558 (method git-fetch)
10559 (uri (git-reference
10560 (url "https://git.sr.ht/~lioploum/offpunk/")
10561 (commit commit)))
10562 (file-name (git-file-name name version))
10563 (sha256
10564 (base32 "0jvxqw53f670d4ky99pdq24ljmya49bx02lc26gd1a3avcwfhisc"))))
10565 (build-system pyproject-build-system)
10566 (arguments
10567 (list
10568 #:phases
10569 #~(modify-phases %standard-phases
10570 (add-after 'unpack 'patch-external-programs
10571 (lambda* (#:key inputs #:allow-other-keys)
10572 (substitute* "offutils.py"
10573 ((": \"\\b(grep|xdg-open|less|chafa|file)\\b\"" _ program)
10574 (string-append ": \""
10575 (search-input-file inputs
10576 (format #f "bin/~a"
10577 program)) "\""))))))))
10578 (native-inputs (list gettext-minimal python-hatchling python-pytest
10579 python-pytest-mock python-hatch-requirements-txt))
10580 (inputs (list python-beautifulsoup4
10581 python-chardet
10582 python-cryptography
10583 python-feedparser
10584 python-readability-lxml
10585 python-requests
10586 python-setproctitle
10587 chafa
10588 file
10589 grep
10590 less
10591 xdg-utils))
10592 (synopsis "Offline first command-line browser for the smolnet")
10593 (description
10594 "A command-line and offline-first smolnet browser/feed reader
10595for Gemini, Gopher, Spartan and Web.
10596
10597The goal of Offpunk is to be able to synchronise your content once (a day, a
10598week, a month) and then browse/organise it while staying disconnected.")
10599 (home-page "https://offpunk.net/")
10600 (license license:agpl3+))))
10601
10602(define-public uriparser
10603 (package
10604 (name "uriparser")
10605 (version "1.0.2")
10606 (source (origin
10607 (method git-fetch)
10608 (uri (git-reference
10609 (url "https://github.com/uriparser/uriparser")
10610 (commit (string-append "uriparser-" version))))
10611 (file-name (git-file-name name version))
10612 (sha256
10613 (base32
10614 "1a4032wn6p9mv5lizh5rpg5gwvq69bk7zfqix7vjv5cap1zqvk84"))))
10615 (build-system cmake-build-system)
10616 (native-inputs (list googletest doxygen graphviz))
10617 (arguments (if (%current-target-system)
10618 (list #:configure-flags #~(list "-DURIPARSER_BUILD_TESTS=OFF"))
10619 (list #:configure-flags #~(list "-DURIPARSER_BUILD_TESTS=ON"))))
10620 (synopsis "Strictly RFC 3986 compliant URI parsing and handling library")
10621 (description "uriparser is a strictly RFC 3986 compliant URI parsing and
10622handling library written in C89 (\"ANSI C\"). uriparser is fast and supports
10623Unicode.")
10624 (home-page "https://uriparser.github.io/")
10625 (license license:bsd-3)))
10626
10627(define-public quark
10628 ;; No releases yet
10629 (let ((revision "0")
10630 (commit "c6a9055e5a30be570e30da8d216c39662c3a3f99"))
10631 (package
10632 (name "quark")
10633 (version (git-version "0.0.0" revision commit))
10634 (source (origin
10635 (method git-fetch)
10636 (uri (git-reference
10637 (url "https://git.suckless.org/quark/")
10638 (commit commit)))
10639 (file-name (git-file-name name version))
10640 (sha256
10641 (base32
10642 "1znvnr30xi5vgd6n3wvgv9pwj992zpzzjk0fmq28ydf1l6kqvkm7"))))
10643 (build-system gnu-build-system)
10644 (arguments
10645 (list #:tests? #f ; no tests
10646 #:make-flags
10647 #~(list (string-append "CC=" #$(cc-for-target))
10648 (string-append "PREFIX=" (assoc-ref %outputs "out")))
10649 #:phases
10650 #~(modify-phases %standard-phases
10651 (delete 'configure)))) ; no configure script
10652 (home-page "https://tools.suckless.org/quark/")
10653 (synopsis "Small and simple HTTP GET/HEAD-only web server for static
10654content")
10655 (description "Quark is an extremely small and simple HTTP GET/HEAD only
10656web server for static content. TLS is not natively supported and should be
10657provided by a TLS reverse proxy (e.g. tlstunnel, hitch or stunnel).")
10658 (license license:isc)
10659
10660 ;; XXX: Ignore this CVE to work around a name clash with the unrelated
10661 ;; "cpe:2.3:a:comelz:quark" package. The proper fix is for (guix cve)
10662 ;; to account for "vendor names".
10663 (properties '((lint-hidden-cve . ("CVE-2019-15520")))))))
10664
10665(define-public go-webring
10666 (package
10667 (name "go-webring")
10668 (properties '((commit . "2a370aeeb9a0c434268371a7af688fac96887e95")
10669 (revision . "1")
10670 (go-pseudo-version . "0.0.0-20251130195908-2a370aeeb9a0")))
10671 (version (git-version "0.0.0"
10672 (assoc-ref properties 'revision)
10673 (assoc-ref properties 'commit)))
10674 (source
10675 (origin
10676 (method git-fetch)
10677 (uri (git-reference
10678 (url "https://git.sr.ht/~amolith/go-webring")
10679 (commit (assoc-ref properties 'commit))))
10680 (file-name (git-file-name name version))
10681 (sha256
10682 (base32 "199jg1fv5ki4ssc08ndsa5irdf703kizfnvsf2q5isapna5kvgx3"))))
10683 (build-system go-build-system)
10684 (arguments
10685 (list #:import-path "git.sr.ht/~amolith/go-webring"
10686 #:install-source? #f))
10687 (native-inputs (list go-github-com-spf13-pflag))
10688 (home-page "https://git.sr.ht/~amolith/go-webring")
10689 (synopsis "Simple webring implementation")
10690 (description
10691 "@code{go--webring} provides a simple webring implementation as used by
10692the Fediring.")
10693 (license (list license:cc0 license:bsd-2))))
10694
10695(define-public awslogs
10696 (package
10697 (name "awslogs")
10698 (version "0.15.0")
10699 (source (origin
10700 (method url-fetch)
10701 (uri (pypi-uri "awslogs" version))
10702 (sha256
10703 (base32
10704 "1maxahp9la2jdcgrgf3abq4jjr80jg9b354xd2hcw0q73jxj7whr"))))
10705 (build-system pyproject-build-system)
10706 (native-inputs
10707 (list python-pytest
10708 python-setuptools))
10709 (propagated-inputs
10710 (list python-boto3
10711 python-jmespath
10712 python-dateutil
10713 python-termcolor))
10714 (home-page "https://github.com/jorgebastida/awslogs")
10715 (synopsis "Command line tool to read AWS CloudWatch logs")
10716 (description
10717 "This package provides awslogs, a simple command line tool to download
10718and read AWS CloudWatch logs. The same functionality is available from
10719@code{aws logs tail}.")
10720 (license license:bsd-3)))
10721
10722(define-public lexbor
10723 (package
10724 (name "lexbor")
10725 (version "3.0.1")
10726 (source (origin
10727 (method git-fetch)
10728 (uri (git-reference
10729 (url "https://github.com/lexbor/lexbor")
10730 (commit (string-append "v" version))))
10731 (file-name (git-file-name name version))
10732 (sha256
10733 (base32
10734 "1krrwcfwr31ikxhm3lig7hhi8xlj5lfqdd8y0x2ibr7j79nvazxk"))))
10735 (build-system cmake-build-system)
10736 (arguments
10737 (list #:configure-flags #~(list "-DLEXBOR_BUILD_TESTS=ON"
10738 "-DLEXBOR_BUILD_TESTS_CPP=ON")))
10739 (home-page "https://lexbor.com/")
10740 (synopsis "@code{HTML} and @code{CSS} renderer written in @code{C}")
10741 (description
10742 "This package provides @code{Lexbor}, a high-performance, lightweight
10743@code{HTML}/@code{CSS} engine implemented entirely in @code{C99} with no external
10744dependencies. It's primarily usage is intended for projects that need to process
10745web content, but don't require a full browser environment.")
10746 (license license:asl2.0)))
10747
10748(define-public orcania
10749 (package
10750 (name "orcania")
10751 (version "2.3.2")
10752 (source (origin
10753 (method git-fetch)
10754 (uri (git-reference
10755 (url "https://github.com/babelouest/orcania")
10756 (commit (string-append "v" version))))
10757 (file-name (git-file-name name version))
10758 (sha256
10759 (base32
10760 "0dhczbhwvf3f9mj38qm46j10rpr77yz1np68mabfw8zcfwhr0pn4"))))
10761 (build-system cmake-build-system)
10762 (arguments
10763 (list #:configure-flags #~(list "-DBUILD_ORCANIA_TESTING=ON"
10764 "-DBUILD_ORCANIA_DOCUMENTATION=ON")
10765 #:phases #~(modify-phases %standard-phases
10766 (add-after 'build 'build-doc
10767 (lambda _
10768 (invoke "make" "doc")))
10769 (add-after 'install 'install-doc
10770 (lambda _
10771 (let ((doc (string-append #$output
10772 "/share/doc/orcania")))
10773 (mkdir-p doc)
10774 (copy-recursively "../source/doc/html" doc)))))))
10775 (native-inputs (list check doxygen subunit))
10776 (home-page "https://babelouest.github.io/orcania/")
10777 (synopsis "Collection of C functions for Ulfius")
10778 (description
10779 "Orcania is a library with functions that can be shared among C programs.
10780It is intended to provide low-level functionalities for the Ulfius and Yder
10781libraries.")
10782 (license license:lgpl2.1)))
10783
10784(define-public yder
10785 (package
10786 (name "yder")
10787 (version "1.4.19")
10788 (source (origin
10789 (method git-fetch)
10790 (uri (git-reference
10791 (url "https://github.com/babelouest/yder")
10792 (commit (string-append "v" version))))
10793 (file-name (git-file-name name version))
10794 (sha256
10795 (base32
10796 "02jgrqby39ykfdhc7z0bh3x5aqisqybz6lnvn7msh9wqbj5zvzi8"))))
10797 (build-system cmake-build-system)
10798 (arguments
10799 (list #:configure-flags #~(list "-DWITH_JOURNALD=OFF"
10800 "-DBUILD_YDER_TESTING=ON"
10801 "-DBUILD_YDER_DOCUMENTATION=ON")
10802 #:phases #~(modify-phases %standard-phases
10803 (add-after 'build 'build-doc
10804 (lambda _
10805 (invoke "make" "doc")))
10806 (add-after 'install 'install-doc
10807 (lambda _
10808 (let ((doc (string-append #$output
10809 "/share/doc/yder")))
10810 (mkdir-p doc)
10811 (copy-recursively "../source/doc/html" doc)))))))
10812 (native-inputs (list check doxygen subunit))
10813 (inputs (list orcania))
10814 (home-page "https://babelouest.github.io/yder/")
10815 (synopsis "Logging library for C applications")
10816 (description
10817 "Yder is a logging library written in C. It can log messages to the
10818console, a file, syslog, journald, or a callback function.")
10819 (license license:lgpl2.1)))
10820
10821(define-public yoga
10822 (package
10823 (name "yoga")
10824 (version "3.2.1")
10825 (source (origin
10826 (method git-fetch)
10827 (uri (git-reference
10828 (url "https://github.com/facebook/yoga")
10829 (commit (string-append "v" version))))
10830 (file-name (git-file-name name version))
10831 (sha256
10832 (base32
10833 "09g2kispng520mcaky87lkpj7k1lscsz2jyv05cjxzfrwwf4pfyb"))))
10834 (build-system cmake-build-system)
10835 (arguments
10836 (list #:phases
10837 #~(modify-phases %standard-phases
10838 (add-after 'unpack 'use-system-googletest
10839 (lambda _
10840 (substitute* "tests/CMakeLists.txt"
10841 (("FetchContent_MakeAvailable[(]googletest[)]")
10842 "find_package(GTest REQUIRED)"))))
10843 (replace 'check
10844 (lambda* (#:key tests? #:allow-other-keys)
10845 (when tests?
10846 (invoke "./tests/yogatests")))))))
10847 (inputs (list googletest))
10848 (home-page "https://github.com/facebook/yoga/")
10849 (synopsis "Flexbox layout engine")
10850 (description
10851 "Yoga is an embeddable and performant flexbox layout engine with bindings
10852for multiple languages.")
10853 (license license:expat)))
10854
10855(define-public ulfius
10856 (package
10857 (name "ulfius")
10858 (version "2.7.13")
10859 (source (origin
10860 (method git-fetch)
10861 (uri (git-reference
10862 (url "https://github.com/babelouest/ulfius")
10863 (commit (string-append "v" version))))
10864 (file-name (git-file-name name version))
10865 (sha256
10866 (base32
10867 "1dfwdpqmqki63dddi53bfv6jd0kzv8gh2w1lxsv6mzk3sxl6qakf"))))
10868 (build-system cmake-build-system)
10869 (arguments
10870 (list #:configure-flags #~(list "-DBUILD_ULFIUS_TESTING=ON"
10871 "-DBUILD_ULFIUS_DOCUMENTATION=ON")
10872 #:phases #~(modify-phases %standard-phases
10873 (add-after 'build 'build-doc
10874 (lambda _
10875 (invoke "make" "doc")))
10876 (replace 'check
10877 (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
10878 (when tests?
10879 (let ((job-count (number->string
10880 (or (and parallel-tests?
10881 (parallel-job-count))
10882 1))))
10883 ;; Skip failing tests that try to start a server.
10884 (invoke "ctest" "--output-on-failure"
10885 "-j" job-count "-E"
10886 "(core|framework|example_callbacks)")))))
10887 (add-after 'install 'install-doc
10888 (lambda _
10889 (let ((doc (string-append #$output
10890 "/share/doc/ulfius")))
10891 (mkdir-p doc)
10892 (copy-recursively "../source/doc/html" doc)))))))
10893 (native-inputs (list check doxygen subunit))
10894 (inputs (list zlib))
10895 (propagated-inputs ;for libulfius.pc
10896 (list curl
10897 gnutls
10898 jansson
10899 libgcrypt
10900 libmicrohttpd
10901 orcania
10902 yder))
10903 (home-page "https://babelouest.github.io/ulfius/")
10904 (synopsis "HTTP Framework for REST Applications in C")
10905 (description
10906 "Ulfius is a HTTP Framework library for REST Applications written in C.
10907It is based on GNU libmicrohttpd for the backend web server, Jansson for the
10908JSON manipulation library, and libcurl for the http/smtp client API. It can
10909be used to facilitate creation of web applications in C programs with a small
10910memory footprint, as in embedded systems applications. It can create
10911webservices in HTTP or HTTPS mode, stream data, or implement server
10912websockets.")
10913 (license license:lgpl2.1)))
10914
10915;;;
10916;;; Avoid adding new packages to the end of this file. To reduce the chances
10917;;; of a merge conflict, place them above by existing packages with similar
10918;;; functionality or similar names.
10919;;;