projects/guix·blob java-team · refs

10915 lines · 425.5 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 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 `(,pcre "bin"))) ;for 'pcre-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 pcre 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 ("pcre" ,pcre)
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.18")
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 "090pn7gyicvpqq01451zhkjw1fw3h4l6v2f6mxlvhrli8x3b0sl7"))))
1622 (build-system cmake-build-system)
1623 (home-page "https://github.com/json-c/json-c/wiki")
1624 (synopsis "JSON implementation in C")
1625 (description
1626 "JSON-C implements a reference counting object model that allows you to
1627easily construct JSON objects in C, output them as JSON-formatted strings and
1628parse JSON-formatted strings back into the C representation of JSON objects.
1629It aims to conform to RFC 7159.")
1630 (license license:x11)))
1631
1632;; TODO: Remove these old versions when all dependents have been updated.
1633(define-public json-c-0.13
1634 (package
1635 (inherit json-c)
1636 (version "0.13.1")
1637 (source (origin
1638 (method url-fetch)
1639 (uri (string-append
1640 "https://s3.amazonaws.com/json-c_releases/releases/json-c-"
1641 version ".tar.gz"))
1642 (sha256
1643 (base32 "0ws8dz9nk8q2c0gbf66kg2r6mrkl7kamd3gpdv9zsyrz9n6n0zmq"))
1644 (patches (search-patches "json-c-0.13-CVE-2020-12762.patch"))
1645 (modules '((guix build utils)))
1646 (snippet
1647 '(begin
1648 ;; Somehow 'config.h.in' is older than
1649 ;; 'aclocal.m4', which would trigger a rule to
1650 ;; run 'autoheader'.
1651 (set-file-time "config.h.in"
1652 (stat "aclocal.m4"))
1653 #t))))
1654 (build-system gnu-build-system)
1655 (arguments
1656 (list
1657 #:configure-flags
1658 #~(list #$(string-append "CFLAGS=-g -O2"
1659 " -Wno-error=calloc-transposed-args"
1660 " -Wno-error=implicit-function-declaration"))))))
1661
1662(define-public json-parser
1663 (package
1664 (name "json-parser")
1665 (version "1.1.0")
1666 (source (origin
1667 ;; do not use auto-generated tarballs
1668 (method git-fetch)
1669 (uri (git-reference
1670 (url "https://github.com/udp/json-parser")
1671 (commit (string-append "v" version))))
1672 (file-name (git-file-name name version))
1673 (sha256
1674 (base32
1675 "1ls7z4fx0sq633s5bc0j1gh36sv087gmrgr7rza22wjq2d4606yf"))))
1676 ;; FIXME: we should build the python bindings in a separate package
1677 (build-system gnu-build-system)
1678 ;; the tests are written for the python bindings which are not built here
1679 (arguments '(#:tests? #f))
1680 (home-page "https://github.com/udp/json-parser")
1681 (synopsis "JSON parser written in ANSI C")
1682 (description "This package provides a very low footprint JSON parser
1683written in portable ANSI C.
1684
1685@itemize
1686@item BSD licensed with no dependencies (i.e. just drop the C file into your
1687project)
1688@item Never recurses or allocates more memory than it needs
1689@item Very simple API with operator sugar for C++
1690@end itemize")
1691 (license license:bsd-2)))
1692
1693(define-public webhook
1694 (package
1695 (name "webhook")
1696 (version "2.8.3")
1697 (source
1698 (origin
1699 (method git-fetch)
1700 (uri (git-reference
1701 (url "https://github.com/adnanh/webhook")
1702 (commit version)))
1703 (file-name (git-file-name name version))
1704 (sha256
1705 (base32 "14y68gdmy13d5jk2hlki0syrbksxs6anm5dmmpbm8chqzmb8psrz"))
1706 (modules '((guix build utils)))
1707 (snippet
1708 #~(begin
1709 (delete-file-recursively "vendor")))))
1710 (build-system go-build-system)
1711 (arguments
1712 (list
1713 #:install-source? #f
1714 #:import-path "github.com/adnanh/webhook"
1715 #:test-flags #~(list "-vet=off")
1716 #:phases
1717 #~(modify-phases %standard-phases
1718 (add-after 'unpack 'configure
1719 (lambda* (#:key inputs #:allow-other-keys)
1720 (substitute* "src/github.com/adnanh/webhook/webhook_test.go"
1721 (("/bin/echo")
1722 (search-input-file inputs "bin/echo"))
1723 (("/bin/sh")
1724 (search-input-file inputs "bin/sh"))))))))
1725 (native-inputs
1726 (list go-github-com-clbanning-mxj-v2
1727 go-github-com-coreos-go-systemd-v22
1728 go-github-com-dustin-go-humanize
1729 go-github-com-fsnotify-fsnotify
1730 go-github-com-ghodss-yaml
1731 go-github-com-go-chi-chi-v5
1732 go-github-com-gofrs-uuid-v5
1733 go-github-com-gorilla-mux
1734 go-golang-org-x-sys))
1735 (home-page "https://github.com/adnanh/webhook")
1736 (synopsis "Lightweight incoming webhook server")
1737 (description
1738 "webhook is a lightweight configurable tool to create HTTP
1739endpoints (hooks) which can execute configured commands. Data from the HTTP
1740request (such as headers, payload or query variables) can be passed on to the
1741configured commands. Hooks may also be configured to trigger only when
1742certain rules are satisfied.
1743
1744webhook aims to be minimal and do nothing more than it should do. And, that
1745is:
1746
1747@itemize
1748@item receive the request
1749@item parse the headers, payload and query variables
1750@item check if the specified rules for the hook are satisfied
1751@item and finally, pass the specified arguments to the specified command via
1752command line arguments or via environment variables.
1753@end itemize")
1754 (license (list license:expat ;; main license
1755 license:asl2.0)))) ;; internal/pidfile
1756
1757(define-public qoauth
1758 (package
1759 (name "qoauth")
1760 (version "2.0.0")
1761 (source (origin
1762 (method git-fetch)
1763 (uri (git-reference
1764 (url "https://github.com/ayoy/qoauth")
1765 (commit (string-append "v" version))))
1766 (file-name (git-file-name name version))
1767 (sha256
1768 (base32
1769 "1b2jdqs526ac635yb2whm049spcsk7almnnr6r5b4yqhq922anw3"))))
1770 (build-system gnu-build-system)
1771 (inputs
1772 (list qca qtbase-5))
1773 (arguments
1774 '(#:tests? #f ;FIXME: some tests are failing
1775 #:phases
1776 (modify-phases %standard-phases
1777 (add-after 'unpack 'patch-code
1778 (lambda _
1779 (make-file-writable "src/qoauth.pc")
1780 (substitute* "src/src.pro"
1781 (("/lib64") "/lib"))
1782 #t))
1783 (add-after 'unpack 'adjust-mkspecs-directory
1784 (lambda* (#:key outputs #:allow-other-keys)
1785 (substitute* "src/src.pro"
1786 ;; Do not attempt to install the .prf file into qtbase
1787 ;; "lib/qt5/mkspecs/features", ref <https://bugs.gnu.org/45031>.
1788 (("\\$\\$\\[QMAKE_MKSPECS\\]")
1789 (string-append (assoc-ref outputs "out") "/lib/qt5/mkspecs")))
1790 #t))
1791 (replace 'configure
1792 (lambda* (#:key inputs #:allow-other-keys)
1793 (let ((qca (assoc-ref inputs "qca")))
1794 (invoke
1795 "qmake"
1796 (string-append "PREFIX=" (assoc-ref %outputs "out"))
1797 (string-append "QMAKE_INCDIR+=" qca "/include/Qca-qt5/QtCrypto")
1798 (string-append "LIBS+=-L" qca "/lib")
1799 (string-append "LIBS+=-lqca-qt5"))))))))
1800 (home-page "https://github.com/ayoy/qoauth")
1801 (synopsis "Qt-based C++ library for OAuth authorization scheme")
1802 (description "QOAuth is an attempt to support interaction with
1803OAuth-powered network services in a Qt way, i.e. simply, clearly and
1804efficiently. It gives the application developer no more than 4 methods.")
1805 (license license:lgpl2.1+)))
1806
1807(define-public krona-tools
1808 (package
1809 (name "krona-tools")
1810 (version "2.8")
1811 (source (origin
1812 (method url-fetch)
1813 (uri (string-append
1814 "https://github.com/marbl/Krona/releases/download/v"
1815 version "/KronaTools-" version ".tar"))
1816 (sha256
1817 (base32
1818 "1h698wddb3hii68mnkby7s1x81vbhd4z1sf4ivm1lsi2nqlc1vsn"))))
1819 (build-system perl-build-system)
1820 (arguments
1821 `(#:phases
1822 (modify-phases %standard-phases
1823 ;; There is no configure or build steps.
1824 (delete 'configure)
1825 (delete 'build)
1826 ;; Install script "install.pl" expects the build directory to remain
1827 ;; after installation, creating symlinks etc., so re-implement it
1828 ;; here.
1829 (replace 'install
1830 (lambda* (#:key outputs #:allow-other-keys)
1831 (let ((bin (string-append (assoc-ref outputs "out") "/bin"))
1832 (perl (string-append (assoc-ref outputs "out")
1833 "/lib/perl5/site_perl/krona-tools/lib"))
1834 (share (string-append (assoc-ref outputs "out")
1835 "/share/krona-tools")))
1836 (mkdir-p bin)
1837 (for-each
1838 (lambda (script)
1839 (let ((executable (string-append "scripts/" script ".pl")))
1840 ;; Prefix executables with 'kt' as install script does.
1841 (copy-file executable (string-append bin "/kt" script))))
1842 '("ClassifyBLAST"
1843 "GetContigMagnitudes"
1844 "GetLCA"
1845 "GetTaxIDFromAcc"
1846 "GetTaxInfo"
1847 "ImportBLAST"
1848 "ImportDiskUsage"
1849 "ImportEC"
1850 "ImportFCP"
1851 "ImportGalaxy"
1852 "ImportKrona"
1853 "ImportMETAREP-BLAST"
1854 "ImportMETAREP-EC"
1855 "ImportMGRAST"
1856 "ImportPhymmBL"
1857 "ImportRDP"
1858 "ImportRDPComparison"
1859 "ImportTaxonomy"
1860 "ImportText"
1861 "ImportXML"))
1862 (for-each
1863 (lambda (directory)
1864 (copy-recursively directory
1865 (string-append perl "/../" directory)))
1866 (list "data" "img" "taxonomy" "src"))
1867 (install-file "lib/KronaTools.pm" perl)
1868
1869 ;; Install downloaders
1870 (substitute* "updateAccessions.sh"
1871 (("ktPath=.*") (string-append "ktPath=" share "\n")))
1872 (substitute* "updateTaxonomy.sh"
1873 (("ktPath=.*") (string-append "ktPath=" share "\n"))
1874 (("command -v curl")
1875 (string-append "command -v " (which "curl")))
1876 (("curl -s")
1877 (string-append (which "curl") " -s"))
1878 (("curl\\$timestring")
1879 (string-append (which "curl") "$timestring"))
1880 (("perl -M")
1881 (string-append (which "perl") " -M"))
1882 (("make ")
1883 (string-append (which "make") " ")))
1884 (for-each (lambda (file)
1885 (install-file file (string-append share "/scripts")))
1886 '("scripts/extractTaxonomy.pl"
1887 "scripts/accession2taxid.make"
1888 "scripts/taxonomy.make"))
1889 (for-each (lambda (file)
1890 (install-file file share))
1891 '("updateAccessions.sh"
1892 "updateTaxonomy.sh")))))
1893 (add-after 'install 'wrap-program
1894 (lambda* (#:key inputs outputs #:allow-other-keys)
1895 (let* ((out (assoc-ref outputs "out"))
1896 (path (getenv "PERL5LIB")))
1897 (for-each
1898 (lambda (executable)
1899 (wrap-program executable
1900 `("PERL5LIB" ":" prefix
1901 (,(string-append out "/lib/perl5/site_perl/krona-tools/lib")))))
1902 (find-files (string-append out "/bin/") ".*")))))
1903 (delete 'check)
1904 (add-after 'wrap-program 'check
1905 (lambda* (#:key inputs outputs #:allow-other-keys)
1906 (with-directory-excursion "data"
1907 (invoke (string-append (assoc-ref outputs "out") "/bin/ktImportText")
1908 "ec.tsv")))))))
1909 (inputs
1910 (list bash-minimal curl gnu-make perl))
1911 (home-page "https://github.com/marbl/Krona/wiki")
1912 (synopsis "Hierarchical data exploration with zoomable HTML5 pie charts")
1913 (description
1914 "Krona is a flexible tool for exploring the relative proportions of
1915hierarchical data, such as metagenomic classifications, using a radial,
1916space-filling display. It is implemented using HTML5 and JavaScript, allowing
1917charts to be explored locally or served over the Internet, requiring only a
1918current version of any major web browser.")
1919 (license license:bsd-3)))
1920
1921(define-public rapidjson
1922 ;; Last release was in 2016, but this commit is from 2023.
1923 (let ((commit "949c771b03de448bdedea80c44a4a5f65284bfeb")
1924 (revision "1"))
1925 (package
1926 (name "rapidjson")
1927 (version (git-version "1.1.0" revision commit))
1928 (source (origin
1929 (method git-fetch)
1930 (uri (git-reference
1931 (url "https://github.com/Tencent/rapidjson")
1932 (commit commit)))
1933 (file-name (git-file-name name version))
1934 (sha256
1935 (base32
1936 "1xlj0cj88ls3avwmlhd2gf5757fjpfbqx6qf49z1mzi381gcl72m"))
1937 (modules '((guix build utils)))
1938 (snippet
1939 '(begin
1940 ;; Remove code using the problematic JSON license (see
1941 ;; <https://www.gnu.org/licenses/license-list.html#JSON>).
1942 (delete-file-recursively "bin/jsonchecker")))))
1943 (build-system cmake-build-system)
1944 (arguments
1945 (list
1946 #:configure-flags
1947 (if (target-x86-32?)
1948 #~(list (string-append "-DCMAKE_CXX_FLAGS=-Wno-free-nonheap-object"
1949 " -Wno-error=array-bounds"
1950 " -Wno-error=stringop-overflow"))
1951 #~(list "-DCMAKE_CXX_FLAGS=-Wno-free-nonheap-object"))
1952 #:phases
1953 #~(modify-phases %standard-phases
1954 (add-after 'unpack 'fix-march=native
1955 (lambda _
1956 (substitute* "CMakeLists.txt"
1957 (("-m[^-]*=native") ""))))
1958 #$@(if (target-x86-32?)
1959 #~((add-after 'unpack 'skip-failing-tests
1960 (lambda _
1961 (substitute* "test/unittest/schematest.cpp"
1962 (("\"multipleOf\\.json\"," all)
1963 (string-append "/*" all "*/")))
1964 ;; XXX: Re-enable once valgrind/pinned >= 3.25.
1965 (substitute* "test/unittest/CMakeLists.txt"
1966 (("COMMAND valgrind") "COMMAND true valgrind")))))
1967 #~())
1968 (add-after 'fix-march=native 'skip-deleted-tests
1969 (lambda _
1970 (substitute* "test/unittest/CMakeLists.txt"
1971 (("jsoncheckertest.cpp") ""))))
1972 (add-after 'fix-march=native 'fix-dependencies
1973 (lambda _
1974 (substitute* "test/CMakeLists.txt"
1975 (("^find_package\\(GTestSrc\\)")
1976 "find_package(GTest REQUIRED)")
1977 ((".*GTEST_SOURCE_DIR.*") "")
1978 (("GTESTSRC_FOUND)")
1979 "GTest_FOUND)")))))))
1980 (native-inputs (list valgrind/pinned))
1981 (inputs (list googletest-1.8))
1982 (home-page "https://github.com/Tencent/rapidjson")
1983 (synopsis "JSON parser/generator for C++ with both SAX/DOM style API")
1984 (description
1985 "RapidJSON is a fast JSON parser/generator for C++ with both SAX/DOM
1986style API.")
1987 (license license:expat))))
1988
1989(define-public libjwt
1990 (package
1991 (name "libjwt")
1992 (version "1.17.2")
1993 (source
1994 (origin
1995 (method url-fetch)
1996 (uri (string-append "https://github.com/benmcollins/libjwt/releases/download/v"
1997 version "/libjwt-"
1998 version ".tar.bz2"))
1999 (sha256
2000 (base32
2001 "1bpfaa0y8bccz5hr677lkrprs07akx02k0qbf82z2c8syr24a77i"))))
2002 (build-system gnu-build-system)
2003 (inputs
2004 (list jansson openssl))
2005 (native-inputs
2006 (list check pkg-config))
2007 (home-page "https://github.com/benmcollins/libjwt")
2008 (synopsis "C @acronym{JWT, JSON Web Token} library")
2009 (description "@code{libjwt} is a @acronym{JWT, JSON Web Token} library for
2010C.")
2011 (license license:mpl2.0)))
2012
2013(define-public yajl
2014 (package
2015 (name "yajl")
2016 (version "2.1.0")
2017 (source (origin
2018 (method git-fetch)
2019 (uri (git-reference
2020 (url "https://github.com/lloyd/yajl")
2021 (commit version)))
2022 (file-name (git-file-name name version))
2023 (sha256
2024 (base32
2025 "00yj06drb6izcxfxfqlhimlrb089kka0w0x8k27pyzyiq7qzcvml"))
2026 (patches
2027 (search-patches "yajl-CVE-2023-33460.patch"))))
2028 (build-system cmake-build-system)
2029 (arguments
2030 '(#:tests? #f
2031 #:phases
2032 (modify-phases %standard-phases
2033 (add-after 'patch-source-shebangs 'patch-tests
2034 (lambda _
2035 (substitute* "test/parsing/run_tests.sh"
2036 (("`which echo`") (which "echo"))))))))
2037 (home-page "https://lloyd.github.io/yajl/")
2038 (synopsis "C library for parsing and generating JSON")
2039 (description
2040 "@acronym{YAJL, Yet Another JSON Library} is a small event-driven
2041(SAX-style) JSON parser and validating generator written in ANSI C.")
2042 (license license:isc)))
2043
2044(define-public libwebsockets
2045 (package
2046 (name "libwebsockets")
2047 (version "4.4.1")
2048 (source
2049 (origin
2050 (method git-fetch)
2051 (uri (git-reference
2052 (url "https://github.com/warmcat/libwebsockets")
2053 (commit (string-append "v" version))))
2054 (sha256
2055 (base32 "1qlrfa1vqr89yfrqpk99zkfl8k4cpdbvbdvikdbj6l5xz5z2gxsy"))
2056 (file-name (git-file-name name version))))
2057 (arguments
2058 (list
2059 #:phases
2060 #~(modify-phases %standard-phases
2061 (add-after 'unpack 'fix-test-cert-generation
2062 (lambda _
2063 (substitute* "lib/tls/CMakeLists.txt"
2064 (("-config /etc/ssl/openssl.cnf ")
2065 "")))))
2066 #:configure-flags
2067 #~'("-DLWS_CTEST_INTERNET_AVAILABLE=0")))
2068 (build-system cmake-build-system)
2069 (native-inputs (list perl)) ;to build the HTML doc
2070 (inputs (list zlib openssl))
2071 (synopsis "WebSockets library written in C")
2072 (description
2073 "Libwebsockets is a library that allows C programs to establish client
2074and server WebSockets connections---a protocol layered above HTTP that allows
2075for efficient socket-like bidirectional reliable communication channels.")
2076 (home-page "https://libwebsockets.org")
2077 (license license:expat)))
2078
2079(define-public libwebsockets-for-mosquitto
2080 (hidden-package
2081 (package
2082 (inherit libwebsockets)
2083 (arguments
2084 (substitute-keyword-arguments
2085 (package-arguments libwebsockets)
2086 ((#:configure-flags flags)
2087 ;; Mosquitto requires some tweaks for libwebsockets, see:
2088 ;; https://github.com/NixOS/nixpkgs/blob/1750f3c1c89488e2ffdd47cab9d05454dddfb734/pkgs/by-name/mo/mosquitto/package.nix#L20
2089 #~(cons* "-DLWS_WITH_EXTERNAL_POLL=ON"
2090 "-DLWS_WITH_HTTP2=OFF"
2091 #$flags)))))))
2092
2093(define-public wabt
2094 (package
2095 (name "wabt")
2096 (version "1.0.36")
2097 (source
2098 (origin
2099 (method git-fetch)
2100 (uri (git-reference
2101 (url "https://github.com/WebAssembly/wabt")
2102 (commit version)
2103 (recursive? #true)))
2104 (file-name (git-file-name name version))
2105 (sha256
2106 (base32 "1gypy9bn2nvmfa469fi6kwsyw11j0vqkxm7givs3gidjpsy1bk0a"))
2107 (modules '((guix build utils)))
2108 (snippet
2109 '(delete-file-recursively "third_party/gtest/"))))
2110 (build-system cmake-build-system)
2111 (arguments
2112 (list
2113 ;; Tests on non-x86_64 architectures are not well supported upstream.
2114 #:tests? (target-x86-64?)
2115 #:configure-flags '(list "-DUSE_SYSTEM_GTEST=ON")
2116 #:modules '((guix build cmake-build-system)
2117 ((guix build gnu-build-system) #:prefix gnu:)
2118 (guix build utils))
2119 #:phases
2120 '(modify-phases %standard-phases
2121 (add-after 'unpack 'use-gcc
2122 (lambda _ (setenv "CC" "gcc")))
2123 ;; XXX This is the only test that fails.
2124 (add-after 'unpack 'delete-broken-test
2125 (lambda _
2126 (delete-file "test/wasm2c/spec/memory_init.txt")))
2127 (replace 'check
2128 (lambda* (#:rest args)
2129 (apply (assoc-ref gnu:%standard-phases 'check)
2130 #:test-target "run-tests" args))))))
2131 (native-inputs (list python googletest))
2132 (home-page "https://github.com/WebAssembly/wabt")
2133 (synopsis "WebAssembly Binary Toolkit")
2134 (description "WABT (pronounced: wabbit) is a suite of tools for
2135WebAssembly, including:
2136
2137@enumerate
2138@item @command{wat2wasm} translates from WebAssembly text format to the
2139WebAssembly binary format
2140@item @command{wasm2wat} is the inverse; it translates from the binary format
2141back to the text format (also known as a .wat)
2142@item @command{wasm-objdump} prints information about a wasm binary, similarly
2143to @command{objdump}.
2144@item @command{wasm-interp} decodes ands run a WebAssembly binary file using a
2145stack-based interpreter
2146@item @command{wat-desugar} parses .wat text form as supported by the spec
2147interpreter (s-expressions, flat syntax, or mixed) and prints the canonical
2148flat format
2149@item @command{wasm2c} converts a WebAssembly binary file to a C source and
2150header file.
2151@end enumerate
2152
2153These tools are intended for use in (or for development of) toolchains or
2154other systems that want to manipulate WebAssembly files.")
2155 (license license:asl2.0)))
2156
2157(define-public wasi-compiler-rt
2158 (package
2159 (name "wasi-compiler-rt")
2160 (version "21.1.8")
2161 (source
2162 (origin
2163 (method git-fetch)
2164 (uri (git-reference
2165 (url "https://github.com/llvm/llvm-project")
2166 (commit (string-append "llvmorg-" version))))
2167 (file-name (string-append "llvm-project-" version "-checkout"))
2168 (sha256
2169 (base32 "0v99a90546lrd3cxgam32c0jcnwzi0ljk0ihdvd9xghzss1pq1x6"))
2170 (patches (search-patches "clang-18.0-libc-search-path.patch"
2171 "clang-17.0-link-dsymutil-latomic.patch"))))
2172 (build-system cmake-build-system)
2173 (arguments
2174 (list
2175 #:tests? #f ;requires WASM runtime to run tests
2176 #:build-type "Release"
2177 #:configure-flags
2178 #~(list (string-append "-DCMAKE_INSTALL_PREFIX=" #$output)
2179 "-DCMAKE_C_COMPILER_WORKS=ON"
2180 "-DCMAKE_CXX_COMPILER_WORKS=ON"
2181 "-DCOMPILER_RT_BAREMETAL_BUILD=ON"
2182 ;; Use the normalized target triple so clang finds the builtins
2183 ;; at lib/<target>/libclang_rt.builtins.a
2184 "-DCOMPILER_RT_OS_DIR=wasm32-unknown-wasi"
2185 "-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON"
2186 "-DCOMPILER_RT_INCLUDE_TESTS=OFF"
2187 "-DCOMPILER_RT_HAS_FPIC_FLAG=OFF"
2188 (string-append "-DCMAKE_SYSROOT="
2189 #$(this-package-input "wasi-libc")
2190 "/share/wasi-sysroot")
2191 (string-append "-DCMAKE_C_FLAGS=-fno-exceptions --target=wasm32-wasi "
2192 "-isystem "
2193 #$(this-package-input "wasi-libc")
2194 "/share/wasi-sysroot/include/wasm32-wasi")
2195 (string-append "-DCMAKE_C_COMPILER="
2196 #$(this-package-native-input "clang")
2197 "/bin/clang")
2198 (string-append "-DCMAKE_CXX_COMPILER="
2199 #$(this-package-native-input "clang")
2200 "/bin/clang++")
2201 (string-append "-DCMAKE_AR="
2202 #$(this-package-native-input "llvm")
2203 "/bin/llvm-ar")
2204 (string-append "-DCMAKE_RANLIB="
2205 #$(this-package-native-input "llvm")
2206 "/bin/llvm-ranlib")
2207 "-DCMAKE_SYSTEM_NAME=WASI"
2208 "-DCMAKE_SYSTEM_PROCESSOR=wasm32"
2209 "-DCMAKE_C_COMPILER_TARGET=wasm32-wasi"
2210 "-DCMAKE_CXX_COMPILER_TARGET=wasm32-wasi"
2211 "-DCMAKE_ASM_COMPILER_TARGET=wasm32-wasi")
2212 #:phases
2213 #~(modify-phases %standard-phases
2214 (add-after 'unpack 'change-directory
2215 (lambda _
2216 ;; Build only the builtins library from compiler-rt
2217 (chdir "compiler-rt/lib/builtins")))
2218 (add-after 'install 'create-target-symlinks
2219 (lambda _
2220 ;; Create symlinks for wasip1 and wasip2 targets
2221 (let* ((lib-dir (string-append #$output "/lib"))
2222 (wasi-dir (string-append lib-dir "/wasm32-unknown-wasi")))
2223 (symlink "wasm32-unknown-wasi"
2224 (string-append lib-dir "/wasm32-unknown-wasip1"))
2225 (symlink "wasm32-unknown-wasi"
2226 (string-append lib-dir "/wasm32-unknown-wasip2"))
2227 ;; Clang looks for libclang_rt.builtins.a but we have
2228 ;; libclang_rt.builtins-wasm32.a, so create a symlink
2229 (symlink "libclang_rt.builtins-wasm32.a"
2230 (string-append wasi-dir "/libclang_rt.builtins.a"))))))))
2231 (native-inputs
2232 (list clang-21
2233 llvm-21
2234 lld-21))
2235 (inputs
2236 (list wasi-libc))
2237 (home-page "https://compiler-rt.llvm.org")
2238 (synopsis "LLVM compiler runtime builtins for WASI")
2239 (description
2240 "This package provides the LLVM compiler runtime builtins library for the
2241WebAssembly System Interface (WASI) target. It includes software
2242implementations of arithmetic operations that are not directly supported by
2243the WebAssembly instruction set.")
2244 (license license:asl2.0))) ;with LLVM exceptions
2245
2246(define-public wasi-libc
2247 (package
2248 (name "wasi-libc")
2249 (version "28")
2250 (source
2251 (origin
2252 (method git-fetch)
2253 (uri (git-reference
2254 (url "https://github.com/WebAssembly/wasi-libc")
2255 (commit (string-append "wasi-sdk-" version))))
2256 (file-name (git-file-name name version))
2257 (sha256
2258 (base32 "1zgl5kyz4r6zxsmi3ihx1wyakhpp1dknzplbj4jb6bvnj1rzn1gg"))))
2259 (build-system gnu-build-system)
2260 (arguments
2261 (list
2262 #:tests? #f ;tests require a WASM runtime
2263 #:make-flags
2264 #~(list (string-append "CC="
2265 #$(this-package-native-input "clang")
2266 "/bin/clang")
2267 (string-append "AR="
2268 #$(this-package-native-input "llvm")
2269 "/bin/llvm-ar")
2270 (string-append "NM="
2271 #$(this-package-native-input "llvm")
2272 "/bin/llvm-nm")
2273 (string-append "SYSROOT=" #$output "/share/wasi-sysroot")
2274 (string-append "INSTALL_DIR=" #$output "/share/wasi-sysroot")
2275 ;; Provide an empty builtins library to avoid network download.
2276 ;; The real compiler-rt builtins will be provided by
2277 ;; wasi-compiler-rt.
2278 "BUILTINS_LIB=/tmp/dummy-builtins.a")
2279 #:phases
2280 #~(modify-phases %standard-phases
2281 (delete 'configure)
2282 (add-before 'build 'create-dummy-builtins
2283 (lambda _
2284 ;; Create an empty archive to satisfy the BUILTINS_LIB
2285 ;; requirement. This prevents the Makefile from trying to
2286 ;; download builtins via curl.
2287 (invoke (string-append #$(this-package-native-input "llvm")
2288 "/bin/llvm-ar")
2289 "crs" "/tmp/dummy-builtins.a")))
2290 (replace 'build
2291 (lambda* (#:key make-flags parallel-build? #:allow-other-keys)
2292 (let ((targets '("wasm32-wasi"
2293 "wasm32-wasip1-threads"
2294 "wasm32-wasip2")))
2295 (for-each
2296 (lambda (target)
2297 (format #t "Building for target: ~a~%" target)
2298 (apply invoke "make"
2299 "-j" (if parallel-build?
2300 (number->string (parallel-job-count))
2301 "1")
2302 (string-append "TARGET_TRIPLE=" target)
2303 (if (string=? target "wasm32-wasip1-threads")
2304 (cons "THREAD_MODEL=posix" make-flags)
2305 (if (string=? target "wasm32-wasip2")
2306 (cons "WASI_SNAPSHOT=p2" make-flags)
2307 make-flags))))
2308 targets))))
2309 (delete 'install))))
2310 (native-inputs (list clang-21 llvm-21 lld-21))
2311 (native-search-paths
2312 (list (search-path-specification
2313 (variable "WASI_SYSROOT")
2314 (files '("share/wasi-sysroot")))))
2315 (home-page "https://github.com/WebAssembly/wasi-libc")
2316 (synopsis "WASI C library for WebAssembly")
2317 (description
2318 "WASI Libc is a libc implementation for WebAssembly programs using the
2319WebAssembly System Interface (WASI). It provides C library functionality for
2320compiling C and C++ programs to WebAssembly that can run outside the browser.
2321The library supports multiple WASI targets including @code{wasm32-wasi},
2322@code{wasm32-wasip1-threads}, and @code{wasm32-wasip2}.")
2323 (license (list license:asl2.0 ;most files
2324 license:expat ;dlmalloc
2325 license:bsd-2)))) ;cloudlibc
2326
2327(define-public wasm3
2328 ;; Use an unreleased version with 'm3_GetTableFunction' for tic80.
2329 (let ((commit "139076a98b8321b67f850a844f558b5e91b5ac83"))
2330 (package
2331 (name "wasm3")
2332 (version (git-version "0.5.0" "1" commit))
2333 (source
2334 (origin
2335 (method git-fetch)
2336 (uri (git-reference
2337 (url "https://github.com/wasm3/wasm3")
2338 (commit commit)))
2339 (file-name (git-file-name name version))
2340 (sha256
2341 (base32 "0329kx43n0ns9qxj813239wna69qyi9ghfb1sks46f39h24q0n3x"))))
2342 (build-system cmake-build-system)
2343 (arguments
2344 ;; The default WASI option "uvwasi" causes CMake to initiate a 'git
2345 ;; clone' which cannot happen within the build container.
2346 '(#:configure-flags '("-DBUILD_WASI=simple")
2347 ;; No check target. There are tests but they require a network
2348 ;; connection to download the WebAssembly core test suite.
2349 #:tests? #f
2350 ;; There is no install target. Instead, we have to manually copy the
2351 ;; wasm3 build artifacts to the output directory.
2352 #:phases
2353 (modify-phases %standard-phases
2354 (replace 'install
2355 (lambda* (#:key outputs #:allow-other-keys)
2356 (let* ((out (assoc-ref outputs "out"))
2357 (bindir (string-append out "/bin"))
2358 (includedir (string-append out "/include"))
2359 (libdir (string-append out "/lib")))
2360 (mkdir-p bindir)
2361 (mkdir-p includedir)
2362 (mkdir-p libdir)
2363 (copy-file "wasm3" (string-append bindir "/wasm3"))
2364 (for-each (lambda (header)
2365 (copy-file header
2366 (string-append includedir "/"
2367 (basename header))))
2368 (find-files "../source/source" "\\.h$"))
2369 (copy-file "source/libm3.a"
2370 (string-append libdir "/libm3.a"))))))))
2371 (home-page "https://github.com/wasm3/wasm3")
2372 (synopsis "WebAssembly interpreter")
2373 (description "WASM3 is a fast WebAssembly interpreter.")
2374 (license license:expat))))
2375
2376(define-public wasm-micro-runtime
2377 (package
2378 (name "wasm-micro-runtime")
2379 (version "2.2.0")
2380 (source (origin
2381 (method git-fetch)
2382 (uri (git-reference
2383 (url "https://github.com/bytecodealliance/wasm-micro-runtime")
2384 (commit (string-append "WAMR-" version))))
2385 (file-name (git-file-name "WAMR" version))
2386 (sha256
2387 (base32
2388 "0nhhsvy4a9al4lnxdkmyy63a7qd0x33s5wpcsdvl93kj6klzc6a6"))))
2389 (build-system cmake-build-system)
2390 (arguments
2391 (list
2392 ;; Running the tests is difficult. The test script in
2393 ;; tests/wamr-test-suites insists on downloading and building wabt (even
2394 ;; if we provide it) and it has a hard time accepting a separately
2395 ;; provided clone of the https://github.com/WebAssembly/spec repository.
2396 ;; Future releases provide unit tests which may be easier to run.
2397 #:tests? #false
2398 #:phases
2399 '(modify-phases %standard-phases
2400 (add-after 'unpack 'chdir
2401 (lambda _
2402 (chdir "product-mini/platforms/linux"))))))
2403 (home-page "https://bytecodealliance.github.io/wamr.dev")
2404 (synopsis "WebAssembly Micro Runtime")
2405 (description "WebAssembly Micro Runtime (WAMR) is a lightweight standalone
2406WebAssembly (Wasm) runtime with small footprint, high performance and highly
2407configurable features for applications cross from embedded, IoT, edge to
2408Trusted Execution Environment (TEE), smart contract, cloud native and other
2409features.")
2410 (license license:asl2.0)))
2411
2412(define-public websocketpp
2413 (package
2414 (name "websocketpp")
2415 (version "0.8.2")
2416 (source
2417 (origin
2418 (method git-fetch)
2419 (uri (git-reference
2420 (url "https://github.com/zaphoyd/websocketpp")
2421 (commit version)))
2422 (file-name (git-file-name name version))
2423 (sha256
2424 (base32 "1ww4fhl8qf12hkv6jaild8zzsygdspxm1gqpk2f63gv1xfi31wpm"))
2425 (patches (search-patches "websocketpp-fix-for-cmake-3.15.patch"))))
2426 (build-system cmake-build-system)
2427 (inputs (list boost-1.83 openssl))
2428 (arguments '(#:parallel-tests? #f
2429 #:configure-flags '("-DBUILD_TESTS=ON")
2430 #:phases
2431 (modify-phases %standard-phases
2432 (add-after 'install 'remove-tests
2433 (lambda* (#:key outputs #:allow-other-keys)
2434 (let* ((install-dir (assoc-ref outputs "out"))
2435 (bin-dir (string-append install-dir "/bin")))
2436 (delete-file-recursively bin-dir)
2437 #t))))))
2438 (home-page "https://www.zaphoyd.com/websocketpp/")
2439 (synopsis "C++ library implementing the WebSocket protocol")
2440 (description "WebSocket++ is a C++ library that can be used to implement
2441WebSocket functionality. The goals of the project are to provide a WebSocket
2442implementation that is simple, portable, flexible, lightweight, low level, and
2443high performance.")
2444 (license license:bsd-3)))
2445
2446;; websocketpp main is not moving very fast, this version is required for later
2447;; versions of Boost. https://github.com/zaphoyd/websocketpp/pull/1164
2448(define-public websocketpp-next
2449 (let ((commit "b9aeec6eaf3d5610503439b4fae3581d9aff08e8"))
2450 (package
2451 (name "websocketpp-next")
2452 (version "0.8.2-next")
2453 (source
2454 (origin
2455 (method git-fetch)
2456 (uri (git-reference
2457 (url "https://github.com/zaphoyd/websocketpp")
2458 (commit commit)))
2459 (file-name (git-file-name name version))
2460 (sha256
2461 (base32
2462 "1z4wm5ipchmxg709n4066fl6yq5gzg7qjx2ap18bhbsx85p403mb"))
2463 (patches (search-patches
2464 "websocketpp-boost-compat.patch"))))
2465 (build-system cmake-build-system)
2466 (inputs (list boost-1.83 openssl))
2467 (arguments '(#:parallel-tests? #f
2468 #:configure-flags '("-DBUILD_TESTS=ON")
2469 #:phases
2470 (modify-phases %standard-phases
2471 (add-after 'install 'remove-tests
2472 (lambda* (#:key outputs #:allow-other-keys)
2473 (let* ((install-dir (assoc-ref outputs "out"))
2474 (bin-dir (string-append install-dir "/bin")))
2475 (delete-file-recursively bin-dir)
2476 #t))))))
2477 (home-page "https://www.zaphoyd.com/websocketpp/")
2478 (synopsis "C++ library implementing the WebSocket protocol")
2479 (description "WebSocket++ is a C++ library that can be used to implement
2480WebSocket functionality. The goals of the project are to provide a WebSocket
2481implementation that is simple, portable, flexible, lightweight, low level, and
2482high performance.")
2483 (license license:bsd-3))))
2484
2485(define-public wslay
2486 (package
2487 (name "wslay")
2488 (version "1.1.1")
2489 (source
2490 (origin
2491 (method git-fetch)
2492 (uri (git-reference
2493 (url "https://github.com/tatsuhiro-t/wslay")
2494 (commit (string-append "release-" version))))
2495 (file-name (git-file-name name version))
2496 (sha256
2497 (base32 "1w32iljg4inqf0712w5fxxhggvmjh6ipl2lnz0h36dv1xrj0d964"))))
2498 (build-system gnu-build-system)
2499 (arguments
2500 ;; Parallel builds don't reliably succeed.
2501 `(#:parallel-build? #f
2502 #:phases
2503 (modify-phases %standard-phases
2504 (add-after 'unpack 'fix-sphinx-error
2505 ;; XXX: Remove in next version: fix applied upstream. See
2506 ;; <https://github.com/tatsuhiro-t/wslay/commit/43fda1207ea5977043630500e0c8e77b98b35320>.
2507 (lambda _
2508 (substitute* "doc/sphinx/conf.py.in"
2509 (("add_stylesheet") "add_css_file")))))))
2510 (native-inputs
2511 (list autoconf
2512 automake
2513 cunit ; for tests
2514 libtool
2515 pkg-config
2516 python-sphinx))
2517 (home-page "https://tatsuhiro-t.github.io/wslay/")
2518 (synopsis "C WebSocket library")
2519 (description "@code{Wslay} is an event-based C library for the WebSocket
2520protocol version 13, described in RFC 6455. Besides a high-level API it
2521provides callbacks for sending and receiving frames directly. @code{Wslay}
2522only supports the data transfer part of WebSocket protocol and does not
2523perform the opening handshake in HTTP.")
2524 (license license:expat)))
2525
2526(define-public libpsl
2527 (package
2528 (name "libpsl")
2529 (version "0.21.5")
2530 (source (origin
2531 (method url-fetch)
2532 (uri (string-append "https://github.com/rockdaboot/libpsl/"
2533 "releases/download/" version
2534 "/libpsl-" version ".tar.gz"))
2535 (sha256
2536 (base32
2537 "0272v94h89pg4zr9h47qdzy1m28y1v6xwm7nng0g6a5ix3m9rk0x"))))
2538 (build-system gnu-build-system)
2539 (native-inputs
2540 (list pkg-config
2541 ;; For tests.
2542 python-minimal))
2543 (inputs
2544 (list libidn2 libunistring))
2545 (home-page "https://github.com/rockdaboot/libpsl")
2546 (synopsis "C library for the Publix Suffix List")
2547 (description
2548 "A \"public suffix\" is a domain name under which Internet users can
2549directly register own names.
2550
2551Browsers and other web clients can use it to avoid privacy-leaking
2552\"supercookies\", avoid privacy-leaking \"super domain\" certificates, domain
2553highlighting parts of the domain in a user interface, and sorting domain lists
2554by site.
2555
2556Libpsl has built-in PSL data for fast access, allowing to load PSL data from
2557files, checks if a given domain is a public suffix, provides immediate cookie
2558domain verification, finds the longest public part of a given domain, finds
2559the shortest private part of a given domain, works with international
2560domains (UTF-8 and IDNA2008 Punycode), is thread-safe, and handles IDNA2008
2561UTS#46.")
2562 (license license:x11)))
2563
2564(define-public esbuild
2565 (package
2566 (name "esbuild")
2567 (version "0.24.0")
2568 (source
2569 (origin
2570 (method git-fetch)
2571 (uri (git-reference
2572 (url "https://github.com/evanw/esbuild")
2573 (commit (string-append "v" version))))
2574 (file-name (git-file-name name version))
2575 (sha256
2576 (base32 "1j99m7rdql6iq3llrr8bm85hq34ssc8bmb6vhwr1ibgspjl0jd3k"))
2577 (modules '((guix build utils)))
2578 (snippet
2579 #~(begin
2580 ;; Remove prebuilt binaries
2581 (delete-file-recursively "npm")))))
2582 (build-system go-build-system)
2583 (arguments
2584 (list
2585 #:import-path "github.com/evanw/esbuild/cmd/esbuild"
2586 #:unpack-path "github.com/evanw/esbuild"
2587 #:test-flags #~(list #$(if (and (target-64bit?)
2588 ;; The -race option is not supported on
2589 ;; riscv64 and is not present in gccgo.
2590 (not (target-riscv64?))
2591 (supported-package? go))
2592 "-race" "-short"))
2593 ;; Test subdirectories are compiled from #:import-path.
2594 #:test-subdirs #~(list "../../internal/..." "../../pkg/..." )))
2595 (inputs
2596 (list go-golang-org-x-sys-for-esbuild))
2597 (home-page "https://esbuild.github.io/")
2598 (synopsis "Bundler and minifier tool for JavaScript and TypeScript")
2599 (description
2600 "The esbuild tool provides a unified bundler, transpiler and minifier.
2601It packages up JavaScript and TypeScript code, along with JSON and other data,
2602for distribution on the web.")
2603 (license license:expat)))
2604
2605(define-public tinyproxy
2606 (package
2607 (name "tinyproxy")
2608 (version "1.11.2")
2609 (source (origin
2610 (method url-fetch)
2611 (uri (string-append "https://github.com/tinyproxy/tinyproxy/"
2612 "releases/download/" version "/tinyproxy-"
2613 version ".tar.xz"))
2614 (sha256
2615 (base32
2616 "0sm2i05sq2mkyix7dsvm9abb3vr2nnciqywmwa3wk4b6f206h4ka"))))
2617 (build-system gnu-build-system)
2618 (arguments
2619 `(#:test-target "test" ; ‘make check’ silently does nothing
2620 #:configure-flags
2621 (list
2622 ;; For the log file, etc.
2623 "--localstatedir=/var")
2624 #:phases
2625 (modify-phases %standard-phases
2626 (add-before 'build 'pre-build
2627 (lambda* (#:key inputs #:allow-other-keys #:rest args)
2628 ;; Uncommenting the next two lines may assist in debugging
2629 ;; (substitute* "docs/man5/Makefile" (("a2x") "a2x -v"))
2630 ;; (setenv "XML_DEBUG_CATALOG" "1")
2631 #t)))))
2632 (native-inputs
2633 (list perl)) ; for tests
2634 (home-page "https://tinyproxy.github.io/")
2635 (synopsis "Light-weight HTTP/HTTPS proxy daemon")
2636 (description "Tinyproxy is a light-weight HTTP/HTTPS proxy
2637daemon. Designed from the ground up to be fast and yet small, it is an ideal
2638solution for use cases such as embedded deployments where a full featured HTTP
2639proxy is required, but the system resources for a larger proxy are
2640unavailable.")
2641 (license license:gpl2+)))
2642
2643(define-public polipo
2644 (package
2645 (name "polipo")
2646 (version "1.1.1")
2647 (source
2648 (origin
2649 (method url-fetch)
2650 (uri (string-append
2651 "http://www.pps.univ-paris-diderot.fr/~jch/software/files/polipo/polipo-"
2652 version ".tar.gz"))
2653 (sha256
2654 (base32
2655 "05g09sg9qkkhnc2mxldm1w1xkxzs2ylybkjzs28w8ydbjc3pand2"))))
2656 (native-inputs (list texinfo))
2657 (build-system gnu-build-system)
2658 (arguments
2659 `(#:phases (modify-phases %standard-phases
2660 (delete 'configure))
2661 #:make-flags (let ((out (assoc-ref %outputs "out")))
2662 (list (string-append "PREFIX=" out)
2663 (string-append "LOCAL_ROOT="
2664 out "/share/polipo/www")
2665 "CC=gcc"))
2666 ;; No 'check' target.
2667 #:tests? #f))
2668 (home-page "https://www.pps.univ-paris-diderot.fr/~jch/software/polipo/")
2669 (synopsis "Small caching web proxy")
2670 (description
2671 "Polipo is a small caching web proxy (web cache, HTTP proxy, and proxy
2672server). It was primarily designed to be used by one person or a small group
2673of people.")
2674 (license license:expat)))
2675
2676(define-public websockify
2677 (package
2678 (name "websockify")
2679 (version "0.13.0")
2680 (source
2681 (origin
2682 (method git-fetch)
2683 (uri (git-reference
2684 (url "https://github.com/novnc/websockify")
2685 (commit (string-append "v" version))))
2686 (file-name (git-file-name name version))
2687 (sha256
2688 (base32 "01163ikxmwmncrg7m8wy238ykjd5qif6bz85zqnk3mrvipicp7kg"))))
2689 (build-system pyproject-build-system)
2690 (native-inputs
2691 (list python-nose2
2692 python-setuptools))
2693 (inputs
2694 (list python-jwcrypto
2695 python-numpy
2696 python-redis
2697 python-requests))
2698 (home-page "https://github.com/novnc/websockify")
2699 (synopsis "WebSockets support for any application/server")
2700 (description "Websockify translates WebSockets traffic to normal socket
2701traffic. Websockify accepts the WebSockets handshake, parses it, and then
2702begins forwarding traffic between the client and the target in both
2703directions.")
2704 (license license:lgpl3)))
2705
2706(define-public microsocks
2707 (package
2708 (name "microsocks")
2709 (version "1.0.5")
2710 (source
2711 (origin
2712 (method git-fetch)
2713 (uri (git-reference
2714 (url "https://github.com/rofl0r/microsocks")
2715 (commit (string-append "v" version))))
2716 (file-name (git-file-name name version))
2717 (sha256
2718 (base32
2719 "0ffiwlkaylkm2ih7d96qvdy9s9ydqgypczs5k8iwkf5yv617dm74"))))
2720 (build-system gnu-build-system)
2721 (arguments
2722 (list
2723 #:tests? #f ;no tests
2724 #:make-flags #~(list "prefix=/"
2725 "CC=gcc"
2726 (string-append "DESTDIR=" #$output))
2727 #:phases
2728 '(modify-phases %standard-phases
2729 (delete 'configure))))
2730 (home-page "https://github.com/rofl0r/microsocks")
2731 (synopsis "Tiny and lightweight SOCKS5 server")
2732 (description "Microsocks is a small, efficient SOCKS5 server.")
2733 (license license:expat)))
2734
2735(define-public node-esbuild
2736 (package
2737 (name "node-esbuild")
2738 (version (package-version esbuild))
2739 (source
2740 (origin
2741 (inherit (package-source esbuild))
2742 (file-name (git-file-name name version))
2743 (snippet #f)
2744 (modules '())))
2745 (build-system node-build-system)
2746 (inputs (list esbuild))
2747 (arguments (list
2748 #:tests? #f
2749 #:phases #~(modify-phases %standard-phases
2750 (add-after 'unpack 'chdir (lambda _
2751 (chdir "npm/esbuild")))
2752 (add-before 'patch-dependencies 'modify-package (lambda _
2753 (modify-json
2754 (delete-fields '("optionalDependencies" "scripts")))
2755 (substitute* "../../lib/npm/node-platform.ts"
2756 (("^export var ESBUILD_BINARY_PATH:.+$")
2757 (string-append "export var ESBUILD_BINARY_PATH: string"
2758 " = process.env.ESBUILD_BINARY_PATH"
2759 " || ESBUILD_BINARY_PATH"
2760 " || path.join(__dirname, '..', 'bin', 'esbuild')")))))
2761 (replace 'build (lambda* (#:key inputs #:allow-other-keys)
2762 ; From scripts/esbuild.js
2763 (invoke
2764 "esbuild"
2765 "../../lib/npm/node.ts"
2766 "--outfile=lib/main.js"
2767 "--bundle"
2768 "--target=node10"
2769 "--define:WASM=false"
2770 (string-append "--define:ESBUILD_VERSION=\"" #$version "\"")
2771 "--external:esbuild"
2772 "--platform=node"
2773 "--log-level=warning")
2774 (copy-file "../../lib/shared/types.ts" "lib/main.d.ts")
2775 (install-file
2776 (string-append (assoc-ref inputs "esbuild") "/bin/esbuild")
2777 "bin"))))))
2778 (home-page (package-home-page esbuild))
2779 (synopsis "Node module of ESBuild")
2780 (description (package-description esbuild))
2781 (license (package-license esbuild))))
2782
2783(define-public wwwoffle
2784 (package
2785 (name "wwwoffle")
2786 (version "2.9j")
2787 (source (origin
2788 (method url-fetch)
2789 (uri (string-append "https://www.gedanken.org.uk/software/"
2790 "wwwoffle/download/wwwoffle-"
2791 version ".tgz"))
2792 (sha256
2793 (base32
2794 "1ihil1xq9dp21hf108khxbw6f3baq0w5c0j3af038y6lkmad4vdi"))))
2795 (build-system gnu-build-system)
2796 (arguments
2797 `(#:configure-flags '("--with-gnutls")
2798 #:tests? #f)) ; no test target
2799 (native-inputs (list flex))
2800 (inputs (list gnutls libgcrypt))
2801 (home-page "https://www.gedanken.org.uk/software/wwwoffle/")
2802 (synopsis "Caching web proxy optimized for intermittent internet links")
2803 (description "WWWOFFLE is a proxy web server that is especially good for
2804intermittent internet links. It can cache HTTP, HTTPS, FTP, and finger
2805protocols, and supports browsing and requesting pages while offline, indexing,
2806modifying pages and incoming and outgoing headers, monitoring pages for
2807changes, and much more.")
2808 (license license:gpl2+)))
2809
2810(define-public libjuice
2811 (package
2812 (name "libjuice")
2813 (version "1.4.2")
2814 (source (origin
2815 (method git-fetch)
2816 (uri (git-reference
2817 (url "https://github.com/paullouisageneau/libjuice")
2818 (commit (string-append "v" version))))
2819 (file-name (git-file-name name version))
2820 (sha256
2821 (base32
2822 "035kqyp5bcawzkpqpjb1qjwqf0dp2gm9h2j9py5iiahcvfjwh70i"))))
2823 (build-system cmake-build-system)
2824 (arguments (list #:tests? #f)) ; requires internet access
2825 (home-page "https://github.com/paullouisageneau/libjuice")
2826 (synopsis "UDP Interactive Connectivity Establishment library")
2827 (description "@code{libjuice} opens bidirectionnal User Datagram
2828Protocol (UDP) streams with Network Address Translator (NAT) traversal. It's a
2829simplified implementation of the Interactive Connectivity Establishment (ICE)
2830protocol, client-side and server-side, written in C without dependencies for
2831POSIX platforms.")
2832 (license license:mpl2.0)))
2833
2834(define-public libdatachannel
2835 (package
2836 (name "libdatachannel")
2837 (version "0.21.1")
2838 (source (origin
2839 (method git-fetch)
2840 (uri (git-reference
2841 (url "https://github.com/paullouisageneau/libdatachannel")
2842 (commit (string-append "v" version))))
2843 (file-name (git-file-name name version))
2844 (sha256
2845 (base32
2846 "11icbyd71dw5ywjdviq580xvad24yfsjj3c5zpjqsxc883i40dxi"))))
2847 (build-system cmake-build-system)
2848 (arguments
2849 (list #:tests? #f ; requires internet access
2850 #:configure-flags
2851 #~'("-DPREFER_SYSTEM_LIB=ON")))
2852 (inputs (list libjuice libsrtp nlohmann-json openssl plog usrsctp))
2853 (home-page "https://libdatachannel.org/")
2854 (synopsis "WebRTC Data Channels and WebSockets library")
2855 (description "@code{libdatachannel} is a standalone implementation of WebRTC
2856Data Channels, WebRTC Media Transport, and WebSockets in C++17 with C bindings
2857for POSIX platforms. WebRTC is a W3C and IETF standard enabling real-time
2858peer-to-peer data and media exchange between two devices.")
2859 (license license:mpl2.0)))
2860
2861(define-public liboauth
2862 (package
2863 (name "liboauth")
2864 (version "1.0.3")
2865 (source (origin
2866 (method url-fetch)
2867 (uri (string-append "mirror://sourceforge/liboauth/liboauth-"
2868 version ".tar.gz"))
2869 (sha256
2870 (base32
2871 "07w1aq8y8wld43wmbk2q8134p3bfkp2vma78mmsfgw2jn1bh3xhd"))))
2872 (build-system gnu-build-system)
2873 (arguments
2874 (list
2875 #:configure-flags ''("--enable-nss")
2876 #:phases
2877 #~(modify-phases %standard-phases
2878 (add-after 'unpack 'use-C-unicode-locale
2879 (lambda _
2880 (substitute* "tests/commontest.c"
2881 (("en_US\\.UTF-8")
2882 "C.UTF-8")))))))
2883 (native-inputs (list pkg-config))
2884 (propagated-inputs
2885 (list curl nss))
2886 (home-page "https://sourceforge.net/projects/liboauth")
2887 (synopsis "C library implementing the OAuth API")
2888 (description
2889 "liboauth is a collection of C functions implementing the OAuth API.
2890liboauth provides functions to escape and encode strings according to OAuth
2891specifications and offers high-level functionality built on top to sign
2892requests or verify signatures using either NSS or OpenSSL for calculating the
2893hash/signatures.")
2894 ;; Source code may be distributed under either license.
2895 (license (list license:expat license:gpl2+))))
2896
2897(define-public libquvi-scripts
2898 (package
2899 (name "libquvi-scripts")
2900 (version "0.4.21")
2901 (source
2902 (origin
2903 (method url-fetch)
2904 (uri (string-append
2905 "mirror://sourceforge/quvi/" (version-major+minor version) "/"
2906 name "/" name "-" version ".tar.xz"))
2907 (sha256
2908 (base32 "0d0giry6bb57pnidymvdl7i5x9bq3ljk3g4bs294hcr5mj3cq0kw"))))
2909 (build-system gnu-build-system)
2910 (home-page "https://quvi.sourceforge.net/")
2911 (synopsis "Media stream URL parser")
2912 (description "This package contains support scripts called by libquvi to
2913parse media stream properties.")
2914 (license license:lgpl2.1+)))
2915
2916(define-public libquvi
2917 (package
2918 (name "libquvi")
2919 (version "0.4.1")
2920 (source
2921 (origin
2922 (method url-fetch)
2923 (uri (string-append
2924 "mirror://sourceforge/quvi/" (version-major+minor version) "/" name "/"
2925 name "-" version ".tar.xz"))
2926 (sha256
2927 (base32 "00x9gbmzc5cns0gnfag0hsphcr3cb33vbbb9s7ppvvd6bxz2z1mm"))))
2928 (build-system gnu-build-system)
2929 (native-inputs (list pkg-config))
2930 (inputs
2931 (list curl
2932 cyrus-sasl
2933 libquvi-scripts
2934 lua-5.1
2935 openssl
2936 zlib))
2937 (arguments
2938 ;; Lua provides no .pc file, so add CFLAGS/LIBS manually.
2939 '(#:configure-flags
2940 (let ((lua (assoc-ref %build-inputs "lua")))
2941 (list
2942 (string-append "liblua_CFLAGS=-I" lua "/include")
2943 (string-append "liblua_LIBS=-L" lua "/libs -llua")))))
2944 (home-page "https://quvi.sourceforge.net/")
2945 (synopsis "Media stream URL parser")
2946 (description "libquvi is a library with a C API for parsing media stream
2947URLs and extracting their actual media files.")
2948 (license license:lgpl2.1+)))
2949
2950(define-public quvi
2951 (package
2952 (name "quvi")
2953 (version "0.4.2")
2954 (source
2955 (origin
2956 (method url-fetch)
2957 (uri (string-append
2958 "mirror://sourceforge/" name "/" (version-major+minor version)
2959 "/" name "/" name "-" version ".tar.xz"))
2960 (sha256
2961 (base32 "09lhl6dv5zpryasx7yjslfrcdcqlsbwapvd5lg7w6sm5x5n3k8ci"))))
2962 (build-system gnu-build-system)
2963 (native-inputs (list pkg-config))
2964 (inputs
2965 (list curl libquvi))
2966 (home-page "https://quvi.sourceforge.net/")
2967 (synopsis "Media stream URL parser")
2968 (description "quvi is a command-line-tool suite to extract media files
2969from streaming URLs. It is a command-line wrapper for the libquvi library.")
2970 (license license:lgpl2.1+)))
2971
2972(define-public serf
2973 (package
2974 (name "serf")
2975 (version "1.3.10")
2976 (source
2977 (origin
2978 (method url-fetch)
2979 (uri (string-append "mirror://apache/serf/serf-"
2980 version ".tar.bz2"))
2981 (sha256
2982 (base32 "1rk4q0fv9xs57fivjy5mxqkk5g7pvvvssxvalz6nwld2p84fz0dy"))))
2983 (build-system scons-build-system)
2984 (propagated-inputs
2985 (list apr apr-util openssl))
2986 (inputs
2987 (list ;; TODO: Fix build with gss.
2988 ;;("gss" ,gss)
2989 zlib))
2990 (arguments
2991 `(#:scons-flags (list "CFLAGS=-g -O2 -Wno-error=incompatible-pointer-types"
2992 (string-append "APR=" (assoc-ref %build-inputs "apr"))
2993 (string-append "APU=" (assoc-ref %build-inputs "apr-util"))
2994 (string-append "OPENSSL=" (assoc-ref %build-inputs "openssl"))
2995 ;; (string-append "GSSAPI=" (assoc-ref %build-inputs "gss"))
2996 (string-append "ZLIB=" (assoc-ref %build-inputs "zlib"))
2997 (string-append "PREFIX=" %output))
2998 #:phases
2999 (modify-phases %standard-phases
3000 (add-after 'unpack 'scons-propagate-environment
3001 (lambda _
3002 ;; By design, SCons does not, by default, propagate
3003 ;; environment variables to subprocesses. See:
3004 ;; <http://comments.gmane.org/gmane.linux.distributions.nixos/4969>
3005 ;; Here, we modify the SConstruct file to arrange for
3006 ;; environment variables to be propagated.
3007 (substitute* "SConstruct"
3008 (("^env = Environment\\(")
3009 "env = Environment(ENV=os.environ, "))))
3010 (add-before 'check 'disable-broken-tests
3011 (lambda _
3012 ;; These tests rely on SSL certificates that expired 2017-04-18.
3013 ;; While there are newer certs available upstream, we don't want
3014 ;; this package to suddenly "expire" some time in the future.
3015 ;; https://bugs.gnu.org/26671
3016 (let ((broken-tests
3017 '("test_ssl_trust_rootca"
3018 "test_ssl_certificate_chain_with_anchor"
3019 "test_ssl_certificate_chain_all_from_server"
3020 "test_ssl_no_servercert_callback_allok"
3021 "test_ssl_large_response"
3022 "test_ssl_large_request"
3023 "test_ssl_client_certificate"
3024 "test_ssl_future_server_cert"
3025 "test_setup_ssltunnel"
3026 "test_ssltunnel_basic_auth"
3027 "test_ssltunnel_basic_auth_server_has_keepalive_off"
3028 "test_ssltunnel_basic_auth_proxy_has_keepalive_off"
3029 "test_ssltunnel_basic_auth_proxy_close_conn_on_200resp"
3030 "test_ssltunnel_digest_auth")))
3031 (for-each
3032 (lambda (test)
3033 (substitute* "test/test_context.c"
3034 (((string-append "SUITE_ADD_TEST\\(suite, " test "\\);")) "")))
3035 broken-tests)
3036 #t))))))
3037 (home-page "https://serf.apache.org/")
3038 (synopsis "High-performance asynchronous HTTP client library")
3039 (description
3040 "serf is a C-based HTTP client library built upon the Apache Portable
3041Runtime (APR) library. It multiplexes connections, running the read/write
3042communication asynchronously. Memory copies and transformations are kept to a
3043minimum to provide high performance operation.")
3044 ;; Most of the code is covered by the Apache License, Version 2.0, but the
3045 ;; bundled CuTest framework uses a different non-copyleft license.
3046 (properties
3047 '((release-monitoring-url . "https://serf.apache.org/download")))
3048 (license (list license:asl2.0 (license:non-copyleft "file://test/CuTest-README.txt")))))
3049
3050(define-public libsass
3051 (package
3052 (name "libsass")
3053 ;; When updating, check whether sassc/libsass-3.5 is still needed.
3054 (version "3.6.4")
3055 (source (origin
3056 (method git-fetch)
3057 (uri (git-reference
3058 (url "https://github.com/sass/libsass")
3059 (commit version)))
3060 (file-name (git-file-name name version))
3061 (sha256
3062 (base32
3063 "0r8lfqvr3rjhjd8r036zd1wc9q17gyiskppcw9m13jks9an7xp4j"))))
3064 (build-system gnu-build-system)
3065 (arguments
3066 `(#:phases
3067 (modify-phases %standard-phases
3068 (add-before 'bootstrap 'set-LIBSASS_VERSION
3069 (lambda _
3070 (setenv "LIBSASS_VERSION" ,version)
3071 #t)))))
3072 (native-inputs
3073 (list autoconf automake libtool))
3074 (home-page "https://sass-lang.com/libsass")
3075 (synopsis "SASS Compiler, implemented as a C/C++ library")
3076 (description
3077 "LibSass is a @acronym{SASS,Syntactically awesome style sheets} compiler
3078library designed for portability and efficiency. To actually compile SASS
3079stylesheets, you'll need to use another program that uses this library,
3080@var{sassc} for example.")
3081 (license license:expat)))
3082
3083(define-public sassc
3084 (package
3085 (name "sassc")
3086 (version "3.6.2")
3087 (source (origin
3088 (method git-fetch)
3089 (uri (git-reference
3090 (url "https://github.com/sass/sassc")
3091 (commit version)))
3092 (file-name (git-file-name name version))
3093 (sha256
3094 (base32
3095 "0m7flrs0hz3ivib8kvsgn3d0fgkabqviadkp1dyspa6iibx3gjwd"))))
3096 (build-system gnu-build-system)
3097 (arguments
3098 `(#:make-flags
3099 (list "CC=gcc"
3100 (string-append "PREFIX=" (assoc-ref %outputs "out")))
3101 #:tests? #f ; no test suite
3102 #:phases
3103 (modify-phases %standard-phases
3104 (add-after 'unpack 'patch-Makefile
3105 (lambda _
3106 (substitute* "Makefile"
3107 (("build-shared: \\$\\(RESOURCES\\) \\$\\(OBJECTS\\) \\$\\(LIB_SHARED\\)")
3108 "build-shared: $(RESOURCES) $(OBJECTS)")
3109 (("\\$\\(SASSC_EXE\\): libsass build")
3110 "$(SASSC_EXE): build")
3111 (("install: libsass-install-\\$\\(BUILD\\) \\\\")
3112 "install: \\"))
3113 #t))
3114 ;; This phase fails because…
3115 (delete 'bootstrap)
3116 ;; …there is no configure script to be generated.
3117 (delete 'configure)
3118 (add-before 'build 'setup-environment
3119 (lambda _
3120 (setenv "BUILD" "shared")
3121 (setenv "SASSC_VERSION" ,version)
3122 #t)))))
3123 (inputs
3124 (list libsass))
3125 (synopsis "CSS pre-processor")
3126 (description "SassC is a compiler written in C for the CSS pre-processor
3127language known as SASS.")
3128 (home-page "https://sass-lang.com/libsass")
3129 (license license:expat)))
3130
3131(define-public sassc/libsass-3.5
3132 ;; Newer libsass versions suffor from a memory leak when building (some?)
3133 ;; GTK themes <https://github.com/sass/libsass/issues/3033>.
3134 (package
3135 (inherit sassc)
3136 (name "sassc")
3137 (inputs
3138 (list (package (inherit libsass)
3139 (name "libsass")
3140 (version "3.5.5")
3141 (source (origin (method git-fetch)
3142 (uri (git-reference (url
3143 "https://github.com/sass/libsass")
3144 (commit version)))
3145 (file-name (git-file-name name version))
3146 (sha256 (base32
3147 "0830pjcvhzxh6yixj82x5k5r1xnadjqzi16kp53213icbly0r9ma")))))))
3148 (properties '((hidden? . #t)))))
3149
3150(define-public guile-safsaf
3151 (let ((commit "8b354103ee2b7182bebcc944c36741469ddf4fb8")
3152 (revision "1"))
3153 (package
3154 (name "guile-safsaf")
3155 (version (git-version "0.5" revision commit))
3156 (source (origin
3157 (method git-fetch)
3158 (uri (git-reference
3159 (url "https://forge.cbaines.net/cbaines/safsaf.git")
3160 (commit commit)))
3161 (sha256
3162 (base32
3163 "0pw09cw0d52xhjbqj76c4bl44qnmw53ppg6hnhkliv9ssbrlccar"))
3164 (file-name (git-file-name name version))))
3165 (build-system gnu-build-system)
3166 (native-inputs
3167 (list pkg-config
3168 autoconf
3169 automake
3170 guile-3.0-latest
3171 guile-lib
3172 guile-fibers
3173 guile-knots
3174 guile-webutils
3175 guile-documenta
3176 guile-json-4
3177 guile-gcrypt))
3178 (inputs
3179 (list guile-3.0-latest))
3180 (propagated-inputs
3181 (list guile-fibers
3182 guile-knots
3183 guile-webutils
3184 guile-json-4
3185 guile-gcrypt))
3186 (home-page "https://cbaines.codeberg.page/safsaf/")
3187 (synopsis "Web framework for GNU Guile")
3188 (description
3189 "Safsaf is a web framework for GNU Guile, built on Guile Fibers using the
3190Guile Knots web server. It features include:
3191@itemize
3192@item Request routing
3193@item Middleware for logging, CORS, CSRF protection, sessions (signed
3194cookies), security headers, trailing-slash normalization, exception handling
3195@item Request helpers for form body parsing, multipart parsing, query strings,
3196cookies
3197@item Response helpers for HTML/SXML, JSON, redirects, plain text, static
3198files with Last-Modified / Cache-Control
3199@item Server-Sent Events (SSE): streaming text/event-stream responses with
3200keepalives and Last-Event-ID replay
3201@item Declarative parameter parsing with built-in processors, CSRF
3202integration, and error inspection
3203@item Internationalisation: gettext-style t / tn helpers backed by an
3204in-Scheme catalog loaded from .po files, with a locale handler wrapper that
3205selects per-request from route params, cookie, or Accept-Language
3206@end itemize")
3207 (license license:lgpl3+))))
3208
3209
3210(define-public perl-apache-logformat-compiler
3211 (package
3212 (name "perl-apache-logformat-compiler")
3213 (version "0.36")
3214 (source
3215 (origin
3216 (method url-fetch)
3217 (uri (string-append "mirror://cpan/authors/id/K/KA/KAZEBURO/"
3218 "Apache-LogFormat-Compiler-" version ".tar.gz"))
3219 (sha256
3220 (base32 "05xcl7j65vakx7x79jqjikyw0nzf60bc2w6hhc0q5sklxq1ral4l"))))
3221 (build-system perl-build-system)
3222 (native-inputs
3223 (list perl-http-message perl-module-build-tiny perl-test-mocktime
3224 perl-try-tiny perl-uri))
3225 (propagated-inputs
3226 (list perl-posix-strftime-compiler))
3227 (arguments `(#:tests? #f)) ; TODO: Timezone test failures
3228 (home-page "https://metacpan.org/release/Apache-LogFormat-Compiler")
3229 (synopsis "Compile a log format string to perl-code")
3230 (description "This module provides methods to compile a log format string
3231to perl-code, for faster generation of access_log lines.")
3232 (license license:perl-license)))
3233
3234(define-public perl-authen-sasl
3235 (package
3236 (name "perl-authen-sasl")
3237 (version "2.16")
3238 (source
3239 (origin
3240 (method url-fetch)
3241 (uri (string-append "mirror://cpan/authors/id/G/GB/GBARR/"
3242 "Authen-SASL-" version ".tar.gz"))
3243 (sha256
3244 (base32
3245 "02afhlrdq5hh5g8b32fa79fqq5i76qzwfqqvfi9zi57h31szl536"))))
3246 (build-system perl-build-system)
3247 (arguments
3248 '(#:phases
3249 (modify-phases %standard-phases
3250 (add-after 'unpack 'set-env
3251 ;; Fix the build with Perl 5.26.0. Try removing this phase for later
3252 ;; versions of perl-authen-sasl.
3253 (lambda _ (setenv "PERL_USE_UNSAFE_INC" "1") #t)))))
3254 (propagated-inputs
3255 (list perl-digest-hmac perl-gssapi))
3256 (home-page "https://metacpan.org/release/Authen-SASL")
3257 (synopsis "SASL authentication framework")
3258 (description "Authen::SASL provides an SASL authentication framework.")
3259 (license license:perl-license)))
3260
3261(define-public perl-catalyst-action-renderview
3262 (package
3263 (name "perl-catalyst-action-renderview")
3264 (version "0.16")
3265 (source
3266 (origin
3267 (method url-fetch)
3268 (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
3269 "Catalyst-Action-RenderView-"
3270 version ".tar.gz"))
3271 (sha256
3272 (base32
3273 "0j1rrld13cjk7ks92b5hv3xw4rfm2lvmksb4rlzd8mx0a0wj0rc5"))))
3274 (build-system perl-build-system)
3275 (native-inputs
3276 (list perl-http-request-ascgi perl-module-install))
3277 (propagated-inputs
3278 (list perl-catalyst-runtime perl-data-visitor perl-mro-compat))
3279 (home-page "https://metacpan.org/release/Catalyst-Action-RenderView")
3280 (synopsis "Sensible default Catalyst action")
3281 (description "This Catalyst action implements a sensible default end
3282action, which will forward to the first available view.")
3283 (license license:perl-license)))
3284
3285(define-public perl-catalyst-action-rest
3286 (package
3287 (name "perl-catalyst-action-rest")
3288 (version "1.21")
3289 (source (origin
3290 (method url-fetch)
3291 (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/"
3292 "Catalyst-Action-REST-" version ".tar.gz"))
3293 (sha256
3294 (base32
3295 "086bykggzalbjfk0islac4b48g9s2ypj7y81d6ns1lq0aax1py6c"))))
3296 (build-system perl-build-system)
3297 (native-inputs
3298 (list perl-test-requires perl-module-install))
3299 (propagated-inputs
3300 (list perl-catalyst-runtime
3301 perl-class-inspector
3302 perl-config-general
3303 perl-cpanel-json-xs
3304 perl-libwww
3305 perl-moose
3306 perl-mro-compat
3307 perl-namespace-autoclean
3308 perl-params-validate
3309 perl-uri-find
3310 perl-xml-simple))
3311 (home-page "https://metacpan.org/release/Catalyst-Action-REST")
3312 (synopsis "Automated REST Method Dispatching")
3313 (description "This Action handles doing automatic method dispatching for
3314REST requests. It takes a normal Catalyst action, and changes the dispatch to
3315append an underscore and method name. First it will try dispatching to an
3316action with the generated name, and failing that it will try to dispatch to a
3317regular method.")
3318 (license license:perl-license)))
3319
3320(define-public perl-catalyst-authentication-store-dbix-class
3321 (package
3322 (name "perl-catalyst-authentication-store-dbix-class")
3323 (version "0.1506")
3324 (source
3325 (origin
3326 (method url-fetch)
3327 (uri (string-append "mirror://cpan/authors/id/I/IL/ILMARI/"
3328 "Catalyst-Authentication-Store-DBIx-Class-"
3329 version ".tar.gz"))
3330 (sha256
3331 (base32
3332 "0i5ja7690fs9nhxcij6lw51j804sm8s06m5mvk1n8pi8jljrymvw"))))
3333 (build-system perl-build-system)
3334 (native-inputs
3335 (list perl-catalyst-plugin-authorization-roles
3336 perl-catalyst-plugin-session-state-cookie perl-dbd-sqlite
3337 perl-module-install perl-test-www-mechanize-catalyst))
3338 (propagated-inputs
3339 (list perl-catalyst-runtime perl-catalyst-plugin-authentication
3340 perl-dbix-class perl-catalyst-model-dbic-schema))
3341 (home-page
3342 "https://metacpan.org/release/Catalyst-Authentication-Store-DBIx-Class")
3343 (synopsis "Storage class for Catalyst authentication using DBIx::Class")
3344 (description "The Catalyst::Authentication::Store::DBIx::Class class
3345provides access to authentication information stored in a database via
3346DBIx::Class.")
3347 (license license:perl-license)))
3348
3349(define-public perl-catalyst-component-instancepercontext
3350 (package
3351 (name "perl-catalyst-component-instancepercontext")
3352 (version "0.001001")
3353 (source
3354 (origin
3355 (method url-fetch)
3356 (uri (string-append "mirror://cpan/authors/id/G/GR/GRODITI/"
3357 "Catalyst-Component-InstancePerContext-"
3358 version ".tar.gz"))
3359 (sha256
3360 (base32
3361 "0wfj4vnn2cvk6jh62amwlg050p37fcwdgrn9amcz24z6w4qgjqvz"))))
3362 (build-system perl-build-system)
3363 (native-inputs
3364 (list perl-module-install))
3365 (propagated-inputs
3366 (list perl-catalyst-runtime perl-moose))
3367 (home-page
3368 "https://metacpan.org/release/Catalyst-Component-InstancePerContext")
3369 (synopsis "Create only one instance of Moose component per context")
3370 (description "Catalyst::Component::InstancePerContext returns a new
3371instance of a component on each request.")
3372 (license license:perl-license)))
3373
3374(define-public perl-catalyst-devel
3375 (package
3376 (name "perl-catalyst-devel")
3377 (version "1.42")
3378 (source
3379 (origin
3380 (method url-fetch)
3381 (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
3382 "Catalyst-Devel-" version ".tar.gz"))
3383 (sha256
3384 (base32 "1gcaqivyxwsdq87v9za1ijjibh6llirzqsbpwjbw1f5mravg1iky"))))
3385 (build-system perl-build-system)
3386 (native-inputs
3387 (list perl-file-sharedir-install perl-test-fatal))
3388 (propagated-inputs
3389 (list perl-catalyst-action-renderview
3390 perl-catalyst-plugin-configloader
3391 perl-catalyst-plugin-static-simple
3392 perl-catalyst-runtime
3393 perl-config-general
3394 perl-file-changenotify
3395 perl-file-copy-recursive
3396 perl-file-sharedir
3397 perl-module-install
3398 perl-moose
3399 perl-moosex-emulate-class-accessor-fast
3400 perl-namespace-autoclean
3401 perl-namespace-clean
3402 perl-path-class
3403 perl-template-toolkit))
3404 (home-page "https://metacpan.org/release/Catalyst-Devel")
3405 (synopsis "Catalyst Development Tools")
3406 (description "The Catalyst-Devel distribution includes a variety of
3407modules useful for the development of Catalyst applications, but not required
3408to run them. Catalyst-Devel includes the Catalyst::Helper system, which
3409autogenerates scripts and tests; Module::Install::Catalyst, a Module::Install
3410extension for Catalyst; and requirements for a variety of development-related
3411modules.")
3412 (license license:perl-license)))
3413
3414(define-public perl-catalyst-dispatchtype-regex
3415 (package
3416 (name "perl-catalyst-dispatchtype-regex")
3417 (version "5.90035")
3418 (source
3419 (origin
3420 (method url-fetch)
3421 (uri (string-append "mirror://cpan/authors/id/M/MG/MGRIMES/"
3422 "Catalyst-DispatchType-Regex-" version ".tar.gz"))
3423 (sha256
3424 (base32
3425 "06jq1lmpq88rmp9zik5gqczg234xac0hiyc3l698iif7zsgcyb80"))))
3426 (build-system perl-build-system)
3427 (native-inputs
3428 (list perl-module-build ;needs Module::Build >= 0.4004
3429 perl-namespace-autoclean perl-catalyst-runtime))
3430 (propagated-inputs
3431 (list perl-moose perl-text-simpletable))
3432 (home-page "https://metacpan.org/release/Catalyst-DispatchType-Regex")
3433 (synopsis "Regex DispatchType for Catalyst")
3434 (description "Dispatch type managing path-matching behaviour using
3435regexes. Regex dispatch types have been deprecated and removed from Catalyst
3436core. It is recommend that you use Chained methods or other techniques
3437instead. As part of the refactoring, the dispatch priority of Regex vs Regexp
3438vs LocalRegex vs LocalRegexp may have changed. Priority is now influenced by
3439when the dispatch type is first seen in your application.")
3440 (license license:perl-license)))
3441
3442(define-public perl-catalyst-model-dbic-schema
3443 (package
3444 (name "perl-catalyst-model-dbic-schema")
3445 (version "0.65")
3446 (source
3447 (origin
3448 (method url-fetch)
3449 (uri (string-append "mirror://cpan/authors/id/G/GB/GBJK/"
3450 "Catalyst-Model-DBIC-Schema-"
3451 version ".tar.gz"))
3452 (sha256
3453 (base32
3454 "1spfjcjc0b9dv3k2gbanqj1m1cqzyxb32p76dhdwizzpbvpi3a96"))))
3455 (build-system perl-build-system)
3456 (native-inputs
3457 (list perl-dbd-sqlite perl-module-install perl-test-exception
3458 perl-test-requires))
3459 (propagated-inputs
3460 (list perl-carp-clan
3461 perl-catalyst-component-instancepercontext
3462 perl-catalyst-runtime
3463 perl-catalystx-component-traits
3464 perl-dbix-class
3465 perl-dbix-class-cursor-cached
3466 perl-dbix-class-schema-loader
3467 perl-hash-merge
3468 perl-list-moreutils
3469 perl-module-runtime
3470 perl-moose
3471 perl-moosex-markasmethods
3472 perl-moosex-nonmoose
3473 perl-moosex-types
3474 perl-moosex-types-loadableclass
3475 perl-namespace-autoclean
3476 perl-namespace-clean
3477 perl-tie-ixhash
3478 perl-try-tiny))
3479 (home-page "https://metacpan.org/release/Catalyst-Model-DBIC-Schema")
3480 (synopsis "DBIx::Class::Schema Model Class")
3481 (description "This is a Catalyst Model for DBIx::Class::Schema-based
3482Models.")
3483 (license license:perl-license)))
3484
3485(define-public perl-catalyst-plugin-accesslog
3486 (package
3487 (name "perl-catalyst-plugin-accesslog")
3488 (version "1.10")
3489 (source
3490 (origin
3491 (method url-fetch)
3492 (uri (string-append "mirror://cpan/authors/id/A/AR/ARODLAND/"
3493 "Catalyst-Plugin-AccessLog-" version ".tar.gz"))
3494 (sha256
3495 (base32
3496 "0811rj45q4v2y8wka3wb9d5m4vbyhcmkvddf2wz4x69awzjbhgc7"))))
3497 (build-system perl-build-system)
3498 (propagated-inputs
3499 (list perl-catalyst-runtime perl-datetime perl-moose
3500 perl-namespace-autoclean))
3501 (home-page "https://metacpan.org/release/Catalyst-Plugin-AccessLog")
3502 (synopsis "Request logging from within Catalyst")
3503 (description "This Catalyst plugin enables you to create \"access logs\"
3504from within a Catalyst application instead of requiring a webserver to do it
3505for you. It will work even with Catalyst debug logging turned off.")
3506 (license license:perl-license)))
3507
3508(define-public perl-catalyst-plugin-authentication
3509 (package
3510 (name "perl-catalyst-plugin-authentication")
3511 (version "0.10023")
3512 (source
3513 (origin
3514 (method url-fetch)
3515 (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
3516 "Catalyst-Plugin-Authentication-"
3517 version ".tar.gz"))
3518 (sha256
3519 (base32
3520 "0v6hb4r1wv3djrnqvnjcn3xx1scgqzx8nyjdg9lfc1ybvamrl0rn"))))
3521 (build-system perl-build-system)
3522 (native-inputs
3523 (list perl-module-install))
3524 (propagated-inputs
3525 (list perl-catalyst-plugin-session
3526 perl-catalyst-runtime
3527 perl-class-inspector
3528 perl-moose
3529 perl-moosex-emulate-class-accessor-fast
3530 perl-mro-compat
3531 perl-namespace-autoclean
3532 perl-string-rewriteprefix
3533 perl-test-exception
3534 perl-try-tiny))
3535 (home-page "https://metacpan.org/release/Catalyst-Plugin-Authentication")
3536 (synopsis "Infrastructure plugin for the Catalyst authentication framework")
3537 (description "The authentication plugin provides generic user support for
3538Catalyst apps. It is the basis for both authentication (checking the user is
3539who they claim to be), and authorization (allowing the user to do what the
3540system authorises them to do).")
3541 (license license:perl-license)))
3542
3543(define-public perl-catalyst-plugin-authorization-roles
3544 (package
3545 (name "perl-catalyst-plugin-authorization-roles")
3546 (version "0.09")
3547 (source
3548 (origin
3549 (method url-fetch)
3550 (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
3551 "Catalyst-Plugin-Authorization-Roles-"
3552 version ".tar.gz"))
3553 (sha256
3554 (base32
3555 "0l83lkwmq0lngwh8b1rv3r719pn8w1gdbyhjqm74rnd0wbjl8h7f"))))
3556 (build-system perl-build-system)
3557 (native-inputs
3558 (list perl-module-install perl-test-exception))
3559 (propagated-inputs
3560 (list perl-catalyst-plugin-authentication perl-catalyst-runtime
3561 perl-set-object perl-universal-isa))
3562 (home-page
3563 "https://metacpan.org/release/Catalyst-Plugin-Authorization-Roles")
3564 (synopsis "Role-based authorization for Catalyst")
3565 (description "Catalyst::Plugin::Authorization::Roles provides role-based
3566authorization for Catalyst based on Catalyst::Plugin::Authentication.")
3567 (license license:perl-license)))
3568
3569(define-public perl-catalyst-plugin-captcha
3570 (package
3571 (name "perl-catalyst-plugin-captcha")
3572 (version "0.04")
3573 (source
3574 (origin
3575 (method url-fetch)
3576 (uri (string-append "mirror://cpan/authors/id/D/DI/DIEGOK/"
3577 "Catalyst-Plugin-Captcha-" version ".tar.gz"))
3578 (sha256
3579 (base32
3580 "0llyj3v5nx9cx46jdbbvxf1lc9s9cxq5ml22xmx3wkb201r5qgaa"))))
3581 (build-system perl-build-system)
3582 (propagated-inputs
3583 (list perl-catalyst-plugin-session perl-catalyst-runtime
3584 perl-gd-securityimage perl-http-date))
3585 (home-page "https://metacpan.org/release/Catalyst-Plugin-Captcha")
3586 (synopsis "Captchas for Catalyst")
3587 (description "This plugin creates and validates Captcha images for
3588Catalyst.")
3589 (license license:perl-license)))
3590
3591(define-public perl-catalyst-plugin-configloader
3592 (package
3593 (name "perl-catalyst-plugin-configloader")
3594 (version "0.35")
3595 (source
3596 (origin
3597 (method url-fetch)
3598 (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
3599 "Catalyst-Plugin-ConfigLoader-"
3600 version ".tar.gz"))
3601 (sha256
3602 (base32 "0w8r3bbxqnlykvra6sx3sh3wh8ylkj914xg5ql6nw11ddy56jaly"))))
3603 (build-system perl-build-system)
3604 (native-inputs
3605 (list perl-path-class perl-module-install))
3606 (propagated-inputs
3607 (list perl-catalyst-runtime perl-config-any perl-data-visitor
3608 perl-mro-compat))
3609 (home-page "https://metacpan.org/release/Catalyst-Plugin-ConfigLoader")
3610 (synopsis "Load config files of various types")
3611 (description "This module will attempt to load find and load configuration
3612files of various types. Currently it supports YAML, JSON, XML, INI and Perl
3613formats.")
3614 (license license:perl-license)))
3615
3616(define-public perl-catalyst-plugin-session
3617 (package
3618 (name "perl-catalyst-plugin-session")
3619 (version "0.41")
3620 (source
3621 (origin
3622 (method url-fetch)
3623 (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/"
3624 "Catalyst-Plugin-Session-" version ".tar.gz"))
3625 (sha256
3626 (base32 "0a451997zc2vjx7rvndgx1ldbrpic8sfbddyvncynh0zr8bhlqc5"))))
3627 (build-system perl-build-system)
3628 (native-inputs
3629 (list perl-module-install perl-test-deep perl-test-exception))
3630 (propagated-inputs
3631 (list perl-catalyst-runtime
3632 perl-moose
3633 perl-moosex-emulate-class-accessor-fast
3634 perl-mro-compat
3635 perl-namespace-clean
3636 perl-object-signature
3637 perl-test-www-mechanize-psgi))
3638 (home-page "https://metacpan.org/release/Catalyst-Plugin-Session")
3639 (synopsis "Catalyst generic session plugin")
3640 (description "This plugin links the two pieces required for session
3641management in web applications together: the state, and the store.")
3642 (license license:perl-license)))
3643
3644(define-public perl-catalyst-plugin-session-state-cookie
3645 (package
3646 (name "perl-catalyst-plugin-session-state-cookie")
3647 (version "0.17")
3648 (source
3649 (origin
3650 (method url-fetch)
3651 (uri (string-append "mirror://cpan/authors/id/M/MS/MSTROUT/"
3652 "Catalyst-Plugin-Session-State-Cookie-"
3653 version ".tar.gz"))
3654 (sha256
3655 (base32
3656 "1rvxbfnpf9x2pc2zgpazlcgdlr2dijmxgmcs0m5nazs0w6xikssb"))))
3657 (build-system perl-build-system)
3658 (native-inputs
3659 (list perl-module-install))
3660 (propagated-inputs
3661 (list perl-catalyst-plugin-session perl-catalyst-runtime perl-moose
3662 perl-mro-compat perl-namespace-autoclean))
3663 (home-page
3664 "https://metacpan.org/release/Catalyst-Plugin-Session-State-Cookie")
3665 (synopsis "Maintain session IDs using cookies")
3666 (description "In order for Catalyst::Plugin::Session to work, the session
3667ID needs to be stored on the client, and the session data needs to be stored
3668on the server. This plugin stores the session ID on the client using the
3669cookie mechanism.")
3670 (license license:perl-license)))
3671
3672(define-public perl-catalyst-plugin-session-store-fastmmap
3673 (package
3674 (name "perl-catalyst-plugin-session-store-fastmmap")
3675 (version "0.16")
3676 (source
3677 (origin
3678 (method url-fetch)
3679 (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
3680 "Catalyst-Plugin-Session-Store-FastMmap-"
3681 version ".tar.gz"))
3682 (sha256
3683 (base32
3684 "0x3j6zv3wr41jlwr6yb2jpmcx019ibyn11y8653ffnwhpzbpzsxs"))))
3685 (build-system perl-build-system)
3686 (propagated-inputs
3687 (list perl-cache-fastmmap
3688 perl-catalyst-plugin-session
3689 perl-catalyst-runtime
3690 perl-moosex-emulate-class-accessor-fast
3691 perl-mro-compat
3692 perl-path-class))
3693 (home-page
3694 "https://metacpan.org/release/Catalyst-Plugin-Session-Store-FastMmap")
3695 (synopsis "FastMmap session storage backend")
3696 (description "Catalyst::Plugin::Session::Store::FastMmap is a fast session
3697storage plugin for Catalyst that uses an mmap'ed file to act as a shared
3698memory interprocess cache. It is based on Cache::FastMmap.")
3699 (license license:perl-license)))
3700
3701(define-public perl-catalyst-plugin-stacktrace
3702 (package
3703 (name "perl-catalyst-plugin-stacktrace")
3704 (version "0.12")
3705 (source
3706 (origin
3707 (method url-fetch)
3708 (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
3709 "Catalyst-Plugin-StackTrace-" version ".tar.gz"))
3710 (sha256
3711 (base32
3712 "1b2ksz74cpigxqzf63rddar3vfmnbpwpdcbs11v0ml89pb8ar79j"))))
3713 (build-system perl-build-system)
3714 (native-inputs
3715 (list perl-module-install))
3716 (propagated-inputs
3717 (list perl-catalyst-runtime perl-devel-stacktrace perl-mro-compat))
3718 (home-page "https://metacpan.org/release/Catalyst-Plugin-StackTrace")
3719 (synopsis "Stack trace on the Catalyst debug screen")
3720 (description "This plugin enhances the standard Catalyst debug screen by
3721including a stack trace of your application up to the point where the error
3722occurred. Each stack frame is displayed along with the package name, line
3723number, file name, and code context surrounding the line number.")
3724 (license license:perl-license)))
3725
3726(define-public perl-catalyst-plugin-static-simple
3727 (package
3728 (name "perl-catalyst-plugin-static-simple")
3729 (version "0.36")
3730 (source
3731 (origin
3732 (method url-fetch)
3733 (uri (string-append "mirror://cpan/authors/id/I/IL/ILMARI/"
3734 "Catalyst-Plugin-Static-Simple-" version ".tar.gz"))
3735 (sha256
3736 (base32
3737 "0m4l627p2fvzr4i6sgdxhdvsx4wpa6qmaibsbxlg5x5yjs7k7drn"))))
3738 (build-system perl-build-system)
3739 (native-inputs
3740 (list perl-module-install))
3741 (propagated-inputs
3742 (list perl-catalyst-runtime perl-mime-types perl-moose
3743 perl-moosex-types perl-namespace-autoclean))
3744 (home-page "https://metacpan.org/release/Catalyst-Plugin-Static-Simple")
3745 (synopsis "Simple serving of static pages")
3746 (description "The Static::Simple plugin is designed to make serving static
3747content in your application during development quick and easy, without
3748requiring a single line of code from you. This plugin detects static files by
3749looking at the file extension in the URL (such as .css or .png or .js). The
3750plugin uses the lightweight MIME::Types module to map file extensions to
3751IANA-registered MIME types, and will serve your static files with the correct
3752MIME type directly to the browser, without being processed through Catalyst.")
3753 (license license:perl-license)))
3754
3755(define-public perl-catalyst-runtime
3756 (package
3757 (name "perl-catalyst-runtime")
3758 (version "5.90124")
3759 (source
3760 (origin
3761 (method url-fetch)
3762 (uri (string-append "mirror://cpan/authors/id/J/JJ/JJNAPIORK/"
3763 "Catalyst-Runtime-" version ".tar.gz"))
3764 (sha256
3765 (base32
3766 "001yk1i0xwn4v308qx15nvnp6v9qfdigdlvz1rgw5zpnq7kwnq1a"))))
3767 (build-system perl-build-system)
3768 (native-inputs
3769 (list perl-test-fatal))
3770 (propagated-inputs
3771 (list perl-cgi-simple
3772 perl-cgi-struct
3773 perl-class-c3-adopt-next
3774 perl-class-date
3775 perl-class-load
3776 perl-data-dump
3777 perl-http-body
3778 perl-http-message
3779 perl-json-maybexs
3780 perl-libwww
3781 perl-module-pluggable
3782 perl-moose
3783 perl-moosex-emulate-class-accessor-fast
3784 perl-moosex-getopt
3785 perl-moosex-methodattributes
3786 perl-namespace-clean
3787 perl-path-class
3788 perl-perlio-utf8_strict
3789 perl-plack
3790 perl-plack-middleware-fixmissingbodyinredirect
3791 perl-plack-middleware-methodoverride
3792 perl-plack-middleware-removeredundantbody
3793 perl-plack-middleware-reverseproxy
3794 perl-plack-test-externalserver
3795 perl-safe-isa
3796 perl-string-rewriteprefix
3797 perl-text-simpletable
3798 perl-tree-simple
3799 perl-tree-simple-visitorfactory
3800 perl-try-tiny
3801 perl-uri
3802 perl-uri-ws))
3803 (home-page "https://metacpan.org/release/Catalyst-Runtime")
3804 (synopsis "The Catalyst Framework Runtime")
3805 (description "Catalyst is a modern framework for making web applications.
3806It is designed to make it easy to manage the various tasks you need to do to
3807run an application on the web, either by doing them itself, or by letting you
3808\"plug in\" existing Perl modules that do what you need.")
3809 (license license:perl-license)))
3810
3811(define-public perl-catalyst-traitfor-request-proxybase
3812 (package
3813 (name "perl-catalyst-traitfor-request-proxybase")
3814 (version "0.000005")
3815 (source
3816 (origin
3817 (method url-fetch)
3818 (uri (string-append "mirror://cpan/authors/id/B/BO/BOBTFISH/"
3819 "Catalyst-TraitFor-Request-ProxyBase-"
3820 version ".tar.gz"))
3821 (sha256
3822 (base32
3823 "02kir63d5cs2ipj3fn1qlmmx3gqi1xqzrxfr4pv5vjhjgsm0zgx7"))))
3824 (build-system perl-build-system)
3825 (native-inputs
3826 (list perl-catalyst-runtime perl-catalystx-roleapplicator
3827 perl-http-message perl-module-install))
3828 (propagated-inputs
3829 (list perl-moose perl-namespace-autoclean perl-uri))
3830 (home-page
3831 "https://metacpan.org/release/Catalyst-TraitFor-Request-ProxyBase")
3832 (synopsis "Replace request base with value passed by HTTP proxy")
3833 (description "This module is a Moose::Role which allows you more
3834flexibility in your application's deployment configurations when deployed
3835behind a proxy. Using this module, the request base ($c->req->base) is
3836replaced with the contents of the X-Request-Base header.")
3837 (license license:perl-license)))
3838
3839(define-public perl-catalyst-view-download
3840 (package
3841 (name "perl-catalyst-view-download")
3842 (version "0.09")
3843 (source
3844 (origin
3845 (method url-fetch)
3846 (uri (string-append "mirror://cpan/authors/id/G/GA/GAUDEON/"
3847 "Catalyst-View-Download-" version ".tar.gz"))
3848 (sha256
3849 (base32
3850 "1qgq6y9iwfbhbkbgpw9czang2ami6z8jk1zlagrzdisy4igqzkvs"))))
3851 (build-system perl-build-system)
3852 (native-inputs
3853 (list perl-catalyst-runtime
3854 perl-module-install
3855 perl-test-simple
3856 perl-test-www-mechanize-catalyst
3857 perl-text-csv
3858 perl-xml-simple))
3859 (home-page "https://metacpan.org/release/Catalyst-View-Download")
3860 (synopsis "Download data in many formats")
3861 (description "The purpose of this module is to provide a method for
3862downloading data into many supportable formats. For example, downloading a
3863table based report in a variety of formats (CSV, HTML, etc.).")
3864 (license license:perl-license)))
3865
3866(define-public perl-catalyst-view-json
3867 (package
3868 (name "perl-catalyst-view-json")
3869 (version "0.37")
3870 (source
3871 (origin
3872 (method url-fetch)
3873 (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
3874 "Catalyst-View-JSON-" version ".tar.gz"))
3875 (sha256
3876 (base32
3877 "1v4xkzazs743sc7cd1kxkbi99cf00a4dadyyancckcbpi9p3znn5"))))
3878 (build-system perl-build-system)
3879 (native-inputs
3880 (list perl-module-install perl-yaml))
3881 (inputs
3882 (list perl-catalyst-runtime perl-json-maybexs perl-mro-compat))
3883 (home-page "https://metacpan.org/release/Catalyst-View-JSON")
3884 (synopsis "Catalyst JSON view")
3885 (description "Catalyst::View::JSON is a Catalyst View handler that returns
3886stash data in JSON format.")
3887 (license license:perl-license)))
3888
3889(define-public perl-catalyst-view-tt
3890 (package
3891 (name "perl-catalyst-view-tt")
3892 (version "0.45")
3893 (source
3894 (origin
3895 (method url-fetch)
3896 (uri (string-append "mirror://cpan/authors/id/H/HA/HAARG/"
3897 "Catalyst-View-TT-" version ".tar.gz"))
3898 (sha256
3899 (base32 "0jzgpkgq5pwq82zlb0nykdyk40dfpsyn9ilz91d0wpixgi9i5pr8"))))
3900 (build-system perl-build-system)
3901 (propagated-inputs
3902 (list perl-catalyst-runtime
3903 perl-class-accessor
3904 perl-data-dump
3905 perl-mro-compat
3906 perl-path-class
3907 perl-template-timer
3908 perl-template-toolkit))
3909 (home-page "https://metacpan.org/release/Catalyst-View-TT")
3910 (synopsis "Template View Class")
3911 (description "This module is a Catalyst view class for the Template
3912Toolkit.")
3913 (license license:perl-license)))
3914
3915(define-public perl-catalystx-component-traits
3916 (package
3917 (name "perl-catalystx-component-traits")
3918 (version "0.19")
3919 (source
3920 (origin
3921 (method url-fetch)
3922 (uri (string-append "mirror://cpan/authors/id/R/RK/RKITOVER/"
3923 "CatalystX-Component-Traits-" version ".tar.gz"))
3924 (sha256
3925 (base32
3926 "0iq4ci8m6g2c4g01fvdl568y7pjz28f3widk986v3pyhr7ll8j88"))))
3927 (build-system perl-build-system)
3928 (native-inputs
3929 (list perl-moose perl-catalyst-runtime perl-moosex-methodattributes))
3930 (propagated-inputs
3931 (list perl-catalyst-runtime
3932 perl-class-load
3933 perl-moose
3934 perl-moosex-traits-pluggable
3935 perl-namespace-autoclean
3936 perl-list-moreutils))
3937 (home-page "https://metacpan.org/release/CatalystX-Component-Traits")
3938 (synopsis "Trait Loading and Resolution for Catalyst Components")
3939 (description "Adds a \"COMPONENT\" in Catalyst::Component method to your
3940Catalyst component base class that reads the optional \"traits\" parameter
3941from app and component config and instantiates the component subclass with
3942those traits using \"new_with_traits\" in MooseX::Traits from
3943MooseX::Traits::Pluggable.")
3944 (license license:perl-license)))
3945
3946(define-public perl-catalystx-roleapplicator
3947 (package
3948 (name "perl-catalystx-roleapplicator")
3949 (version "0.005")
3950 (source
3951 (origin
3952 (method url-fetch)
3953 (uri (string-append "mirror://cpan/authors/id/H/HD/HDP/"
3954 "CatalystX-RoleApplicator-" version ".tar.gz"))
3955 (sha256
3956 (base32
3957 "0vwaapxn8g5hs2xp63c4dwv9jmapmji4272fakssvgc9frklg3p2"))))
3958 (build-system perl-build-system)
3959 (propagated-inputs
3960 (list perl-catalyst-runtime perl-moose perl-moosex-relatedclassroles))
3961 (home-page "https://metacpan.org/release/CatalystX-RoleApplicator")
3962 (synopsis "Apply roles to Catalyst classes")
3963 (description "CatalystX::RoleApplicator applies roles to Catalyst
3964application classes.")
3965 (license license:perl-license)))
3966
3967(define-public perl-catalystx-script-server-starman
3968 (package
3969 (name "perl-catalystx-script-server-starman")
3970 (version "0.03")
3971 (source
3972 (origin
3973 (method url-fetch)
3974 (uri (string-append "mirror://cpan/authors/id/A/AB/ABRAXXA/"
3975 "CatalystX-Script-Server-Starman-"
3976 version ".tar.gz"))
3977 (sha256
3978 (base32
3979 "08jvibq4v8xjj0c3cr93h0w8w0c88ajwjn37xjy7ygxl9krlffp6"))))
3980 (build-system perl-build-system)
3981 (native-inputs
3982 (list perl-module-install perl-pod-parser perl-test-www-mechanize-catalyst))
3983 (propagated-inputs
3984 (list perl-catalyst-runtime perl-moose perl-namespace-autoclean
3985 starman))
3986 (home-page "https://metacpan.org/release/CatalystX-Script-Server-Starman")
3987 (synopsis "Catalyst development server with Starman")
3988 (description "This module provides a Catalyst extension to replace the
3989development server with Starman.")
3990 (license license:perl-license)))
3991
3992(define-public perl-cgi
3993 (package
3994 (name "perl-cgi")
3995 (version "4.55")
3996 (source
3997 (origin
3998 (method url-fetch)
3999 (uri (string-append "mirror://cpan/authors/id/L/LE/LEEJO/"
4000 "CGI-" version ".tar.gz"))
4001 (sha256
4002 (base32 "1ck4ik5i0v394qgg9qah4p6x9hyls311g6iwi6ildprzn6a5x2b7"))))
4003 (build-system perl-build-system)
4004 (native-inputs
4005 (list perl-test-nowarnings perl-test-warn))
4006 (propagated-inputs
4007 (list perl-html-parser))
4008 (home-page "https://metacpan.org/release/CGI")
4009 (synopsis "Handle Common Gateway Interface requests and responses")
4010 (description "CGI.pm is a stable, complete and mature solution for
4011processing and preparing HTTP requests and responses. Major features include
4012processing form submissions, file uploads, reading and writing cookies, query
4013string generation and manipulation, and processing and preparing HTTP
4014headers.")
4015 (license license:perl-license)))
4016
4017(define-public perl-cgi-formbuilder
4018 (package
4019 (name "perl-cgi-formbuilder")
4020 (version "3.10")
4021 (source
4022 (origin
4023 (method url-fetch)
4024 (uri (string-append
4025 "https://cpan.metacpan.org/authors/id/B/BI/BIGPRESH/"
4026 "CGI-FormBuilder-" version ".tar.gz"))
4027 (sha256
4028 (base32
4029 "163ixq9kninqq094z2rnkg9pv3bcmvjphlww4vksfrzhq3h9pjdf"))))
4030 (build-system perl-build-system)
4031 (inputs (list perl-cgi))
4032 (home-page
4033 "https://metacpan.org/release/CGI-FormBuilder")
4034 (synopsis
4035 "Generate and process stateful forms")
4036 (description
4037 "@code{CGI::FormBuilder} provides an easy way to generate and process CGI
4038form-based applications.")
4039 (license license:perl-license)))
4040
4041(define-public perl-cgi-session
4042 (package
4043 (name "perl-cgi-session")
4044 (version "4.48")
4045 (source
4046 (origin
4047 (method url-fetch)
4048 (uri (string-append
4049 "mirror://cpan/authors/id/M/MA/MARKSTOS/CGI-Session-"
4050 version
4051 ".tar.gz"))
4052 (sha256
4053 (base32
4054 "1xsl2pz1jrh127pq0b01yffnj4mnp9nvkp88h5mndrscq9hn8xa6"))))
4055 (build-system perl-build-system)
4056 (native-inputs
4057 (list perl-module-build))
4058 (inputs (list perl-cgi))
4059 (home-page
4060 "https://metacpan.org/release/CGI-Session")
4061 (synopsis
4062 "Persistent session data in CGI applications")
4063 (description
4064 "@code{CGI::Session} provides modular session management system across
4065HTTP requests.")
4066 (license license:perl-license)))
4067
4068(define-public perl-cgi-simple
4069 (package
4070 (name "perl-cgi-simple")
4071 (version "1.22")
4072 (source
4073 (origin
4074 (method url-fetch)
4075 (uri (string-append "mirror://cpan/authors/id/M/MA/MANWAR/"
4076 "CGI-Simple-" version ".tar.gz"))
4077 (sha256
4078 (base32 "13c7iwnnavky10ab87pi8jc1kqph03s0rhvj7myn7szhbfisc4gn"))))
4079 (build-system perl-build-system)
4080 (native-inputs
4081 (list perl-io-stringy ; for IO::Scalar
4082 perl-module-build perl-test-exception perl-test-nowarnings))
4083 (home-page "https://metacpan.org/release/CGI-Simple")
4084 (synopsis "CGI interface that is CGI.pm compliant")
4085 (description "CGI::Simple provides a relatively lightweight drop in
4086replacement for CGI.pm. It shares an identical OO interface to CGI.pm for
4087parameter parsing, file upload, cookie handling and header generation.")
4088 (license license:perl-license)))
4089
4090(define-public perl-cgi-struct
4091 (package
4092 (name "perl-cgi-struct")
4093 (version "1.21")
4094 (source
4095 (origin
4096 (method url-fetch)
4097 (uri (string-append "mirror://cpan/authors/id/F/FU/FULLERMD/"
4098 "CGI-Struct-" version ".tar.gz"))
4099 (sha256
4100 (base32
4101 "0v4xq2qpryr7i6jngw1wpn8yr2kiib10yxp4aih90vfdznkqsgfi"))))
4102 (build-system perl-build-system)
4103 (native-inputs
4104 (list perl-test-deep))
4105 (home-page "https://metacpan.org/release/CGI-Struct")
4106 (synopsis "Build structures from CGI data")
4107 (description "This is a module for building structured data from CGI
4108inputs, in a manner reminiscent of how PHP does.")
4109 (license license:bsd-2)))
4110
4111(define-public perl-datetime-format-http
4112 (package
4113 (name "perl-datetime-format-http")
4114 (version "0.42")
4115 (source
4116 (origin
4117 (method url-fetch)
4118 (uri (string-append "mirror://cpan/authors/id/C/CK/CKRAS/"
4119 "DateTime-Format-HTTP-" version ".tar.gz"))
4120 (sha256
4121 (base32
4122 "0h6qqdg1yzqkdxp7hqlp0qa7d1y64nilgimxs79dys2ryjfpcknh"))))
4123 (build-system perl-build-system)
4124 (native-inputs
4125 (list perl-module-build))
4126 (propagated-inputs
4127 (list perl-datetime perl-http-date))
4128 (home-page "https://metacpan.org/release/DateTime-Format-HTTP")
4129 (synopsis "Date conversion routines")
4130 (description "This module provides functions that deal with the date
4131formats used by the HTTP protocol.")
4132 (license license:perl-license)))
4133
4134(define-public perl-digest-md5-file
4135 (package
4136 (name "perl-digest-md5-file")
4137 (version "0.08")
4138 (source
4139 (origin
4140 (method url-fetch)
4141 (uri (string-append "mirror://cpan/authors/id/D/DM/DMUEY/"
4142 "Digest-MD5-File-" version ".tar.gz"))
4143 (sha256
4144 (base32
4145 "060jzf45dlwysw5wsm7av1wvpl06xgk415kwwpvv89r6wda3md5d"))))
4146 (build-system perl-build-system)
4147 (propagated-inputs
4148 (list perl-libwww))
4149 (home-page "https://metacpan.org/release/Digest-MD5-File")
4150 (synopsis "MD5 sums for files and urls")
4151 (description "Digest::MD5::File is a Perl extension for getting MD5 sums
4152for files and urls.")
4153 (license license:perl-license)))
4154
4155(define-public perl-encode-locale
4156 (package
4157 (name "perl-encode-locale")
4158 (version "1.05")
4159 (source (origin
4160 (method url-fetch)
4161 (uri (string-append
4162 "mirror://cpan/authors/id/G/GA/GAAS/Encode-Locale-"
4163 version ".tar.gz"))
4164 (sha256
4165 (base32
4166 "1h8fvcdg3n20c2yp7107yhdkkx78534s9hnvn7ps8hpmf4ks0vqp"))))
4167 (build-system perl-build-system)
4168 (license license:perl-license)
4169 (synopsis "Perl locale encoding determination")
4170 (description
4171 "The POSIX locale system is used to specify both the language
4172conventions requested by the user and the preferred character set to
4173consume and output. The Encode::Locale module looks up the charset and
4174encoding (called a CODESET in the locale jargon) and arranges for the
4175Encode module to know this encoding under the name \"locale\". It means
4176bytes obtained from the environment can be converted to Unicode strings
4177by calling Encode::encode(locale => $bytes) and converted back again
4178with Encode::decode(locale => $string).")
4179 (home-page "https://metacpan.org/release/Encode-Locale")))
4180
4181(define-public perl-feed-find
4182 (package
4183 (name "perl-feed-find")
4184 (version "0.07")
4185 (source (origin
4186 (method url-fetch)
4187 (uri (string-append "mirror://cpan/authors/id/B/BT/BTROTT/"
4188 "Feed-Find-" version ".tar.gz"))
4189 (sha256
4190 (base32
4191 "0sa33cm8ww55cymnl8j7b5yspi2y5xkkkgqqa4h6fs3wdqylz600"))))
4192 (build-system perl-build-system)
4193 (arguments
4194 ;; Tests expect to query files at http://stupidfool.org/perl/feeds/
4195 `(#:tests? #f
4196 #:phases
4197 (modify-phases %standard-phases
4198 (add-after 'unpack 'set-env
4199 (lambda _ (setenv "PERL_USE_UNSAFE_INC" "1"))))))
4200 (inputs
4201 (list perl-class-errorhandler perl-html-parser perl-libwww perl-uri))
4202 (home-page "https://metacpan.org/release/Feed-Find")
4203 (synopsis "Syndication feed auto-discovery")
4204 (description "@code{Feed::Find} implements feed auto-discovery for finding
4205syndication feeds, given a URI. It will discover the following feed formats:
4206RSS 0.91, RSS 1.0, RSS 2.0, Atom.")
4207 (license license:perl-license)))
4208
4209(define-public perl-file-listing
4210 (package
4211 (name "perl-file-listing")
4212 (version "6.15")
4213 (source (origin
4214 (method url-fetch)
4215 (uri (string-append
4216 "mirror://cpan/authors/id/P/PL/PLICEASE/File-Listing-"
4217 version ".tar.gz"))
4218 (sha256
4219 (base32
4220 "033p2ckkjbxrl390x8aq4wq4fpj5aidsazkbw82mhqxrksgzpi26"))))
4221 (build-system perl-build-system)
4222 (propagated-inputs
4223 (list perl-http-date))
4224 (license license:perl-license)
4225 (synopsis "Perl directory listing parser")
4226 (description
4227 "The File::Listing module exports a single function called parse_dir(),
4228which can be used to parse directory listings.")
4229 (home-page "https://metacpan.org/release/File-Listing")))
4230
4231(define-public perl-finance-quote
4232 (package
4233 (name "perl-finance-quote")
4234 (version "1.71")
4235 (source
4236 (origin
4237 (method url-fetch)
4238 (uri (string-append "https://cpan.metacpan.org/authors/id/B/BP/BPSCHUCK/"
4239 "Finance-Quote-" version ".tar.gz"))
4240 (sha256
4241 (base32 "1vszmwzpim5hcnasc4fl7gbw14wc8ycwlpwqfn866rl83bh0y4ri"))))
4242 (build-system perl-build-system)
4243 (arguments
4244 (list
4245 #:phases
4246 #~(modify-phases %standard-phases
4247 (add-before 'check 'set-tz
4248 (lambda _
4249 (setenv "TZ" "Europe/Prague"))))))
4250 (native-inputs
4251 (list perl-test-harness
4252 perl-date-manip
4253 perl-date-range
4254 perl-date-simple
4255 perl-datetime
4256 perl-datetime-format-iso8601
4257 perl-string-util
4258 perl-pathtools
4259 perl-test-pod
4260 perl-test-pod-coverage))
4261 (propagated-inputs
4262 (list perl-datetime
4263 perl-datetime-format-strptime
4264 perl-html-parser
4265 perl-html-tableextract
4266 perl-html-tokeparser-simple
4267 perl-html-tree
4268 perl-html-treebuilder-xpath
4269 perl-http-cookiejar
4270 perl-http-cookies
4271 perl-http-message
4272 perl-io-string
4273 perl-json
4274 perl-libwww
4275 perl-lwp-protocol-https
4276 perl-mozilla-ca
4277 perl-spreadsheet-xlsx
4278 perl-readonly
4279 perl-string-util
4280 perl-text-template
4281 perl-timedate
4282 perl-try-tiny
4283 perl-web-scraper
4284 perl-xml-libxml))
4285 (home-page "https://metacpan.org/release/Finance-Quote")
4286 (synopsis "Stock and mutual fund quotes")
4287 (description
4288 "The @code{Finance::Quote} module retries stock quotes from various
4289internet sources, including Yahoo! Finance, Fidelity Investments, and the
4290Australian Stock Exchange.")
4291 (license license:gpl2)))
4292
4293(define-public perl-gssapi
4294 (package
4295 (name "perl-gssapi")
4296 (version "0.28")
4297 (source
4298 (origin
4299 (method url-fetch)
4300 (uri (string-append "mirror://cpan/authors/id/A/AG/AGROLMS/"
4301 "GSSAPI-" version ".tar.gz"))
4302 (sha256
4303 (base32
4304 "1mkhwxjjlhr58pd770i9gnf7zy7jj092iv6jfbnb8bvnc5xjr3vx"))))
4305 (build-system perl-build-system)
4306 (inputs `(("gssapi" ,mit-krb5)))
4307 (arguments
4308 `(#:make-maker-flags
4309 `(,(string-append "--gssapiimpl=" (assoc-ref %build-inputs "gssapi")))))
4310 (home-page "https://metacpan.org/release/GSSAPI")
4311 (synopsis "Perl extension providing access to the GSSAPIv2 library")
4312 (description "This is a Perl extension for using GSSAPI C bindings as
4313described in RFC 2744.")
4314 (license license:perl-license)))
4315
4316(define-public perl-html-element-extended
4317 (package
4318 (name "perl-html-element-extended")
4319 (version "1.18")
4320 (source
4321 (origin
4322 (method url-fetch)
4323 (uri (string-append "mirror://cpan/authors/id/M/MS/MSISK/"
4324 "HTML-Element-Extended-" version ".tar.gz"))
4325 (sha256
4326 (base32
4327 "0axknss8c368r5i082yhkfj8mq0w4nglfrpcxcayyzzj13qimvzk"))))
4328 (build-system perl-build-system)
4329 (propagated-inputs
4330 (list perl-html-tree))
4331 (home-page "https://metacpan.org/release/HTML-Element-Extended")
4332 (synopsis "Manipulate tables of HTML::Element")
4333 (description
4334 "HTML::Element::Extended is a Perl extension for manipulating a table
4335composed of HTML::Element style components.")
4336 (license license:perl-license)))
4337
4338(define-public perl-html-form
4339 (package
4340 (name "perl-html-form")
4341 (version "6.05")
4342 (source
4343 (origin
4344 (method url-fetch)
4345 (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
4346 "HTML-Form-" version ".tar.gz"))
4347 (sha256
4348 (base32 "14i4ldyvdvhdhvfhh9kiq6z853q2f84biq8vcpv1k5w2r80wdiin"))))
4349 (build-system perl-build-system)
4350 (propagated-inputs
4351 (list perl-html-parser perl-html-tagset perl-http-message
4352 perl-lwp-mediatypes perl-uri))
4353 (home-page "https://metacpan.org/release/HTML-Form")
4354 (synopsis "Perl class representing an HTML form element")
4355 (description "Objects of the HTML::Form class represents a single HTML
4356<form> ... </form> instance.")
4357 (license license:perl-license)))
4358
4359(define-public perl-html-scrubber
4360 (package
4361 (name "perl-html-scrubber")
4362 (version "0.17")
4363 (source
4364 (origin
4365 (method url-fetch)
4366 (uri (string-append
4367 "mirror://cpan/authors/id/N/NI/NIGELM/HTML-Scrubber-"
4368 version
4369 ".tar.gz"))
4370 (sha256
4371 (base32
4372 "06p7w4zd42b2yh541mlzyqj40lwmvvn3fyqi8big4mf34la7m2jm"))))
4373 (build-system perl-build-system)
4374 (native-inputs
4375 (list perl-module-build
4376 perl-test-cpan-meta
4377 perl-test-differences
4378 perl-test-eol
4379 perl-test-memory-cycle
4380 perl-test-notabs))
4381 (inputs
4382 (list perl-html-parser))
4383 (home-page
4384 "https://metacpan.org/release/HTML-Scrubber")
4385 (synopsis
4386 "Perl extension for scrubbing/sanitizing html")
4387 (description
4388 "@code{HTML::Scrubber} Perl extension for scrubbing/sanitizing HTML.")
4389 (license license:perl-license)))
4390
4391(define-public perl-html-lint
4392 (package
4393 (name "perl-html-lint")
4394 (version "2.32")
4395 (source
4396 (origin
4397 (method url-fetch)
4398 (uri (string-append "mirror://cpan/authors/id/P/PE/PETDANCE/"
4399 "HTML-Lint-" version ".tar.gz"))
4400 (sha256
4401 (base32 "0lk02xpfxcg7ij4dvpsa4wjlzhmiizj0jfr3rwmdpbj69nvc93br"))))
4402 (build-system perl-build-system)
4403 (propagated-inputs
4404 (list perl-html-parser perl-html-tagset perl-libwww))
4405 (home-page "https://metacpan.org/release/HTML-Lint")
4406 (synopsis "Check for HTML errors in a string or file")
4407 (description "HTML::Lint is a pure-Perl HTML parser and checker for
4408syntactic legitmacy.")
4409 (license license:artistic2.0)))
4410
4411(define-public perl-html-selector-xpath
4412 (package
4413 (name "perl-html-selector-xpath")
4414 (version "0.28")
4415 (source
4416 (origin
4417 (method url-fetch)
4418 (uri (string-append
4419 "mirror://cpan/authors/id/C/CO/CORION/HTML-Selector-XPath-" version
4420 ".tar.gz"))
4421 (sha256
4422 (base32 "03wdwnrf0bvr2dw01njnz3a9mw2kl7ad7krh25j3vkyj7vq1f9s3"))))
4423 (build-system perl-build-system)
4424 (native-inputs (list perl-test-base
4425 perl-test-pod))
4426 (home-page "https://metacpan.org/release/HTML-Selector-XPath")
4427 (synopsis "CSS Selector to XPath compiler")
4428 (description "@code{HTML::Selector::XPath} is a Perl module for parsing
4429and scraping XML/HTML documents using XPath expressions.")
4430 (license license:perl-license)))
4431
4432(define-public perl-html-tableextract
4433 (package
4434 (name "perl-html-tableextract")
4435 (version "2.13")
4436 (source
4437 (origin
4438 (method url-fetch)
4439 (uri (string-append "https://cpan.metacpan.org/authors/id/M/MS/MSISK/"
4440 "HTML-TableExtract-" version ".tar.gz"))
4441 (sha256
4442 (base32
4443 "01jimmss3q68a89696wmclvqwb2ybz6xgabpnbp6mm6jcni82z8a"))))
4444 (build-system perl-build-system)
4445 (propagated-inputs
4446 (list perl-html-element-extended perl-html-parser))
4447 (home-page "https://metacpan.org/release/HTML-TableExtract")
4448 (synopsis "Extract contents from HTML tables")
4449 (description
4450 "HTML::TableExtract is a Perl module for extracting the content contained
4451in tables within an HTML document, either as text or encoded element trees.")
4452 (license license:perl-license)))
4453
4454(define-public perl-html-tokeparser-simple
4455 (package
4456 (name "perl-html-tokeparser-simple")
4457 (version "3.16")
4458 (source
4459 (origin
4460 (method url-fetch)
4461 (uri (string-append
4462 "mirror://cpan/authors/id/O/OV/OVID/HTML-TokeParser-Simple-"
4463 version ".tar.gz"))
4464 (sha256
4465 (base32 "17aa1v62sp8ycxcicwhankmj4brs6nnfclk9z7mf1rird1f164gd"))))
4466 (build-system perl-build-system)
4467 (native-inputs (list perl-module-build))
4468 (propagated-inputs (list perl-html-parser
4469 perl-html-tagset
4470 perl-sub-override))
4471 (home-page "https://metacpan.org/release/HTML-TokeParser-Simple")
4472 (synopsis "Easy to use parsing interface")
4473 (description "Provides @code{HTML::TokeParser::Simple}, a simpler interface
4474to @code{HTML::TokeParser} for parsing HTML.")
4475 (license license:perl-license)))
4476
4477(define-public perl-html-tree
4478 (package
4479 (name "perl-html-tree")
4480 (version "5.07")
4481 (source
4482 (origin
4483 (method url-fetch)
4484 (uri (string-append "mirror://cpan/authors/id/K/KE/KENTNL/"
4485 "HTML-Tree-" version ".tar.gz"))
4486 (sha256
4487 (base32
4488 "1gyvm4qlwm9y6hczkpnrdfl303ggbybr0nqxdjw09hii8yw4sdzh"))))
4489 (build-system perl-build-system)
4490 (native-inputs
4491 (list perl-module-build perl-test-fatal))
4492 (propagated-inputs
4493 (list perl-html-parser perl-html-tagset perl-libwww))
4494 (home-page "https://metacpan.org/release/HTML-Tree")
4495 (synopsis "Work with HTML in a DOM-like tree structure")
4496 (description "This distribution contains a suite of modules for
4497representing, creating, and extracting information from HTML syntax trees.")
4498 (license license:perl-license)))
4499
4500(define-public perl-html-parser
4501 (package
4502 (name "perl-html-parser")
4503 (version "3.85")
4504 (source (origin
4505 (method url-fetch)
4506 (uri (string-append
4507 "mirror://cpan/authors/id/O/OA/OALDERS/HTML-Parser-"
4508 version ".tar.gz"))
4509 (sha256
4510 (base32
4511 "0w8cisygx7mg8sdyara47rl5y1l075n29gjpmpq1q907prmblhpx"))))
4512 (build-system perl-build-system)
4513 (propagated-inputs (list perl-html-tagset
4514 perl-http-message ;for HTTP::Headers
4515 perl-uri))
4516 (license license:perl-license)
4517 (synopsis "Perl HTML parser class")
4518 (description
4519 "Objects of the HTML::Parser class will recognize markup and separate
4520it from plain text (alias data content) in HTML documents. As different
4521kinds of markup and text are recognized, the corresponding event handlers
4522are invoked.")
4523 (home-page "https://metacpan.org/release/HTML-Parser")))
4524
4525(define-public perl-html-tagset
4526 (package
4527 (name "perl-html-tagset")
4528 (version "3.20")
4529 (source (origin
4530 (method url-fetch)
4531 (uri (string-append
4532 "mirror://cpan/authors/id/P/PE/PETDANCE/HTML-Tagset-"
4533 version ".tar.gz"))
4534 (sha256
4535 (base32
4536 "1qh8249wgr4v9vgghq77zh1d2zs176bir223a8gh3k9nksn7vcdd"))))
4537 (build-system perl-build-system)
4538 (license license:perl-license)
4539 (synopsis "Perl data tables useful in parsing HTML")
4540 (description
4541 "The HTML::Tagset module contains several data tables useful in various
4542kinds of HTML parsing operations.")
4543 (home-page "https://metacpan.org/release/HTML-Tagset")))
4544
4545(define-public perl-html-template
4546 (package
4547 (name "perl-html-template")
4548 (version "2.97")
4549 (source (origin
4550 (method url-fetch)
4551 (uri (string-append "mirror://cpan/authors/id/S/SA/SAMTREGAR/"
4552 "HTML-Template-" version ".tar.gz"))
4553 (sha256
4554 (base32
4555 "17qjw8swj2q4b1ic285pndgrkmvpsqw0j68nhqzpk1daydhsyiv5"))))
4556 (build-system perl-build-system)
4557 (propagated-inputs
4558 (list perl-cgi))
4559 (home-page "https://metacpan.org/release/HTML-Template")
4560 (synopsis "HTML-like templates")
4561 (description
4562 "This module attempts to make using HTML templates simple and natural.
4563It extends standard HTML with a few new HTML-esque tags: @code{<TMPL_VAR>},
4564@code{<TMPL_LOOP>}, @code{<TMPL_INCLUDE>}, @code{<TMPL_IF>},
4565@code{<TMPL_ELSE>} and @code{<TMPL_UNLESS>}. The file written with HTML and
4566these new tags is called a template. Using this module you fill in the values
4567for the variables, loops and branches declared in the template. This allows
4568you to separate design from the data.")
4569 (license license:perl-license)))
4570
4571(define-public perl-html-treebuilder-xpath
4572 (package
4573 (name "perl-html-treebuilder-xpath")
4574 (version "0.14")
4575 (source
4576 (origin
4577 (method url-fetch)
4578 (uri (string-append
4579 "mirror://cpan/authors/id/M/MI/MIROD/HTML-TreeBuilder-XPath-"
4580 version ".tar.gz"))
4581 (sha256
4582 (base32 "1wx4i1scng20n405fp3a4vrwvvq9bvbmg977wnd5j2ja8jrbvsr5"))))
4583 (build-system perl-build-system)
4584 (propagated-inputs (list perl-html-tree perl-xml-xpathengine))
4585 (home-page "https://metacpan.org/release/HTML-TreeBuilder-XPath")
4586 (synopsis "XPath support for @code{HTML::TreeBuilder}")
4587 (description "This module implements @code{HTML::TreeBuilder::XPath} for
4588@code{HTML::TreeBuilder}, making it easy to parse documents using XPath.")
4589 (license license:perl-license)))
4590
4591(define-public perl-http-body
4592 (package
4593 (name "perl-http-body")
4594 (version "1.22")
4595 (source
4596 (origin
4597 (method url-fetch)
4598 (uri (string-append "mirror://cpan/authors/id/G/GE/GETTY/"
4599 "HTTP-Body-" version ".tar.gz"))
4600 (sha256
4601 (base32
4602 "15vj488i62mdp4ps9k77h39prj70i7anb6b0j8nm7l9vbdc2q3gw"))))
4603 (build-system perl-build-system)
4604 (native-inputs
4605 (list perl-test-deep))
4606 (propagated-inputs
4607 (list perl-file-temp perl-http-message)) ;For HTTP::Headers
4608 (home-page "https://metacpan.org/release/HTTP-Body")
4609 (synopsis "HTTP Body Parser")
4610 (description "HTTP::Body parses chunks of HTTP POST data and supports
4611application/octet-stream, application/json, application/x-www-form-urlencoded,
4612and multipart/form-data.")
4613 (license license:perl-license)))
4614
4615(define-public perl-http-cookiejar
4616 (package
4617 (name "perl-http-cookiejar")
4618 (version "0.014")
4619 (source
4620 (origin
4621 (method url-fetch)
4622 (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
4623 "HTTP-CookieJar-" version ".tar.gz"))
4624 (sha256
4625 (base32
4626 "0wvyqh69ryjkwp58xq4c83212glnk97ap0syp1ix4dpmj5ffm53h"))))
4627 (build-system perl-build-system)
4628 (native-inputs
4629 (list perl-test-deep perl-test-requires perl-time-mock perl-uri))
4630 (inputs
4631 (list perl-time-local perl-http-date))
4632 (home-page "https://metacpan.org/release/HTTP-CookieJar")
4633 (synopsis "Minimalist HTTP user agent cookie jar")
4634 (description "This module (@code{HTTP::CookieJar::LWP}) implements a minimalist
4635HTTP user agent cookie jar in conformance with
4636@uref{http://tools.ietf.org/html/rfc6265, RFC 6265}.")
4637 (license license:asl2.0)))
4638
4639(define-public perl-http-cookies
4640 (package
4641 (name "perl-http-cookies")
4642 (version "6.10")
4643 (source (origin
4644 (method url-fetch)
4645 (uri (string-append
4646 "mirror://cpan/authors/id/O/OA/OALDERS/HTTP-Cookies-"
4647 version ".tar.gz"))
4648 (sha256
4649 (base32
4650 "01vhppq18g6ppn3z9mvdfghfzibwg1sczzvnp3jbbrjw7iikcvz3"))))
4651 (build-system perl-build-system)
4652 (propagated-inputs
4653 (list perl-http-message))
4654 (license license:perl-license)
4655 (synopsis "Perl HTTP cookie jars")
4656 (description
4657 "The HTTP::Cookies class is for objects that represent a cookie jar,
4658that is, a database of all the HTTP cookies that a given LWP::UserAgent
4659object knows about.")
4660 (home-page "https://metacpan.org/release/GAAS/HTTP-Cookies-6.01")))
4661
4662(define-public perl-http-daemon
4663 (package
4664 (name "perl-http-daemon")
4665 (version "6.14")
4666 (source (origin
4667 (method url-fetch)
4668 (uri (string-append
4669 "mirror://cpan/authors/id/O/OA/OALDERS/HTTP-Daemon-"
4670 version ".tar.gz"))
4671 (sha256
4672 (base32
4673 "079fkcq2vdrzdf0bml52kz73n9gdv1xg0qf72c9v505v7izpwxph"))))
4674 (build-system perl-build-system)
4675 (native-inputs
4676 (list perl-module-build perl-test-needs))
4677 (propagated-inputs
4678 (list perl-http-message perl-lwp-mediatypes))
4679 (license license:perl-license)
4680 (synopsis "Perl simple http server class")
4681 (description
4682 "Instances of the HTTP::Daemon class are HTTP/1.1 servers that listen
4683on a socket for incoming requests. The HTTP::Daemon is a subclass of
4684IO::Socket::INET, so you can perform socket operations directly on it too.")
4685 (home-page "https://metacpan.org/release/HTTP-Daemon")))
4686
4687(define-public perl-http-date
4688 (package
4689 (name "perl-http-date")
4690 (version "6.05")
4691 (source (origin
4692 (method url-fetch)
4693 (uri (string-append
4694 "mirror://cpan/authors/id/O/OA/OALDERS/HTTP-Date-"
4695 version ".tar.gz"))
4696 (sha256
4697 (base32
4698 "0awjdbz7x0jd5pna55dwxhs3k6xp3sw6b2zg3p2yndxxvya64p9n"))))
4699 (build-system perl-build-system)
4700 (license license:perl-license)
4701 (synopsis "Perl date conversion routines")
4702 (description
4703 "The HTTP::Date module provides functions that deal with date formats
4704used by the HTTP protocol (and then some more).")
4705 (home-page "https://metacpan.org/release/HTTP-Date")))
4706
4707(define-public perl-http-lite
4708 (package
4709 (name "perl-http-lite")
4710 (version "2.44")
4711 (source
4712 (origin
4713 (method url-fetch)
4714 (uri (string-append
4715 "mirror://cpan/authors/id/N/NE/NEILB/HTTP-Lite-"
4716 version ".tar.gz"))
4717 (sha256
4718 (base32
4719 "0z77nflj8zdcfg70kc93glq5kmd6qxn2nf7h70x4xhfg25wkvr1q"))))
4720 (build-system perl-build-system)
4721 (native-inputs (list perl-cgi))
4722 (home-page "https://metacpan.org/release/HTTP-Lite")
4723 (synopsis "Lightweight HTTP implementation")
4724 (description "@code{HTTP::Lite} is a stand-alone lightweight
4725HTTP/1.1 implementation for perl. It is intended for use in
4726situations where it is desirable to install the minimal number of
4727modules to achieve HTTP support. @code{HTTP::Lite} is ideal for
4728CGI (or mod_perl) programs or for bundling for redistribution with
4729larger packages where only HTTP GET and POST functionality are
4730necessary. @code{HTTP::Lite} is compliant with the Host header,
4731necessary for name based virtual hosting, and supports proxies.
4732Additionally, @code{HTTP::Lite} supports a callback to allow
4733processing of request data as it arrives.")
4734 (license license:perl-license)))
4735
4736(define-public perl-http-message
4737 (package
4738 (name "perl-http-message")
4739 (version "6.37")
4740 (source (origin
4741 (method url-fetch)
4742 (uri (string-append
4743 "mirror://cpan/authors/id/O/OA/OALDERS/HTTP-Message-"
4744 version ".tar.gz"))
4745 (sha256
4746 (base32
4747 "00nq0xnpdba4valzgvzy3fgvck1ijrksdyzb4w9q6j72hl5dln8f"))))
4748 (build-system perl-build-system)
4749 (native-inputs
4750 (list perl-test-needs perl-try-tiny))
4751 (propagated-inputs
4752 (list perl-encode-locale perl-http-date perl-io-html
4753 perl-lwp-mediatypes perl-uri))
4754 (license license:perl-license)
4755 (synopsis "Perl HTTP style message")
4756 (description
4757 "An HTTP::Message object contains some headers and a content body.")
4758 (home-page "https://metacpan.org/release/ETHER/HTTP-Message-6.11")))
4759
4760(define-public perl-http-negotiate
4761 (package
4762 (name "perl-http-negotiate")
4763 (version "6.01")
4764 (source (origin
4765 (method url-fetch)
4766 (uri (string-append
4767 "mirror://cpan/authors/id/G/GA/GAAS/HTTP-Negotiate-"
4768 version ".tar.gz"))
4769 (sha256
4770 (base32
4771 "05p053vjs5g91v5cmjnny7a3xzddz5k7vnjw81wfh01ilqg9qwhw"))))
4772 (build-system perl-build-system)
4773 (propagated-inputs
4774 (list perl-http-message))
4775 (license license:perl-license)
4776 (synopsis "Perl http content negotiation")
4777 (description
4778 "The HTTP::Negotiate module provides a complete implementation of the
4779HTTP content negotiation algorithm specified in
4780draft-ietf-http-v11-spec-00.ps chapter 12. Content negotiation allows for
4781the selection of a preferred content representation based upon attributes
4782of the negotiable variants and the value of the various Accept* header
4783fields in the request.")
4784 (home-page "https://metacpan.org/release/HTTP-Negotiate")))
4785
4786(define-public perl-http-parser
4787 (package
4788 (name "perl-http-parser")
4789 (version "0.06")
4790 (source
4791 (origin
4792 (method url-fetch)
4793 (uri (string-append "mirror://cpan/authors/id/E/ED/EDECA/"
4794 "HTTP-Parser-" version ".tar.gz"))
4795 (sha256
4796 (base32
4797 "0idwq3jk595xil65lmxz128ha7s3r2n5zknisddpgwnqrghs3igq"))))
4798 (build-system perl-build-system)
4799 (propagated-inputs
4800 (list perl-http-message perl-uri))
4801 (home-page "https://metacpan.org/release/HTTP-Parser")
4802 (synopsis "Parse HTTP/1.1 requests")
4803 (description "This is an HTTP request parser. It takes chunks of text as
4804received and returns a @code{hint} as to what is required, or returns the
4805HTTP::Request when a complete request has been read. HTTP/1.1 chunking is
4806supported.")
4807 (license license:perl-license)))
4808
4809(define-public perl-http-parser-xs
4810 (package
4811 (name "perl-http-parser-xs")
4812 (version "0.17")
4813 (source
4814 (origin
4815 (method url-fetch)
4816 (uri (string-append "mirror://cpan/authors/id/K/KA/KAZUHO/"
4817 "HTTP-Parser-XS-" version ".tar.gz"))
4818 (sha256
4819 (base32
4820 "02d84xq1mm53c7jl33qyb7v5w4372vydp74z6qj0vc96wcrnhkkr"))))
4821 (build-system perl-build-system)
4822 (native-inputs
4823 (list perl-module-install))
4824 (home-page "https://metacpan.org/release/HTTP-Parser-XS")
4825 (synopsis "Fast HTTP request parser")
4826 (description "HTTP::Parser::XS is a fast, primitive HTTP request/response
4827parser.")
4828 (license license:perl-license)))
4829
4830(define-public perl-http-request-ascgi
4831 (package
4832 (name "perl-http-request-ascgi")
4833 (version "1.2")
4834 (source
4835 (origin
4836 (method url-fetch)
4837 (uri (string-append "mirror://cpan/authors/id/F/FL/FLORA/"
4838 "HTTP-Request-AsCGI-" version ".tar.gz"))
4839 (sha256
4840 (base32
4841 "1smwmiarwcgq7vjdblnb6ldi2x1s5sk5p15p7xvm5byiqq3znnwl"))))
4842 (build-system perl-build-system)
4843 (propagated-inputs
4844 (list perl-class-accessor perl-http-message))
4845 (home-page "https://metacpan.org/release/HTTP-Request-AsCGI")
4846 (synopsis "Set up a CGI environment from an HTTP::Request")
4847 (description "This module provides a convenient way to set up a CGI
4848environment from an HTTP::Request.")
4849 (license license:perl-license)))
4850
4851(define-public perl-http-server-simple
4852 (package
4853 (name "perl-http-server-simple")
4854 (version "0.52")
4855 (source
4856 (origin
4857 (method url-fetch)
4858 (uri (string-append "mirror://cpan/authors/id/B/BP/BPS/"
4859 "HTTP-Server-Simple-" version ".tar.gz"))
4860 (sha256
4861 (base32
4862 "0k6bg7k6mjixfzxdkkdrhqvaqmdhjszx0zsk8g0bimiby6j9z4yq"))))
4863 (build-system perl-build-system)
4864 (propagated-inputs
4865 (list perl-cgi))
4866 (arguments
4867 ;; See the discussion of a related tests issue at
4868 ;; https://lists.gnu.org/archive/html/guix-devel/2015-01/msg00346.html
4869 `(#:tests? #f
4870
4871 #:phases (modify-phases %standard-phases
4872 (add-before 'configure 'set-search-path
4873 (lambda _
4874 ;; Work around "dotless @INC" build failure.
4875 (setenv "PERL5LIB"
4876 (string-append (getcwd) ":"
4877 (getenv "PERL5LIB")))
4878 #t)))))
4879 (home-page "https://metacpan.org/release/HTTP-Server-Simple")
4880 (synopsis "Lightweight HTTP server")
4881 (description "HTTP::Server::Simple is a simple standalone HTTP daemon with
4882no non-core module dependencies. It can be used for building a standalone
4883http-based UI to your existing tools.")
4884 (license license:perl-license)))
4885
4886(define-public perl-http-tiny
4887 (package
4888 (name "perl-http-tiny")
4889 (version "0.076")
4890 (source
4891 (origin
4892 (method url-fetch)
4893 (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
4894 "HTTP-Tiny-" version ".tar.gz"))
4895 (sha256
4896 (base32
4897 "11wkxxqj3ff84rgj9q2gzkdgscwp3fzj205846k9ycqinlpsmgfx"))))
4898 (build-system perl-build-system)
4899 (inputs
4900 (list perl-http-cookiejar perl-io-socket-ip perl-io-socket-ssl
4901 perl-mozilla-ca perl-net-ssleay))
4902 (home-page "https://metacpan.org/release/HTTP-Tiny")
4903 (synopsis "HTTP/1.1 client")
4904 (description "This is a very simple HTTP/1.1 client, designed for doing
4905simple requests without the overhead of a large framework like LWP::UserAgent.
4906It supports proxies and redirection. It also correctly resumes after EINTR.")
4907 (license license:perl-license)))
4908
4909(define-public perl-http-tinyish
4910 (package
4911 (name "perl-http-tinyish")
4912 (version "0.15")
4913 (source
4914 (origin
4915 (method url-fetch)
4916 (uri (string-append
4917 "mirror://cpan/authors/id/M/MI/MIYAGAWA/HTTP-Tinyish-"
4918 version
4919 ".tar.gz"))
4920 (sha256
4921 (base32
4922 "199sa722amvwhq0czjfb7psj3hbqmvni5vxkrm579r5943pg0rax"))))
4923 (build-system perl-build-system)
4924 (propagated-inputs
4925 (list perl-file-which perl-ipc-run3))
4926 (home-page "https://metacpan.org/release/HTTP-Tinyish")
4927 (synopsis "@code{HTTP::Tiny} compatible HTTP client wrappers")
4928 (description
4929 "@code{HTTP::Tinyish} is a wrapper module for @acronym{LWP,libwww-perl},
4930@code{HTTP::Tiny}, curl and wget.
4931
4932It provides an API compatible to HTTP::Tiny.")
4933 (license license:perl-license)))
4934
4935(define-public perl-io-html
4936 (package
4937 (name "perl-io-html")
4938 (version "1.00")
4939 (source (origin
4940 (method url-fetch)
4941 (uri (string-append
4942 "mirror://cpan/authors/id/C/CJ/CJM/IO-HTML-"
4943 version ".tar.gz"))
4944 (sha256
4945 (base32
4946 "06nj3a0xgp5jxwxx6ayglfk2v7npf5a7gwkqsjlkapjkybarzqh4"))))
4947 (build-system perl-build-system)
4948 (license license:perl-license)
4949 (synopsis "Perl module to open an HTML file with automatic charset detection")
4950 (description
4951 "IO::HTML provides an easy way to open a file containing HTML while
4952automatically determining its encoding. It uses the HTML5 encoding sniffing
4953algorithm specified in section 8.2.2.1 of the draft standard.")
4954 (home-page "https://metacpan.org/release/IO-HTML")))
4955
4956(define-public perl-io-socket-ip
4957 (package
4958 (name "perl-io-socket-ip")
4959 (version "0.41")
4960 (source
4961 (origin
4962 (method url-fetch)
4963 (uri (string-append "mirror://cpan/authors/id/P/PE/PEVANS/"
4964 "IO-Socket-IP-" version ".tar.gz"))
4965 (sha256
4966 (base32 "0ihlpxrkq1xrvhnq52nhghanskic718ch8kpp642afgq72i4b6l4"))))
4967 (build-system perl-build-system)
4968 (native-inputs (list perl-module-build))
4969 (home-page "https://metacpan.org/release/IO-Socket-IP")
4970 (synopsis "Family-neutral IP socket supporting both IPv4 and IPv6")
4971 (description "This module provides a protocol-independent way to use IPv4
4972and IPv6 sockets, intended as a replacement for IO::Socket::INET.")
4973 (license license:perl-license)))
4974
4975(define-public perl-io-socket-ssl
4976 (package
4977 (name "perl-io-socket-ssl")
4978 (version "2.089")
4979 (source (origin
4980 (method url-fetch)
4981 (uri (string-append "mirror://cpan/authors/id/S/SU/SULLR/"
4982 "IO-Socket-SSL-" version ".tar.gz"))
4983 (sha256
4984 (base32
4985 "1l8l78p9sq2mj0xb4bpjn8rph0fdxi9xa6pm968px5j22qn130zn"))))
4986 (build-system perl-build-system)
4987 (propagated-inputs
4988 (list perl-net-ssleay
4989 ;; for IDN support
4990 perl-uri))
4991 (synopsis "Nearly transparent SSL encapsulation for IO::Socket::INET")
4992 (description
4993 "IO::Socket::SSL makes using SSL/TLS much easier by wrapping the
4994necessary functionality into the familiar IO::Socket interface and providing
4995secure defaults whenever possible. This way existing applications can be made
4996SSL-aware without much effort, at least if you do blocking I/O and don't use
4997select or poll.")
4998 (license license:perl-license)
4999 (home-page "https://github.com/noxxi/p5-io-socket-ssl")))
5000
5001(define-public perl-libwww
5002 (package
5003 (name "perl-libwww")
5004 (version "6.78")
5005 (source (origin
5006 (method url-fetch)
5007 (uri (string-append
5008 "mirror://cpan/authors/id/O/OA/OALDERS/libwww-perl-"
5009 version ".tar.gz"))
5010 (sha256
5011 (base32
5012 "0i4sga0hydhhvkq81skinfbpyd43pi3yr0rbzn0vpip2ak7vsf5p"))))
5013 (build-system perl-build-system)
5014 (native-inputs
5015 (list perl-http-cookiejar
5016 perl-test-fatal
5017 perl-test-leaktrace
5018 perl-test-needs
5019 perl-test-requiresinternet))
5020 (propagated-inputs
5021 (list perl-encode-locale
5022 perl-file-listing
5023 perl-html-parser
5024 perl-http-cookies
5025 perl-http-daemon
5026 perl-http-date
5027 perl-http-message
5028 perl-http-negotiate
5029 perl-net-http
5030 perl-try-tiny
5031 perl-uri
5032 perl-www-robotrules))
5033 (license license:perl-license)
5034 (synopsis "Perl modules for the WWW")
5035 (description
5036 "The libwww-perl collection is a set of Perl modules which provides a
5037simple and consistent application programming interface to the
5038World-Wide Web. The main focus of the library is to provide classes
5039and functions that allow you to write WWW clients. The library also
5040contains modules that are of more general use and even classes that
5041help you implement simple HTTP servers.")
5042 (home-page "https://metacpan.org/release/libwww-perl")))
5043
5044(define-public perl-lwp-online
5045 (package
5046 (name "perl-lwp-online")
5047 (version "1.08")
5048 (source
5049 (origin
5050 (method url-fetch)
5051 (uri (string-append
5052 "mirror://cpan/authors/id/A/AD/ADAMK/LWP-Online-"
5053 version ".tar.gz"))
5054 (sha256
5055 (base32
5056 "176f6vbk1018i0y7xj9d406ndbjgwzan2j9nihxnsahzg2vr2vz2"))))
5057 (build-system perl-build-system)
5058 (propagated-inputs
5059 (list perl-libwww perl-uri))
5060 (native-inputs
5061 (list perl-module-install))
5062 (home-page "https://metacpan.org/release/LWP-Online")
5063 (synopsis "Checks whether your process has access to the web")
5064 (description "This module attempts to answer, as accurately as it can, one
5065of the nastiest technical questions there is: am I on the internet?
5066
5067A host of networking and security issues make this problem very difficult.
5068There are firewalls, proxies (both well behaved and badly behaved). We might
5069not have DNS. We might not have a network card at all!")
5070 (license license:perl-license)))
5071
5072(define-public perl-lwp-mediatypes
5073 (package
5074 (name "perl-lwp-mediatypes")
5075 (version "6.04")
5076 (source (origin
5077 (method url-fetch)
5078 (uri (string-append
5079 "mirror://cpan/authors/id/O/OA/OALDERS/LWP-MediaTypes-"
5080 version ".tar.gz"))
5081 (sha256
5082 (base32
5083 "1n8rg6csv3dsvymg06cmxipimr6cb1g9r903ghm1qsmiv89cl6wg"))))
5084 (build-system perl-build-system)
5085 (native-inputs
5086 (list perl-test-fatal))
5087 (license license:perl-license)
5088 (synopsis "Perl module to guess the media type for a file or a URL")
5089 (description
5090 "The LWP::MediaTypes module provides functions for handling media (also
5091known as MIME) types and encodings. The mapping from file extensions to
5092media types is defined by the media.types file. If the ~/.media.types file
5093exists it is used instead.")
5094 (home-page "https://metacpan.org/release/LWP-MediaTypes")))
5095
5096(define-public perl-lwp-protocol-https
5097 (package
5098 (name "perl-lwp-protocol-https")
5099 (version "6.09")
5100 (source
5101 (origin
5102 (method url-fetch)
5103 (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
5104 "LWP-Protocol-https-" version ".tar.gz"))
5105 (sha256
5106 (base32 "14pm785cgyrnppks6ccasb2vkqifh0a8fz36nmnhc2v926jy3kqn"))))
5107 (build-system perl-build-system)
5108 (native-inputs
5109 ;; For tests.
5110 (list perl-test-requiresinternet))
5111 (propagated-inputs
5112 (list perl-io-socket-ssl perl-libwww perl-mozilla-ca perl-net-http))
5113 (home-page "https://metacpan.org/release/LWP-Protocol-https")
5114 (synopsis "HTTPS support for LWP::UserAgent")
5115 (description "The LWP::Protocol::https module provides support for using
5116https schemed URLs with LWP.")
5117 (license license:perl-license)))
5118
5119(define-public perl-lwp-useragent-cached
5120 (package
5121 (name "perl-lwp-useragent-cached")
5122 (version "0.08")
5123 (source
5124 (origin
5125 (method url-fetch)
5126 (uri (string-append "mirror://cpan/authors/id/O/OL/OLEG/"
5127 "LWP-UserAgent-Cached-" version ".tar.gz"))
5128 (sha256
5129 (base32
5130 "1hw7wy7f82kl61xjwkgmhv1ixgg56dhgfr45wxn6ahc0qys5mkix"))))
5131 (build-system perl-build-system)
5132 (propagated-inputs
5133 (list perl-libwww))
5134 (home-page "https://metacpan.org/release/LWP-UserAgent-Cached")
5135 (synopsis "Simple caching for LWP::UserAgent")
5136 (description "LWP::UserAgent::Cached is an LWP::UserAgent subclass with
5137cache support. It returns responses from the local file system, if available,
5138instead of making an HTTP request.")
5139 (license license:perl-license)))
5140
5141(define-public perl-lwp-useragent-determined
5142 (package
5143 (name "perl-lwp-useragent-determined")
5144 (version "1.07")
5145 (source
5146 (origin
5147 (method url-fetch)
5148 (uri (string-append "mirror://cpan/authors/id/A/AL/ALEXMV/"
5149 "LWP-UserAgent-Determined-" version ".tar.gz"))
5150 (sha256
5151 (base32
5152 "0lyvbpjng7yfvyha9rp2y2c6liz5hhplmd2grc8jlsfkih7dbn06"))))
5153 (build-system perl-build-system)
5154 (propagated-inputs
5155 (list perl-libwww))
5156 (home-page "https://metacpan.org/release/LWP-UserAgent-Determined")
5157 (synopsis "Virtual browser that retries errors")
5158 (description "LWP::UserAgent::Determined works just like LWP::UserAgent,
5159except that when you use it to get a web page but run into a
5160possibly-temporary error (like a DNS lookup timeout), it'll wait a few seconds
5161and retry a few times.")
5162 (license license:perl-license)))
5163
5164(define-public perl-lwpx-paranoidagent
5165 (package
5166 (name "perl-lwpx-paranoidagent")
5167 (version "1.12")
5168 (source
5169 (origin
5170 (method url-fetch)
5171 (uri (string-append
5172 "mirror://cpan/authors/id/S/SA/SAXJAZMAN/lwp/LWPx-ParanoidAgent-"
5173 version ".tar.gz"))
5174 (sha256
5175 (base32
5176 "0gfhw3jbs25yya2dryv8xvyn9myngcfcmsybj7gkq62fnznil16c"))))
5177 (build-system perl-build-system)
5178 (propagated-inputs
5179 (list perl-libwww
5180 ;; Users should instead make sure SSL_ca_path is set properly.
5181 ;; ("perl-mozilla-ca" ,perl-mozilla-ca)
5182 perl-net-dns))
5183 (home-page "https://metacpan.org/release/LWPx-ParanoidAgent")
5184 (synopsis "Security enhanced subclass of LWP::UserAgent")
5185 (description "@code{LWPx::ParanoidAgent} is a class subclassing
5186@code{LWP::UserAgent} but paranoid against attackers. Its purpose is
5187to vet requests for a remote resource on behalf of a possibly
5188malicious user. The class can do the same as @code{LWP::UserAgent},
5189except that proxy support has been removed. Support for URI schemes
5190is limited to http and https.")
5191 (license license:perl-license)))
5192
5193(define-public perl-net-amazon-s3
5194 (package
5195 (name "perl-net-amazon-s3")
5196 (version "0.60")
5197 (source
5198 (origin
5199 (method url-fetch)
5200 (uri (string-append "mirror://cpan/authors/id/P/PF/PFIG/"
5201 "Net-Amazon-S3-" version ".tar.gz"))
5202 (sha256
5203 (base32
5204 "10dcsq4s2kc9cb1vccx17r187c81drirc3s1hbxh3rb8489kg2b2"))
5205 (patches (search-patches
5206 "perl-net-amazon-s3-moose-warning.patch"))))
5207 (build-system perl-build-system)
5208 (native-inputs
5209 (list perl-libwww perl-test-exception))
5210 (propagated-inputs
5211 (list perl-data-stream-bulk
5212 perl-datetime-format-http
5213 perl-digest-hmac
5214 perl-digest-md5-file
5215 perl-file-find-rule
5216 perl-http-date
5217 perl-http-message
5218 perl-lwp-useragent-determined
5219 perl-mime-types
5220 perl-moose
5221 perl-moosex-strictconstructor
5222 perl-moosex-types-datetime-morecoercions
5223 perl-path-class
5224 perl-regexp-common
5225 perl-term-encoding
5226 perl-term-progressbar-simple
5227 perl-uri
5228 perl-xml-libxml))
5229 (home-page "https://metacpan.org/release/Net-Amazon-S3")
5230 (synopsis "Perl interface to Amazon S3")
5231 (description "This module provides a Perlish interface to Amazon S3.")
5232 (license license:perl-license)))
5233
5234(define-public perl-net-http
5235 (package
5236 (name "perl-net-http")
5237 (version "6.22")
5238 (source (origin
5239 (method url-fetch)
5240 (uri (string-append
5241 "mirror://cpan/authors/id/O/OA/OALDERS/"
5242 "Net-HTTP-" version ".tar.gz"))
5243 (sha256
5244 (base32
5245 "18m1b1274wmsl3cdfwg27pm7s1fgrrlhwy4gw4zl8da2p2jzkyk2"))))
5246 (build-system perl-build-system)
5247 (propagated-inputs
5248 (list perl-io-socket-ssl perl-uri))
5249 (license license:perl-license)
5250 (synopsis "Perl low-level HTTP connection (client)")
5251 (description
5252 "The Net::HTTP class is a low-level HTTP client. An instance of the
5253Net::HTTP class represents a connection to an HTTP server. The HTTP protocol
5254is described in RFC 2616. The Net::HTTP class supports HTTP/1.0 and
5255HTTP/1.1.")
5256 (home-page "https://metacpan.org/release/Net-HTTP")))
5257
5258(define-public perl-net-server
5259 (package
5260 (name "perl-net-server")
5261 (version "2.009")
5262 (source
5263 (origin
5264 (method url-fetch)
5265 (uri (string-append "mirror://cpan/authors/id/R/RH/RHANDOM/"
5266 "Net-Server-" version ".tar.gz"))
5267 (sha256
5268 (base32
5269 "0gw1k9gcw7habbkxvsfa2gz34brlbwcidk6khgsf1qjm0dbccrw2"))))
5270 (build-system perl-build-system)
5271 (home-page "https://metacpan.org/release/Net-Server")
5272 (synopsis "Extensible Perl server engine")
5273 (description "Net::Server is an extensible, generic Perl server engine.
5274It attempts to be a generic server as in Net::Daemon and NetServer::Generic.
5275It includes with it the ability to run as an inetd
5276process (Net::Server::INET), a single connection server (Net::Server or
5277Net::Server::Single), a forking server (Net::Server::Fork), a preforking
5278server which maintains a constant number of preforked
5279children (Net::Server::PreForkSimple), or as a managed preforking server which
5280maintains the number of children based on server load (Net::Server::PreFork).
5281In all but the inetd type, the server provides the ability to connect to one
5282or to multiple server ports.")
5283 (license license:perl-license)))
5284
5285(define-public perl-net-smtp-ssl
5286 (package
5287 (name "perl-net-smtp-ssl")
5288 (version "1.04")
5289 (source
5290 (origin
5291 (method url-fetch)
5292 (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
5293 "Net-SMTP-SSL-" version ".tar.gz"))
5294 (sha256
5295 (base32
5296 "001a6dcfahf7kkyirqkc8jd4fh4fkal7n7vm9c4dblqrvmdc8abv"))))
5297 (build-system perl-build-system)
5298 (propagated-inputs
5299 (list perl-io-socket-ssl))
5300 (home-page "https://metacpan.org/release/Net-SMTP-SSL")
5301 (synopsis "SSL support for Net::SMTP")
5302 (description "SSL support for Net::SMTP.")
5303 (license license:perl-license)))
5304
5305(define-public perl-plack
5306 (package
5307 (name "perl-plack")
5308 (version "1.0033")
5309 (source
5310 (origin
5311 (method url-fetch)
5312 (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
5313 "Plack-" version ".tar.gz"))
5314 (sha256
5315 (base32
5316 "081jg0xddzpg2anmqi9i6d7vs6c8z7k557bf8xl6vgb3h95pin5w"))))
5317 (build-system perl-build-system)
5318 (native-inputs
5319 (list perl-test-requires perl-file-sharedir-install))
5320 (propagated-inputs
5321 (list perl-apache-logformat-compiler
5322 perl-devel-stacktrace
5323 perl-devel-stacktrace-ashtml
5324 perl-file-sharedir
5325 perl-hash-multivalue
5326 perl-http-body
5327 perl-http-message
5328 perl-http-tiny
5329 perl-libwww
5330 perl-stream-buffered
5331 perl-test-tcp
5332 perl-try-tiny
5333 perl-uri))
5334 (home-page "https://metacpan.org/release/Plack")
5335 (synopsis "Perl Superglue for Web frameworks and servers (PSGI toolkit)")
5336 (description "Plack is a set of tools for using the PSGI stack. It
5337contains middleware components, a reference server, and utilities for Web
5338application frameworks. Plack is like Ruby's Rack or Python's Paste for
5339WSGI.")
5340 (license license:perl-license)))
5341
5342(define-public perl-plack-middleware-deflater
5343 (package
5344 (name "perl-plack-middleware-deflater")
5345 (version "0.12")
5346 (source
5347 (origin
5348 (method url-fetch)
5349 (uri (string-append
5350 "mirror://cpan/authors/id/K/KA/KAZEBURO/"
5351 "Plack-Middleware-Deflater-" version ".tar.gz"))
5352 (sha256
5353 (base32
5354 "0xf2visi16hgwgyp9q0cjr10ikbn474hjia5mj8mb2scvbkrbni8"))))
5355 (build-system perl-build-system)
5356 (native-inputs
5357 (list perl-module-install perl-test-requires))
5358 (propagated-inputs
5359 (list perl-plack))
5360 (home-page "https://metacpan.org/release/Plack-Middleware-Deflater")
5361 (synopsis "Compress response body with Gzip or Deflate")
5362 (description
5363 "Plack::Middleware::Deflater is a middleware to encode your response body
5364in gzip or deflate, based on \"Accept-Encoding\" HTTP request header. It
5365would save the bandwidth a little bit but should increase the Plack server
5366load, so ideally you should handle this on the frontend reverse proxy
5367servers.")
5368 (license license:perl-license)))
5369
5370(define-public perl-plack-middleware-fixmissingbodyinredirect
5371 (package
5372 (name "perl-plack-middleware-fixmissingbodyinredirect")
5373 (version "0.12")
5374 (source
5375 (origin
5376 (method url-fetch)
5377 (uri (string-append "mirror://cpan/authors/id/S/SW/SWEETKID/"
5378 "Plack-Middleware-FixMissingBodyInRedirect-"
5379 version ".tar.gz"))
5380 (sha256
5381 (base32
5382 "14dkrmccq7a5vpymx5dv8032gfcvhsw2i6v5sh3c4ym5ymlx08kc"))))
5383 (build-system perl-build-system)
5384 (native-inputs
5385 (list perl-html-parser ;for HTML::Entities
5386 perl-http-message perl-plack)) ;for Plack::Test
5387 (home-page
5388 "https://metacpan.org/release/Plack-Middleware-FixMissingBodyInRedirect")
5389 (synopsis "Plack::Middleware which sets body for redirect response")
5390 (description "This module sets the body in redirect response, if it's not
5391already set.")
5392 (license license:perl-license)))
5393
5394(define-public perl-plack-middleware-methodoverride
5395 (package
5396 (name "perl-plack-middleware-methodoverride")
5397 (version "0.20")
5398 (source
5399 (origin
5400 (method url-fetch)
5401 (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
5402 "Plack-Middleware-MethodOverride-"
5403 version ".tar.gz"))
5404 (sha256
5405 (base32 "1wdmmav3rbhv49zpw311zrxxqmg1fz3f3q9src0ypgs8zcp5myyv"))))
5406 (build-system perl-build-system)
5407 (native-inputs
5408 (list perl-module-build))
5409 (propagated-inputs
5410 (list perl-plack))
5411 (home-page "https://metacpan.org/release/Plack-Middleware-MethodOverride")
5412 (synopsis "Override REST methods to Plack apps via POST")
5413 (description "This middleware allows for POST requests that pretend to be
5414something else: by adding either a header named X-HTTP-Method-Override to the
5415request, or a query parameter named x-tunneled-method to the URI, the client
5416can say what method it actually meant.")
5417 (license license:perl-license)))
5418
5419(define-public perl-plack-middleware-removeredundantbody
5420 (package
5421 (name "perl-plack-middleware-removeredundantbody")
5422 (version "0.09")
5423 (source
5424 (origin
5425 (method url-fetch)
5426 (uri (string-append "mirror://cpan/authors/id/S/SW/SWEETKID/"
5427 "Plack-Middleware-RemoveRedundantBody-"
5428 version ".tar.gz"))
5429 (sha256
5430 (base32 "0zh83001rn5aqwpc1pn3di2h3ibzlf2dvkmkv05hnadpss9mzm40"))))
5431 (build-system perl-build-system)
5432 (propagated-inputs
5433 (list perl-plack))
5434 (home-page
5435 "https://metacpan.org/release/Plack-Middleware-RemoveRedundantBody")
5436 (synopsis "Plack::Middleware which removes body for HTTP response")
5437 (description "This module removes the body in an HTTP response if it's not
5438required.")
5439 (license license:perl-license)))
5440
5441(define-public perl-plack-middleware-reverseproxy
5442 (package
5443 (name "perl-plack-middleware-reverseproxy")
5444 (version "0.16")
5445 (source
5446 (origin
5447 (method url-fetch)
5448 (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
5449 "Plack-Middleware-ReverseProxy-"
5450 version ".tar.gz"))
5451 (sha256
5452 (base32 "0a512n62pnk5ayj3zdzyj50iy1qi8nwh6ygks2h7nrh7gp9k2jc7"))))
5453 (build-system perl-build-system)
5454 (native-inputs
5455 (list perl-module-install))
5456 (propagated-inputs
5457 (list perl-plack))
5458 (home-page "https://metacpan.org/release/Plack-Middleware-ReverseProxy")
5459 (synopsis "Supports app to run as a reverse proxy backend")
5460 (description "Plack::Middleware::ReverseProxy resets some HTTP headers,
5461which are changed by reverse-proxy. You can specify the reverse proxy address
5462and stop fake requests using @code{enable_if} directive in your app.psgi.")
5463 (license license:perl-license)))
5464
5465(define-public perl-plack-test-externalserver
5466 (package
5467 (name "perl-plack-test-externalserver")
5468 (version "0.02")
5469 (source
5470 (origin
5471 (method url-fetch)
5472 (uri (string-append "mirror://cpan/authors/id/E/ET/ETHER/"
5473 "Plack-Test-ExternalServer-" version ".tar.gz"))
5474 (sha256
5475 (base32 "1l1yj1l25679x7cbpd27ii7s1f1ajpkspif9xqnl21hczrbmrbsv"))))
5476 (build-system perl-build-system)
5477 (propagated-inputs
5478 (list perl-plack))
5479 (home-page "https://metacpan.org/release/Plack-Test-ExternalServer")
5480 (synopsis "Run HTTP tests on external live servers")
5481 (description "This module allows your to run your Plack::Test tests
5482against an external server instead of just against a local application through
5483either mocked HTTP or a locally spawned server.")
5484 (license license:perl-license)))
5485
5486(define-public perl-test-tcp
5487 (package
5488 (name "perl-test-tcp")
5489 (version "2.22")
5490 (source
5491 (origin
5492 (method url-fetch)
5493 (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/"
5494 "Test-TCP-" version ".tar.gz"))
5495 (sha256
5496 (base32 "0mvv9rqwrwlcfh8qrs0s47p85rhlnw15d4gbpyi802bddp0c6lry"))))
5497 (build-system perl-build-system)
5498 (propagated-inputs
5499 (list perl-test-sharedfork))
5500 (arguments `(#:tests? #f)) ;related to signaling in t/05_sigint.t
5501 (home-page "https://metacpan.org/release/Test-TCP")
5502 (synopsis "Testing TCP programs")
5503 (description "Test::TCP is test utilities for TCP/IP programs.")
5504 (license license:perl-license)))
5505
5506(define-public perl-test-www-mechanize
5507 (package
5508 (name "perl-test-www-mechanize")
5509 (version "1.52")
5510 (source
5511 (origin
5512 (method url-fetch)
5513 (uri (string-append "mirror://cpan/authors/id/P/PE/PETDANCE/"
5514 "Test-WWW-Mechanize-" version ".tar.gz"))
5515 (sha256
5516 (base32 "1jsywlbxhqw39ij7s8vmgff5vys58vlfaq27072awacnxc65aal4"))))
5517 (build-system perl-build-system)
5518 (propagated-inputs
5519 (list perl-carp-assert-more
5520 perl-html-form
5521 perl-html-lint
5522 perl-http-server-simple
5523 perl-libwww
5524 perl-test-longstring
5525 perl-www-mechanize))
5526 (home-page "https://metacpan.org/release/Test-WWW-Mechanize")
5527 (synopsis "Testing-specific WWW::Mechanize subclass")
5528 (description "Test::WWW::Mechanize is a subclass of the Perl module
5529WWW::Mechanize that incorporates features for web application testing.")
5530 (license license:artistic2.0)))
5531
5532(define-public perl-test-www-mechanize-catalyst
5533 (package
5534 (name "perl-test-www-mechanize-catalyst")
5535 (version "0.62")
5536 (source
5537 (origin
5538 (method url-fetch)
5539 (uri (string-append "mirror://cpan/authors/id/M/MS/MSTROUT/"
5540 "Test-WWW-Mechanize-Catalyst-" version ".tar.gz"))
5541 (sha256
5542 (base32 "1cdc2q16vs6fb335pzaislz2rx1ph9acaxyp7v5hv9xbwwddwfqq"))))
5543 (build-system perl-build-system)
5544 (native-inputs
5545 (list perl-catalyst-plugin-session
5546 perl-catalyst-plugin-session-state-cookie
5547 perl-module-install
5548 perl-test-exception
5549 perl-test-pod
5550 perl-test-utf8))
5551 (propagated-inputs
5552 (list perl-catalyst-runtime
5553 perl-class-load
5554 perl-libwww
5555 perl-moose
5556 perl-namespace-clean
5557 perl-test-www-mechanize
5558 perl-www-mechanize))
5559 (home-page "https://metacpan.org/release/Test-WWW-Mechanize-Catalyst")
5560 (synopsis "Test::WWW::Mechanize for Catalyst")
5561 (description "The Test::WWW::Mechanize::Catalyst module meshes the
5562Test::WWW:Mechanize module and the Catalyst web application framework to allow
5563testing of Catalyst applications without needing to start up a web server.")
5564 (license license:perl-license)))
5565
5566(define-public perl-test-www-mechanize-psgi
5567 (package
5568 (name "perl-test-www-mechanize-psgi")
5569 (version "0.38")
5570 (source
5571 (origin
5572 (method url-fetch)
5573 (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
5574 "Test-WWW-Mechanize-PSGI-" version ".tar.gz"))
5575 (sha256
5576 (base32
5577 "0fsh2i05kf1kfavv2r9kmnjl7qlyqrd11ikc0qcqzzxsqzzjkg9r"))))
5578 (build-system perl-build-system)
5579 (native-inputs
5580 (list perl-test-pod))
5581 (propagated-inputs
5582 (list perl-plack perl-test-www-mechanize))
5583 (home-page "https://metacpan.org/release/Test-WWW-Mechanize-PSGI")
5584 (synopsis "Test PSGI programs using WWW::Mechanize")
5585 (description "PSGI is a specification to decouple web server environments
5586from web application framework code. Test::WWW::Mechanize is a subclass of
5587WWW::Mechanize that incorporates features for web application testing. The
5588Test::WWW::Mechanize::PSGI module meshes the two to allow easy testing of PSGI
5589applications.")
5590 (license license:perl-license)))
5591
5592(define-public perl-uri
5593 (package
5594 (name "perl-uri")
5595 (version "5.05")
5596 (source (origin
5597 (method url-fetch)
5598 (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
5599 "URI-" version ".tar.gz"))
5600 (sha256
5601 (base32
5602 "1v3r3ck67w272kzfgm1nd3wb41av1hlnza56vkxxj1i7s3917hd5"))))
5603 (build-system perl-build-system)
5604 (native-inputs
5605 ;; For tests.
5606 (list perl-test-needs))
5607 (license license:perl-license)
5608 (synopsis "Perl Uniform Resource Identifiers (absolute and relative)")
5609 (description
5610 "The URI module implements the URI class. Objects of this class
5611represent \"Uniform Resource Identifier references\" as specified in RFC 2396
5612and updated by RFC 2732.")
5613 (home-page "https://metacpan.org/release/URI")))
5614
5615(define-public perl-uri-fetch
5616 (package
5617 (name "perl-uri-fetch")
5618 (version "0.15")
5619 (source (origin
5620 (method url-fetch)
5621 (uri (string-append "mirror://cpan/authors/id/N/NE/NEILB/"
5622 "URI-Fetch-" version ".tar.gz"))
5623 (sha256
5624 (base32
5625 "0355rnw3xbgfwy9fgs6zrjmrsychzmwpkc9jcd9mrbkd9kr3k7rp"))))
5626 (build-system perl-build-system)
5627 (arguments
5628 `(#:tests? #f)) ; Tests require internet connection to succeed
5629 (inputs
5630 (list perl-class-errorhandler perl-libwww perl-uri))
5631 (home-page "https://metacpan.org/release/URI-Fetch")
5632 (synopsis "Smart URI fetching/caching")
5633 (description "@code{URI::Fetch} is a smart client for fetching HTTP pages,
5634notably syndication feeds (RSS, Atom, and others), in an intelligent, bandwidth-
5635and time-saving way.")
5636 (license license:perl-license)))
5637
5638(define-public perl-uri-find
5639 (package
5640 (name "perl-uri-find")
5641 (version "20160806")
5642 (source
5643 (origin
5644 (method url-fetch)
5645 (uri (string-append "mirror://cpan/authors/id/M/MS/MSCHWERN/"
5646 "URI-Find-" version ".tar.gz"))
5647 (sha256
5648 (base32
5649 "1mk3jv8x0mcq3ajrn9garnxd0jc7sw4pkwqi88r5apqvlljs84z2"))))
5650 (build-system perl-build-system)
5651 (native-inputs
5652 (list perl-module-build))
5653 (propagated-inputs
5654 (list perl-uri))
5655 (home-page "https://metacpan.org/release/URI-Find")
5656 (synopsis "Find URIs in arbitrary text")
5657 (description "This module finds URIs and URLs (according to what URI.pm
5658considers a URI) in plain text. It only finds URIs which include a
5659scheme (http:// or the like), for something a bit less strict, consider
5660URI::Find::Schemeless. For a command-line interface, urifind is provided.")
5661 (license license:perl-license)))
5662
5663(define-public perl-uri-ws
5664 (package
5665 (name "perl-uri-ws")
5666 (version "0.03")
5667 (source
5668 (origin
5669 (method url-fetch)
5670 (uri (string-append "mirror://cpan/authors/id/P/PL/PLICEASE/"
5671 "URI-ws-" version ".tar.gz"))
5672 (sha256
5673 (base32
5674 "1vs1wm80sq685944g1l4a0fxcbccc00c0f9648yabdmcf90hwsvf"))))
5675 (build-system perl-build-system)
5676 (propagated-inputs
5677 (list perl-uri))
5678 (home-page "https://metacpan.org/release/URI-ws")
5679 (synopsis "WebSocket support for URI package")
5680 (description "With this module, the URI package provides the same set of
5681methods for WebSocket URIs as it does for HTTP URIs.")
5682 (license license:perl-license)))
5683
5684(define-public perl-web-scraper
5685 (package
5686 (name "perl-web-scraper")
5687 (version "0.38")
5688 (source
5689 (origin
5690 (method url-fetch)
5691 (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/Web-Scraper-"
5692 version ".tar.gz"))
5693 (sha256
5694 (base32 "1gs3fmbc83j34c0sig1hkpnm26ngnyi5kgq5dl8vxvkzimgnwnzr"))))
5695 (build-system perl-build-system)
5696 (native-inputs (list perl-module-build-tiny
5697 perl-test-base
5698 perl-test-requires))
5699 (propagated-inputs (list perl-html-parser
5700 perl-html-selector-xpath
5701 perl-html-tagset
5702 perl-html-tree
5703 perl-html-treebuilder-xpath
5704 perl-libwww
5705 perl-universal-require
5706 perl-uri
5707 perl-xml-xpathengine
5708 perl-yaml))
5709 (home-page "https://metacpan.org/release/Web-Scraper")
5710 (synopsis
5711 "Web Scraping toolkit using HTML and CSS Selectors or XPath expressions")
5712 (description "Perl module @code{Web::Scraper} is a toolkit for
5713traversing and scraping sites, inspired by Ruby's Scapi.")
5714 (license license:perl-license)))
5715
5716(define-public perl-uri-template
5717 (package
5718 (name "perl-uri-template")
5719 (version "0.24")
5720 (source (origin
5721 (method url-fetch)
5722 (uri (string-append "mirror://cpan/authors/id/B/BR/BRICAS/URI-Template-"
5723 version ".tar.gz"))
5724 (sha256
5725 (base32
5726 "1phibcmam2hklrddzj79l43va1gcqpyszbw21ynxq53ynmhjvbk8"))))
5727 (build-system perl-build-system)
5728 (inputs
5729 (list perl-uri))
5730 (native-inputs
5731 (list perl-test-pod-coverage perl-test-pod perl-module-install
5732 perl-json))
5733 (home-page "https://metacpan.org/release/URI-Template")
5734 (synopsis "Object for handling URI templates")
5735 (description "This perl module provides a wrapper around URI templates as described in
5736RFC 6570.")
5737 (license license:perl-license)))
5738
5739(define-public perl-www-curl
5740 (package
5741 (name "perl-www-curl")
5742 (version "4.17")
5743 (source (origin
5744 (method url-fetch)
5745 (uri (string-append
5746 "mirror://cpan/authors/id/S/SZ/SZBALINT/WWW-Curl-"
5747 version".tar.gz"))
5748 (patches (search-patches "perl-www-curl-fix-struct-void.patch"
5749 "perl-www-curl-remove-symbol.patch"))
5750 (sha256
5751 (base32
5752 "1fmp9aib1kaps9vhs4dwxn7b15kgnlz9f714bxvqsd1j1q8spzsj"))))
5753 (build-system perl-build-system)
5754 (arguments
5755 '(#:tests? #f ;XXX: tests require network access
5756 #:phases (modify-phases %standard-phases
5757 (add-before 'configure 'set-search-path
5758 (lambda _
5759 ;; Work around "dotless @INC" build failure.
5760 (setenv "PERL5LIB"
5761 (string-append (getcwd) ":"
5762 (getenv "PERL5LIB")))
5763 #t)))))
5764 (native-inputs
5765 (list perl-module-install))
5766 (inputs (list curl))
5767 (synopsis "Perl extension interface for libcurl")
5768 (description
5769 "This is a Perl extension interface for the libcurl file downloading
5770library.")
5771 (license license:perl-license)
5772 (home-page "https://metacpan.org/release/WWW-Curl")))
5773
5774(define-public perl-www-mechanize
5775 (package
5776 (name "perl-www-mechanize")
5777 (version "1.91")
5778 (source
5779 (origin
5780 (method url-fetch)
5781 (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/"
5782 "WWW-Mechanize-" version ".tar.gz"))
5783 (sha256
5784 (base32 "0cb14m1vhaf0mgn2fqwi5hm72xhfi77hpq2g57swgy0w83x7m27b"))))
5785 (build-system perl-build-system)
5786 (native-inputs ;only for tests
5787 (list perl-cgi perl-test-deep perl-test-fatal perl-test-output
5788 perl-test-warnings))
5789 (propagated-inputs
5790 (list perl-html-form
5791 perl-html-parser
5792 perl-html-tree
5793 perl-http-message
5794 perl-http-server-simple
5795 perl-libwww
5796 perl-test-warn
5797 perl-uri))
5798 (home-page "https://metacpan.org/release/WWW-Mechanize")
5799 (synopsis "Web browsing in a Perl object")
5800 (description "WWW::Mechanize is a Perl module for stateful programmatic
5801web browsing, used for automating interaction with websites.")
5802 (license license:perl-license)))
5803
5804(define-public perl-www-opensearch
5805 (package
5806 (name "perl-www-opensearch")
5807 (version "0.17")
5808 (source (origin
5809 (method url-fetch)
5810 (uri (string-append "mirror://cpan/authors/id/B/BR/BRICAS/"
5811 "WWW-OpenSearch-" version ".tar.gz"))
5812 (sha256
5813 (base32
5814 "1yxplx1q1qk2fvnzqrbk01lz26fy1lyhay51a3ky7q3jgh9p01rb"))))
5815 (build-system perl-build-system)
5816 (native-inputs
5817 (list perl-class-errorhandler
5818 perl-datetime
5819 perl-datetime-format-mail
5820 perl-datetime-format-w3cdtf
5821 perl-feed-find
5822 perl-module-install
5823 perl-module-pluggable
5824 perl-uri-fetch
5825 perl-test-simple
5826 perl-xml-atom
5827 perl-xml-rss))
5828 (inputs
5829 (list perl-data-page
5830 perl-libwww
5831 perl-uri
5832 perl-uri-template
5833 perl-xml-feed
5834 perl-xml-libxml))
5835 (home-page "https://metacpan.org/release/WWW-OpenSearch")
5836 (synopsis "Search A9 OpenSearch compatible engines")
5837 (description
5838 "@code{WWW::OpenSearch} is a module to search @url{A9's OpenSearch,
5839http://opensearch.a9.com} compatible search engines.")
5840 (license license:perl-license)))
5841
5842(define-public perl-www-robotrules
5843 (package
5844 (name "perl-www-robotrules")
5845 (version "6.02")
5846 (source (origin
5847 (method url-fetch)
5848 (uri (string-append
5849 "mirror://cpan/authors/id/G/GA/GAAS/WWW-RobotRules-"
5850 version ".tar.gz"))
5851 (sha256
5852 (base32
5853 "07m50dp5n5jxv3m93i55qvnd67a6g7cvbvlik115kmc8lbkh5da6"))))
5854 (build-system perl-build-system)
5855 (propagated-inputs
5856 (list perl-uri))
5857 (license license:perl-license)
5858 (synopsis "Perl database of robots.txt-derived permissions")
5859 (description
5860 "The WWW::RobotRules module parses /robots.txt files as specified in
5861\"A Standard for Robot Exclusion\", at
5862<http://www.robotstxt.org/wc/norobots.html>. Webmasters can use the
5863/robots.txt file to forbid conforming robots from accessing parts of
5864their web site.")
5865 (home-page "https://metacpan.org/release/WWW-RobotRules")))
5866
5867;; XXX: No fresh release since 2019.
5868(define-public python-lambda-4dn
5869 (package
5870 (name "python-lambda-4dn")
5871 (version "0.12.3")
5872 (source (origin
5873 (method url-fetch)
5874 (uri (pypi-uri "python-lambda-4dn" version))
5875 (sha256
5876 (base32
5877 "1p5i8wsi8q5fpq63i7n7ri1w1lnh4gpn17f88vhkbh14aah5wxj1"))))
5878 (properties '(("upstream-name" . "python-lambda-4dn")))
5879 (build-system pyproject-build-system)
5880 (arguments
5881 (list
5882 #:tests? #f ;no tests in PyPI archive
5883 #:phases
5884 #~(modify-phases %standard-phases
5885 (add-after 'unpack 'fix-pip-install
5886 (lambda _
5887 (substitute* "aws_lambda/aws_lambda.py"
5888 ;; This package uses pip to install Python packages, wrap them
5889 ;; up, and push them to AWS Lambda. We need to reset
5890 ;; GUIX_PYTHONPATH to avoid introducing package conflicts that
5891 ;; would cause pip to fail.
5892 (("(subprocess.call\\(\\[sys.executable.*'--no-cache-dir'\\])\\)" _ m)
5893 (string-append m ", env={\"GUIX_PYTHONPATH\":\""
5894 #$(this-package-input "python")
5895 "/lib/python"
5896 #$(version-major+minor
5897 (package-version (this-package-input "python")))
5898 "/site-packages/\"})"))
5899 ;; Zipfile uses the mtime of the temporary directory to build
5900 ;; a zip file. But the temp directory has a timestamp of 0,
5901 ;; and zipfile refuses to build a zip archive dated before
5902 ;; 1980. So we reset the mtime of all temp files before they
5903 ;; are added to the zip archive.
5904 (("^( +)arcname = os.path.join" line indent)
5905 (string-append indent
5906 "os.utime(os.path.join(root, file), (315619200, 315619200))\n"
5907 line))))))))
5908 (native-inputs
5909 (list python-setuptools))
5910 (inputs (list python))
5911 (propagated-inputs
5912 (list python-boto3
5913 python-botocore
5914 python-docutils
5915 python-pip ;it's imported in aws_lambda/aws_lambda.py
5916 python-virtualenv))
5917 (home-page "https://github.com/4dn-dcic/python-lambda")
5918 (synopsis
5919 "Toolkit for developing and deploying Python code in AWS Lambda")
5920 (description
5921 "This is a toolset for developing and deploying serverless Python code in
5922AWS Lambda. This is a fork of Nick Ficano's Python-lambda package. It is
5923frozen for the needs of projects at the 4D Nucleome Data Coordination and
5924Integration Center (4DN-DCIC).")
5925 (license (list license:isc license:expat))))
5926
5927(define-public python-feedparser
5928 (package
5929 (name "python-feedparser")
5930 (version "6.0.12")
5931 (source
5932 (origin
5933 (method url-fetch)
5934 (uri (pypi-uri "feedparser" version ".tar.gz"))
5935 (sha256
5936 (base32 "0a22z6jx9lhw5glfb2nxf77bq9nfa0xqs3yy3rfyzs731blnrxv4"))))
5937 (build-system pyproject-build-system)
5938 (arguments
5939 (list
5940 #:test-backend #~'custom
5941 #:test-flags #~(list "tests/runtests.py")))
5942 (native-inputs (list python-setuptools python-wheel))
5943 (propagated-inputs (list python-sgmllib3k))
5944 (home-page "https://github.com/kurtmckee/feedparser")
5945 (synopsis "Parse feeds in Python")
5946 (description
5947 "Universal feed parser which handles RSS 0.9x, RSS 1.0, RSS 2.0,
5948CDF, Atom 0.3, and Atom 1.0 feeds.")
5949 (license (list license:bsd-2 ; source code
5950 license:freebsd-doc)))) ; documentation
5951
5952(define-public python-tibanna
5953 (package
5954 (name "python-tibanna")
5955 (version "5.4.3")
5956 (source (origin
5957 (method url-fetch)
5958 (uri (pypi-uri "tibanna" version))
5959 (sha256
5960 (base32
5961 "11pbyw881qaj08syc9mwr301rm3jhy6vyci98pxin2dwvyzkgwhd"))))
5962 (build-system pyproject-build-system)
5963 (arguments
5964 ;; Tests require AWS credentials and access to the internet.
5965 (list #:tests? #false))
5966 (propagated-inputs
5967 (list python-benchmark-4dn
5968 python-boto3 python-botocore
5969 python-lambda-4dn python-tomlkit))
5970 (native-inputs
5971 (list python-poetry-core
5972 python-pytest
5973 python-pytest-mock))
5974 (home-page "https://github.com/4dn-dcic/tibanna")
5975 (synopsis "Tibanna runs portable workflows on the AWS Cloud")
5976 (description
5977 "Tibanna runs portable pipelines (in CWL/WDL and Snakemake) on the AWS
5978Cloud.")
5979 (license license:expat)))
5980
5981(define-public guix-data-service
5982 (let ((commit "029880e5633789ce96ec363a94d98aed6451430f")
5983 (revision "79"))
5984 (package
5985 (name "guix-data-service")
5986 (version (string-append "0.0.1-" revision "." (string-take commit 7)))
5987 (source (origin
5988 (method git-fetch)
5989 (uri (git-reference
5990 (url "https://codeberg.org/guix/data-service.git")
5991 (commit commit)))
5992 (file-name (git-file-name name version))
5993 (sha256
5994 (base32
5995 "1h7k30k2hrql2r5kg1qhsq5haxzs2qzzkc195aidigr2vnj7xkm0"))))
5996 (build-system gnu-build-system)
5997 (arguments
5998 (list
5999 #:modules '((guix build utils)
6000 (guix build gnu-build-system)
6001 (ice-9 ftw)
6002 (ice-9 match)
6003 (ice-9 rdelim)
6004 (ice-9 popen))
6005 #:test-target "check-with-tmp-database"
6006 #:phases
6007 #~(modify-phases %standard-phases
6008 (add-before 'build 'set-GUILE_AUTO_COMPILE
6009 (lambda _
6010 ;; To avoid warnings relating to 'guild'.
6011 (setenv "GUILE_AUTO_COMPILE" "0")))
6012 (add-after 'install 'wrap-executable
6013 (lambda* (#:key inputs outputs #:allow-other-keys)
6014 (let* ((out (assoc-ref outputs "out"))
6015 (bin (string-append out "/bin"))
6016 (guile-effective-version
6017 (read-line
6018 (open-pipe* OPEN_READ (which "guile")
6019 "-c" "(display (effective-version))")))
6020 (scm (string-append out "/share/guile/site/"
6021 guile-effective-version))
6022 (go (string-append out "/lib/guile/"
6023 guile-effective-version
6024 "/site-ccache")))
6025 (for-each
6026 (lambda (file)
6027 (simple-format (current-error-port)
6028 "wrapping: ~A\n"
6029 (string-append bin "/" file))
6030 (wrap-program (string-append bin "/" file)
6031 `("PATH" ":" prefix
6032 ,(cons*
6033 bin
6034 (map (lambda (file)
6035 (search-input-file inputs file))
6036 '("/bin/pg_tmp" ;ephemeralpg
6037 "/bin/ionice" ;util-linux
6038 "/bin/psql")))) ;postgresql
6039 `("GUILE_LOAD_PATH" ":" prefix
6040 (,scm ,(getenv "GUILE_LOAD_PATH")))
6041 `("GUILE_LOAD_COMPILED_PATH" ":" prefix
6042 (,go ,(getenv "GUILE_LOAD_COMPILED_PATH")))))
6043 (scandir bin
6044 (match-lambda
6045 ((or "." "..") #f)
6046 (_ #t)))))))
6047 (delete 'strip)))) ; As the .go files aren't compatible
6048 (inputs
6049 (list bash-minimal
6050 ephemeralpg
6051 util-linux
6052 postgresql-13
6053 sqitch
6054 bash-minimal))
6055 (propagated-inputs
6056 (list guix
6057 guile-fibers
6058 guile-safsaf
6059 guile-knots
6060 guile-json-4
6061 guile-email
6062 guile-prometheus
6063 guile-squee
6064 guile-lzlib))
6065 (native-inputs
6066 (list guile-3.0-latest
6067 autoconf
6068 automake
6069 emacs-minimal
6070 emacs-htmlize
6071 pkg-config))
6072 (synopsis "Store and provide data about GNU Guix")
6073 (description
6074 "The Guix Data Service stores data about GNU Guix, and provides this
6075through a web interface. It supports listening to the guix-commits mailing
6076list to find out about new revisions, then loads the data from these in to a
6077PostgreSQL database.")
6078 (home-page "https://data.guix.gnu.org/")
6079 (license license:agpl3+))))
6080
6081(define-public gumbo-parser
6082 (package
6083 (name "gumbo-parser")
6084 (version "0.10.1")
6085 (source (origin
6086 (method git-fetch)
6087 (uri (git-reference
6088 (url "https://github.com/google/gumbo-parser")
6089 (commit (string-append "v" version))))
6090 (file-name (git-file-name name version))
6091 (sha256
6092 (base32
6093 "0xslckwdh2i0g2qjsb6rnm8mjmbagvziz0hjlf7d1lbljfms1iw1"))))
6094 (build-system gnu-build-system)
6095 (arguments
6096 `(#:tests? #f)) ;tests require bundling googletest sources
6097 ;; The release tarball lacks the generated files.
6098 (native-inputs
6099 (list autoconf automake libtool))
6100 (home-page "https://github.com/google/gumbo-parser")
6101 (synopsis "HTML5 parsing library")
6102 (description
6103 "Gumbo is an implementation of the HTML5 parsing algorithm implemented as
6104a pure C99 library.")
6105 (license license:asl2.0)))
6106
6107(define-public uwsgi
6108 (package
6109 (name "uwsgi")
6110 (version "2.0.31")
6111 (source (origin
6112 (method url-fetch)
6113 (uri (pypi-uri name version))
6114 (sha256
6115 (base32
6116 "0mv2qz8gjvsc4rdsqdmrjszi972jdw9vjisjls9zy1n1ri8b7y78"))))
6117 (build-system gnu-build-system)
6118 (outputs '("out" "python"))
6119 (arguments
6120 (list
6121 ;; XXX: The 'check' target runs cppcheck to do static code analysis.
6122 ;; But there is no obvious way to run the real tests.
6123 #:tests? #f
6124 #:phases
6125 #~(modify-phases %standard-phases
6126 (replace 'configure
6127 ;; Configuration is done by writing an ini file.
6128 (lambda* (#:key outputs #:allow-other-keys)
6129 (let* ((out (assoc-ref outputs "out"))
6130 (bindir (string-append out "/bin"))
6131 (plugindir (string-append out "/lib/uwsgi")))
6132 ;; The build phase outputs files to these directories directly.
6133 (mkdir-p bindir)
6134 (mkdir-p plugindir)
6135 ;; XXX: Enable other plugins.
6136 (call-with-output-file "buildconf/guix.ini"
6137 (lambda (port)
6138 (format port "[uwsgi]
6139yaml = libyaml
6140bin_name = ~a/uwsgi
6141plugin_dir = ~a
6142
6143inherit = base
6144plugins = cgi,python
6145embedded_plugins =
6146" bindir plugindir))))
6147 (setenv "PROFILE" "guix")))
6148 (replace 'install
6149 ;; Move plugins into their own output.
6150 (lambda _
6151 (let* ((plugindir (string-append #$output "/lib/uwsgi"))
6152 (python-plugin (string-append plugindir
6153 "/python_plugin.so")))
6154 (install-file python-plugin
6155 (string-append #$output:python "/lib/uwsgi"))
6156 (delete-file python-plugin)))))))
6157 (native-inputs
6158 (list pkg-config python-wrapper))
6159 (inputs
6160 (list jansson
6161 libxml2
6162 libyaml
6163 openssl
6164 pcre
6165 zlib
6166 ;; For plugins.
6167 python))
6168 (home-page "https://uwsgi-docs.readthedocs.io/")
6169 (synopsis "Application container server")
6170 (description
6171 "uWSGI presents a complete stack for networked/clustered web applications,
6172implementing message/object passing, caching, RPC and process management.
6173It uses the uwsgi protocol for all the networking/interprocess communications.")
6174 (license license:gpl2+))) ; with linking exception
6175
6176(define-public jq
6177 (package
6178 (name "jq")
6179 (version "1.8.2")
6180 (source
6181 (origin
6182 (method git-fetch)
6183 (uri (git-reference
6184 (url "https://github.com/jqlang/jq")
6185 (commit (string-append "jq-" version))))
6186 (file-name (git-file-name name version))
6187 (sha256
6188 (base32 "1m798zky0s4smpf4jxl5g0ndg8ybd9f6ca8vhld4yma1ga7r71vk"))
6189 (modules '((guix build utils)))
6190 (snippet
6191 #~(begin
6192 (delete-file "jq.1.prebuilt")
6193 (delete-file "tests/man.test")
6194 (delete-file "tests/manonig.test")
6195 ;; TODO: unbundle decnumber, which is maintained in GCC.
6196 ;; Remove bundled onigurama.
6197 (delete-file-recursively "vendor/oniguruma")
6198 (substitute* "Makefile.am"
6199 (("SUBDIRS = vendor/oniguruma") ""))))))
6200 (arguments
6201 (list #:configure-flags
6202 #~'("--enable-docs" "--disable-static")
6203 #:phases
6204 #~(modify-phases %standard-phases
6205 (add-before 'bootstrap 'unrequire-git-and-pipenv
6206 (lambda* (#:key inputs #:allow-other-keys)
6207 (substitute* "configure.ac"
6208 (("^m4_define\\(\\[jq_version\\], .*\\)")
6209 (simple-format #f "m4_define([jq_version], [~a])"
6210 #$(package-version this-package))))
6211 ;; configure tries to launch $PIPENV.
6212 (setenv "PIPENV" "true")
6213 (substitute* "Makefile.am"
6214 (("\\$\\(PIPENV\\) run python (.*\\.py)" all prog)
6215 ;; Schema validation requires python-jsonschema,
6216 ;; which transitively depends on rustc.
6217 ;; Since jq is a transitive dependency of guix,
6218 ;; skipping this static analysis helps
6219 ;; with its bootstrapping cost.
6220 (if (string=? prog "validate_manual_schema.py")
6221 "true"
6222 (string-append "python3 " prog)))))))))
6223 (inputs
6224 (list oniguruma))
6225 (native-inputs
6226 (cons*
6227 autoconf
6228 automake
6229 libtool
6230 ;; Docs dependencies:
6231 python
6232 python-lxml
6233 python-markdown
6234 python-pyyaml
6235 ;; Test dependencies:
6236 tzdata-for-tests
6237 (if (member (%current-system)
6238 (package-supported-systems valgrind/pinned))
6239 (list valgrind/pinned)
6240 '())))
6241 (build-system gnu-build-system)
6242 (home-page "https://jqlang.org")
6243 (synopsis "Command-line JSON processor")
6244 (description "jq is like sed for JSON data – you can use it to slice and
6245filter and map and transform structured data with the same ease that sed, awk,
6246grep and friends let you play with text. It is written in portable C. jq can
6247mangle the data format that you have into the one that you want with very
6248little effort, and the program to do so is often shorter and simpler than
6249you'd expect.")
6250 (properties
6251 '((lint-hidden-cve
6252 ;; CVE's with incorrectly versions limits; solved in these commits:
6253 . (list "CVE-2026-39979";2f09060afab23fe9390cce7cb860b10416e1bf5f
6254 "CVE-2026-33948" ;6374ae0bcdfe33a18eb0ae6db28493b1f34a0a5b
6255 "CVE-2026-44777")))) ;f58787c41835d9b17795730cb04925fdba25c71c
6256 (license (list license:cc-by3.0 ;docs
6257 license:x11 ;vendor/decNumber
6258 license:expat)))) ;rest
6259
6260(define-public go-jqp
6261 (package
6262 (name "go-jqp")
6263 (version "0.8.0")
6264 (source
6265 (origin
6266 (method git-fetch)
6267 (uri (git-reference
6268 (url "https://github.com/noahgorstein/jqp")
6269 (commit (string-append "v" version))))
6270 (file-name (git-file-name name version))
6271 (sha256
6272 (base32 "1j5nc3l8qzvzrfggvyh4xg3wxx4hsmkm89437sjw5gcmgscsy9d4"))))
6273 (build-system go-build-system)
6274 (arguments
6275 (list
6276 #:install-source? #f
6277 #:import-path "github.com/noahgorstein/jqp"
6278 #:embed-files #~(list ".*.xml")))
6279 (native-inputs
6280 (list go-github-com-alecthomas-chroma-v2
6281 go-github-com-atotto-clipboard
6282 go-github-com-charmbracelet-bubbles
6283 go-github-com-charmbracelet-bubbletea
6284 go-github-com-charmbracelet-lipgloss
6285 go-github-com-itchyny-gojq
6286 go-github-com-muesli-termenv
6287 go-github-com-spf13-cobra
6288 go-github-com-spf13-viper))
6289 (home-page "https://github.com/noahgorstein/jqp")
6290 (synopsis "TUI playground to experiment with jq")
6291 (description
6292 "This package provides an interactive TUI to explor the @code{jq} command
6293line utility. The command accepts an optional query argument which will be
6294executed against the input JSON or newline-delimited JSON (NDJSON).")
6295 (license license:expat)))
6296
6297(define-public pup
6298 (let ((revision "2")
6299 (commit "5a57cf111366c7c08999a34b2afd7ba36d58a96d"))
6300 (package
6301 (name "pup")
6302 (version (git-version "0.4.0" revision commit))
6303 (source
6304 (origin
6305 (method git-fetch)
6306 (uri (git-reference
6307 (url "https://github.com/ericchiang/pup")
6308 (commit commit)))
6309 (file-name (git-file-name name version))
6310 (sha256
6311 (base32 "18595sr6lh49w7ncvhp39p1ybvxfvdyx6655wr5vvfyv2ggn1rrd"))))
6312 (build-system go-build-system)
6313 (arguments
6314 (list
6315 #:install-source? #f
6316 #:import-path "github.com/ericchiang/pup"))
6317 (native-inputs
6318 (list go-github-com-fatih-color
6319 go-github-com-mattn-go-colorable
6320 go-golang-org-x-net
6321 go-golang-org-x-text))
6322 (home-page "https://github.com/ericchiang/pup")
6323 (synopsis "Parse HTML at the command line")
6324 (description
6325 "@command{pup} is a command line tool for processing HTML. It reads
6326from stdin, prints to stdout, and allows the user to filter parts of the page
6327using CSS selectors. Inspired by @command{jq}, @command{pup} aims to be a
6328fast and flexible way of exploring HTML from the terminal.")
6329 (license license:expat))))
6330
6331(define-public uhttpmock
6332 (package
6333 (name "uhttpmock")
6334 (version "0.11.0")
6335 (source
6336 (origin
6337 (method url-fetch)
6338 (uri (string-append "https://tecnocode.co.uk/downloads/uhttpmock/"
6339 "uhttpmock-" version ".tar.xz"))
6340 (sha256
6341 (base32 "1gw4g3m99j00rjd3flbxigv3qgbkafnkhf77c76hv7yy58dc1vgy"))))
6342 (build-system meson-build-system)
6343 (native-inputs
6344 (list gobject-introspection
6345 ;; For check phase.
6346 glib-networking gsettings-desktop-schemas pkg-config))
6347 (inputs (list libsoup))
6348 (arguments
6349 (list #:glib-or-gtk? #t
6350 #:configure-flags #~(list "-Dgtk_doc=false")
6351 #:phases
6352 #~(modify-phases %standard-phases
6353 (add-before 'check 'set-home-for-tests
6354 (lambda _
6355 (setenv "HOME" "/tmp"))))))
6356 (home-page "https://gitlab.com/groups/uhttpmock")
6357 (synopsis "Library for mocking web service APIs which use HTTP or HTTPS")
6358 (description
6359 "Uhttpmock is a project for mocking web service APIs which use HTTP or
6360HTTPS. It provides a library, libuhttpmock, which implements recording and
6361playback of HTTP request/response traces.")
6362 (license license:lgpl2.1+)))
6363
6364(define-public uhttpmock-with-libsoup2
6365 (package
6366 (inherit uhttpmock)
6367 (version "0.5.3")
6368 (source
6369 (origin
6370 (method url-fetch)
6371 (uri (string-append "https://tecnocode.co.uk/downloads/uhttpmock/"
6372 "uhttpmock-" version ".tar.xz"))
6373 (sha256
6374 (base32 "0bqizz69hxk8rn4z57asz1d45vizl1rj6i5k3rzxn2x3qcik514h"))))
6375 (build-system glib-or-gtk-build-system)
6376 (arguments
6377 (list #:phases
6378 #~(modify-phases %standard-phases
6379 (add-before 'check 'set-home-for-tests
6380 (lambda _
6381 (setenv "HOME" "/tmp"))))))
6382 (inputs (list libsoup-minimal-2))))
6383
6384(define-public woof
6385 (package
6386 (name "woof")
6387 (version "20220202")
6388 (source (origin
6389 (method git-fetch)
6390 (uri (git-reference
6391 (url "https://github.com/simon-budig/woof")
6392 (commit (string-append name "-" version))))
6393 (file-name (git-file-name name version))
6394 (sha256
6395 (base32
6396 "0rm8xs5dhy42jhjpx30vwnvps2rnmrh8scfr89j6dnihc6mpjkmn"))))
6397 (build-system trivial-build-system)
6398 (arguments
6399 '(#:modules ((guix build utils))
6400 #:builder
6401 (begin
6402 (use-modules (guix build utils))
6403 (let* ((source (assoc-ref %build-inputs "source"))
6404 (out (assoc-ref %outputs "out"))
6405 (bin (string-append out "/bin"))
6406 (python (assoc-ref %build-inputs "python")))
6407 (mkdir-p bin)
6408 (with-directory-excursion bin
6409 (copy-file (in-vicinity source "woof") "woof")
6410 (patch-shebang "woof" (list (string-append python "/bin"))))
6411 #t))))
6412 (inputs (list python))
6413 (home-page "http://www.home.unix-ag.org/simon/woof.html")
6414 (synopsis "Single file web server")
6415 (description "Woof (Web Offer One File) is a small simple web server that
6416can easily be invoked on a single file. Your partner can access the file with
6417tools they trust (e.g. wget).")
6418 (license license:gpl2+)))
6419
6420(define netsurf-buildsystem
6421 (package
6422 (name "netsurf-buildsystem")
6423 (version "1.10")
6424 (source
6425 (origin
6426 (method url-fetch)
6427 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6428 "buildsystem-" version ".tar.gz"))
6429 (sha256
6430 (base32
6431 "0yadmrpgvl9r08b56qiy5f77jracc7g9n4krn727fip4d7akjgix"))))
6432 (build-system gnu-build-system)
6433 (inputs `(("perl" ,perl)))
6434 (arguments
6435 '(#:make-flags (list (string-append "PREFIX=" %output))
6436 #:tests? #f ;no tests
6437 #:phases (modify-phases %standard-phases
6438 (delete 'configure)
6439 (delete 'build))))
6440 (home-page "https://www.netsurf-browser.org")
6441 (synopsis "Build system for the Netsurf project")
6442 (description
6443 "This package provides the shared build system for Netsurf project
6444libraries.")
6445 (license license:expat)))
6446
6447(define netsurf-buildsystem-arguments
6448 `(#:make-flags `("COMPONENT_TYPE=lib-shared"
6449 "CC=gcc -Wno-error=calloc-transposed-args"
6450 "BUILD_CC=gcc -Wno-error=calloc-transposed-args"
6451 ,(string-append "PREFIX=" %output)
6452 ,(string-append "NSSHARED="
6453 (assoc-ref %build-inputs
6454 "netsurf-buildsystem")
6455 "/share/netsurf-buildsystem"))
6456 #:test-target "test"
6457 #:phases (modify-phases %standard-phases
6458 (delete 'configure))))
6459
6460(define-public libparserutils
6461 (package
6462 (name "libparserutils")
6463 (version "0.2.5")
6464 (source
6465 (origin
6466 (method url-fetch)
6467 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6468 name "-" version "-src.tar.gz"))
6469 (sha256
6470 (base32
6471 "0ffi5q1jlcdl66nk3cax0mnzvhrjvvjvlx0rfasjfygi333xazii"))))
6472 (build-system gnu-build-system)
6473 (native-inputs
6474 (list netsurf-buildsystem pkg-config perl)) ;for test harness
6475 (arguments netsurf-buildsystem-arguments)
6476 (home-page "https://www.netsurf-browser.org/projects/libparserutils/")
6477 (synopsis "Parser building library")
6478 (description
6479 "LibParserUtils is a library for building efficient parsers, written in
6480C. It is developed as part of the NetSurf project.")
6481 (license license:expat)))
6482
6483(define-public hubbub
6484 (package
6485 (name "hubbub")
6486 (version "0.3.8")
6487 (source
6488 (origin
6489 (method url-fetch)
6490 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6491 "libhubbub-" version "-src.tar.gz"))
6492 (sha256
6493 (base32
6494 "19fm5h8arnsgxd4w5vr9s2fcb422acciffar3la0b36lygsydhca"))
6495 (patches (search-patches "hubbub-sort-entities.patch"))))
6496 (build-system gnu-build-system)
6497 (native-inputs
6498 (list netsurf-buildsystem
6499 pkg-config
6500 doxygen
6501 gperf
6502 json-c
6503 perl))
6504 (propagated-inputs
6505 (list libparserutils)) ;for libhubbub.pc
6506 (arguments netsurf-buildsystem-arguments)
6507 (home-page "https://www.netsurf-browser.org/projects/hubbub/")
6508 (synopsis "HTML5 compliant parsing library")
6509 (description
6510 "Hubbub is an HTML5 compliant parsing library, written in C, which can
6511parse both valid and invalid web content. It is developed as part of the
6512NetSurf project.")
6513 (license license:expat)))
6514
6515(define-public iter-vitae
6516 (package
6517 (name "iter-vitae")
6518 (version "0.5.1")
6519 (source
6520 (origin
6521 (method git-fetch)
6522 (uri (git-reference
6523 (url "https://codeberg.org/jjba23/iter-vitae.git")
6524 (commit (string-append "v" version))))
6525 (file-name (git-file-name name version))
6526 (sha256
6527 (base32 "08rak4lq732mil2q7mlqm6dh57s2k1n94isrshj3k3ahspcdl1p3"))))
6528 (arguments
6529 `(#:source-directory "src"
6530 #:phases (modify-phases %standard-phases
6531 (add-before 'build 'install-program-files
6532 (lambda* (#:key outputs #:allow-other-keys)
6533 (let ((bin (string-append (assoc-ref outputs "out")
6534 "/bin"))
6535 (share (string-append (assoc-ref outputs "out")
6536 "/share")))
6537 (install-file "resources/help.txt"
6538 (string-append share "/resources"))
6539 (install-file "resources/css/iter-vitae.olive.min.css"
6540 (string-append share "/resources/css"))
6541 (install-file "scripts/iter-vitae" bin)
6542 (install-file "scripts/log.bash"
6543 (string-append share "/scripts/"))
6544 (chmod (string-append bin "/iter-vitae") #o755)))))))
6545 (build-system guile-build-system)
6546 (native-inputs (list guile-3.0))
6547 (inputs (list guile-3.0 bash-minimal))
6548 (synopsis
6549 "Resume / @acronym{CV, Curriculum Vitae} generator written in Guile Scheme")
6550 (description
6551 "Iter Vitae is a command-line utility that allows you to generate a
6552Resume / @acronym{CV, Curriculum Vitae}, by reading a S-expression version
6553of your CV details (in Scheme code).
6554
6555With a @acronym{MVC, model-view-controller} approach,
6556it lets you separate the data from the presentation (how the document looks).
6557
6558This tool creates a web-site version of your CV (using SXML and Olive CSS),
6559and is designed for long-term use, so you can update and evolve your CV over the years.
6560The program supports multilingual content and is fully extensible.")
6561 (home-page "https://codeberg.org/jjba23/iter-vitae")
6562 (license license:agpl3+)))
6563
6564(define-public ikiwiki
6565 (package
6566 (name "ikiwiki")
6567 (version "3.20200202.4")
6568 (source
6569 (origin
6570 (method git-fetch)
6571 (uri (git-reference
6572 (url "git://git.ikiwiki.info/")
6573 (commit version)))
6574 (file-name (git-file-name name version))
6575 (sha256
6576 (base32
6577 "04ijislp7png18bg1carb71xk3sij9x5xpizfkxp6jbip6wdxsml"))
6578 (snippet
6579 '(begin
6580 ;; The POT file requires write permission during the build
6581 ;; phase.
6582 (chmod "po/ikiwiki.pot" #o644)))))
6583 (build-system perl-build-system)
6584 (arguments
6585 `(#:phases
6586 (modify-phases %standard-phases
6587 (add-after 'patch-source-shebangs 'patch-Makefiles
6588 (lambda _
6589 (substitute* "Makefile.PL"
6590 (("SYSCONFDIR\\?=") "SYSCONFDIR?=$(PREFIX)"))
6591 (with-directory-excursion "po"
6592 (substitute* "Makefile"
6593 (("PERL5LIB=") "PERL5LIB=${PERL5LIB}:")))))
6594 (add-before 'build 'set-modification-times
6595 ;; The wiki '--refresh' steps, which are executed during
6596 ;; the check phase, require recent timestamps on files in
6597 ;; the 'doc' and 'underlays' directories.
6598 (lambda _
6599 (invoke "find" "doc" "underlays" "-type" "f" "-exec"
6600 "touch" "{}" "+")))
6601 (add-before 'check 'pre-check
6602 (lambda* (#:key inputs #:allow-other-keys)
6603 ;; Six tests use IPC::Run. For these tests the PERL5LIB
6604 ;; variable is needed in the runtime environment and also
6605 ;; in the search path list in the setup file.
6606 (substitute*
6607 '("t/aggregate-file.t" "t/git-cgi.t" "t/git-untrusted.t"
6608 "t/passwordauth.t" "t/relativity.t" "t/wrapper-environ.t")
6609 (("(.*)\"perl\"(.*)$" _ prefix suffix)
6610 (string-append prefix "qw(env), 'PERL5LIB='.$ENV{PERL5LIB}"
6611 ", qw(perl)" suffix))
6612 (("(.*) PERL5LIB=(.*) perl(.*)$" _ prefix middle suffix)
6613 (string-append prefix "), 'PERL5LIB='.$ENV{PERL5LIB}.':"
6614 middle "', qw(perl" suffix))
6615 (("(.*)setup(.* )getcwd(.*)$" _ prefix middle suffix)
6616 (string-append prefix "setup" middle
6617 "$ENV{PERL5LIB}.':'.getcwd" suffix))
6618 (("^ENV(.*): '(.*)$" _ middle suffix)
6619 (string-append "ENV" middle
6620 ": '$ENV{PERL5LIB}:" suffix)))
6621 ;; rcs_getctime does not work with breezy
6622 (substitute* "t/bazaar.t"
6623 (("rcs_getctime\\(\"test2.mdwn\"\\)" all)
6624 (string-append all "//time()")))
6625 ;; XDG_DATA_DIRS is needed by the podcast.t test.
6626 (setenv "XDG_DATA_DIRS"
6627 (string-append (assoc-ref inputs "shared-mime-info")
6628 "/share"))
6629 ;; This test fails: "Cannot read from a file without refname".
6630 (rename-file "t/po.t" "t/po.t-")
6631 ;; CC is needed by IkiWiki/Wrapper.pm.
6632 (setenv "CC" "gcc")))
6633 (add-after 'install 'wrap-programs
6634 (lambda* (#:key outputs #:allow-other-keys)
6635 (let* ((out (assoc-ref outputs "out"))
6636 (bin (string-append out "/bin/"))
6637 (path (getenv "PERL5LIB")))
6638 (for-each (lambda (file)
6639 (wrap-program file
6640 `("PERL5LIB" ":" prefix (,path))))
6641 (find-files bin))))))))
6642 (native-inputs
6643 (list which
6644 gettext-minimal
6645 subversion
6646 git
6647 breezy
6648 cvs
6649 mercurial))
6650 (inputs
6651 (list bash-minimal
6652 python-wrapper
6653 perl-authen-passphrase
6654 perl-cgi-simple
6655 perl-db-file
6656 perl-file-mimeinfo
6657 perl-html-tagset
6658 perl-image-magick
6659 perl-ipc-run
6660 perl-lwpx-paranoidagent
6661 perl-xml-feed
6662 perl-xml-sax
6663 perl-xml-twig
6664 perl-yaml-tiny
6665
6666 ;; Ikiwiki loads po4a as a library, and thus needs the po4a dependencies
6667 ;; available. Duplicate them here.
6668 ;; XXX: It would be ideal to hard code these in po4a somehow.
6669 perl-syntax-keyword-try
6670 perl-xs-parse-keyword
6671 po4a))
6672 (propagated-inputs
6673 (list perl-cgi-formbuilder
6674 perl-cgi-session
6675 perl-html-parser
6676 perl-html-scrubber
6677 perl-html-template
6678 perl-json
6679 perl-mail-sendmail
6680 perl-text-markdown-discount
6681 perl-timedate
6682 perl-uri
6683 perl-xml-simple
6684 perl-yaml-libyaml))
6685 (home-page "https://ikiwiki.info/")
6686 (synopsis "Wiki compiler, capable of generating HTML")
6687 (description
6688 "Ikiwiki is a wiki compiler, capable of generating a static set of web
6689pages, but also incorporating dynamic features like a web based editor and
6690commenting.")
6691 (license license:gpl2+)))
6692
6693(define-public libwapcaplet
6694 (package
6695 (name "libwapcaplet")
6696 (version "0.4.3")
6697 (source
6698 (origin
6699 (method url-fetch)
6700 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6701 "libwapcaplet-" version "-src.tar.gz"))
6702 (sha256
6703 (base32
6704 "0p0c2q9lsj4vs97aa7vjllfhw33zv3dpysdkjblzhib6dpfs2alv"))))
6705 (build-system gnu-build-system)
6706 (native-inputs
6707 (list netsurf-buildsystem pkg-config check-0.14)) ;for tests
6708 (arguments netsurf-buildsystem-arguments)
6709 (home-page "https://www.netsurf-browser.org/projects/libwapcaplet/")
6710 (synopsis "String internment library")
6711 (description
6712 "LibWapcaplet provides a reference counted string internment system
6713designed to store small strings and allow rapid comparison of them. It is
6714developed as part of the Netsurf project.")
6715 (license license:expat)))
6716
6717(define-public libcss
6718 (package
6719 (name "libcss")
6720 (version "0.9.2")
6721 (source
6722 (origin
6723 (method url-fetch)
6724 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6725 "libcss-" version "-src.tar.gz"))
6726 (sha256
6727 (base32
6728 "0khmf5bdpkc09fpsgwzi23sihpadvyr02jx0q5h1vm9lxjxibwid"))
6729 (patches (search-patches "libcss-check-format.patch"))))
6730 (build-system gnu-build-system)
6731 (native-inputs
6732 (list netsurf-buildsystem pkg-config perl))
6733 (propagated-inputs ;needed for libcss.pc
6734 (list libparserutils libwapcaplet))
6735 (arguments netsurf-buildsystem-arguments)
6736 (home-page "https://www.netsurf-browser.org/projects/libcss/")
6737 (synopsis "CSS parser and selection library")
6738 (description
6739 "LibCSS is a CSS (Cascading Style Sheet) parser and selection engine,
6740written in C. It is developed as part of the NetSurf project.")
6741 (license license:expat)))
6742
6743(define-public libdom
6744 (package
6745 (name "libdom")
6746 (version "0.4.2") ;TODO include patch for additional tags?
6747 (source
6748 (origin
6749 (method url-fetch)
6750 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6751 "libdom-" version "-src.tar.gz"))
6752 (sha256
6753 (base32
6754 "0g0gqcglk8f8gbygbcq5ylcx84zsf0vczbm3n3118w2l2splapnh"))))
6755 (build-system gnu-build-system)
6756 (native-inputs
6757 (list netsurf-buildsystem
6758 pkg-config
6759 perl ;for test harness
6760 perl-libxml
6761 perl-switch
6762 perl-xml-xpath))
6763 (inputs
6764 (list libparserutils libwapcaplet))
6765 (propagated-inputs
6766 (list expat ;needed for headers and linking
6767 hubbub)) ;for libdom.pc
6768 (arguments
6769 `(#:tests? #f ;TODO: re-enable. tests take a looong time.
6770 ,@netsurf-buildsystem-arguments))
6771 (home-page "https://www.netsurf-browser.org/projects/libdom/")
6772 (synopsis "Implementation of the W3C DOM")
6773 (description
6774 "LibDOM is an implementation of the W3C DOM, written in C. It is
6775developed as part of the NetSurf project.")
6776 (license license:expat)))
6777
6778(define-public libsvgtiny
6779 (package
6780 (name "libsvgtiny")
6781 (version "0.1.8")
6782 (source
6783 (origin
6784 (method url-fetch)
6785 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6786 name "-" version "-src.tar.gz"))
6787 (sha256
6788 (base32
6789 "0750q884ax8wygl64wq03zdjj8h838ch3f8jdfkv4gz809zj4my3"))))
6790 (build-system gnu-build-system)
6791 (native-inputs
6792 (list netsurf-buildsystem pkg-config gperf))
6793 (inputs
6794 (list libwapcaplet))
6795 (propagated-inputs
6796 (list libdom)) ;for libsvgtiny.pc
6797 (arguments netsurf-buildsystem-arguments)
6798 (home-page "https://www.netsurf-browser.org/projects/libsvgtiny/")
6799 (synopsis "Library for parsing SVG files")
6800 (description
6801 "Libsvgtiny takes some SVG as input and returns a list of paths and texts
6802which can be rendered easily, as defined in
6803@url{http://www.w3.org/TR/SVGMobile/}. It is developed as part of the NetSurf
6804project.")
6805 (license license:expat)))
6806
6807(define-public libnsbmp
6808 (package
6809 (name "libnsbmp")
6810 (version "0.1.7")
6811 (source
6812 (origin
6813 (method url-fetch)
6814 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6815 name "-" version "-src.tar.gz"))
6816 (sha256
6817 (base32
6818 "14r2v1ich4lxn3sdwpiwq5adydrd1qlhbd8mbamalaqj59laf1sl"))))
6819 (build-system gnu-build-system)
6820 (native-inputs
6821 (list netsurf-buildsystem))
6822 (arguments netsurf-buildsystem-arguments)
6823 (home-page "https://www.netsurf-browser.org/projects/libnsbmp/")
6824 (synopsis "Decoding library for BMP and ICO files")
6825 (description
6826 "Libnsbmp is a decoding library for BMP and ICO image file formats,
6827written in C. It is developed as part of the NetSurf project.")
6828 (license license:expat)))
6829
6830(define-public libnsfb
6831 (package
6832 (name "libnsfb")
6833 (version "0.2.2")
6834 (source
6835 (origin
6836 (method url-fetch)
6837 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6838 name "-" version "-src.tar.gz"))
6839 (sha256
6840 (base32 "16m3kv8x8mlic4z73h2s3z8lqmyp0z8i30x95lzr1pslxfinqi5y"))))
6841 (build-system gnu-build-system)
6842 (native-inputs
6843 (list netsurf-buildsystem pkg-config))
6844 (inputs
6845 ;; SDL is needed to accept any (keyboard, mouse) input. Don't propagate it
6846 ;; to satisfy libnsfb.pc: netsurf is the only user and not worth the pain.
6847 (list sdl))
6848 (arguments netsurf-buildsystem-arguments)
6849 (home-page "https://www.netsurf-browser.org/projects/libnsfb/")
6850 (synopsis "Framebuffer display abstraction library")
6851 (description
6852 "LibNSFB is a framebuffer abstraction library, written in C. It is
6853developed as part of the NetSurf project and is intended to be suitable for use
6854in other projects too.
6855
6856The overall idea of the library is to provide a generic abstraction to a linear
6857section of memory which corresponds to a visible array of pixel elements on a
6858display device. Different colour depths are supported and the library provides
6859routines for tasks such as drawing onto the framebuffer and rectangle copy
6860operations.")
6861 (license license:expat)))
6862
6863(define-public libnsgif
6864 (package
6865 (name "libnsgif")
6866 (version "1.0.0")
6867 (source
6868 (origin
6869 (method url-fetch)
6870 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6871 name "-" version "-src.tar.gz"))
6872 (sha256
6873 (base32
6874 "06q69hn0nz3c6hnwmzfcldyrppkvimx3s97ql3sx4m0lyr1ch530"))))
6875 (build-system gnu-build-system)
6876 (native-inputs
6877 (list netsurf-buildsystem))
6878 (arguments netsurf-buildsystem-arguments)
6879 (home-page "https://www.netsurf-browser.org/projects/libnsgif/")
6880 (synopsis "Decoding library for GIF files")
6881 (description
6882 "Libnsgif is a decoding library for the GIF image file format, written in
6883C. It is developed as part of the NetSurf project.")
6884 (license license:expat)))
6885
6886(define-public libnslog
6887 (package
6888 (name "libnslog")
6889 (version "0.1.3")
6890 (source
6891 (origin
6892 (method url-fetch)
6893 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6894 "libnslog-" version "-src.tar.gz"))
6895 (sha256
6896 (base32
6897 "1l2k0kdv9iv18svhv360vszjavhl4g09cp8a8yb719pgsylxr67w"))))
6898 (build-system gnu-build-system)
6899 (native-inputs
6900 (list netsurf-buildsystem
6901 pkg-config
6902 check ; For tests
6903 bison
6904 flex))
6905 (arguments netsurf-buildsystem-arguments)
6906 (home-page "https://www.netsurf-browser.org/")
6907 (synopsis "Logging library")
6908 (description
6909 "Libnslog provides a category-based logging library which supports
6910complex logging filters, multiple log levels, and provides context through to
6911client applications. It is developed as part of the NetSurf project.")
6912 (license license:expat)))
6913
6914(define-public libnsutils
6915 (package
6916 (name "libnsutils")
6917 (version "0.1.1")
6918 (source
6919 (origin
6920 (method url-fetch)
6921 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6922 name "-" version "-src.tar.gz"))
6923 (sha256
6924 (base32
6925 "14pakllwf7a205d0dkvyg8jhmqfbi5sh5riw840d13j5dr9b952n"))))
6926 (build-system gnu-build-system)
6927 (native-inputs
6928 (list netsurf-buildsystem))
6929 (arguments netsurf-buildsystem-arguments)
6930 (home-page "https://www.netsurf-browser.org/")
6931 (synopsis "Utility library for NetSurf")
6932 (description
6933 "Libnsutils provides a small number of useful utility routines. It is
6934developed as part of the NetSurf project.")
6935 (license license:expat)))
6936
6937(define-public libnspsl
6938 (package
6939 (name "libnspsl")
6940 (version "0.1.7")
6941 (source
6942 (origin
6943 (method url-fetch)
6944 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6945 "libnspsl-" version "-src.tar.gz"))
6946 (sha256
6947 (base32
6948 "105cjkb622wz11z26il4j1n4ydyrrgv0nglr67aawpam5z1wx11n"))))
6949 (build-system gnu-build-system)
6950 (native-inputs
6951 (list netsurf-buildsystem))
6952 (arguments netsurf-buildsystem-arguments)
6953 (home-page "https://www.netsurf-browser.org/")
6954 (synopsis "Library to generate a static Public Suffix List")
6955 (description
6956 "Libnspsl is a library to generate a static code representation of the
6957Public Suffix List. It is developed as part of the NetSurf project.")
6958 (license license:expat)))
6959
6960(define-public nsgenbind
6961 (package
6962 (name "nsgenbind")
6963 (version "0.9")
6964 (source
6965 (origin
6966 (method url-fetch)
6967 (uri (string-append "https://download.netsurf-browser.org/libs/releases/"
6968 "nsgenbind-" version "-src.tar.gz"))
6969 (sha256
6970 (base32
6971 "0p9q9ffn9hf1qrphz2qxq2xvyysn5kg2dbl8cbnkwb5wdkvf0b13"))))
6972 (build-system gnu-build-system)
6973 (native-inputs
6974 (list netsurf-buildsystem bison flex))
6975 (arguments
6976 (substitute-keyword-arguments netsurf-buildsystem-arguments
6977 ((#:make-flags flags)
6978 `(delete "COMPONENT_TYPE=lib-shared" ,flags))))
6979 (home-page "https://www.netsurf-browser.org/")
6980 (synopsis "Generate JavaScript to DOM bindings")
6981 (description
6982 "@code{nsgenbind} is a tool to generate JavaScript to DOM bindings from
6983w3c webidl files and a binding configuration file.")
6984 (license license:expat)))
6985
6986(define-public netsurf
6987 (package
6988 (name "netsurf")
6989 (version "3.11")
6990 (source
6991 (origin
6992 (method url-fetch)
6993 (uri (string-append "https://download.netsurf-browser.org/netsurf/"
6994 "releases/source/netsurf-" version "-src.tar.gz"))
6995 (sha256
6996 (base32
6997 "1chw40nx7krpy7m14bajfrcj88h98if8py0k7c2qshpfxxm652n2"))
6998 (patches (search-patches "netsurf-system-utf8proc.patch"
6999 "netsurf-y2038-tests.patch"
7000 "netsurf-longer-test-timeout.patch"
7001 "netsurf-message-timestamp.patch"))))
7002 (build-system glib-or-gtk-build-system)
7003 (arguments
7004 (list
7005 #:make-flags
7006 #~(list
7007 (string-append "CC=" #$(cc-for-target))
7008 (string-append "BUILD_CC=" #$(cc-for-target))
7009 "TARGET=gtk3"
7010 (string-append "PREFIX=" #$output)
7011 (string-append "NSSHARED="
7012 #$(this-package-native-input "netsurf-buildsystem")
7013 "/share/netsurf-buildsystem"))
7014 #:test-target "test"
7015 #:modules `((ice-9 rdelim)
7016 (ice-9 match)
7017 (srfi srfi-1)
7018 (sxml simple)
7019 ,@%glib-or-gtk-build-system-default-modules)
7020 #:phases
7021 #~(modify-phases %standard-phases
7022 (delete 'configure)
7023 (add-after 'unpack 'remove-timestamps
7024 ;; Avoid embedding timestamp for reproducible builds
7025 (lambda _
7026 (substitute* "tools/git-testament.pl"
7027 (("WT_COMPILEDATE ..$compiledate")
7028 "WT_COMPILEDATE \\\""))))
7029 (add-after 'build 'adjust-welcome
7030 (lambda _
7031 (substitute* "frontends/gtk/res/welcome.html"
7032 ;; Close some XHTML tags.
7033 (("<(img|input)([^>]*)>" _ tag contents)
7034 (string-append "<" tag contents " />"))
7035 ;; Increase freedom.
7036 ((" open source") ", free software"))
7037 (with-atomic-file-replacement "frontends/gtk/res/welcome.html"
7038 (lambda (in out)
7039 ;; Leave the DOCTYPE header as is.
7040 (display (read-line in 'concat) out)
7041 (sxml->xml
7042 (let rec
7043 ((sxml (xml->sxml in #:default-entity-handler
7044 (lambda (port name)
7045 (string-append "<ENTITY>"
7046 (symbol->string name)
7047 "</ENTITY>")))))
7048 ;; We'd like to use sxml-match here, but it can't
7049 ;; match against generic tag symbols...
7050 (match sxml
7051 ;; Remove default links so it doesn't seem we're
7052 ;; endorsing them.
7053 (`(div (@ (class "links")) . ,rest)
7054 '())
7055 ;; Prefer a more privacy-respecting default search
7056 ;; engine.
7057 (`(form . ,rest)
7058 `(form (@ (action "https://lite.duckduckgo.com/lite/")
7059 (method "post"))
7060 (div (@ (class "websearch"))
7061 (input (@ (type "text")
7062 (size "42")
7063 (name "q")
7064 (autocomplete "off")
7065 (value "")))
7066 (input (@ (type "submit")
7067 (value "DuckDuckGo Search"))))))
7068 (`(ENTITY ,ent)
7069 `(*ENTITY* ,ent))
7070 ((x ...)
7071 (map rec x))
7072 (x x)))
7073 out)))))
7074 (add-before 'check 'patch-check
7075 (lambda* (#:key inputs #:allow-other-keys)
7076 (substitute* '("test/bloom.c" "test/hashtable.c")
7077 (("/usr/share/dict/words")
7078 (search-input-file inputs "/share/web2")))))
7079 (add-after 'install 'install-more
7080 (lambda _
7081 (let* ((share (string-append #$output "/share/"))
7082 (desktop (string-append share
7083 "applications/netsurf.desktop")))
7084 (mkdir-p (dirname desktop))
7085 (copy-file "frontends/gtk/res/netsurf-gtk.desktop" desktop)
7086 (substitute* desktop
7087 (("netsurf-gtk")
7088 (string-append #$output "/bin/netsurf-gtk3"))
7089 (("netsurf.png")
7090 (string-append share "/netsurf/netsurf.xpm")))
7091 (install-file "docs/netsurf-gtk.1"
7092 (string-append share "man/man1/"))))))))
7093 (native-inputs
7094 (list netsurf-buildsystem
7095 nsgenbind
7096 libidn ;only for tests
7097 check
7098 perl
7099 perl-html-parser
7100 pkg-config
7101 xxd))
7102 (inputs
7103 (list curl
7104 gtk+
7105 openssl
7106 utf8proc
7107 libpng
7108 libjpeg-turbo
7109 libcss
7110 libdom
7111 libnsbmp
7112 libnsgif
7113 libnslog
7114 libnspsl
7115 libnsutils
7116 libsvgtiny
7117 miscfiles))
7118 (home-page "https://www.netsurf-browser.org")
7119 (synopsis "Web browser")
7120 (description
7121 "NetSurf is a lightweight web browser that has its own layout and
7122rendering engine entirely written from scratch. It is small and capable of
7123handling many of the web standards in use today.")
7124 (license license:gpl2+)))
7125
7126(define-public superhtml
7127 (package
7128 (name "superhtml")
7129 (version "0.6.2")
7130 (source (origin
7131 (method git-fetch)
7132 (uri (git-reference
7133 (url "https://github.com/kristoff-it/superhtml")
7134 (commit (string-append "v" version))))
7135 (file-name (git-file-name name version))
7136 (sha256
7137 (base32
7138 "1ii2c2ssjpg0f8yr19gi4knhly7xcbfxpwq7889b8k2mmzrxri6g"))
7139 (snippet
7140 (rename-zig-dependencies
7141 '(("known_folders" . "zig-known-folders")
7142 ("lsp_kit" . "zig-lsp-kit")
7143 ("scripty" . "zig-scripty")
7144 ("tracy" . "zig-tracy"))))))
7145 (build-system zig-build-system)
7146 (arguments (list #:zig zig-0.15
7147 #:install-source? #f))
7148 (inputs (list zig-known-folders-for-zig-0.15
7149 zig-lsp-kit-for-zig-0.15
7150 zig-scripty
7151 zig-tracy))
7152 (home-page "https://github.com/kristoff-it/superhtml")
7153 (synopsis "HTML validator, formatter, LSP, and templating language library")
7154 (description "SuperHTML is an HTML validator, formatter, @acronym{LSP,
7155Language Server Protocol}, and templating language library. It provides the
7156@command{superhtml} command that can validate and autoformat HTML files. The
7157tool can be used either directly (for example by running it on save), or
7158through a LSP client implementation.")
7159 (license license:expat)))
7160
7161(define-public surfraw
7162 (let ((commit "ebb8131c7c623ef90d3345cd9d64203693861013")
7163 (revision "0"))
7164 (package
7165 (name "surfraw")
7166 (version (git-version "2.3.0" revision commit))
7167 (source
7168 (origin
7169 (method git-fetch)
7170 (uri (git-reference
7171 (url "https://gitlab.com/surfraw/Surfraw/")
7172 (commit commit)))
7173 (file-name (git-file-name name version))
7174 (sha256
7175 (base32 "1y3qybbyv8fnfpaw76xkh1b53pd7dvx1zr9pj71df649g4kbbibs"))))
7176 (build-system gnu-build-system)
7177 (arguments
7178 `(#:phases (modify-phases %standard-phases
7179 (add-before 'configure 'patch-perl
7180 (lambda* (#:key inputs #:allow-other-keys)
7181 (let ((perl (assoc-ref inputs "perl")))
7182 (substitute* "surfraw.IN"
7183 (("perl -e")
7184 (string-append perl "/bin/perl -e"))) #t)))
7185 (add-after 'install 'compress-elvi.1sr
7186 (lambda* (#:key outputs #:allow-other-keys)
7187 ;; The manpages of the elvis are symlinks to elvi.1sr.gz
7188 ;; but elvi.1sr does not get compressed by our manpage phase.
7189 (let* ((out (assoc-ref %outputs "out"))
7190 (man (string-append out "/share/man/man1")))
7191 (with-directory-excursion man
7192 (invoke "gzip" "elvi.1sr"))))))))
7193 (native-inputs (list autoconf automake))
7194 (inputs (list perl perl-www-opensearch perl-html-parser perl-libwww))
7195 (synopsis "Unix command line interface to the www")
7196 (description
7197 "Surfraw (Shell Users' Revolutionary Front Rage Against the Web)
7198provides a unix command line interface to a variety of popular www search engines
7199and similar services.")
7200 (home-page "http://surfraw.org/")
7201 (license license:public-domain))))
7202
7203(define-public bookmarkfs
7204 (package
7205 (name "bookmarkfs")
7206 (version "0.1.4")
7207 (source (origin
7208 (method git-fetch)
7209 (uri (git-reference
7210 (url "https://codeberg.org/cismonx/bookmarkfs")
7211 (commit (string-append "v" version))))
7212 (file-name (git-file-name name version))
7213 (sha256
7214 (base32
7215 "0ad7h3ffwj7dg7c788znc8b0wr6v5xx83sans8xa6f93x9c56frm"))))
7216 (build-system gnu-build-system)
7217 (arguments (list
7218 #:tests? #f ; tests seem to not work in sandbox
7219 #:configure-flags #~(list
7220 "--enable-bookmarkfs-util"
7221 "--enable-bookmarkfs-mount"
7222 "--enable-bookmarkfs-fsck"
7223 "--enable-bookmarkfs-mkfs"
7224 "--enable-bookmarkctl"
7225 "--enable-backend-firefox"
7226 "--enable-backend-chromium"
7227 "--enable-fsck-handler-tcl")
7228 #:phases
7229 #~(modify-phases %standard-phases
7230 (add-before 'build 'patch-flush
7231 (lambda _
7232 (substitute* "src/fs_ops.c"
7233 (("fi->noflush = 1;") "fi->flush = 0;"))))
7234 (add-before 'configure 'patch-configure
7235 (lambda _
7236 (substitute* "configure"
7237 (("AX_PTHREAD") "")))))))
7238 (inputs (list fuse
7239 libseccomp
7240 nettle
7241 jansson
7242 readline
7243 tcl
7244 uriparser
7245 zlib
7246 xxhash
7247 sqlite))
7248 (native-inputs (list autoconf-2.72
7249 autoconf-archive
7250 automake
7251 libtool
7252 pkg-config))
7253 (home-page "https://www.nongnu.org/bookmarkfs/")
7254 (synopsis "FUSE filesystem based interface to the bookmark data of web browsers")
7255 (description "BookmarkFS is a FUSE-based pseudo-filesystem which provides an
7256interface to the bookmark data of web browsers.
7257
7258Currently, the following browsers (and their derivatives) are supported:
7259- @code{firefox}
7260- @code{chromium}.")
7261 (license license:gpl3+)))
7262
7263(define-public darkhttpd
7264 (package
7265 (name "darkhttpd")
7266 (version "1.17")
7267 (source
7268 (origin
7269 (method git-fetch)
7270 (uri (git-reference
7271 (url "https://github.com/emikulic/darkhttpd")
7272 (commit (string-append "v" version))))
7273 (file-name (git-file-name name version))
7274 (sha256
7275 (base32 "1i492a0g640hkpvmv3vdf8hy61kfc649y8myj7r5hva4im8l76kp"))))
7276 (build-system gnu-build-system)
7277 (arguments
7278 (list
7279 #:make-flags #~(list (string-append "CC=" #$(cc-for-target)))
7280 #:test-target "test"
7281 #:phases
7282 #~(modify-phases %standard-phases
7283 (delete 'configure) ; no configure script
7284 (replace 'install
7285 (lambda _
7286 (install-file "darkhttpd" (string-append #$output "/bin")))))))
7287 (native-inputs (list which python-minimal))
7288 (synopsis "Simple static web server")
7289 (description "darkhttpd is a simple static web server. It is
7290standalone and does not need inetd or ucspi-tcp. It does not need any
7291config files---you only have to specify the www root.")
7292 (home-page "https://unix4lyfe.org/darkhttpd/")
7293 (license license:isc)))
7294
7295(define-public goaccess
7296 (package
7297 (name "goaccess")
7298 (version "1.11")
7299 (source (origin
7300 (method url-fetch)
7301 (uri (string-append "http://tar.goaccess.io/goaccess-"
7302 version ".tar.gz"))
7303 (sha256
7304 (base32
7305 "0wgz4md1ig10x2bdlgdbawmwp0qwbfskwrd4wyzq4icpkh94n0h1"))
7306 (modules '((guix build utils)))
7307 (snippet '(substitute* '("src/error.h"
7308 "src/parser.c")
7309 (("__DATE__") "\"1970-01-01\"")
7310 (("__TIME__") "\"00:00:00\"")))))
7311 (build-system gnu-build-system)
7312 (arguments
7313 (list
7314 #:configure-flags
7315 '(list "--enable-geoip=mmdb"
7316 "--enable-utf8"
7317 "--with-openssl"
7318 "--with-zlib")))
7319 (inputs
7320 (list glib ncurses libmaxminddb openssl zlib))
7321 (native-inputs
7322 (list pkg-config))
7323 (home-page "https://goaccess.io")
7324 (synopsis "Analyze Web server logs in real time")
7325 (description
7326 "GoAccess is a real-time web log analyzer and interactive viewer that
7327runs in a terminal or through your browser. It provides fast and valuable
7328HTTP statistics for system administrators that require a visual server report
7329on the fly.")
7330 (license license:x11)))
7331
7332(define-public hitch
7333 (package
7334 (name "hitch")
7335 (version "1.7.3")
7336 (home-page "https://hitch-tls.org/")
7337 (source (origin
7338 (method url-fetch)
7339 (uri (string-append home-page "source/hitch-" version ".tar.gz"))
7340 (sha256
7341 (base32
7342 "11wp50zs5irb5bj5xyanm060nlvna6ha328wqf6p2nvpbnaz86qs"))))
7343 (build-system gnu-build-system)
7344 (arguments
7345 `(#:phases (modify-phases %standard-phases
7346 (add-before 'check 'pre-check
7347 (lambda _
7348 ;; Our grep is compiled without perl regexp support. So,
7349 ;; rewrite the grep command to not use it. \t tab
7350 ;; characters are supported only in perl regexps. So,
7351 ;; put in literal tabs using printf instead.
7352 (substitute* "src/tests/test32-proxy-authority.sh"
7353 (("grep -Pq") "grep -q")
7354 (("extension:\\\\tdefault")
7355 "extension:$(printf '\\011')default"))
7356 ;; Most tests attempts to access hitch-tls.org which is
7357 ;; unavailable in the build container. Run them against
7358 ;; a dummy local web server instead.
7359 (for-each (lambda (test)
7360 (substitute* test
7361 (("\\[hitch-tls\\.org\\]:80")
7362 "[localhost]:8000")))
7363 (find-files "src/tests" "\\.sh$"))
7364 (system "python3 -m http.server &")
7365
7366 ;; The build container does not reap zombie processes,
7367 ;; causing stop_hitch to hang indefinitely while waiting
7368 ;; for the process to terminate because 'kill -0' never
7369 ;; succeeds. Use a different test to see whether the
7370 ;; process has shut down.
7371 (substitute* "src/tests/hitch_test.sh"
7372 (("kill -0 \"\\$HITCH_PID\"")
7373 "$(ps -p $HITCH_PID -o state= | grep -qv '^Z$')")))))))
7374 (native-inputs
7375 (list pkg-config
7376
7377 ;; For tests.
7378 curl
7379 grep
7380 lsof
7381 procps
7382 python))
7383 (inputs
7384 (list libev openssl))
7385 (synopsis "Scalable TLS proxy")
7386 (description
7387 "Hitch is a performant TLS proxy based on @code{libev}. It terminates
7388SSL/TLS connections and forwards the unencrypted traffic to a backend such
7389as a web server. It is designed to handle many thousand connections on
7390multicore machines.")
7391 (license license:bsd-2)))
7392
7393(define-public httptunnel
7394 (package
7395 (name "httptunnel")
7396 (version "3.3")
7397 (source
7398 (origin
7399 (method url-fetch)
7400 ;; git repository has no tags, so difficult to figure out which commit
7401 ;; corresponds to which version.
7402 (uri (string-append "https://www.nocrew.org/software/httptunnel/"
7403 name "-" version ".tar.gz"))
7404 (sha256
7405 (base32
7406 "0mn5s6p68n32xzadz6ds5i6bp44dyxzkq68r1yljlv470jr84bql"))
7407 (modules '((guix build utils)))
7408 ;; Remove non-free IETF RFC documentation.
7409 (snippet #~(delete-file-recursively "doc"))))
7410 (build-system gnu-build-system)
7411 (arguments
7412 (list
7413 #:phases
7414 #~(modify-phases %standard-phases
7415 ;; The default configure phase tries to pass environment variables as
7416 ;; command-line arguments, which confuses the ./configure script.
7417 (replace 'configure
7418 (lambda _
7419 (setenv "CONFIG_SHELL" (which "bash"))
7420 (setenv "CFLAGS" (string-append
7421 "-O2 -g "
7422 "-Wno-error=implicit-int "
7423 "-Wno-error=implicit-function-declaration"))
7424 (invoke "./configure"
7425 (string-append "--prefix=" #$output)))))))
7426 (home-page "https://www.nocrew.org/software/httptunnel.html")
7427 (synopsis "Tunnel data connections through HTTP requests")
7428 (description "httptunnel creates a bidirectional virtual data connection
7429tunnelled through HTTP (HyperText Transfer Protocol) requests. This can be
7430useful for users behind restrictive firewalls. As long as Web traffic is
7431allowed, even through a HTTP-only proxy, httptunnel can be combined with other
7432tools like SSH (Secure Shell) to reach the outside world.")
7433 (license license:gpl2+)))
7434
7435(define-public stunnel
7436 (package
7437 (name "stunnel")
7438 (version "5.75")
7439 (source
7440 (origin
7441 (method url-fetch)
7442 (uri (string-append "https://www.stunnel.org/downloads/stunnel-"
7443 version ".tar.gz"))
7444 (sha256
7445 (base32 "10snpaiq3xyijs3hxlf0qxs38f6njbxp9zllrgf78294hpnz07hc"))))
7446 (build-system gnu-build-system)
7447 (arguments
7448 (list #:configure-flags
7449 #~(list (string-append "--with-ssl="
7450 #$(this-package-input "openssl")))
7451 #:tests? (and (not (%current-target-system))
7452 (this-package-native-input "python-cryptography"))
7453 #:phases
7454 #~(modify-phases %standard-phases
7455 (add-after 'unpack 'patch-output-directories
7456 (lambda _
7457 ;; Some (not all) Makefiles have a hard-coded incorrect docdir.
7458 (substitute* (list "Makefile.in"
7459 "doc/Makefile.in"
7460 "tools/Makefile.in")
7461 (("/doc/stunnel")
7462 (string-append "/doc/" #$name "-" #$version)))))
7463 (add-after 'install 'prune-documentation
7464 (lambda _
7465 (let* ((doc (string-append #$output "/share/doc/"
7466 #$name "-" #$version)))
7467 (for-each delete-file (find-files doc "^INSTALL"))))))))
7468 (native-inputs
7469 ;; For tests.
7470 (if (supported-package? python-cryptography)
7471 (list iproute
7472 netcat
7473 procps
7474 python
7475 python-cryptography)
7476 '()))
7477 (inputs (list openssl perl))
7478 (home-page "https://www.stunnel.org")
7479 (synopsis "TLS proxy for clients or servers")
7480 (description "Stunnel is a proxy designed to add TLS encryption
7481functionality to existing clients and servers without any changes in the
7482programs' code. Its architecture is optimized for security, portability, and
7483scalability (including load-balancing), making it suitable for large
7484deployments.")
7485 (license license:gpl2+)))
7486
7487(define-public varnish
7488 (package
7489 (name "varnish")
7490 (home-page "https://varnish-cache.org/")
7491 (version "7.6.0")
7492 (source (origin
7493 (method url-fetch)
7494 (uri (string-append home-page "_downloads/varnish-" version ".tgz"))
7495 (sha256
7496 (base32
7497 "0p2xf4a8bk2w8j9q20fazrc93fwcfhw8zcvdd8ssbahvlg2q78mb"))))
7498 (build-system gnu-build-system)
7499 (arguments
7500 (append
7501 (if (target-x86-32?)
7502 '(#:make-flags
7503 (list "CFLAGS+=-fexcess-precision=standard"))
7504 '())
7505 (list
7506 #:configure-flags
7507 #~(list (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib")
7508 (string-append "CC=" #$(cc-for-target))
7509 ;; Use absolute path of GCC so it's found at runtime.
7510 (string-append "PTHREAD_CC="
7511 (search-input-file %build-inputs
7512 "/bin/gcc"))
7513 "--localstatedir=/var")
7514 #:phases
7515 #~(modify-phases %standard-phases
7516 (add-after 'unpack 'use-absolute-file-names
7517 (lambda _
7518 (substitute* '("bin/varnishtest/vtc_varnish.c"
7519 "bin/varnishtest/vtc_process.c"
7520 "bin/varnishtest/vtc_haproxy.c"
7521 "bin/varnishtest/tests/u00014.vtc"
7522 "bin/varnishd/mgt/mgt_vcc.c")
7523 (("/bin/sh") (which "bash")))
7524 (let* ((rm (which "rm")))
7525 (substitute* "bin/varnishd/mgt/mgt_shmem.c"
7526 (("rm -rf") (string-append rm " -rf")))
7527 (substitute* "bin/varnishtest/vtc_main.c"
7528 (("/bin/rm") rm))
7529 (substitute* "bin/varnishd/mgt/mgt_main.c"
7530 (("rm -rf") (string-append rm " -rf"))))
7531 (substitute* "bin/varnishtest/tests/u00000.vtc"
7532 (("/bin/echo") (which "echo")))))
7533 (add-after 'unpack 'remove-failing-tests
7534 (lambda _
7535 ;; This test seems to fail because of
7536 ;; Failed: Servname not supported for ai_socktype
7537 (delete-file "bin/varnishtest/tests/b00085.vtc")))
7538 (add-before 'install 'patch-Makefile
7539 (lambda _
7540 (substitute* "Makefile"
7541 ;; Do not create /var/varnish during install.
7542 (("^install-data-am: install-data-local")
7543 "install-data-am: "))))
7544 (add-after 'install 'wrap-varnishd
7545 ;; Varnish uses GCC to compile VCL, so wrap it with required GCC
7546 ;; environment variables to avoid propagating them to profiles.
7547 (lambda* (#:key inputs #:allow-other-keys)
7548 (wrap-program (string-append #$output "/sbin/varnishd")
7549 ;; Add binutils to PATH so gcc finds the 'as' executable.
7550 `("PATH" ":" prefix (,(dirname (which "as"))))
7551 ;; Make sure 'crti.o' et.al is found.
7552 `("LIBRARY_PATH" ":" prefix
7553 (,(dirname
7554 (search-input-file inputs "lib/libc.so")))))))))))
7555 (native-inputs
7556 (list pkg-config
7557 python-sphinx
7558 python-docutils))
7559 (inputs
7560 (list bash-minimal
7561 coreutils-minimal
7562 jemalloc
7563 ncurses
7564 pcre2
7565 python-minimal
7566 readline))
7567 (synopsis "Web application accelerator")
7568 (description
7569 "Varnish is a high-performance HTTP accelerator. It acts as a caching
7570reverse proxy and load balancer. You install it in front of any server that
7571speaks HTTP and configure it to cache the contents through an extensive
7572configuration language.")
7573 (properties
7574 '((release-monitoring-url . "https://varnish-cache.org/releases/index.html")))
7575 (license (list license:bsd-2 ;main distribution
7576 license:zlib ;lib/libvgz/*
7577 license:public-domain ;bin/varnishncsa/as64.c, include/miniobj.h
7578 license:bsd-3)))) ;include/vqueue.h, lib/libvarnishcompat/daemon.c
7579
7580(define-public varnish-modules
7581 (package
7582 (name "varnish-modules")
7583 (home-page "https://github.com/varnish/varnish-modules")
7584 (version "0.25.0")
7585 (source (origin
7586 (method git-fetch)
7587 (uri (git-reference (url home-page) (commit version)))
7588 (file-name (git-file-name name version))
7589 (sha256
7590 (base32
7591 "1jan3lwynp14awh6jk4zc052lm8m02vqms8ryc7zmjnm5jifdzlv"))))
7592 (build-system gnu-build-system)
7593 (native-inputs
7594 (list pkg-config
7595 ;; For bootstrapping.
7596 autoconf
7597 automake
7598 libtool
7599 ;; For generating manuals.
7600 python-docutils))
7601 (inputs
7602 (list python varnish))
7603 (synopsis "Collection of Varnish modules")
7604 (description
7605 "This package provides a collection of modules (@dfn{vmods}) for the Varnish
7606cache server, extending the @acronym{VCL, Varnish Configuration Language} with
7607additional capabilities.")
7608 (license license:bsd-2)))
7609
7610(define-public xinetd
7611 (package
7612 (name "xinetd")
7613 ;; This is the maintenance fork currently used by openSUSE and Debian.
7614 (version "2.3.15.4")
7615 (source
7616 (origin
7617 (method git-fetch)
7618 (uri (git-reference
7619 (url "https://github.com/openSUSE/xinetd")
7620 (commit version)))
7621 (file-name (git-file-name name version))
7622 (sha256
7623 (base32 "0lrp3lcj6azhjplwxws2rx40bkyp6i6bp7n77ndcisb7ninad30q"))))
7624 (build-system gnu-build-system)
7625 (arguments
7626 `(#:configure-flags '("--with-loadavg")
7627 #:tests? #f)) ; no tests
7628 (native-inputs
7629 (list autoconf automake libtool pkg-config))
7630 (home-page "https://github.com/openSUSE/xinetd")
7631 (synopsis "Internet services daemon")
7632 (description "@code{xinetd}, a more secure replacement for @code{inetd},
7633listens for incoming requests over a network and launches the appropriate
7634service for that request. Requests are made using port numbers as identifiers
7635and xinetd usually launches another daemon to handle the request. It can be
7636used to start services with both privileged and non-privileged port numbers.")
7637 (license (license:fsf-free "file://COPYRIGHT"))))
7638
7639(define-public tidy-html
7640 (package
7641 (name "tidy-html")
7642 (version "5.8.0")
7643 (source
7644 (origin
7645 (method git-fetch)
7646 (uri (git-reference
7647 (url "https://github.com/htacg/tidy-html5")
7648 (commit version)))
7649 (file-name (git-file-name name version))
7650 (sha256
7651 (base32
7652 "1vd50q6xqxvidaclinsm89p6r0494wj72j1gpk32vkkhhx15cddz"))))
7653 (build-system cmake-build-system)
7654 (outputs '("out"
7655 "static")) ; 1.3MiB of .a files
7656 (arguments
7657 `(#:tests? #f ; no tests available
7658 #:build-type "Release"
7659 #:phases
7660 (modify-phases %standard-phases
7661 (add-after 'install 'move-static-libraries
7662 (lambda* (#:key outputs #:allow-other-keys)
7663 ;; Move static libraries to the "static" output.
7664 (let* ((out (assoc-ref outputs "out"))
7665 (lib (string-append out "/lib"))
7666 (static (assoc-ref outputs "static"))
7667 (slib (string-append static "/lib")))
7668 (mkdir-p slib)
7669 (for-each (lambda (file)
7670 (install-file file slib)
7671 (delete-file file))
7672 (find-files lib "\\.a$"))
7673 #t))))))
7674 (native-inputs
7675 (list libxslt))
7676 (home-page "https://www.html-tidy.org/")
7677 (synopsis "HTML Tidy with HTML5 support")
7678 (description
7679 "Tidy is a console application which corrects and cleans up
7680HTML and XML documents by fixing markup errors and upgrading
7681legacy code to modern standards.
7682
7683Tidy also provides @code{libtidy}, a C static and dynamic library that
7684developers can integrate into their applications to make use of the
7685functions of Tidy.")
7686 (license license:bsd-3)))
7687
7688(define-public hiawatha
7689 (package
7690 (name "hiawatha")
7691 (version "11.2")
7692 (source
7693 (origin
7694 (method url-fetch)
7695 (uri (string-append "https://www.hiawatha-webserver.org/files/"
7696 "hiawatha-" version ".tar.gz"))
7697 (sha256
7698 (base32 "1i8vrxbvpcj6yxmshbg19gm9g8vrxds6pdra0sgld4vzj9v4zilr"))))
7699 (build-system cmake-build-system)
7700 (arguments
7701 `(#:tests? #f ; no tests included
7702 #:configure-flags (list (string-append "-DUSE_SYSTEM_MBEDTLS=on")
7703 (string-append "-DENABLE_HTTP2=on")
7704 (string-append "-DUSE_SYSTEM_NGHTTP2=on")
7705 (string-append "-DENABLE_TOMAHAWK=on")
7706 (string-append "-DLOG_DIR=/var/log/hiawatha")
7707 (string-append "-DPID_DIR=/run")
7708 (string-append "-DWEBROOT_DIR="
7709 (assoc-ref %outputs "out")
7710 "/share/hiawatha/html")
7711 (string-append "-DWORK_DIR=/var/lib/hiawatha"))
7712 #:phases
7713 (modify-phases %standard-phases
7714 (add-after 'unpack 'install-no-empty-directories
7715 (lambda _
7716 (substitute* "CMakeLists.txt"
7717 (("install\\(DIRECTORY DESTINATION" match)
7718 (string-append "#" match)))
7719 #t))
7720 (add-after 'install 'wrap
7721 (lambda* (#:key inputs outputs #:allow-other-keys)
7722 ;; Make sure 'hiawatha' finds 'mbedtls'.
7723 (let* ((out (assoc-ref outputs "out"))
7724 (sbin (string-append out "/sbin"))
7725 (mbed (assoc-ref inputs "mbedtls")))
7726 (wrap-program (string-append sbin "/hiawatha")
7727 `("PATH" ":" prefix (,mbed)))))))))
7728 (inputs
7729 ;; TODO: package "hiawatha-monitor", an optional dependency of "hiawatha".
7730 (list bash-minimal libxcrypt libxslt libxml2 mbedtls-for-hiawatha
7731 `(,nghttp2 "lib") zlib))
7732 (home-page "https://www.hiawatha-webserver.org")
7733 (synopsis "Webserver with focus on security")
7734 (description
7735 "Hiawatha has been written with security in mind.
7736Features include the ability to stop SQL injections, XSS and CSRF attacks and
7737exploit attempts.")
7738 (license license:gpl2)))
7739
7740(define-public python-httpbin
7741 (package
7742 (name "python-httpbin")
7743 (version "0.10.2")
7744 (source
7745 (origin
7746 (method url-fetch)
7747 (uri (pypi-uri "httpbin" version))
7748 (sha256
7749 (base32 "1a8pcf6411pqkpl3c5z93wml0nw4xb6j9dnjl976ij31h9llh8b3"))))
7750 (build-system pyproject-build-system)
7751 (native-inputs
7752 (list python-pytest
7753 python-setuptools))
7754 (propagated-inputs
7755 (list python-brotlicffi
7756 python-decorator
7757 python-flasgger
7758 python-flask
7759 python-greenlet
7760 python-itsdangerous
7761 python-markupsafe
7762 python-six
7763 python-werkzeug))
7764 ;; The archive in PyPI points to a fork of
7765 ;; <https://github.com/postmanlabs/httpbin> which is unmaintained for 6y,
7766 ;; where <https://github.com/Runscope/httpbin> rediects to. See
7767 ;; <https://github.com/postmanlabs/httpbin/issues/719>
7768 (home-page "https://github.com/psf/httpbin")
7769 (synopsis "HTTP request and response service")
7770 (description
7771 "Testing an HTTP Library can become difficult sometimes.
7772@code{RequestBin} is fantastic for testing POST requests, but doesn't let you
7773control the response. This exists to cover all kinds of HTTP scenarios. All
7774endpoint responses are JSON-encoded.")
7775 (license license:isc)))
7776
7777(define-public python-pytest-httpbin
7778 ;; TODO: Move to (gnu packages python-check).
7779 (package
7780 (name "python-pytest-httpbin")
7781 (version "2.1.0")
7782 (source
7783 (origin
7784 (method git-fetch)
7785 (uri (git-reference
7786 (url "https://github.com/kevin1024/pytest-httpbin")
7787 (commit (string-append "v" version))))
7788 (file-name (git-file-name name version))
7789 (sha256
7790 (base32 "1d5r21mr6cfwfqgjfrh35sjidkaq4nbihp34y0n29ag943ar8i40"))))
7791 (build-system pyproject-build-system)
7792 (native-inputs
7793 (list python-pytest-bootstrap
7794 python-requests
7795 python-setuptools))
7796 (propagated-inputs
7797 (list python-httpbin))
7798 (home-page "https://github.com/kevin1024/pytest-httpbin")
7799 (synopsis "Test your HTTP library against a local copy of httpbin")
7800 (description
7801 "@code{Pytest-httpbin} creates a @code{pytest} fixture that is
7802dependency-injected into your tests. It automatically starts up a HTTP server
7803in a separate thread running @code{httpbin} and provides your test with the
7804URL in the fixture.")
7805 (license license:expat)))
7806
7807(define-public http-parser
7808 (let ((commit "ec8b5ee63f0e51191ea43bb0c6eac7bfbff3141d")
7809 (revision "1"))
7810 (package
7811 (name "http-parser")
7812 (version (git-version "2.9.4" revision commit))
7813 (home-page "https://github.com/nodejs/http-parser")
7814 (source
7815 (origin
7816 (method git-fetch)
7817 (uri (git-reference (url home-page)
7818 (commit commit)))
7819 (sha256
7820 (base32 "0f297hrbx0kvy3qwgm9rhmbnjww6iljlcz9grsc9d4km1qj1071i"))
7821 (file-name (git-file-name name version))
7822 (patches
7823 (append
7824 (search-patches "http-parser-CVE-2020-8287.patch")
7825 (list
7826 (origin
7827 ;; Treat an empty port (e.g. `http://hostname:/`) when parsing
7828 ;; URLs as if no port were specified. This patch is applied
7829 ;; to Fedora's http-parser and to libgit2's bundled version.
7830 (method url-fetch)
7831 (uri (string-append
7832 "https://src.fedoraproject.org/rpms/http-parser/raw/"
7833 "e89b4c4e2874c19079a5a1a2d2ccc61b551aa289/"
7834 "f/0001-url-treat-empty-port-as-default.patch"))
7835 (sha256
7836 (base32
7837 "0pbxf2nq9pcn299k2b2ls8ldghaqln9glnp79gi57mamx4iy0f6g"))))))
7838 (modules '((guix build utils)))
7839 (snippet
7840 '(begin
7841 ;; This assertion fails when building for i686-linux.
7842 (substitute* "test.c"
7843 (("assert\\(sizeof\\(http_parser\\) == 32\\);")
7844 "assert(1);"))
7845 #t))))
7846 (build-system gnu-build-system)
7847 (arguments
7848 `(#:test-target "test"
7849 #:make-flags
7850 (list (string-append "PREFIX="
7851 (assoc-ref %outputs "out"))
7852 "library"
7853 ,@(if (%current-target-system)
7854 '()
7855 '("CC=gcc")))
7856 #:phases
7857 (modify-phases %standard-phases
7858 ,@(if (%current-target-system)
7859 '((replace 'configure
7860 (lambda* (#:key target #:allow-other-keys)
7861 (substitute* (find-files "." "Makefile")
7862 (("CC\\?=.*$")
7863 (string-append "CC=" target "-gcc\n"))
7864 (("AR\\?=.*$")
7865 (string-append "AR=" target "-ar\n")))
7866 #t)))
7867 '((delete 'configure))))))
7868 (synopsis "HTTP request/response parser for C")
7869 (description "This is a parser for HTTP messages written in C. It
7870parses both requests and responses. The parser is designed to be used in
7871high-performance HTTP applications. It does not make any syscalls nor
7872allocations, it does not buffer data, it can be interrupted at anytime.
7873Depending on your architecture, it only requires about 40 bytes of data per
7874message stream (in a web server that is per connection).")
7875 (license license:expat))))
7876
7877(define-public llhttp
7878 (package
7879 (name "llhttp")
7880 (version "9.1.3")
7881 (source (origin
7882 (method git-fetch)
7883 (uri (git-reference
7884 (url "https://github.com/nodejs/llhttp")
7885 (commit (string-append "release/v" version))))
7886 (file-name (git-file-name name version))
7887 (sha256
7888 (base32
7889 "1nkv64c5fs8x6n5f9f6g28w5hvg776p55cwa0f82ni548nx279s1"))))
7890 (build-system cmake-build-system)
7891 (arguments (list #:tests? #f)) ;FIXME: tests depend on node-mocha
7892 (home-page "https://github.com/nodejs/llhttp")
7893 (synopsis "Port of http_parser to llparse")
7894 (description "@code{llparse} is a port of @code{http_parser} to
7895@code{llparse} which aims making it more maintainable, verifiable and
7896efficient where possible.")
7897 (license license:expat)))
7898
7899(define-public jo
7900 (package
7901 (name "jo")
7902 (version "1.9")
7903 (source
7904 (origin
7905 (method url-fetch)
7906 (uri (string-append "https://github.com/jpmens/jo/releases/download/"
7907 version "/jo-" version ".tar.gz"))
7908 (sha256
7909 (base32 "17y73657z5v792ik3plcvk9f5g5h2yawv6afahhkq42159pwv581"))))
7910 (build-system gnu-build-system)
7911 (home-page "https://github.com/jpmens/jo")
7912 (synopsis "Output JSON from a shell")
7913 (description "@command{jo} is a command-line utility to create JSON objects
7914or arrays. It creates a JSON string on stdout from words provided as
7915command-line arguments or read from stdin.")
7916 (license (list license:gpl2+
7917 license:expat)))) ; json.c, json.h
7918
7919(define-public python-internetarchive
7920 (package
7921 (name "python-internetarchive")
7922 (version "5.11.1")
7923 (source
7924 (origin
7925 (method git-fetch)
7926 (uri (git-reference
7927 (url "https://github.com/jjjake/internetarchive")
7928 (commit (string-append "v" version))))
7929 (file-name (git-file-name name version))
7930 (sha256
7931 (base32
7932 "1l71qyhmhfwyb4zqprkg4585wsbarnryhbk6rh5idh835yj17d1b"))))
7933 (build-system pyproject-build-system)
7934 (arguments
7935 (list
7936 #:test-flags
7937 ;; Run only the offline test suite.
7938 '(list "-m" "not network")))
7939 (propagated-inputs
7940 (list python-jsonpatch
7941 python-requests
7942 python-schema
7943 python-tqdm
7944 python-urllib3))
7945 (native-inputs
7946 (list nss-certs-for-test
7947 python-pytest
7948 python-responses
7949 python-setuptools
7950 python-wheel))
7951 (home-page "https://github.com/jjjake/internetarchive")
7952 (synopsis "Command-line interface to archive.org")
7953 (description "@code{ia} is a command-line tool for using
7954@url{archive.org} from the command-line. It also implements the
7955internetarchive python module for programmatic access to archive.org.")
7956 (license license:agpl3+)))
7957
7958(define-public python-clf
7959 (let ((commit-test-clf "d01d25923c599d3261910f79fb948825b4270d07")) ; 0.5.7
7960 (package
7961 (name "python-clf")
7962 (version "0.5.7")
7963 (source
7964 (origin
7965 (method url-fetch)
7966 (uri (pypi-uri "clf" version))
7967 (sha256
7968 (base32
7969 "0zlkzqnpz7a4iavsq5vaz0nf5nr7qm5znpg1vlpz6rwnx6hikjdb"))))
7970 (build-system pyproject-build-system)
7971 (arguments
7972 (list
7973 #:test-flags
7974 #~(list
7975 ;; These tests require an Internet connection.
7976 "--exclude=test_browse"
7977 "--exclude=test_command"
7978 "--exclude=test_search")
7979 #:phases
7980 #~(modify-phases %standard-phases
7981 (add-after 'unpack 'get-tests
7982 (lambda* (#:key inputs #:allow-other-keys)
7983 (copy-file (assoc-ref inputs "test-clf") "test_clf.py"))))))
7984 (propagated-inputs
7985 (list python-docopt
7986 python-pygments
7987 python-requests))
7988 (inputs
7989 `(("test-clf"
7990 ,(origin
7991 (method url-fetch)
7992 (uri (string-append "https://raw.githubusercontent.com"
7993 "/ncrocfer/clf/" commit-test-clf
7994 "/test_clf.py"))
7995 (sha256
7996 (base32
7997 "19lr5zdzsmxgkg7wrjq1yzkiahd03wi4k3dskssyhmjls8c10nqd"))))))
7998 (native-inputs (list python-pynose python-setuptools))
7999 (home-page "https://github.com/ncrocfer/clf")
8000 (synopsis "Search code snippets on @url{https://commandlinefu.com}")
8001 (description "@code{clf} is a command line tool for searching code
8002snippets on @url{https://commandlinefu.com}.")
8003 (license license:expat))))
8004
8005(define-public nntpit
8006 (let ((commit "c0d654736460d174a680b2e06c3a81ce883fc09a")
8007 (revision "0"))
8008 (package
8009 (name "nntpit")
8010 (version (git-version "0" revision commit))
8011 (source (origin
8012 (method git-fetch)
8013 (uri (git-reference
8014 (url "https://github.com/taviso/nntpit")
8015 (commit commit)))
8016 (file-name (git-file-name name version))
8017 (sha256
8018 (base32
8019 "1kkdh2qpkfw97hzw9jsxy5jzmhhv8261bj63mvr5c9qwlp6qs46g"))))
8020 (build-system gnu-build-system)
8021 (native-inputs (list autoconf automake glib pkg-config))
8022 (inputs (list curl json-c libev))
8023 (synopsis "Minimal reddit2nntp gateway server")
8024 (description
8025 "This is a simple reddit2nntp gateway server that lets you use a newsreader
8026 to follow discussions on reddit. The intention is for you to run it locally,
8027 tell your newsreader to connect to localhost, and subreddits will appear as newsgroups!")
8028 (home-page "https://github.com/taviso/nntpit")
8029 (license license:expat))))
8030
8031(define-public rdrview
8032 (package
8033 (name "rdrview")
8034 (version "0.1.5")
8035 (source
8036 (origin
8037 (method git-fetch)
8038 (uri (git-reference
8039 (url "https://github.com/eafer/rdrview")
8040 (commit (string-append "v" version))))
8041 (file-name (git-file-name name version))
8042 (sha256
8043 (base32 "115qc7qpq899jzkna28brjni0m2a50g1li52kg9pqykgsp15f6z4"))))
8044 (build-system gnu-build-system)
8045 (arguments
8046 (list
8047 #:tests? #f ;they seem to require user input.
8048 #:make-flags
8049 #~(list (string-append "CC=" #$(cc-for-target))
8050 (string-append "PREFIX=" #$output))
8051 #:phases
8052 #~(modify-phases %standard-phases
8053 (delete 'configure))))
8054 (inputs (list curl libseccomp libxml2))
8055 (home-page "https://github.com/eafer/rdrview")
8056 (synopsis "Firefox reader view as a command line tool")
8057 (description
8058 "@code{rdrview} is command line tool to extract the main content from a
8059webpage, as done by the reader view feature of most modern browsers.")
8060 (license license:apsl2)))
8061
8062(define-public rss-bridge
8063 (package
8064 (name "rss-bridge")
8065 (version "2020-11-10")
8066 (source
8067 (origin
8068 (method git-fetch)
8069 (uri (git-reference
8070 (url "https://github.com/RSS-Bridge/rss-bridge")
8071 (commit version)))
8072 (file-name (git-file-name name version))
8073 (sha256
8074 (base32 "1mir6mcm37sbdrhl5kgs6schpp3l4r5mfamhiic0yfbz4hqwmg44"))))
8075 (build-system copy-build-system)
8076 (arguments
8077 '(#:install-plan
8078 '(("." "share/rss-bridge"))
8079 #:phases
8080 (modify-phases %standard-phases
8081 ;;Change paths to not use source directory.
8082 (add-before 'install 'patch-paths
8083 (lambda _
8084 (substitute* "lib/rssbridge.php"
8085 (("PATH_ROOT . 'cache/'")
8086 "'/var/cache/rss-bridge/'")
8087 (("PATH_ROOT . 'whitelist.txt'")
8088 "'/etc/rss-bridge/whitelist.txt'")
8089 (("PATH_ROOT . 'config.ini.php'")
8090 "'/etc/rss-bridge/config.ini.php'")))))))
8091 (home-page "https://github.com/RSS-Bridge/rss-bridge")
8092 (synopsis "Generate Atom feeds for social networking websites")
8093 (description "rss-bridge generates Atom feeds for social networking
8094websites lacking feeds. Supported websites include Facebook, Twitter,
8095Instagram and YouTube.")
8096 (license (list license:public-domain
8097 license:expat)))) ; vendor/simplehtmldom/simple_html_dom.php
8098
8099(define-public linkchecker
8100 (package
8101 (name "linkchecker")
8102 (version "10.5.0")
8103 (source
8104 (origin
8105 (method git-fetch)
8106 (uri (git-reference
8107 (url "https://github.com/linkchecker/linkchecker")
8108 (commit (string-append "v" version))))
8109 (file-name (git-file-name name version))
8110 (sha256
8111 (base32 "19giahk5bs2r2ay54cc6b2ba5hr3lszn5a89m7zmwb0bk9655z56"))))
8112 (build-system pyproject-build-system)
8113 (arguments
8114 (list
8115 #:test-flags
8116 #~(list
8117 ;; OSError: Command ... '-m', 'linkcheck', '-V']' returned non-zero
8118 ;; exit status 2.
8119 "--deselect=tests/test_linkchecker.py::TestLinkchecker::test_linkchecker"
8120 ;; FileNotFoundError: [Errno 2] No such file or directory: 'msgfmt'
8121 "--deselect=tests/test_po.py::TestPo::test_pos")))
8122 (native-inputs
8123 (list python-hatch-vcs
8124 python-hatchling
8125 python-pytest
8126 python-setuptools-scm))
8127 (inputs
8128 (list python-beautifulsoup4
8129 python-dnspython
8130 python-requests))
8131 (home-page "https://linkchecker.github.io/linkchecker/")
8132 (synopsis "Check websites for broken links")
8133 (description "LinkChecker is a website validator. It checks for broken
8134links in websites. It is recursive and multithreaded providing output in
8135colored or normal text, HTML, SQL, CSV, XML or as a sitemap graph. It
8136supports checking HTTP/1.1, HTTPS, FTP, mailto, news, nntp, telnet and local
8137file links.")
8138 (license (list license:gpl2+
8139 license:bsd-2 ; linkcheck/better_exchook2.py
8140 license:bsd-3 ; linkcheck/colorama.py
8141 license:psfl ; linkcheck/gzip2.py
8142 license:expat)))) ; linkcheck/mem.py
8143
8144(define-public castor
8145 (package
8146 (name "castor")
8147 (version "0.9.0")
8148 (source
8149 (origin
8150 (method git-fetch)
8151 (uri (git-reference
8152 (url "https://git.sr.ht/~julienxx/castor")
8153 (commit version)))
8154 (file-name (git-file-name name version))
8155 (sha256
8156 (base32 "1gda77ya2qbmjxfbw3yfr64inm8xw8243iwnfsgwwiwl35pw70n9"))))
8157 (build-system cargo-build-system)
8158 (arguments
8159 (list
8160 #:phases
8161 #~(modify-phases %standard-phases
8162 (add-after 'unpack 'relax-cargo-requirements
8163 (lambda _
8164 (substitute* "Cargo.toml" (("~") ""))))
8165 (add-after 'install 'install-data
8166 (lambda _
8167 (invoke "make" (string-append "PREFIX=" #$output)
8168 "copy-data"))))
8169 #:parallel-tests? #f ; As per the Makefile
8170 #:install-source? #f))
8171 (native-inputs
8172 (list pkg-config))
8173 (inputs
8174 (cons* at-spi2-core
8175 cairo
8176 gdk-pixbuf
8177 gtk+
8178 openssl
8179 pango
8180 (cargo-inputs 'castor)))
8181 (home-page "https://git.sr.ht/~julienxx/castor")
8182 (synopsis "Graphical client for plain-text protocols")
8183 (description
8184 "Castor is a graphical client for plain-text protocols written in
8185Rust with GTK. It currently supports the Gemini, Gopher and Finger
8186protocols.")
8187 (license license:expat)))
8188
8189(define-public civetweb
8190 (package
8191 (name "civetweb")
8192 (version "1.16")
8193 (source
8194 (origin
8195 (method git-fetch)
8196 (uri (git-reference
8197 (url "https://github.com/civetweb/civetweb")
8198 (commit (string-append "v" version))))
8199 (file-name (git-file-name name version))
8200 (sha256
8201 (base32 "1rdajgr0243ma8sg7qn03v6f8pnbj9w2dghi751zrdg1d1zzjxkr"))))
8202 (build-system cmake-build-system)
8203 (arguments
8204 (list
8205 #:tests? #f
8206 #:configure-flags
8207 #~(list "-DBUILD_SHARED_LIBS=ON"
8208 "-DCIVETWEB_ENABLE_CXX=ON"
8209 "-DCIVETWEB_ENABLE_ZLIB=ON"
8210 ;; The tests rely on downloading their fork of Check.
8211 "-DCIVETWEB_BUILD_TESTING=OFF")))
8212 (inputs (list zlib))
8213 (home-page "https://github.com/civetweb/civetweb")
8214 (synopsis "C/C++ embeddable web server")
8215 (description
8216 "CivetWeb is a web server with optional @acronym{CGI, Common Gateway
8217Interface} and @acronym{SSL, Secure Sockets Layer} support. It can be
8218embedded into C/C++ applications or used as a standalone web server.")
8219 (license license:expat)))
8220
8221(define-public copyparty
8222 (package
8223 (name "copyparty")
8224 (version "1.20.16")
8225 (source
8226 (origin
8227 (method git-fetch)
8228 (uri (git-reference
8229 (url "https://github.com/9001/copyparty")
8230 (commit (string-append "v" version))))
8231 (sha256
8232 (base32 "01jhj8kb6xh50401qfrcgbyvq6xyngjnqxaj0f6hi1vmy78kq9j4"))
8233 (modules '((guix build utils)))
8234 (snippet
8235 ;; The modules in this directory are meant to be de-vendorable.
8236 #~(delete-file-recursively "copyparty/stolen"))))
8237 (build-system pyproject-build-system)
8238 (arguments
8239 (list #:test-backend #~'unittest))
8240 (native-inputs
8241 (list python-setuptools))
8242 (propagated-inputs
8243 (list python-dnslib
8244 python-ifaddr
8245 python-jinja2
8246 python-mfusepy
8247 python-qrcodegen))
8248 (home-page "https://github.com/9001/copyparty")
8249 (synopsis "Portable file server")
8250 (description
8251 "@code{copyparty} is a file server featuring fast, resumable uploads,
8252deduplication, WebDAV, FTP/TFTP, SMP/CIFS, upnp/zeroconf/mdns, video
8253thumbnails, audio streaming with transcoding, search, and account-based access
8254control.")
8255 (license license:expat)))
8256
8257(define-public python-py-ubjson
8258 (package
8259 (name "python-py-ubjson")
8260 (version "0.16.1")
8261 (source
8262 (origin
8263 (method git-fetch)
8264 (uri (git-reference
8265 (url "https://github.com/Iotic-Labs/py-ubjson/")
8266 (commit (string-append "v" version))))
8267 (file-name (git-file-name name version))
8268 (sha256
8269 (base32 "1frn97xfa88zrfmpnvdk1pc03yihlchhph99bhjayvzlfcrhm5v3"))
8270 (patches
8271 (search-patches "python-py-ubjson-recursion-test.patch"))))
8272 (build-system pyproject-build-system)
8273 (arguments (list #:test-backend #~'unittest))
8274 (native-inputs (list python-setuptools))
8275 (home-page "https://github.com/Iotic-Labs/py-ubjson")
8276 (synopsis "Universal Binary JSON encoder/decoder")
8277 (description
8278 "Py-ubjson is a Python module providing an Universal Binary JSON
8279encoder/decoder based on the draft-12 specification for UBJSON.")
8280 (license license:asl2.0)))
8281
8282(define-public java-tomcat
8283 (package
8284 (name "java-tomcat")
8285 (version "8.5.63")
8286 (source (origin
8287 (method url-fetch)
8288 (uri (string-append "mirror://apache/tomcat/tomcat-8/v"
8289 version "/src/apache-tomcat-" version "-src.tar.gz"))
8290 (sha256
8291 (base32
8292 "1wr6mpgbk2gs18vp8mdggiq6vifj68a875dd1fkdf7cs31q54rns"))
8293 (modules '((guix build utils)))
8294 ;; Delete bundled jars.
8295 (snippet
8296 '(begin
8297 (for-each delete-file (find-files "." "\\.jar$"))
8298 (for-each delete-file (find-files "." "\\.bat$"))
8299 #t))))
8300 (build-system ant-build-system)
8301 (inputs
8302 (list java-commons-daemon java-ecj))
8303 (arguments
8304 `(#:build-target "deploy"
8305 #:tests? #f; requires downloading some files.
8306 #:phases
8307 (modify-phases %standard-phases
8308 (add-after 'unpack 'prevent-download
8309 (lambda _
8310 ;; This directory must exist
8311 (mkdir "downloads")
8312 ;; We patch build.xml so it doesn't download any dependency, because
8313 ;; we already have all of them.
8314 (substitute* "build.xml"
8315 (("download-compile,") "")
8316 (("depends=\"validate\"") "depends=\"build-prepare\"")
8317 ((",download-validate") ""))
8318 #t))
8319 (add-after 'unpack 'strip-timestamps
8320 (lambda _
8321 (substitute* "build.xml"
8322 (("<filter token=\"YEAR\" value=.*")
8323 "<filter token=\"YEAR\" value=\"1970\"/>")
8324 (("<filter token=\"VERSION_BUILT\" value=.*")
8325 "<filter token=\"VERSION_BUILT\" value=\"Jan 1 1970 00:00:00 UTC\"/>"))
8326 #t))
8327 (add-after 'unpack 'modify-deploy
8328 (lambda _
8329 ;; The Tomcat build downloads and copies these files to the
8330 ;; bin and lib directory.
8331 ;; We instead symlink to the input (see below).
8332 (substitute* "build.xml"
8333 (("<copy tofile=\"\\$\\{tomcat.build\\}/bin/commons-daemon.jar.*") "")
8334 (("<copy file=\"\\$\\{jdt.jar\\}\" todir=\"\\$\\{tomcat.build\\}/lib\"/>")
8335 ""))
8336 #t))
8337 (add-after 'install 'symlink-commons-daemon
8338 (lambda* (#:key inputs outputs #:allow-other-keys)
8339 (let* ((commons-daemon (assoc-ref inputs "java-commons-daemon"))
8340 (files (find-files commons-daemon "commons-daemon-.*\\.jar"))
8341 (daemon-jar (car files))
8342 (out-bin (string-append (assoc-ref outputs "out") "/bin"))
8343 (target (string-append out-bin "/commons-daemon.jar")))
8344 (symlink daemon-jar target)
8345 #t)))
8346 (add-after 'install 'symlink-java-ecj
8347 (lambda* (#:key inputs outputs #:allow-other-keys)
8348 (let* ((java-ecj (assoc-ref inputs "java-ecj"))
8349 (files (find-files java-ecj "ecj.*\\.jar"))
8350 (java-ecj-jar (car files))
8351 (out-lib (string-append (assoc-ref outputs "out") "/lib"))
8352 (target (string-append out-lib "/java-ecj.jar")))
8353 (symlink java-ecj-jar target)
8354 #t)))
8355 (add-after 'unpack 'generate-properties
8356 (lambda _
8357 ;; This could have been passed to make-flags, but getcwd returns
8358 ;; a different directory then.
8359 (with-output-to-file "build.properties"
8360 (lambda _
8361 (display
8362 (string-append "base.path=" (getcwd) "/downloads\n"))))
8363 #t))
8364 (replace 'install
8365 (lambda* (#:key outputs #:allow-other-keys)
8366 (let ((out (assoc-ref outputs "out")))
8367 (copy-recursively "output/build" out))
8368 #t)))))
8369 (properties '((cpe-name . "tomcat")))
8370 (home-page "https://tomcat.apache.org")
8371 (synopsis "Java Servlet, JavaServer Pages, Java Expression Language and Java
8372WebSocket")
8373 (description "Apache Tomcat is a free implementation of the Java
8374Servlet, JavaServer Pages, Java Expression Language and Java WebSocket
8375technologies.")
8376 (license license:asl2.0)))
8377
8378(define-public java-eclipse-jetty-test-helper
8379 (package
8380 (name "java-eclipse-jetty-test-helper")
8381 (version "4.2")
8382 (source (origin
8383 (method git-fetch)
8384 (uri (git-reference
8385 (url "https://github.com/eclipse/jetty.toolchain/")
8386 (commit (string-append "jetty-test-helper-" version))))
8387 (file-name (git-file-name name version))
8388 (sha256
8389 (base32
8390 "1g7cdh03nfwbdxzvwm84ysgvw08xx7431lsjryj2gmf3lrqpizgb"))))
8391 (build-system ant-build-system)
8392 (arguments
8393 `(#:jar-name "eclipse-jetty-test-helper.jar"
8394 #:source-dir "src/main/java"
8395 #:test-dir "src/test"
8396 #:jdk ,icedtea-8
8397 #:phases
8398 (modify-phases %standard-phases
8399 (add-before 'configure 'chdir
8400 (lambda _
8401 (chdir "jetty-test-helper")
8402 #t))
8403 (add-before 'build 'fix-paths
8404 (lambda _
8405 ;; TODO:
8406 ;; This file assumes that the build directory is named "target"
8407 ;; but it is not the case with our ant-build-system. Once we have
8408 ;; maven though, we will have to rebuild this package because this
8409 ;; assumption is correct with maven-build-system.
8410 (substitute*
8411 "src/main/java/org/eclipse/jetty/toolchain/test/MavenTestingUtils.java"
8412 (("\"target\"") "\"build\"")
8413 (("\"tests\"") "\"test-classes\""))
8414 ;; Tests assume we are building with maven, so that the build
8415 ;; directory is named "target", and not "build".
8416 (with-directory-excursion "src/test/java/org/eclipse/jetty/toolchain/test"
8417 (substitute* '("FSTest.java" "OSTest.java" "TestingDirTest.java"
8418 "MavenTestingUtilsTest.java")
8419 (("target/tests") "build/test-classes")
8420 (("\"target") "\"build")))
8421 #t)))))
8422 (inputs
8423 `(("junit" ,java-junit)
8424 ("hamcrest" ,java-hamcrest-all)))
8425 (home-page "https://www.eclipse.org/jetty/")
8426 (synopsis "Helper classes for jetty tests")
8427 (description "This package contains helper classes for testing the Jetty
8428Web Server.")
8429 ;; This program is licensed under both epl and asl.
8430 (license (list license:epl1.0 license:asl2.0))))
8431
8432(define-public java-eclipse-jetty-perf-helper
8433 (package
8434 (inherit java-eclipse-jetty-test-helper)
8435 (name "java-eclipse-jetty-perf-helper")
8436 (arguments
8437 `(#:jar-name "eclipse-jetty-perf-helper.jar"
8438 #:source-dir "src/main/java"
8439 #:tests? #f; no tests
8440 #:jdk ,icedtea-8
8441 #:phases
8442 (modify-phases %standard-phases
8443 (add-before 'configure 'chdir
8444 (lambda _
8445 (chdir "jetty-perf-helper")
8446 #t)))))
8447 (inputs
8448 `(("hdrhistogram" ,java-hdrhistogram)))))
8449
8450(define-public java-eclipse-jetty-util
8451 (package
8452 (name "java-eclipse-jetty-util")
8453 (version "9.4.39")
8454 (source (origin
8455 (method url-fetch)
8456 (uri (string-append "https://github.com/eclipse/jetty.project/"
8457 "archive/jetty-" version ".v20210325.tar.gz"))
8458 (sha256
8459 (base32
8460 "0b4hy4zmdmfbqk9bzmxk7v75y2ysqiappkip4z3hb9lxjvjh0b19"))))
8461 (build-system ant-build-system)
8462 (arguments
8463 `(#:jar-name "eclipse-jetty-util.jar"
8464 #:source-dir "src/main/java"
8465 #:tests? #f; require junit 5
8466 #:test-exclude
8467 (list "**/Abstract*.java"
8468 ;; requires network
8469 "**/InetAddressSetTest.java"
8470 ;; Assumes we are using maven
8471 "**/TypeUtilTest.java"
8472 ;; Error on the style of log
8473 "**/StdErrLogTest.java")
8474 #:jdk ,icedtea-8
8475 #:phases
8476 (modify-phases %standard-phases
8477 (add-before 'configure 'chdir
8478 (lambda _
8479 (chdir "jetty-util")
8480 #t)))))
8481 (inputs
8482 `(("slf4j" ,java-slf4j-api)
8483 ("servlet" ,java-javaee-servletapi)))
8484 (home-page "https://www.eclipse.org/jetty/")
8485 (synopsis "Utility classes for Jetty")
8486 (description "The Jetty Web Server provides an HTTP server and Servlet
8487container capable of serving static and dynamic content either from a standalone
8488or embedded instantiation. This package provides utility classes.")
8489 (license (list license:epl1.0 license:asl2.0))))
8490
8491;; This version is required by maven-wagon
8492(define-public java-eclipse-jetty-util-9.2
8493 (package
8494 (inherit java-eclipse-jetty-util)
8495 (version "9.2.22")
8496 (source (origin
8497 (method url-fetch)
8498 (uri (string-append "https://github.com/eclipse/jetty.project/"
8499 "archive/jetty-" version ".v20170606.tar.gz"))
8500 (sha256
8501 (base32
8502 "1i51qlsd7h06d35kx5rqpzbfadbcszycx1iwr6vz7qc9gf9f29la"))))
8503 (arguments
8504 `(#:jar-name "eclipse-jetty-util.jar"
8505 #:source-dir "src/main/java"
8506 #:jdk ,icedtea-8
8507 #:test-exclude
8508 (list "**/Abstract*.java"
8509 ;; requires network
8510 "**/InetAddressSetTest.java"
8511 ;; Assumes we are using maven
8512 "**/TypeUtilTest.java"
8513 ;; We don't have an implementation for slf4j
8514 "**/LogTest.java"
8515 ;; Error on the style of log
8516 "**/StdErrLogTest.java")
8517 #:phases
8518 (modify-phases %standard-phases
8519 (add-before 'configure 'chdir
8520 (lambda _
8521 (chdir "jetty-util")
8522 #t))
8523 (add-before 'build 'fix-test-sources
8524 (lambda _
8525 ;; We need to fix issues caused by changes in newer versions of
8526 ;; jetty-test-helper
8527 (let ((src "src/test/java/org/eclipse/jetty/util/resource"))
8528 (substitute* (string-append src "/AbstractFSResourceTest.java")
8529 (("testdir.getDir\\(\\)") "testdir.getPath().toFile()")
8530 (("testdir.getFile\\(\"foo\"\\)")
8531 "testdir.getPathFile(\"foo\").toFile()")
8532 (("testdir.getFile\\(name\\)")
8533 "testdir.getPathFile(name).toFile()")))
8534 #t)))))
8535 (native-inputs
8536 `(("java-junit" ,java-junit)
8537 ("java-hamcrest-all" ,java-hamcrest-all)
8538 ("perf-helper" ,java-eclipse-jetty-perf-helper)
8539 ("test-helper" ,java-eclipse-jetty-test-helper)))))
8540
8541(define-public java-eclipse-jetty-io
8542 (package
8543 (inherit java-eclipse-jetty-util)
8544 (name "java-eclipse-jetty-io")
8545 (arguments
8546 `(#:jar-name "eclipse-jetty-io.jar"
8547 #:source-dir "src/main/java"
8548 #:jdk ,icedtea-8
8549 #:tests? #f; require junit 5
8550 #:test-exclude (list "**/Abstract*.java"
8551 ;; Abstract class
8552 "**/EndPointTest.java")
8553 #:phases
8554 (modify-phases %standard-phases
8555 (add-before 'configure 'chdir
8556 (lambda _
8557 (chdir "jetty-io")
8558 #t)))))
8559 (inputs
8560 `(("slf4j" ,java-slf4j-api)
8561 ("servlet" ,java-javaee-servletapi)
8562 ("util" ,java-eclipse-jetty-util)))
8563 (synopsis "Jetty :: IO Utility")
8564 (description "The Jetty Web Server provides an HTTP server and Servlet
8565container capable of serving static and dynamic content either from a standalone
8566or embedded instantiation. This package provides IO-related utility classes.")))
8567
8568(define-public java-eclipse-jetty-io-9.2
8569 (package
8570 (inherit java-eclipse-jetty-io)
8571 (version (package-version java-eclipse-jetty-util-9.2))
8572 (source (package-source java-eclipse-jetty-util-9.2))
8573 (inputs
8574 `(("util" ,java-eclipse-jetty-util-9.2)
8575 ,@(package-inputs java-eclipse-jetty-util-9.2)))
8576 (native-inputs
8577 `(("mockito" ,java-mockito-1)
8578 ("cglib" ,java-cglib)
8579 ("objenesis" ,java-objenesis)
8580 ("asm" ,java-asm)
8581 ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
8582
8583(define-public java-eclipse-jetty-http
8584 (package
8585 (inherit java-eclipse-jetty-util)
8586 (name "java-eclipse-jetty-http")
8587 (arguments
8588 `(#:jar-name "eclipse-jetty-http.jar"
8589 #:source-dir "src/main/java"
8590 #:jdk ,icedtea-8
8591 #:tests? #f; require junit 5
8592 #:phases
8593 (modify-phases %standard-phases
8594 (add-before 'configure 'chdir
8595 (lambda _
8596 (chdir "jetty-http")
8597 #t))
8598 (add-before 'build 'copy-resources
8599 (lambda _
8600 (mkdir-p "build/classes")
8601 (copy-recursively "src/main/resources/" "build/classes/")
8602 #t)))))
8603 (inputs
8604 `(("slf4j" ,java-slf4j-api)
8605 ("servlet" ,java-javaee-servletapi)
8606 ("io" ,java-eclipse-jetty-io)
8607 ("util" ,java-eclipse-jetty-util)))
8608 (synopsis "Jetty :: Http Utility")
8609 (description "The Jetty Web Server provides an HTTP server and Servlet
8610container capable of serving static and dynamic content either from a standalone
8611or embedded instantiation. This package provides HTTP-related utility classes.")))
8612
8613(define-public java-eclipse-jetty-http-9.2
8614 (package
8615 (inherit java-eclipse-jetty-http)
8616 (version (package-version java-eclipse-jetty-util-9.2))
8617 (source (package-source java-eclipse-jetty-util-9.2))
8618 (inputs
8619 `(("util" ,java-eclipse-jetty-util-9.2)
8620 ("io" ,java-eclipse-jetty-io-9.2)
8621 ,@(package-inputs java-eclipse-jetty-util-9.2)))))
8622
8623(define-public java-eclipse-jetty-jmx
8624 (package
8625 (inherit java-eclipse-jetty-util)
8626 (name "java-eclipse-jetty-jmx")
8627 (arguments
8628 `(#:jar-name "eclipse-jetty-jmx.jar"
8629 #:source-dir "src/main/java"
8630 #:jdk ,icedtea-8
8631 #:tests? #f; FIXME: requires com.openpojo.validation
8632 #:phases
8633 (modify-phases %standard-phases
8634 (add-before 'configure 'chdir
8635 (lambda _
8636 (chdir "jetty-jmx")
8637 #t)))))
8638 (inputs
8639 `(("slf4j" ,java-slf4j-api)
8640 ("servlet" ,java-javaee-servletapi)
8641 ("util" ,java-eclipse-jetty-util)))
8642 (synopsis "Jetty :: JMX Management")
8643 (description "The Jetty Web Server provides an HTTP server and Servlet
8644container capable of serving static and dynamic content either from a standalone
8645or embedded instantiation. This package provides the JMX management.")))
8646
8647(define-public java-eclipse-jetty-jmx-9.2
8648 (package
8649 (inherit java-eclipse-jetty-jmx)
8650 (version (package-version java-eclipse-jetty-util-9.2))
8651 (source (package-source java-eclipse-jetty-util-9.2))
8652 (inputs
8653 `(("util" ,java-eclipse-jetty-util-9.2)
8654 ,@(package-inputs java-eclipse-jetty-util-9.2)))))
8655
8656(define java-eclipse-jetty-http-test-classes
8657 (package
8658 (inherit java-eclipse-jetty-util)
8659 (name "java-eclipse-jetty-http-test-classes")
8660 (arguments
8661 `(#:jar-name "eclipse-jetty-http.jar"
8662 #:source-dir "src/test"
8663 #:tests? #f
8664 #:jdk ,icedtea-8
8665 #:phases
8666 (modify-phases %standard-phases
8667 (add-before 'configure 'chdir
8668 (lambda _
8669 (chdir "jetty-http")
8670 #t)))))
8671 (inputs
8672 `(("slf4j" ,java-slf4j-api)
8673 ("java-javaee-servletapi" ,java-javaee-servletapi)
8674 ("http" ,java-eclipse-jetty-http)
8675 ("io" ,java-eclipse-jetty-io)
8676 ("util" ,java-eclipse-jetty-util)))))
8677
8678(define java-eclipse-jetty-http-test-classes-9.2
8679 (package
8680 (inherit java-eclipse-jetty-http-test-classes)
8681 (version (package-version java-eclipse-jetty-util-9.2))
8682 (source (package-source java-eclipse-jetty-util-9.2))
8683 (inputs
8684 `(("http" ,java-eclipse-jetty-http-9.2)
8685 ,@(package-inputs java-eclipse-jetty-http-9.2)))
8686 (native-inputs (package-native-inputs java-eclipse-jetty-util-9.2))))
8687
8688(define-public java-eclipse-jetty-server
8689 (package
8690 (inherit java-eclipse-jetty-util)
8691 (name "java-eclipse-jetty-server")
8692 (arguments
8693 `(#:jar-name "eclipse-jetty-server.jar"
8694 #:source-dir "src/main/java"
8695 #:jdk ,icedtea-8
8696 #:tests? #f; requires a mockito version we don't have
8697 #:phases
8698 (modify-phases %standard-phases
8699 (add-before 'configure 'chdir
8700 (lambda _
8701 (chdir "jetty-server")
8702 #t))
8703 (add-before 'build 'fix-source
8704 (lambda _
8705 ;; Explicit casts to prevent build failures
8706 (substitute* "src/main/java/org/eclipse/jetty/server/Request.java"
8707 (("append\\(LazyList")
8708 "append((CharSequence)LazyList"))
8709 (substitute*
8710 "src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java"
8711 (((string-append
8712 "Class<\\? extends EventListener> clazz = _classLoader==null"
8713 "\\?Loader.loadClass\\(ContextHandler.class,className\\):"
8714 "_classLoader.loadClass\\(className\\);"))
8715 (string-append "Class<? extends EventListener> clazz = "
8716 "(Class<? extends EventListener>) "
8717 "(_classLoader==null?Loader.loadClass("
8718 "ContextHandler.class,className):"
8719 "_classLoader.loadClass(className));")))
8720 #t)))))
8721 (inputs
8722 `(("slf4j" ,java-slf4j-api)
8723 ("servlet" ,java-javaee-servletapi)
8724 ("http" ,java-eclipse-jetty-http)
8725 ("io" ,java-eclipse-jetty-io)
8726 ("jmx" ,java-eclipse-jetty-jmx)
8727 ("util" ,java-eclipse-jetty-util)))
8728 (synopsis "Core jetty server artifact")
8729 (description "The Jetty Web Server provides an HTTP server and Servlet
8730container capable of serving static and dynamic content either from a standalone
8731or embedded instantiation. This package provides the core jetty server
8732artifact.")))
8733
8734(define-public java-eclipse-jetty-server-9.2
8735 (package
8736 (inherit java-eclipse-jetty-server)
8737 (version (package-version java-eclipse-jetty-util-9.2))
8738 (source (package-source java-eclipse-jetty-util-9.2))
8739 (inputs
8740 `(("util" ,java-eclipse-jetty-util-9.2)
8741 ("jmx" ,java-eclipse-jetty-jmx-9.2)
8742 ("io" ,java-eclipse-jetty-io-9.2)
8743 ("http" ,java-eclipse-jetty-http-9.2)
8744 ,@(package-inputs java-eclipse-jetty-util-9.2)))
8745 (native-inputs
8746 `(("test-classes" ,java-eclipse-jetty-http-test-classes-9.2)
8747 ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
8748
8749(define-public java-eclipse-jetty-security
8750 (package
8751 (inherit java-eclipse-jetty-util)
8752 (name "java-eclipse-jetty-security")
8753 (arguments
8754 `(#:jar-name "eclipse-jetty-security.jar"
8755 #:source-dir "src/main/java"
8756 #:jdk ,icedtea-8
8757 #:tests? #f; require junit 5
8758 #:test-exclude (list "**/ConstraintTest.*") ; This test fails
8759 #:phases
8760 (modify-phases %standard-phases
8761 (add-before 'configure 'chdir
8762 (lambda _
8763 (chdir "jetty-security")
8764 #t)))))
8765 (inputs
8766 `(("slf4j" ,java-slf4j-api)
8767 ("servlet" ,java-javaee-servletapi)
8768 ("http" ,java-eclipse-jetty-http)
8769 ("server" ,java-eclipse-jetty-server)
8770 ("util" ,java-eclipse-jetty-util)))
8771 (synopsis "Jetty security infrastructure")
8772 (description "The Jetty Web Server provides an HTTP server and Servlet
8773container capable of serving static and dynamic content either from a standalone
8774or embedded instantiation. This package provides the core jetty security
8775infrastructure")))
8776
8777(define-public java-eclipse-jetty-security-9.2
8778 (package
8779 (inherit java-eclipse-jetty-security)
8780 (version (package-version java-eclipse-jetty-util-9.2))
8781 (source (package-source java-eclipse-jetty-util-9.2))
8782 (inputs
8783 `(("util" ,java-eclipse-jetty-util-9.2)
8784 ("http" ,java-eclipse-jetty-http-9.2)
8785 ("server" ,java-eclipse-jetty-server-9.2)
8786 ,@(package-inputs java-eclipse-jetty-util-9.2)))
8787 (native-inputs
8788 `(("io" ,java-eclipse-jetty-io-9.2)
8789 ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
8790
8791(define-public java-eclipse-jetty-util-ajax
8792 (package
8793 (inherit java-eclipse-jetty-util)
8794 (name "java-eclipse-jetty-util-ajax")
8795 (arguments
8796 `(#:jar-name "eclipse-jetty-util-ajax.jar"
8797 #:source-dir "jetty-util-ajax/src/main/java"
8798 #:tests? #f)); require junit 5
8799 (inputs
8800 (list java-eclipse-jetty-util java-javaee-servletapi))))
8801
8802(define-public java-eclipse-jetty-servlet
8803 (package
8804 (inherit java-eclipse-jetty-util)
8805 (name "java-eclipse-jetty-servlet")
8806 (arguments
8807 `(#:jar-name "eclipse-jetty-servlet.jar"
8808 #:source-dir "src/main/java"
8809 #:jdk ,icedtea-8
8810 #:tests? #f; require junit 5
8811 #:phases
8812 (modify-phases %standard-phases
8813 (add-before 'configure 'chdir
8814 (lambda _
8815 (chdir "jetty-servlet")
8816 #t)))))
8817 (inputs
8818 `(("slf4j" ,java-slf4j-api)
8819 ("java-javaee-servletapi" ,java-javaee-servletapi)
8820 ("java-eclipse-jetty-util-ajax" ,java-eclipse-jetty-util-ajax)
8821 ("http" ,java-eclipse-jetty-http)
8822 ("io" ,java-eclipse-jetty-io)
8823 ("jmx" ,java-eclipse-jetty-jmx)
8824 ("security" ,java-eclipse-jetty-security)
8825 ("server" ,java-eclipse-jetty-server)
8826 ("util" ,java-eclipse-jetty-util)))
8827 (synopsis "Jetty Servlet Container")
8828 (description "The Jetty Web Server provides an HTTP server and Servlet
8829container capable of serving static and dynamic content either from a standalone
8830or embedded instantiation. This package provides the core jetty servlet
8831container.")))
8832
8833(define-public java-eclipse-jetty-servlet-9.2
8834 (package
8835 (inherit java-eclipse-jetty-servlet)
8836 (version (package-version java-eclipse-jetty-util-9.2))
8837 (source (package-source java-eclipse-jetty-util-9.2))
8838 (arguments
8839 `(#:jar-name "eclipse-jetty-servlet.jar"
8840 #:source-dir "src/main/java"
8841 #:jdk ,icedtea-8
8842 #:tests? #f; doesn't work
8843 #:phases
8844 (modify-phases %standard-phases
8845 (add-before 'configure 'chdir
8846 (lambda _
8847 (chdir "jetty-servlet")
8848 #t)))))
8849 (inputs
8850 `(("util" ,java-eclipse-jetty-util-9.2)
8851 ("jmx" ,java-eclipse-jetty-jmx-9.2)
8852 ("io" ,java-eclipse-jetty-io-9.2)
8853 ("http" ,java-eclipse-jetty-http-9.2)
8854 ("security" ,java-eclipse-jetty-security-9.2)
8855 ("http-test" ,java-eclipse-jetty-http-test-classes-9.2)
8856 ("server" ,java-eclipse-jetty-server-9.2)
8857 ,@(package-inputs java-eclipse-jetty-util-9.2)))))
8858
8859(define-public java-eclipse-jetty-xml
8860 (package
8861 (inherit java-eclipse-jetty-util)
8862 (name "java-eclipse-jetty-xml")
8863 (arguments
8864 `(#:jar-name "eclipse-jetty-xml.jar"
8865 #:source-dir "src/main/java"
8866 #:jdk ,icedtea-8
8867 #:tests? #f; most tests require network
8868 #:phases
8869 (modify-phases %standard-phases
8870 (add-before 'configure 'chdir
8871 (lambda _
8872 (chdir "jetty-xml")
8873 #t)))))
8874 (inputs
8875 (list java-eclipse-jetty-util))
8876 (native-inputs
8877 (modify-inputs native-inputs
8878 (prepend java-eclipse-jetty-io)))))
8879
8880(define-public java-eclipse-jetty-xml-9.2
8881 (package
8882 (inherit java-eclipse-jetty-xml)
8883 (version (package-version java-eclipse-jetty-util-9.2))
8884 (source (package-source java-eclipse-jetty-util-9.2))
8885 (arguments
8886 `(#:jar-name "eclipse-jetty-xml.jar"
8887 #:source-dir "src/main/java"
8888 #:jdk ,icedtea-8
8889 #:tests? #f; most tests require network
8890 #:phases
8891 (modify-phases %standard-phases
8892 (add-before 'configure 'chdir
8893 (lambda _
8894 (chdir "jetty-xml")
8895 #t)))))
8896 (inputs
8897 `(("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
8898 ,@(package-inputs java-eclipse-jetty-util-9.2)))
8899 (native-inputs
8900 `(("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
8901 ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
8902
8903(define-public java-eclipse-jetty-webapp
8904 (package
8905 (inherit java-eclipse-jetty-util)
8906 (name "java-eclipse-jetty-webapp")
8907 (arguments
8908 `(#:jar-name "eclipse-jetty-webapp.jar"
8909 #:source-dir "src/main/java"
8910 #:jdk ,icedtea-8
8911 #:tests? #f; require junit 5
8912 ;; One test fails
8913 #:test-exclude (list "**/WebAppContextTest.java")
8914 #:phases
8915 (modify-phases %standard-phases
8916 (add-before 'configure 'chdir
8917 (lambda _
8918 (chdir "jetty-webapp")
8919 #t)))))
8920 (inputs
8921 (list java-eclipse-jetty-util
8922 java-eclipse-jetty-http
8923 java-eclipse-jetty-io
8924 java-eclipse-jetty-server
8925 java-eclipse-jetty-servlet
8926 java-eclipse-jetty-security
8927 java-eclipse-jetty-xml
8928 java-javaee-servletapi))))
8929
8930(define-public java-eclipse-jetty-webapp-9.2
8931 (package
8932 (inherit java-eclipse-jetty-webapp)
8933 (version (package-version java-eclipse-jetty-util-9.2))
8934 (source (package-source java-eclipse-jetty-util-9.2))
8935 (arguments
8936 `(#:jar-name "eclipse-jetty-webapp.jar"
8937 #:source-dir "src/main/java"
8938 #:jdk ,icedtea-8
8939 #:test-exclude (list "**/WebAppContextTest.java")
8940 #:phases
8941 (modify-phases %standard-phases
8942 (add-before 'configure 'chdir
8943 (lambda _
8944 (chdir "jetty-webapp")
8945 #t)))))
8946 (inputs
8947 `(("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
8948 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
8949 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
8950 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
8951 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
8952 ("java-eclipse-jetty-xml-9.2" ,java-eclipse-jetty-xml-9.2)
8953 ("java-javaee-servletapi" ,java-javaee-servletapi)
8954 ,@(package-inputs java-eclipse-jetty-util-9.2)))
8955 (native-inputs
8956 `(("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
8957 ,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
8958
8959(define-public java-jsoup
8960 (package
8961 (name "java-jsoup")
8962 (version "1.10.3")
8963 (source (origin
8964 (method git-fetch)
8965 (uri (git-reference
8966 (url "https://github.com/jhy/jsoup")
8967 (commit (string-append "jsoup-" version))))
8968 (file-name (git-file-name name version))
8969 (sha256
8970 (base32
8971 "1hdpdx0x140r5x3yc251v7dj1h4j5a7nh9k885aw9q5vvz49lkf4"))))
8972 (build-system ant-build-system)
8973 (arguments
8974 `(#:jar-name "jsoup.jar"
8975 #:source-dir "src/main/java"
8976 #:phases
8977 (modify-phases %standard-phases
8978 (add-before 'build 'copy-resources
8979 (lambda _
8980 (let ((classes-dir (string-append (getcwd) "/build/classes")))
8981 (with-directory-excursion "src/main/java"
8982 (for-each (lambda (file)
8983 (let ((dist (string-append classes-dir "/" file)))
8984 (mkdir-p (dirname dist))
8985 (copy-file file dist)))
8986 (find-files "." ".*.properties"))))
8987 #t)))))
8988 (native-inputs
8989 (list java-junit java-hamcrest-core java-gson))
8990 (home-page "https://jsoup.org")
8991 (synopsis "HTML parser")
8992 (description "Jsoup is a Java library for working with real-world HTML. It
8993provides a very convenient API for extracting and manipulating data, using the
8994best of DOM, CSS, and jQuery-like methods.")
8995 (license license:expat)))
8996
8997(define-public java-jsoup-1.15.3
8998 (package
8999 (inherit java-jsoup)
9000 (name "java-jsoup")
9001 (version "1.15.3")
9002 (source
9003 (origin
9004 (method git-fetch)
9005 (uri (git-reference
9006 (url "https://github.com/jhy/jsoup.git")
9007 (commit (string-append "jsoup-" version))))
9008 (file-name (git-file-name "java-jsoup" version))
9009 (sha256
9010 (base32 "1rp35w2138qkmpy7q7sn7yx50v3ks4dabd6ij50i9258yx38x3v9"))))
9011 (arguments
9012 `(#:jar-name "jsoup.jar"
9013 #:source-dir "src/main/java"
9014 #:tests? #f
9015 #:phases
9016 (modify-phases %standard-phases
9017 (add-before 'build 'copy-resources
9018 (lambda _
9019 (let ((classes-dir (string-append (getcwd) "/build/classes")))
9020 (with-directory-excursion "src/main/java"
9021 (for-each (lambda (file)
9022 (let ((dist (string-append classes-dir "/" file)))
9023 (mkdir-p (dirname dist))
9024 (copy-file file dist)))
9025 (find-files "." ".*\\.properties"))))
9026 #t))
9027 (replace 'install
9028 (install-from-pom "pom.xml")))))
9029 (inputs
9030 (list java-jsr305))))
9031
9032(define-public java-signpost-core
9033 (package
9034 (name "java-signpost-core")
9035 (version "1.2.1.2")
9036 (source (origin
9037 (method git-fetch)
9038 (uri (git-reference
9039 (url "https://github.com/mttkay/signpost")
9040 (commit version)))
9041 (file-name (git-file-name name version))
9042 (sha256
9043 (base32
9044 "1l04yj2znch3hpyw90c4g4jan453w7d88l84bgl0c72i2kbb8z7h"))))
9045 (build-system ant-build-system)
9046 (arguments
9047 `(#:jar-name "signpost-core.jar"
9048 #:source-dir "signpost-core/src/main/java"
9049 #:test-dir "signpost-core/src/test"
9050 ;; Tests all fail with InstantiationException from mockito
9051 #:tests? #f))
9052 (propagated-inputs
9053 (list java-commons-codec))
9054 (home-page "https://github.com/mttkay/signpost")
9055 (synopsis "Lightweight client-side OAuth library for Java")
9056 (description "Signpost is the easy and intuitive solution for signing
9057HTTP messages on the Java platform in conformance with the OAuth Core 1.0a
9058standard. Signpost follows a modular and flexible design, allowing you to
9059combine it with different HTTP messaging layers.")
9060 (license license:asl2.0)))
9061
9062(define-public tidyp
9063 (package
9064 (name "tidyp")
9065 (version "1.04")
9066 (source
9067 (origin
9068 (method url-fetch)
9069 (uri (string-append "https://github.com/downloads/petdance/tidyp/tidyp-"
9070 version ".tar.gz"))
9071 (sha256
9072 (base32
9073 "0f5ky0ih4vap9c6j312jn73vn8m2bj69pl2yd3a5nmv35k9zmc10"))))
9074 (build-system gnu-build-system)
9075 ;; ./test-thing.sh tries to run ./testall.sh, which is not included.
9076 (arguments `(#:tests? #f))
9077 (home-page "http://www.tidyp.com/")
9078 (synopsis "Validate HTML")
9079 (description "Tidyp is a program that can validate your HTML, as well as
9080modify it to be more clean and standard. tidyp does not validate HTML 5.
9081
9082libtidyp is the library on which the program is based. It can be used by any
9083other program that can interface to it. The Perl module @code{HTML::Tidy} is
9084based on this library, allowing Perl programmers to easily validate HTML.")
9085 ;; See htmldoc/license.html
9086 (license license:bsd-3)))
9087
9088(define-public perl-html-tidy
9089 (package
9090 (name "perl-html-tidy")
9091 (version "1.60")
9092 (source
9093 (origin
9094 (method url-fetch)
9095 (uri (string-append "mirror://cpan/authors/id/P/PE/PETDANCE/HTML-Tidy-"
9096 version ".tar.gz"))
9097 (sha256
9098 (base32
9099 "1iyp2fd6j75cn1xvcwl2lxr8qpjxssy2360cyqn6g3kzd1fzdyxw"))))
9100 (build-system perl-build-system)
9101 (arguments
9102 '(#:phases
9103 (modify-phases %standard-phases
9104 (add-after 'unpack 'fix-tidyp-paths
9105 (lambda* (#:key inputs #:allow-other-keys)
9106 (substitute* "Makefile.PL"
9107 (("^my \\$inc = \"" line)
9108 (string-append line
9109 "-I" (assoc-ref inputs "tidyp") "/include/tidyp "))
9110 (("-L/usr/lib")
9111 (string-append
9112 "-L" (assoc-ref inputs "tidyp") "/lib")))
9113 #t)))))
9114 (inputs
9115 (list perl-libwww tidyp))
9116 (native-inputs
9117 (list perl-test-exception))
9118 (home-page "https://metacpan.org/release/HTML-Tidy")
9119 (synopsis "(X)HTML validation in a Perl object")
9120 (description "@code{HTML::Tidy} is an HTML checker in a handy dandy
9121object. It's meant as a replacement for @code{HTML::Lint}, which is written
9122in Perl but is not nearly as capable as @code{HTML::Tidy}.")
9123 (license license:artistic2.0)))
9124
9125(define-public gophernicus
9126 ;; Contains some unreleased fixes.
9127 (let ((commit "da3390089c2a856db1ab2e3bd9751b9a9101a33a")
9128 (revision "0"))
9129 (package
9130 (name "gophernicus")
9131 (version (git-version "3.1.1" revision commit))
9132 (source
9133 (origin
9134 (method git-fetch)
9135 (uri (git-reference
9136 (url "https://github.com/gophernicus/gophernicus")
9137 (commit commit)))
9138 (file-name (git-file-name name version))
9139 (sha256
9140 (base32 "0a7kpymwqcsqzszdxvcqppbg61bpyg9f7raj783pldm4kf2wjyij"))))
9141 (build-system gnu-build-system)
9142 (arguments
9143 (list #:tests? #f ; No tests
9144 #:configure-flags
9145 ;; Listener and hostname used only in configuration files, which
9146 ;; we don't install.
9147 ;; This is what's done in the release.sh script.
9148 #~(list "--listener=none" "--hostname=HOSTNAME")
9149 #:phases
9150 #~(modify-phases %standard-phases
9151 (add-after 'unpack 'fix-version
9152 (lambda _
9153 (substitute* "Makefile.in"
9154 (("^(VERSION += ).*" _ prefix)
9155 (string-append prefix #$version "\n")))
9156 ;; This is done in the release.sh script.
9157 (substitute* "README.md"
9158 (("^(This release: Version )DEVEL\\b.*" _ prefix)
9159 (string-append prefix #$version "\n"))
9160 (("^NOTE: The master branch is rolling Development\\b.*")
9161 ""))))
9162 (replace 'configure
9163 ;; The configure script is hand-written, not from GNU autotools.
9164 (lambda* (#:key configure-flags #:allow-other-keys)
9165 (setenv "CC" #$(cc-for-target))
9166 (setenv "HOSTCC" "gcc")
9167 (apply invoke "./configure"
9168 (string-append "--prefix=" #$output)
9169 configure-flags))))))
9170 ;; TODO: Make configure script find libwrap.
9171 ;;(inputs
9172 ;; (list tcp-wrappers))
9173 (home-page "https://gophernicus.org/")
9174 (synopsis "Gopher protocol server")
9175 (description
9176 "Gophernicus is a Gopher protocol server. Its features include:
9177@itemize
9178@item written with security in mind;
9179@item automatically generated Gopher menus;
9180@item gophertags for virtually renaming directories;
9181@item personal gopherspaces, located in @file{~/public_gopher/};
9182@item virtual hosting;
9183@item CGI support;
9184@item output filtering and PHP support;
9185@item charset support and conversions;
9186@item selector rewriting;
9187@item session tracking and statistics;
9188@item TLS/SSL and proxy support.
9189@end itemize")
9190 (license license:bsd-2))))
9191
9192(define-public gemget
9193 (package
9194 (name "gemget")
9195 (version "1.9.0")
9196 (source
9197 (origin
9198 (method git-fetch)
9199 (uri (git-reference
9200 (url "https://github.com/makew0rld/gemget")
9201 (commit (string-append "v" version))))
9202 (file-name (git-file-name name version))
9203 (sha256
9204 (base32 "03x9apk73lwyafc4fd2vs033z7vcpk4k0jf97452l7pnlx2v57rz"))))
9205 (build-system go-build-system)
9206 (native-inputs
9207 (list go-github-com-dustin-go-humanize
9208 go-github-com-makeworld-the-better-one-go-gemini
9209 go-github-com-makeworld-the-better-one-go-gemini-socks5
9210 go-github-com-schollz-progressbar-v3
9211 go-github-com-spf13-pflag))
9212 (arguments
9213 (list
9214 #:install-source? #f
9215 #:import-path "github.com/makeworld-the-better-one/gemget"))
9216 (home-page "https://github.com/makew0rld/gemget")
9217 (synopsis "Command line downloader for the Gemini protocol")
9218 (description
9219 "Gemget is a command line downloader for the Gemini protocol.
9220It works well with streams and can print headers for debugging as well.")
9221 (license license:expat)))
9222
9223(define-public geomyidae
9224 (package
9225 (name "geomyidae")
9226 (version "0.34")
9227 (source
9228 (origin
9229 (method git-fetch)
9230 (uri (git-reference
9231 (url "git://r-36.net/geomyidae")
9232 (commit (string-append "v" version))))
9233 (file-name (git-file-name name version))
9234 (sha256
9235 (base32 "02afgrk36wkdkflyqr2xgh49v9zq6ma454jshk7igvhpxfb5l3ks"))))
9236 (build-system gnu-build-system)
9237 (arguments
9238 `(#:make-flags (list "CC=gcc"
9239 (string-append "PREFIX="
9240 (assoc-ref %outputs "out")))
9241 #:tests? #f ; no tests
9242 #:phases (modify-phases %standard-phases
9243 (delete 'configure))))
9244 (home-page "http://r-36.net/scm/geomyidae/file/README.html")
9245 (synopsis "Small Gopher server")
9246 (description
9247 "Geomyidae is a server for distributed hypertext protocol Gopher. Its
9248features include:
9249
9250@enumerate
9251@item Gopher menus (see @file{index.gph} for an example);
9252@item directory listings (if no @file{index.gph} was found);
9253@item CGI support (@file{.cgi} files are executed);
9254@item search support in CGI files;
9255@item logging with multiple log levels.
9256@end enumerate\n")
9257 (license license:expat)))
9258
9259(define-public monsterid
9260 (let ((commit "5597f177b473343ff5cad9a6e0e5b255312c6096")
9261 (revision "0"))
9262 (package
9263 (name "monsterid")
9264 (version (git-version "0" revision commit))
9265 (source
9266 (origin
9267 (method git-fetch)
9268 (uri (git-reference
9269 (url "https://github.com/splitbrain/monsterID")
9270 (commit commit)))
9271 (file-name (git-file-name name version))
9272 (sha256
9273 (base32 "0ixyrrcbw96plcdna2rx1pqwisqy9hnr57kvamgj13lzlv2whdb3"))))
9274 (build-system copy-build-system)
9275 (arguments
9276 '(#:install-plan '(("monsterid.php" "share/web/monsterid/")
9277 ("parts/" "share/web/monsterid/parts/"
9278 #:include-regexp ("\\.png$")))))
9279 (home-page "https://www.splitbrain.org/projects/monsterid")
9280 (synopsis "The original MonsterID implementation")
9281 (description
9282 "MonsterID is a method to generate a unique monster image based upon a
9283certain identifier (IP address, email address, whatever). It can be
9284used to automatically provide personal avatar images in blog comments
9285or other community services.")
9286 (license license:expat))))
9287
9288(define-public cat-avatar-generator
9289 (let ((commit "9360ea33f79d1dad3e43494b09878b5e3f6b41fa")
9290 (revision "1"))
9291 (package
9292 (name "cat-avatar-generator")
9293 (version (git-version "1" revision commit))
9294 (source (origin
9295 (method git-fetch)
9296 (uri (git-reference
9297 (url "https://framagit.org/Deevad/cat-avatar-generator.git")
9298 (commit commit)))
9299 (file-name (git-file-name name version))
9300 (sha256
9301 (base32
9302 "0js4grqzsm4gvmcbmxv7zw4samfzi6nk4mn977ddcvla9g222rkm"))))
9303 (build-system trivial-build-system)
9304 (arguments
9305 `(#:modules ((guix build utils))
9306 #:builder
9307 (begin
9308 (use-modules (guix build utils)
9309 (srfi srfi-1)
9310 (srfi srfi-26))
9311 (let ((source (assoc-ref %build-inputs "source"))
9312 (php-dir (string-append %output "/share/web/" ,name)))
9313 (install-file (string-append source "/cat-avatar-generator.php") php-dir)
9314 (copy-recursively (string-append source "/avatars") (string-append php-dir "/avatars"))
9315 ;; The cache directory must not be in the store, but in a writable
9316 ;; location. The webserver will give us this location.
9317 (substitute* (string-append php-dir "/cat-avatar-generator.php")
9318 (("\\$cachepath = .*")
9319 "if(isset($_SERVER['CACHE_DIR']))
9320$cachepath = $_SERVER['CACHE_DIR'];
9321else
9322die('You need to set the CACHE_DIR variable first.');"))
9323 #t))))
9324 (home-page "https://framagit.org/Deevad/cat-avatar-generator")
9325 (synopsis "Random avatar generator")
9326 (description "Cat avatar generator is a generator of cat pictures optimised
9327to generate random avatars, or defined avatar from a \"seed\". This is a
9328derivation by David Revoy from the original MonsterID by Andreas Gohr.")
9329 ;; expat for the code, CC-BY 4.0 for the artwork
9330 (license (list license:expat
9331 license:cc-by4.0)))))
9332
9333(define-public nghttp2
9334 (package
9335 (name "nghttp2")
9336 (version "1.69.0")
9337 (source
9338 (origin
9339 (method url-fetch)
9340 (uri (string-append "https://github.com/nghttp2/nghttp2/"
9341 "releases/download/v" version "/"
9342 "nghttp2-" version ".tar.xz"))
9343 (sha256
9344 (base32
9345 "1b88wp8ghfpnlpbqzsbwwylry86qzwwl33v5w2yzcmicxjv29cqz"))))
9346 (build-system gnu-build-system)
9347 (outputs (list "out"
9348 "lib")) ; only libnghttp2
9349 (native-inputs
9350 (list pkg-config
9351 ;; Required by tests.
9352 cunit python tzdata-for-tests))
9353 (inputs
9354 ;; Required to build the tools (i.e. without ‘--enable-lib-only’).
9355 (append
9356 (if (target-hurd?)
9357 `((,openssl "static"))
9358 (list jemalloc)) ; fight nghttpd{,x} heap fragmentation
9359 (list c-ares
9360 jansson ; for HPACK tools
9361 libev
9362 libxml2 ; for ‘nghttp -a’
9363 openssl)))
9364 (arguments
9365 (list
9366 #:configure-flags
9367 #~(list (string-append "--libdir=" #$output:lib "/lib")
9368 "--enable-app" ; build all the tools
9369 "--enable-hpack-tools" ; ...all the tools
9370 "--disable-examples"
9371 "--disable-static" ; don't bother building .a files
9372 #$@(if (%current-target-system)
9373 '("--disable-python-bindings")
9374 '()))
9375 #:phases
9376 #~(modify-phases %standard-phases
9377 (add-after 'unpack 'break-circular-reference
9378 ;; libnghttp2.pc by default retains a reference to the ‘out’ output,
9379 ;; which is not allowed. Break this cycle. While we could install
9380 ;; only the library to ‘out’ and move everything else to a separate
9381 ;; output, this would inconvenience the majority of (human) users.
9382 (lambda _
9383 (substitute* "lib/libnghttp2.pc.in"
9384 (("@prefix@")
9385 #$output:lib))))
9386 (add-before 'check 'set-timezone-directory
9387 (lambda* (#:key inputs native-inputs #:allow-other-keys)
9388 (setenv "TZDIR" (search-input-directory
9389 (or native-inputs inputs)
9390 "share/zoneinfo")))))))
9391 (home-page "https://nghttp2.org/")
9392 (synopsis "HTTP/2 protocol client, proxy, server, and library")
9393 (description
9394 "nghttp2 implements the Hypertext Transfer Protocol, version
93952 (@dfn{HTTP/2}).
9396
9397A reusable C library provides the HTTP/2 framing layer, with several tools built
9398on top of it:
9399
9400@itemize
9401@item @command{nghttp}, a command-line HTTP/2 client. It exposes many advanced
9402and low-level aspects of the protocol and is useful for debugging.
9403@item @command{nghttpd}, a fast, multi-threaded HTTP/2 static web server that
9404serves files from a local directory.
9405@item @command{nghttpx}, a fast, multi-threaded HTTP/2 reverse proxy that can be
9406deployed in front of existing web servers that don't support HTTP/2.
9407Both @command{nghttpd} and @command{nghttpx} can fall back to HTTP/1.1 for
9408backwards compatibility with clients that don't speak HTTP/2.
9409@item @command{h2load} for benchmarking (only!) your own HTTP/2 servers.
9410@item HTTP/2 uses a header compression method called @dfn{HPACK}.
9411nghttp2 provides a HPACK encoder and decoder as part of its public API.
9412@item @command{deflatehd} converts JSON data or HTTP/1-style header fields to
9413compressed JSON header blocks.
9414@item @command{inflatehd} converts such compressed headers back to JSON pairs.
9415@end itemize\n")
9416 (license license:expat)))
9417
9418(define-public nghttp2-for-node-bootstrap
9419 (package
9420 (inherit nghttp2)
9421 (version "1.58.0")
9422 (source
9423 (origin
9424 (method url-fetch)
9425 (uri (string-append "https://github.com/nghttp2/nghttp2/"
9426 "releases/download/v" version "/"
9427 "nghttp2-" version ".tar.xz"))
9428 (sha256
9429 (base32
9430 "1q4ps8acr7nyia7mf2z11m0yh3fn1imhyv855j3xjbx91l2a6s2a"))))
9431 (properties '((hidden? . #t)))))
9432
9433(define-public nghttp2-for-node-lts
9434 (package
9435 (inherit nghttp2)
9436 (version "1.69.0")
9437 (source
9438 (origin
9439 (method url-fetch)
9440 (uri (string-append "https://github.com/nghttp2/nghttp2/"
9441 "releases/download/v" version "/"
9442 "nghttp2-" version ".tar.xz"))
9443 (sha256
9444 (base32
9445 "1b88wp8ghfpnlpbqzsbwwylry86qzwwl33v5w2yzcmicxjv29cqz"))))
9446 (properties '((hidden? . #t)))))
9447
9448(define-public nghttp3
9449 (package
9450 (name "nghttp3")
9451 (version "1.11.0")
9452 (source
9453 (origin
9454 (method url-fetch)
9455 (uri (string-append "https://github.com/ngtcp2/nghttp3/"
9456 "releases/download/v" version "/"
9457 "nghttp3-" version ".tar.gz"))
9458 (sha256
9459 (base32
9460 "04ds0h2ppajx9brafd9rx4k9jsqm6cb0qjkj2lvpps1d5bd0pliw"))))
9461 (build-system gnu-build-system)
9462 (native-inputs
9463 (list pkg-config))
9464 (arguments
9465 (list
9466 #:configure-flags
9467 #~(list "--enable-lib-only")))
9468 (home-page "https://nghttp2.org/nghttp3/")
9469 (synopsis "HTTP/3 protocol library")
9470 (description
9471 "nghttp3 is an implementation of RFC 9114 HTTP/3 mapping over QUIC and
9472RFC 9204 QPACK in C. It does not depend on any particular QUIC transport
9473implementation.
9474
9475It implements extensions specified in RFC 9218 and RFC 9220. It supports
9476SETTINGS_H3_DATAGRAM from RFC 9297.
9477
9478It does not support server push.")
9479 (license license:expat)))
9480
9481(define-public hpcguix-web
9482 (package
9483 (name "hpcguix-web")
9484 (version "0.4.3")
9485 (source (origin
9486 (method git-fetch)
9487 (uri (git-reference
9488 (url "https://github.com/UMCUGenetics/hpcguix-web")
9489 (commit (string-append "v" version))))
9490 (file-name (git-file-name name version))
9491 (sha256
9492 (base32
9493 "1mcy4p5pw623gmwcx5jpry27njqyq1fp74wpq1c34s06gkhdarji"))))
9494 (build-system gnu-build-system)
9495 (arguments
9496 `(#:modules ((guix build gnu-build-system)
9497 (guix build utils)
9498 (srfi srfi-26)
9499 (ice-9 popen)
9500 (ice-9 rdelim))
9501 #:phases
9502 (modify-phases %standard-phases
9503 (add-before 'configure 'set-variables
9504 (lambda _
9505 ;; This prevents a few warnings
9506 (setenv "GUILE_AUTO_COMPILE" "0")
9507 (setenv "XDG_CACHE_HOME" (getcwd))))
9508 (add-after 'install 'wrap-program
9509 (lambda* (#:key inputs outputs #:allow-other-keys)
9510 (let* ((out (assoc-ref outputs "out"))
9511 (guix (assoc-ref inputs "guix"))
9512 (guile (assoc-ref inputs "guile"))
9513 (gcrypt (assoc-ref inputs "guile-gcrypt"))
9514 (git (assoc-ref inputs "guile-git"))
9515 (gnutls (assoc-ref inputs "guile-gnutls"))
9516 (bs (assoc-ref inputs "guile-bytestructures"))
9517 (json (assoc-ref inputs "guile-json"))
9518 (zlib (assoc-ref inputs "guile-zlib"))
9519 (syntax (assoc-ref inputs "guile-syntax-highlight"))
9520 (guile-cm (assoc-ref inputs
9521 "guile-commonmark"))
9522 (deps (list guile gcrypt git gnutls bs zlib guile-cm
9523 syntax guix json))
9524 (effective
9525 (read-line
9526 (open-pipe* OPEN_READ
9527 (string-append guile "/bin/guile")
9528 "-c" "(display (effective-version))")))
9529 (path (string-join
9530 (map (cut string-append <>
9531 "/share/guile/site/"
9532 effective)
9533 deps)
9534 ":"))
9535 (gopath (string-join
9536 (map (cut string-append <>
9537 "/lib/guile/" effective
9538 "/site-ccache")
9539 deps)
9540 ":")))
9541 (wrap-program (string-append out "/bin/hpcguix-web")
9542 `("GUILE_LOAD_PATH" ":" prefix (,path))
9543 `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,gopath)))))))))
9544 (native-inputs
9545 (list autoconf automake uglify-js pkg-config
9546 (lookup-package-native-input guix "guile")))
9547 (inputs
9548 (list bash-minimal
9549 (lookup-package-native-input guix "guile")
9550 guix
9551 guile-zlib
9552 guile-commonmark
9553 guile-json-4
9554 guile-syntax-highlight
9555 guile-gnutls ;used to connect to https://disarchive.guix.gnu.org
9556 bash-minimal))
9557 (home-page "https://github.com/UMCUGenetics/hpcguix-web")
9558 (synopsis "Web interface for cluster deployments of Guix")
9559 (description "Hpcguix-web provides a web interface to the list of packages
9560provided by Guix. The list of packages is searchable and provides
9561instructions on how to use Guix in a shared HPC environment.")
9562 (license license:agpl3+)))
9563
9564(define-public httrack
9565 (let ((commit "748c35de7858ead963daf1393ad023d75b7820c2")) ;version bump
9566 (package
9567 (name "httrack")
9568 (version "3.49.6")
9569 (source
9570 (origin
9571 (method git-fetch)
9572 (uri (git-reference
9573 (url "https://github.com/xroche/httrack")
9574 (commit commit)))
9575 (file-name (git-file-name name version))
9576 (sha256
9577 (base32
9578 "0z24ki0idiv4cqd8gl4521f2hfbzic85wlfgxfzqcpmd5yn3k1c8"))))
9579 (build-system gnu-build-system)
9580 (arguments
9581 (list
9582 #:phases
9583 #~(modify-phases %standard-phases
9584 (add-after 'unpack 'autogen
9585 ;; Force reconfiguration to generate "test-driver".
9586 (lambda _
9587 (substitute* "configure.ac"
9588 ;; Fix errors when running "configure" script.
9589 (("AX_CHECK_(COMPILE|LINK)_FLAG\\(.*") "")
9590 (("AX_CHECK_ALIGNED_ACCESS_REQUIRED") "")
9591 (("gl_VISIBILITY") ""))
9592 (invoke "autoreconf" "-vif")))
9593 (add-after 'unpack 'copy-coucal-source
9594 ;; Install Coucal source to work around missing submodule.
9595 (lambda* (#:key inputs #:allow-other-keys)
9596 (for-each (lambda (f) (install-file f "src/coucal"))
9597 (find-files #$(this-package-input "coucal")
9598 "\\.(c|h|diff|orig)$")))))))
9599 (native-inputs
9600 (list autoconf-2.71 automake libtool))
9601 (inputs
9602 (list coucal libressl zlib))
9603 (home-page "https://www.httrack.com/")
9604 (synopsis "Easy-to-use offline browser utility")
9605 (description "HTTrack allows you to download a World Wide Web site from
9606the Internet to a local directory, building recursively all directories,
9607getting HTML, images, and other files from the server to your computer.
9608
9609HTTrack arranges the original site's relative link-structure. Simply open
9610a page of the @emph{mirrored} website in your browser, and you can browse the
9611site from link to link, as if you were viewing it online. HTTrack can also
9612update an existing mirrored site, and resume interrupted downloads.
9613
9614HTTrack is fully configurable, and has an integrated help system.")
9615 (license license:gpl3+))))
9616
9617(define-public binaryen
9618 (package
9619 (name "binaryen")
9620 (version "125")
9621 (source
9622 (origin
9623 (method git-fetch)
9624 (uri (git-reference
9625 (url "https://github.com/WebAssembly/binaryen")
9626 (commit (string-append "version_" version))))
9627 (file-name (git-file-name name version))
9628 (sha256
9629 (base32 "1hgwgl7kwsxg7cihzz46lvsfzpkpy6w7w5c9gm4bhkfwz231jvs0"))))
9630 (build-system cmake-build-system)
9631 (arguments
9632 (list
9633 #:tests? #f
9634 #:phases
9635 #~(modify-phases %standard-phases
9636 (add-after 'unpack 'use-system-googletest
9637 (lambda _
9638 (substitute* "third_party/CMakeLists.txt"
9639 ((" googletest/.*") "")
9640 (("add_library\\(gtest.*") "")
9641 (("target_compile_options\\(gtest.*") "")
9642 (("target_compile_options\\(gtest_main.*") ""))
9643 (substitute* "CMakeLists.txt"
9644 (("add_subdirectory\\(test/gtest\\)")
9645 "find_package(GTest REQUIRED)"))))
9646 (add-after 'unpack 'fix-gcc14-compatibility
9647 (lambda _
9648 ;; Disable -Werror to fix GCC 14 build failure.
9649 (substitute* "CMakeLists.txt"
9650 (("-Werror") "")))))))
9651 (native-inputs (list googletest))
9652 (home-page "https://github.com/WebAssembly/binaryen")
9653 (synopsis "Optimizer and compiler/toolchain library for WebAssembly")
9654 (description "Binaryen is a compiler and toolchain infrastructure library
9655for WebAssembly, written in C++. It aims to make compiling to WebAssembly
9656easy, fast, and effective.")
9657 (license license:asl2.0)))
9658
9659(define-public buku
9660 (package
9661 (name "buku")
9662 (version "5.1")
9663 (source
9664 (origin
9665 (method git-fetch)
9666 (uri (git-reference
9667 (url "https://github.com/jarun/buku")
9668 (commit (string-append "v" version))))
9669 (file-name (git-file-name name version))
9670 (sha256
9671 (base32 "0krg13q2fa3r29knrl7ngq28dgzzxc9gif12gxkkm4djma2c1v7d"))))
9672 (build-system pyproject-build-system)
9673 (arguments
9674 (list
9675 ;; XXX: missing inputs for bukuserver
9676 #:test-flags
9677 #~(list "--ignore=tests/test_server.py"
9678 "--ignore=tests/test_views.py"
9679 "--deselect=tests/test_buku.py::test_fetch_data_with_url")
9680 #:phases
9681 #~(modify-phases %standard-phases
9682 (delete 'sanity-check))))
9683 (native-inputs (list python-pytest python-pyyaml python-setuptools))
9684 (inputs (list python-beautifulsoup4
9685 python-certifi
9686 python-cryptography
9687 python-flask
9688 python-html5lib
9689 python-urllib3))
9690 (home-page "https://github.com/jarun/buku")
9691 (synopsis "Bookmark manager")
9692 (description
9693 "buku is a powerful bookmark manager written in Python3 and SQLite3.
9694@command{buku} can auto-import bookmarks from your browser and present them
9695in an interactive command-line interface that lets you compose and update
9696bookmarks directly. It can also present them in a web interface with
9697@command{bukuserver}.")
9698 (license license:gpl3+)))
9699
9700(define-public buku-run
9701 (package
9702 (name "buku-run")
9703 (version "0.1.1")
9704 (source (origin
9705 (method git-fetch)
9706 (uri (git-reference
9707 (url "https://github.com/carnager/buku_run")
9708 (commit version)))
9709 (file-name (git-file-name name version))
9710 (sha256
9711 (base32
9712 "1zyjjf3b8g3dnymcrg683rbnc6qrvx8ravfm833n7kjrqky3bczn"))))
9713 (build-system gnu-build-system)
9714 (arguments
9715 (list #:tests? #f ;no tests
9716 #:make-flags
9717 #~(list (string-append "DESTDIR=" #$output)
9718 "PREFIX=")
9719 #:phases
9720 #~(modify-phases %standard-phases
9721 (delete 'configure)
9722 (add-after 'unpack 'fixpath
9723 (lambda* (#:key inputs #:allow-other-keys)
9724 (substitute* "buku_run"
9725 ((" \\<(rofi)\\>" all cmd)
9726 (string-append " " (search-input-file inputs "/bin/rofi")))
9727 (("\\<(buku)\\> " all cmd)
9728 (string-append (search-input-file inputs "/bin/buku") " "))
9729 (("\\<(awk|gawk)\\>" cmd)
9730 (search-input-file inputs "/bin/awk"))
9731 (("/etc/buku_run.config" path)
9732 (string-append #$output path))))))))
9733 (inputs (list buku rofi))
9734 (home-page "https://github.com/carnager/buku_run")
9735 (synopsis "@command{rofi} frontend for buku bookmarks manager")
9736 (description
9737 "This package provides a rofi frontend for the buku bookmark manager.")
9738 (license license:gpl3+)))
9739
9740(define-public tissue
9741 (package
9742 (name "tissue")
9743 (version "0.1.0")
9744 (source (origin
9745 (method url-fetch)
9746 (uri (string-append "https://tissue.systemreboot.net/releases/tissue-"
9747 version ".tar.lz"))
9748 (sha256
9749 (base32
9750 "0vsybgnzv8nnwf58pnxrs4101xczl8jvxd1wzmk4vmdyrp8a2kkm"))))
9751 (build-system gnu-build-system)
9752 (arguments
9753 (list #:make-flags #~(list (string-append "prefix=" #$output))
9754 #:modules `(((guix build guile-build-system)
9755 #:select (target-guile-effective-version))
9756 (guix build gnu-build-system)
9757 (guix build utils))
9758 #:phases
9759 (with-imported-modules '((guix build guile-build-system))
9760 #~(modify-phases %standard-phases
9761 (replace 'patch-source-shebangs
9762 (lambda* (#:key inputs #:allow-other-keys)
9763 (substitute* "bin/tissue"
9764 (("^exec guile")
9765 (string-append "exec "
9766 (search-input-file inputs "/bin/guile"))))))
9767 (delete 'configure)
9768 (add-after 'install 'wrap
9769 (lambda* (#:key inputs outputs #:allow-other-keys)
9770 (let ((out (assoc-ref outputs "out"))
9771 (effective-version (target-guile-effective-version)))
9772 (wrap-program (string-append out "/bin/tissue")
9773 `("GUILE_LOAD_PATH" prefix
9774 (,(string-append out "/share/guile/site/" effective-version)
9775 ,(getenv "GUILE_LOAD_PATH")))
9776 `("GUILE_LOAD_COMPILED_PATH" prefix
9777 (,(string-append out "/lib/guile/"
9778 effective-version "/site-ccache")
9779 ,(getenv "GUILE_LOAD_COMPILED_PATH")))))))))))
9780 (inputs (list bash-minimal guile-3.0 guile-filesystem guile-git guile-xapian))
9781 (native-inputs (list lzip))
9782 (propagated-inputs (list skribilo))
9783 (home-page "https://tissue.systemreboot.net")
9784 (synopsis "Text based project information management system")
9785 (description "tissue is an issue tracker and project information
9786management system built on plain text files and git. It is specifically
9787intended for small free software projects. It features a static site
9788generator to build a project website and a powerful search interface to search
9789through project issues and documentation. The search interface is built on
9790the Xapian search engine library, and is available both as a command-line
9791program and as a web server.")
9792 (license license:gpl3+)))
9793
9794(define-public anonip
9795 (package
9796 (name "anonip")
9797 (version "1.1.0")
9798 ;; The version on PyPi does not include fixture definitions for tests.
9799 (source (origin
9800 (method git-fetch)
9801 (uri (git-reference
9802 (url "https://github.com/DigitaleGesellschaft/Anonip")
9803 (commit "beab328945547b0147a53655f32c5cc76ab4488b")))
9804 (file-name (git-file-name name version))
9805 (sha256
9806 (base32
9807 "0cssdcridadjzichz1vv1ng7jwphqkn8ihh83hpz9mcjmxyb94qc"))))
9808 (build-system pyproject-build-system)
9809 (arguments
9810 (list #:test-flags #~(list "tests.py" "anonip.py")))
9811 (native-inputs
9812 (list python-pytest python-setuptools))
9813 (home-page "https://github.com/DigitaleGesellschaft/Anonip")
9814 (synopsis "Anonymize IP addresses in log files")
9815 (description
9816 "Anonip masks the last bits of IPv4 and IPv6 addresses in log files.
9817That way most of the relevant information is preserved, while the IP address
9818does not match a particular individuum anymore.
9819
9820Depending on your Web server, the log entries may be piped to Anonip directly
9821or via a FIFO (named pipe). Thus the unmasked IP addresses will never be
9822written to any file.
9823
9824It's also possible to rewrite existing log files.
9825
9826Anonip can also be uses as a Python module in your own Python application.")
9827 (license license:bsd-3)))
9828
9829(define-public poussetaches
9830 (package
9831 (name "poussetaches")
9832 (version "0.0.2")
9833 (source
9834 (origin
9835 (method git-fetch)
9836 (uri (git-reference
9837 (url "https://github.com/tsileo/poussetaches")
9838 (commit version)))
9839 (file-name (git-file-name name version))
9840 (sha256
9841 (base32
9842 "0kckcwvqklavd855np9aq5js6mg84isrlwchr504yigwma0sm7hm"))))
9843 (build-system go-build-system)
9844 (propagated-inputs
9845 (list go-github-com-robfig-cron-v3 go-golang-org-x-time))
9846 (arguments
9847 `(#:import-path "github.com/tsileo/poussetaches"))
9848 (home-page "https://github.com/tsileo/poussetaches")
9849 (synopsis "Lightweight asynchronous task execution service")
9850 (description "Poussetaches (which literally means \"push tasks\" in
9851French) is a lightweight asynchronous task execution service that aims to
9852replace Celery and RabbitMQ for small Python applications.
9853
9854The app posts base64-encoded payload to poussetaches and specifies the
9855endpoint that will be used to trigger the task. Poussetaches makes HTTP
9856requests with the registered payload until the right status code is
9857returned.")
9858 (license license:isc)))
9859
9860(define-public htmlcxx
9861 (package
9862 (name "htmlcxx")
9863 (version "0.87")
9864 (source
9865 (origin
9866 (method url-fetch)
9867 (uri
9868 (string-append "mirror://sourceforge/htmlcxx/v"
9869 version "/htmlcxx-" version ".tar.gz"))
9870 (sha256
9871 (base32 "1j3mzjlczjrk4ahc43s6kzpvzypzjmqz4sillnca5yadrwwgjf2x"))))
9872 (build-system gnu-build-system)
9873 (arguments
9874 ;; ISO C++17 does not allow dynamic exception specifications
9875 `(#:configure-flags '("CXXFLAGS=-std=c++11")))
9876 (home-page "https://htmlcxx.sourceforge.net/")
9877 (synopsis "Simple non-validating CSS1 and HTML parser for C++")
9878 (description "htmlcxx is a simple non-validating CSS1 and HTML parser for
9879C++. Although there are several other HTML parsers available, htmlcxx has some
9880characteristics that make it unique:
9881@itemize
9882@item STL like navigation of DOM tree, using excelent's tree.hh library from
9883Kasper Peeters
9884@item It is possible to reproduce exactly, character by character, the original
9885document from the parse tree
9886@item Bundled CSS parser
9887@item Optional parsing of attributes
9888@item C++ code that looks like C++ (not so true anymore)
9889@item Offsets of tags/elements in the original document are stored in the nodes
9890of the DOM tree
9891@end itemize")
9892 (license (list license:lgpl2.0
9893 license:gpl2
9894 license:asl2.0))))
9895
9896(define-public librocket
9897 (package
9898 (name "librocket")
9899 (version "1.3.0.0")
9900 (source
9901 (origin
9902 (method git-fetch)
9903 (uri
9904 (git-reference
9905 (url "https://github.com/libRocket/libRocket")
9906 (commit (string-append "release-" version))))
9907 (file-name (git-file-name name version))
9908 (sha256
9909 (base32 "1n6gq007vqijyfasfnfg6c8d2rc9qarl4bhzbgkz062m4h5izlfs"))))
9910 (build-system cmake-build-system)
9911 (arguments
9912 `(#:tests? #f ; No tests.
9913 #:phases
9914 (modify-phases %standard-phases
9915 (add-after 'unpack 'chdir
9916 (lambda _
9917 (chdir "Build"))))))
9918 (inputs
9919 (list freetype))
9920 (home-page "https://github.com/libRocket/libRocket") ; http://librocket.com/ is down.
9921 (synopsis "HTML/CSS user interface library")
9922 (description "libRocket is a C++ user interface package based on the HTML
9923and CSS standards. libRocket uses the open standards XHTML1.0 and
9924CSS2.0 (while borrowing features from HTML5 and CSS3), and extends them with
9925features suited towards real-time applications. It is designed as a complete
9926solution for any project's interface needs:
9927
9928@itemize
9929@item Dynamic layout system.
9930@item Efficient application-wide styling, with a custom-built templating engine.
9931@item Fully featured control set: buttons, sliders, drop-downs, etc.
9932@item Runtime visual debugging suite.
9933@item Easily integrated and extensible with Python or Lua scripting.
9934@end itemize\n")
9935 (license license:expat)))
9936
9937(define-public gmid
9938 (package
9939 (name "gmid")
9940 (version "2.1.1")
9941 (source (origin
9942 (method url-fetch)
9943 (uri (string-append
9944 "https://github.com/omar-polo/gmid/releases/download/"
9945 version "/gmid-" version ".tar.gz"))
9946 (sha256
9947 (base32
9948 "1gy41858xxgbvngw7b162sq8vddd104a3cdd53pp2vk1f91gxc4y"))))
9949 (build-system gnu-build-system)
9950 (arguments
9951 (list #:test-target "regress"
9952 #:phases
9953 #~(modify-phases %standard-phases
9954 (replace 'configure
9955 (lambda _
9956 (setenv "CC" #$(cc-for-target))
9957 (invoke "./configure"
9958 (string-append "PREFIX=" #$output)))))))
9959 (native-inputs (list bison
9960 coreutils
9961 flex
9962 pkg-config
9963 procps))
9964 (inputs (list libevent libressl))
9965 (home-page "https://gmid.omarpolo.com/")
9966 (synopsis "Simple and secure Gemini server")
9967 (description "@command{gmid} is a fast Gemini server written with security
9968in mind. It has features such as:
9969@itemize
9970@item reload the running configuration without interruption
9971@item automatic redirect/error pages
9972@item IRI support (RFC3987)
9973@item reverse proxying
9974@item CGI and FastCGI support
9975@item virtual hosts
9976@item location rules
9977@item event-based asynchronous I/O model
9978@item low memory footprint.
9979@end itemize")
9980 (license license:isc)))
9981
9982(define-public kiln
9983 (package
9984 (name "kiln")
9985 (version "0.4.1")
9986 (source (origin
9987 (method git-fetch)
9988 (uri (git-reference
9989 (url "https://git.sr.ht/~adnano/kiln")
9990 (commit version)))
9991 (file-name (git-file-name name version))
9992 (sha256
9993 (base32
9994 "1ynb079jsyv6viwdksavwar5lqj84ssfw39dl5da98z683xrvch5"))))
9995 (build-system go-build-system)
9996 (arguments
9997 (list
9998 #:import-path "git.sr.ht/~adnano/kiln"
9999 #:install-source? #f
10000 #:phases
10001 #~(modify-phases %standard-phases
10002 (add-after 'install 'install-man
10003 (lambda _
10004 (let ((man1 (string-append #$output "/share/man/man1")))
10005 (system (string-append
10006 "scdoc"
10007 "< src/git.sr.ht/~adnano/kiln/docs/kiln.1.scd"
10008 "> kiln.1"))
10009 (install-file "kiln.1" man1)))))))
10010 (native-inputs
10011 (list scdoc))
10012 (propagated-inputs
10013 (list go-github-com-google-shlex
10014 go-github-com-pelletier-go-toml
10015 go-gopkg-in-yaml-v3))
10016 (home-page "https://kiln.adnano.co/")
10017 (synopsis "Simple static site generator")
10018 (description
10019 "Kiln takes a different approach to building static sites.
10020Instead of packing all functionality into kiln itself, the core is lightweight
10021and can be extended with the use of external commands.")
10022 (license license:expat)))
10023
10024(define-public xoa
10025 (package
10026 (name "xoa")
10027 (version "0.5.1")
10028 (source
10029 (origin
10030 (method fossil-fetch)
10031 (uri (fossil-reference
10032 (uri "https://chim.loan/xoa")
10033 (check-in version)))
10034 (sha256 (base32 "1dl274bl88nhcjp4si2wm49nlsidg0222yy7w2dzfdvjrn0nm20n"))
10035 (modules '((guix build utils)))
10036 (snippet #~(delete-file-recursively "doc/djot")))) ;bundled docs
10037 (build-system gnu-build-system)
10038 (arguments
10039 (list
10040 #:tests?
10041 #f ;no test
10042 #:make-flags
10043 #~(list (string-append "PREFIX=" #$output))
10044 #:phases
10045 #~(modify-phases %standard-phases
10046 (delete 'configure)
10047 (add-after 'install 'wrap
10048 (lambda* (#:key inputs #:allow-other-keys)
10049 (let ((program (string-append #$output "/bin/xoa")))
10050 (substitute* program
10051 (("eqn( -T MathML )" all args)
10052 (string-append (search-input-file inputs "bin/eqn")
10053 args)))
10054 (wrap-program program
10055 `("GUIX_LUA_CPATH" ";" = (,(getenv "GUIX_LUA_CPATH")))
10056 `("GUIX_LUA_PATH" ";" = (,(getenv "GUIX_LUA_PATH"))))))))))
10057 (native-inputs
10058 (list findutils help2man))
10059 (inputs
10060 (list bash-minimal
10061 fennel
10062 groff ;for eqn
10063 lua
10064 lua-djot
10065 lua-filesystem
10066 lua-scintillua))
10067 (home-page "https://chim.loan/xoa")
10068 (synopsis "Basic static website generator")
10069 (description
10070 "Xoa is a basic generator of static websites. It takes care
10071of rendering the content of web feeds and pages, while the user defines
10072the directory and document structures.")
10073 (license (list license:cc0 ;manual page
10074 license:agpl3+))))
10075
10076(define-public siege
10077 (package
10078 (name "siege")
10079 (version "4.1.7")
10080 (source (origin
10081 (method url-fetch)
10082 (uri (string-append "http://download.joedog.org/siege/siege-"
10083 version ".tar.gz"))
10084 (sha256
10085 (base32
10086 "09ihp4sycjm8ixd0k4c7lyni4b0w2nh8gghdss1r75srs7nhq57c"))))
10087 (build-system gnu-build-system)
10088 (arguments
10089 '(#:configure-flags (list (string-append "--with-zlib="
10090 (assoc-ref %build-inputs "zlib"))
10091 (string-append "--with-ssl="
10092 (assoc-ref %build-inputs
10093 "openssl")))))
10094 (inputs (list openssl zlib))
10095 (home-page "https://www.joedog.org/siege-home/")
10096 (synopsis "HTTP/FTP load tester and benchmarking utility")
10097 (description
10098 "Siege is a multi-threaded HTTP/FTP load tester and benchmarking utility. It
10099can stress test a single URL with a user defined number of simulated users, or
10100it can read many URLs into memory and stress them simultaneously. The program
10101reports the total number of hits recorded, bytes transferred, response time,
10102concurrency, and return status.")
10103 ;; GPLv3+ with OpenSSL linking exception.
10104 (license license:gpl3+)))
10105
10106(define-public hurl
10107 (package
10108 (name "hurl")
10109 (version "8.0.1")
10110 (source
10111 (origin
10112 ;; The crates.io tarball does not include the hurlfmt crate.
10113 (method git-fetch)
10114 (uri (git-reference
10115 (url "https://github.com/Orange-OpenSource/hurl")
10116 (commit version)))
10117 (file-name (git-file-name name version))
10118 (sha256
10119 (base32 "0wsw9khfznc638qzp8zx2zwgnrg5d160ky5gnslwm9frz3p5hp0d"))))
10120 (build-system cargo-build-system)
10121 (arguments
10122 (list
10123 #:install-source? #f
10124 #:cargo-install-paths ''("packages/hurl" "packages/hurlfmt")
10125 #:cargo-test-flags
10126 '(list
10127 ;; Excluding doctests since rust-1.93 does not support them.
10128 "--lib" "--bins" "--tests")
10129 #:phases
10130 #~(modify-phases %standard-phases
10131 (add-after 'unpack 'relax-rust-version
10132 (lambda _
10133 ;; Upstream requires the latest stable Rust.
10134 (substitute* '("packages/hurl/Cargo.toml"
10135 "packages/hurlfmt/Cargo.toml")
10136 (("rust-version = \"1.95.0\"")
10137 "rust-version = \"1.93.0\""))))
10138 (add-before 'check 'start-test-server
10139 (lambda _
10140 ;; The integration tests expect a Flask test server
10141 ;; listening on port 8000.
10142 (with-directory-excursion "integration/hurl"
10143 (mkdir-p "build")
10144 (spawn "python3"
10145 '("python3" "server.py"
10146 "--host" "127.0.0.1" "--port" "8000")))
10147 ;; Wait for the server to come up.
10148 (let loop ((attempts 30))
10149 (unless (false-if-exception
10150 (let ((s (socket PF_INET SOCK_STREAM 0)))
10151 (connect s AF_INET
10152 (inet-pton AF_INET "127.0.0.1") 8000)
10153 (close-port s)))
10154 (when (zero? attempts)
10155 (error "test server did not start"))
10156 (sleep 1)
10157 (loop (1- attempts))))))
10158 (add-before 'install 'generate-man-pages
10159 (lambda _
10160 ;; Build the man pages from their Markdown sources.
10161 (for-each (lambda (name)
10162 (with-output-to-file (string-append
10163 "docs/manual/" name ".1")
10164 (lambda ()
10165 (invoke "python3" "bin/docs/build_man.py"
10166 (string-append
10167 "docs/manual/" name ".md")))))
10168 '("hurl" "hurlfmt"))))
10169 (add-before 'install 'generate-completions
10170 (lambda _
10171 ;; Generate the shell completions from the option spec
10172 ;; files, using upstream's script. This runs only the
10173 ;; completion part of generate_all.py, since the other
10174 ;; parts rewrite the source tree.
10175 (setenv "PYTHONPATH" "bin/spec/options")
10176 (invoke "python3" "-c"
10177 "import generate_all as g
10178for name in ('hurl', 'hurlfmt'):
10179 g.generate_completion_files(name, g.get_option_files('docs/spec/options/' + name))")))
10180 (add-after 'install 'install-man-pages
10181 (lambda _
10182 (let ((man1 (string-append #$output "/share/man/man1")))
10183 (for-each (lambda (page)
10184 (install-file page man1))
10185 '("docs/manual/hurl.1" "docs/manual/hurlfmt.1")))))
10186 (add-after 'install 'install-completions
10187 (lambda _
10188 (let ((bash (string-append #$output
10189 "/share/bash-completion/completions"))
10190 (fish (string-append #$output
10191 "/share/fish/vendor_completions.d"))
10192 (zsh (string-append #$output "/share/zsh/site-functions")))
10193 (for-each (lambda (name)
10194 ;; Bash completion files must be named after
10195 ;; the command, without the .bash extension.
10196 (mkdir-p bash)
10197 (copy-file (string-append "completions/"
10198 name ".bash")
10199 (string-append bash "/" name))
10200 (install-file (string-append "completions/"
10201 name ".fish")
10202 fish)
10203 (install-file (string-append "completions/_"
10204 name)
10205 zsh))
10206 '("hurl" "hurlfmt"))))))))
10207 (native-inputs
10208 (list clang
10209 pkg-config
10210 python
10211 python-flask
10212 python-waitress))
10213 (inputs
10214 (cons* curl
10215 libxml2
10216 openssl
10217 zlib
10218 (cargo-inputs 'hurl)))
10219 (home-page "https://hurl.dev")
10220 (synopsis "Run and test HTTP requests")
10221 (description
10222 "Hurl is a command line tool that runs HTTP requests defined in a plain
10223text format. It can chain requests, capture values and evaluate queries on
10224headers and body response. This package also provides @command{hurlfmt},
10225a formatter and linter for Hurl files.")
10226 (license license:asl2.0)))
10227
10228(define-public gmnisrv
10229 (package
10230 (name "gmnisrv")
10231 (version "1.0")
10232 (home-page "https://git.sr.ht/~sircmpwn/gmnisrv")
10233 (source
10234 (origin
10235 (method git-fetch)
10236 (uri (git-reference
10237 (url home-page)
10238 (commit version)))
10239 (sha256
10240 (base32 "115r1dw9k08r2nvygy8ll21qvsc5kmzi5jcqm7g7r8q8hifxglap"))
10241 (file-name (git-file-name name version))))
10242 (build-system gnu-build-system)
10243 (arguments
10244 `(#:tests? #f ;no check target
10245 #:configure-flags (list "--sysconfdir=/etc"
10246 (string-append "--with-mimedb="
10247 (assoc-ref %build-inputs "mailcap")
10248 "/etc/mime.types"))
10249 #:make-flags (list (string-append "CC=" ,(cc-for-target)))))
10250 (inputs
10251 (list mailcap openssl))
10252 (native-inputs
10253 (list pkg-config scdoc))
10254 (synopsis "Simple Gemini protocol server")
10255 (description "gmnisrv is a simple Gemini protocol server written in C.")
10256 (license (list license:gpl3+
10257 license:bsd-3)))) ;; for ini.c and ini.h
10258
10259(define-public kineto
10260 (package
10261 (name "kineto")
10262 (properties '((commit . "edd4fe31f16f9eb9565d2b6a329738ceedea8de9")
10263 (revision . "0")
10264 (go-pseudo-version . "0.0.0-20250122093821-1f4e0667bc21")))
10265 (version (git-version "0.0.0"
10266 (assoc-ref properties 'revision)
10267 (assoc-ref properties 'commit)))
10268 (source
10269 (origin
10270 (method git-fetch)
10271 (uri (git-reference
10272 (url "https://git.sr.ht/~sircmpwn/kineto")
10273 (commit (assoc-ref properties 'commit))))
10274 (file-name (git-file-name name version))
10275 (sha256
10276 (base32 "1dldfz5irdhaza6dj2bdv99c8bwprl34n9rvlyvvvd8mpvsl6459"))))
10277 (build-system go-build-system)
10278 (arguments
10279 (list
10280 #:install-source? #f
10281 #:import-path "git.sr.ht/~sircmpwn/kineto/"))
10282 (native-inputs
10283 (list go-git-sr-ht-sircmpwn-getopt
10284 go-git-sr-ht-adnano-go-gemini))
10285 (home-page "https://git.sr.ht/~sircmpwn/kineto/")
10286 (synopsis "HTTP proxy for Gemini")
10287 (description
10288 "This is an @acronym{HTTP} to
10289@url{https://gemini.circumlunar.space/,Gemini} proxy designed to provide
10290service for a single domain, i.e. to make your Gemini site available over
10291HTTP. It can proxy to any domain in order to facilitate linking to the rest
10292of Geminispace, but it defaults to a specific domain.")
10293 (license license:gpl3+)))
10294
10295(define-public maildir-rank-addr
10296 (package
10297 (name "maildir-rank-addr")
10298 (version "1.4.1")
10299 (source
10300 (origin
10301 (method git-fetch)
10302 (uri (git-reference
10303 (url "https://github.com/ferdinandyb/maildir-rank-addr")
10304 (commit (string-append "v" version))))
10305 (file-name (git-file-name name version))
10306 (sha256
10307 (base32 "19dhlfb5d8sqayfyv3pj3rnrw3gbkq9vzj7gwcj2g3whx1ayy86y"))))
10308 (build-system go-build-system)
10309 (arguments
10310 (list
10311 #:install-source? #f
10312 #:import-path "github.com/ferdinandyb/maildir-rank-addr"))
10313 (native-inputs
10314 (list go-github-com-emersion-go-message
10315 go-github-com-emersion-go-mbox
10316 go-github-com-mitchellh-go-homedir
10317 go-github-com-spf13-pflag
10318 go-github-com-spf13-viper
10319 go-github-com-stretchr-testify
10320 go-golang-org-x-text))
10321 (home-page "https://github.com/ferdinandyb/maildir-rank-addr")
10322 (synopsis "Generate an addressbook from locally available email")
10323 (description
10324 "This package generates a ranked addressbook from your locally available
10325email. It can be used in MUA's like @url{http://aerc-mail.org, aerc} or
10326@url{http://www.mutt.org/,mutt} by grepping the list.")
10327 (license license:expat)))
10328
10329(define-public libzim
10330 (let* ((testsuite-version "0.9.0")
10331 (testsuite-file-name (git-file-name "zim-testing-suite"
10332 testsuite-version)))
10333 (package
10334 (name "libzim")
10335 (version "9.8.1")
10336 (source (origin
10337 (method git-fetch)
10338 (uri (git-reference
10339 (url "https://github.com/openzim/libzim")
10340 (commit version)))
10341 (sha256
10342 (base32
10343 "0daczgl9jyj52mjh2c79zh0zxij77rcsfmzzkpia9vpkvbf021ay"))
10344 (file-name (git-file-name name version))))
10345 (build-system meson-build-system)
10346 (arguments
10347 (list
10348 #:configure-flags
10349 #~(list
10350 (string-append "-Dtest_data_dir="
10351 #+(this-package-native-input testsuite-file-name)
10352 "/data"))))
10353 (propagated-inputs
10354 ;; In Requires.private of libzim.pc.
10355 (list icu4c
10356 xapian
10357 xz
10358 (list zstd "lib") ))
10359 (inputs
10360 (list python-wrapper ; for libzim-compile-resources
10361 (list util-linux "lib")))
10362 (native-inputs
10363 (list pkg-config
10364 googletest
10365 ;; The testsuite is a pre-generated artifact that can be
10366 ;; regenerated from the upstream repository, but it
10367 ;; explicitely advises against it. Use it pregenerated.
10368 ;; Using git-fetch allows us to avoid additional unpacking.
10369 (origin
10370 (method git-fetch)
10371 (uri (git-reference
10372 (url "https://github.com/openzim/zim-testing-suite")
10373 (commit testsuite-version)))
10374 (file-name testsuite-file-name)
10375 (sha256
10376 (base32 "14ac58i0zzvzssl5fyykc494jlw4ia8dhfr10hmi8h3gfn08dm62")))))
10377 (home-page "https://wiki.openzim.org/wiki/Main_Page")
10378 (synopsis "Reference implementation of the ZIM specification")
10379 (description "The openZIM project proposes offline storage solutions for
10380content coming from the Web. The zimlib is the standard implementation of the
10381ZIM specification. It is a library which implements the read and write method
10382for ZIM files.")
10383 (license license:gpl2))))
10384
10385(define-public kiwix-lib
10386 (package
10387 (name "kiwix-lib")
10388 (version "14.2.0")
10389 (home-page "https://github.com/kiwix/kiwix-lib/")
10390 (source (origin
10391 (method git-fetch)
10392 (uri (git-reference
10393 (url home-page)
10394 (commit version)))
10395 (sha256
10396 (base32
10397 "17chyyrbj239fd4iwcnb01yyk7p1zyxbn7fw1a9pr7r05ngsax1s"))
10398 (file-name (git-file-name name version))))
10399 (build-system meson-build-system)
10400 (arguments
10401 `(#:phases
10402 (modify-phases %standard-phases
10403 (add-before 'configure 'fix-paths-and-includes
10404 (lambda* (#:key inputs #:allow-other-keys)
10405 (substitute* "src/aria2.cpp"
10406 (("ARIA2_CMD \"aria2c\"")
10407 (string-append "ARIA2_CMD \""
10408 (search-input-file inputs "/bin/aria2c")
10409 "\""))))))))
10410 (inputs
10411 (list aria2
10412 curl
10413 icu4c
10414 libmicrohttpd
10415 libzim
10416 pugixml
10417 xapian
10418 zlib
10419 `(,zstd "lib")))
10420 (native-inputs
10421 (list cpp-mustache
10422 pkg-config
10423 ;; for kiwix-compile-resources
10424 python-wrapper))
10425 (synopsis "Common code base for all Kiwix ports")
10426 (description "The Kiwix library provides the Kiwix software suite core.
10427It contains the code shared by all Kiwix ports.")
10428 (license license:gpl3)))
10429
10430(define-public kiwix-lib-13
10431 (package
10432 (inherit kiwix-lib)
10433 (name "kiwix-lib")
10434 (version "13.1.0")
10435 (source (origin
10436 (method git-fetch)
10437 (uri (git-reference
10438 (url "https://github.com/kiwix/kiwix-lib/")
10439 (commit version)))
10440 (file-name (git-file-name name version))
10441 (sha256
10442 (base32
10443 "0mgzmqar70rj83x27a4zh7qr6yl5pi95g6i3fvvxysdjy76v18qc"))))
10444 (arguments
10445 (substitute-keyword-arguments arguments
10446 ((#:phases phases)
10447 #~(modify-phases #$phases
10448 (add-before 'configure 'set-cflags
10449 (lambda _
10450 ;; Needed due to deprecation in libzim
10451 (setenv "CPPFLAGS" "-Wno-error=deprecated-declarations")))))))))
10452
10453(define-public kiwix-desktop
10454 (package
10455 (name "kiwix-desktop")
10456 (version "2.5.1")
10457 (source (origin
10458 (method url-fetch)
10459 (uri (string-append
10460 "https://download.kiwix.org/release/kiwix-desktop/kiwix-desktop-"
10461 version
10462 ".tar.gz"))
10463 (sha256
10464 (base32
10465 "14dgv92fpb9nzvqa59446818gzhf19sn32f5vgvxrb9llbn6z4rh"))))
10466 (build-system qt-build-system)
10467 (arguments
10468 (list
10469 #:qtbase qtbase
10470 #:tests? #f ; no tests
10471 #:modules '((guix build qt-build-system)
10472 ((guix build gnu-build-system) #:prefix gnu:)
10473 (guix build utils))
10474 #:phases
10475 #~(modify-phases %standard-phases
10476 (replace 'configure
10477 (lambda* (#:key outputs #:allow-other-keys)
10478 (invoke "qmake"
10479 (string-append "PREFIX="
10480 (assoc-ref outputs "out")))))
10481 (replace 'build (assoc-ref gnu:%standard-phases 'build))
10482 (replace 'install (assoc-ref gnu:%standard-phases 'install)))))
10483 (inputs
10484 (list bash-minimal
10485 curl
10486 icu4c
10487 kiwix-lib
10488 libmicrohttpd
10489 libzim
10490 pugixml
10491 qtbase
10492 qtdeclarative
10493 qtsvg
10494 qtwebchannel
10495 qtwebengine
10496 qtwayland
10497 xapian
10498 zlib
10499 `(,zstd "lib")))
10500 (native-inputs
10501 (list pkg-config
10502 qtbase))
10503 (home-page "https://wiki.kiwix.org/wiki/Software")
10504 (synopsis "Viewer and manager of ZIM files")
10505 (description "Kiwix Desktop allows you to enjoy a lot of different content
10506offline (such as Wikipedia), without any access to Internet.")
10507 (license license:gpl3)))
10508
10509(define-public kiwix-tools
10510 (package
10511 (name "kiwix-tools")
10512 (version "3.8.2")
10513 (source (origin
10514 (method url-fetch)
10515 (uri (string-append "https://download.kiwix.org/release/"
10516 "kiwix-tools/kiwix-tools-" version ".tar.xz"))
10517 (sha256
10518 (base32
10519 "1y99r4vg8d3wy16s5f1i5j1prksv5g1cxxj6ysprhp7vhiczhf0j"))))
10520 (build-system meson-build-system)
10521 (inputs
10522 (list curl
10523 icu4c
10524 kiwix-lib
10525 libmicrohttpd
10526 libzim
10527 pugixml
10528 docopt-cpp
10529 xapian
10530 zlib
10531 `(,zstd "lib")))
10532 (native-inputs
10533 (list pkg-config))
10534 (home-page "https://wiki.kiwix.org/wiki/Software")
10535 (synopsis "Kiwix command line tools")
10536 (description "The Kiwix tools are a collection of Kiwix-related command line
10537tools:
10538@itemize
10539@item kiwix-manage: Manage XML based library of ZIM files
10540@item kiwix-read: Read ZIM file content
10541@item kiwix-search: Fulltext search in ZIM files
10542@item kiwix-serve: HTTP daemon serving ZIM files
10543@end itemize\n")
10544 (license license:gpl3+)))
10545
10546(define-public offpunk
10547 (let ((commit "947f813de43d07590a7b60e760cd3df85223af52")
10548 (revision "1"))
10549 (package
10550 (name "offpunk")
10551 (version (git-version "3.0" revision commit))
10552 (source
10553 (origin
10554 (method git-fetch)
10555 (uri (git-reference
10556 (url "https://git.sr.ht/~lioploum/offpunk/")
10557 (commit commit)))
10558 (file-name (git-file-name name version))
10559 (sha256
10560 (base32 "0jvxqw53f670d4ky99pdq24ljmya49bx02lc26gd1a3avcwfhisc"))))
10561 (build-system pyproject-build-system)
10562 (arguments
10563 (list
10564 #:phases
10565 #~(modify-phases %standard-phases
10566 (add-after 'unpack 'patch-external-programs
10567 (lambda* (#:key inputs #:allow-other-keys)
10568 (substitute* "offutils.py"
10569 ((": \"\\b(grep|xdg-open|less|chafa|file)\\b\"" _ program)
10570 (string-append ": \""
10571 (search-input-file inputs
10572 (format #f "bin/~a"
10573 program)) "\""))))))))
10574 (native-inputs (list gettext-minimal python-hatchling python-pytest
10575 python-pytest-mock python-hatch-requirements-txt))
10576 (inputs (list python-beautifulsoup4
10577 python-chardet
10578 python-cryptography
10579 python-feedparser
10580 python-readability-lxml
10581 python-requests
10582 python-setproctitle
10583 chafa
10584 file
10585 grep
10586 less
10587 xdg-utils))
10588 (synopsis "Offline first command-line browser for the smolnet")
10589 (description
10590 "A command-line and offline-first smolnet browser/feed reader
10591for Gemini, Gopher, Spartan and Web.
10592
10593The goal of Offpunk is to be able to synchronise your content once (a day, a
10594week, a month) and then browse/organise it while staying disconnected.")
10595 (home-page "https://offpunk.net/")
10596 (license license:agpl3+))))
10597
10598(define-public uriparser
10599 (package
10600 (name "uriparser")
10601 (version "1.0.2")
10602 (source (origin
10603 (method git-fetch)
10604 (uri (git-reference
10605 (url "https://github.com/uriparser/uriparser")
10606 (commit (string-append "uriparser-" version))))
10607 (file-name (git-file-name name version))
10608 (sha256
10609 (base32
10610 "1a4032wn6p9mv5lizh5rpg5gwvq69bk7zfqix7vjv5cap1zqvk84"))))
10611 (build-system cmake-build-system)
10612 (native-inputs (list googletest doxygen graphviz))
10613 (arguments (if (%current-target-system)
10614 (list #:configure-flags #~(list "-DURIPARSER_BUILD_TESTS=OFF"))
10615 (list #:configure-flags #~(list "-DURIPARSER_BUILD_TESTS=ON"))))
10616 (synopsis "Strictly RFC 3986 compliant URI parsing and handling library")
10617 (description "uriparser is a strictly RFC 3986 compliant URI parsing and
10618handling library written in C89 (\"ANSI C\"). uriparser is fast and supports
10619Unicode.")
10620 (home-page "https://uriparser.github.io/")
10621 (license license:bsd-3)))
10622
10623(define-public quark
10624 ;; No releases yet
10625 (let ((revision "0")
10626 (commit "c6a9055e5a30be570e30da8d216c39662c3a3f99"))
10627 (package
10628 (name "quark")
10629 (version (git-version "0.0.0" revision commit))
10630 (source (origin
10631 (method git-fetch)
10632 (uri (git-reference
10633 (url "https://git.suckless.org/quark/")
10634 (commit commit)))
10635 (file-name (git-file-name name version))
10636 (sha256
10637 (base32
10638 "1znvnr30xi5vgd6n3wvgv9pwj992zpzzjk0fmq28ydf1l6kqvkm7"))))
10639 (build-system gnu-build-system)
10640 (arguments
10641 (list #:tests? #f ; no tests
10642 #:make-flags
10643 #~(list (string-append "CC=" #$(cc-for-target))
10644 (string-append "PREFIX=" (assoc-ref %outputs "out")))
10645 #:phases
10646 #~(modify-phases %standard-phases
10647 (delete 'configure)))) ; no configure script
10648 (home-page "https://tools.suckless.org/quark/")
10649 (synopsis "Small and simple HTTP GET/HEAD-only web server for static
10650content")
10651 (description "Quark is an extremely small and simple HTTP GET/HEAD only
10652web server for static content. TLS is not natively supported and should be
10653provided by a TLS reverse proxy (e.g. tlstunnel, hitch or stunnel).")
10654 (license license:isc)
10655
10656 ;; XXX: Ignore this CVE to work around a name clash with the unrelated
10657 ;; "cpe:2.3:a:comelz:quark" package. The proper fix is for (guix cve)
10658 ;; to account for "vendor names".
10659 (properties '((lint-hidden-cve . ("CVE-2019-15520")))))))
10660
10661(define-public go-webring
10662 (package
10663 (name "go-webring")
10664 (properties '((commit . "2a370aeeb9a0c434268371a7af688fac96887e95")
10665 (revision . "1")
10666 (go-pseudo-version . "0.0.0-20251130195908-2a370aeeb9a0")))
10667 (version (git-version "0.0.0"
10668 (assoc-ref properties 'revision)
10669 (assoc-ref properties 'commit)))
10670 (source
10671 (origin
10672 (method git-fetch)
10673 (uri (git-reference
10674 (url "https://git.sr.ht/~amolith/go-webring")
10675 (commit (assoc-ref properties 'commit))))
10676 (file-name (git-file-name name version))
10677 (sha256
10678 (base32 "199jg1fv5ki4ssc08ndsa5irdf703kizfnvsf2q5isapna5kvgx3"))))
10679 (build-system go-build-system)
10680 (arguments
10681 (list #:import-path "git.sr.ht/~amolith/go-webring"
10682 #:install-source? #f))
10683 (native-inputs (list go-github-com-spf13-pflag))
10684 (home-page "https://git.sr.ht/~amolith/go-webring")
10685 (synopsis "Simple webring implementation")
10686 (description
10687 "@code{go--webring} provides a simple webring implementation as used by
10688the Fediring.")
10689 (license (list license:cc0 license:bsd-2))))
10690
10691(define-public awslogs
10692 (package
10693 (name "awslogs")
10694 (version "0.15.0")
10695 (source (origin
10696 (method url-fetch)
10697 (uri (pypi-uri "awslogs" version))
10698 (sha256
10699 (base32
10700 "1maxahp9la2jdcgrgf3abq4jjr80jg9b354xd2hcw0q73jxj7whr"))))
10701 (build-system pyproject-build-system)
10702 (native-inputs
10703 (list python-pytest
10704 python-setuptools))
10705 (propagated-inputs
10706 (list python-boto3
10707 python-jmespath
10708 python-dateutil
10709 python-termcolor))
10710 (home-page "https://github.com/jorgebastida/awslogs")
10711 (synopsis "Command line tool to read AWS CloudWatch logs")
10712 (description
10713 "This package provides awslogs, a simple command line tool to download
10714and read AWS CloudWatch logs. The same functionality is available from
10715@code{aws logs tail}.")
10716 (license license:bsd-3)))
10717
10718(define-public lexbor
10719 (package
10720 (name "lexbor")
10721 (version "2.6.0")
10722 (source (origin
10723 (method git-fetch)
10724 (uri (git-reference
10725 (url "https://github.com/lexbor/lexbor")
10726 (commit (string-append "v" version))))
10727 (file-name (git-file-name name version))
10728 (sha256
10729 (base32
10730 "033hna4b9lh0675vri140nhnqbyj4vsa02j5r17fmdza6594islp"))))
10731 (build-system cmake-build-system)
10732 (arguments
10733 (list #:configure-flags #~(list "-DLEXBOR_BUILD_TESTS=ON"
10734 "-DLEXBOR_BUILD_TESTS_CPP=ON")))
10735 (home-page "https://lexbor.com/")
10736 (synopsis "@code{HTML} and @code{CSS} renderer written in @code{C}")
10737 (description
10738 "This package provides @code{Lexbor}, a high-performance, lightweight
10739@code{HTML}/@code{CSS} engine implemented entirely in @code{C99} with no external
10740dependencies. It's primarily usage is intended for projects that need to process
10741web content, but don't require a full browser environment.")
10742 (license license:asl2.0)))
10743
10744(define-public orcania
10745 (package
10746 (name "orcania")
10747 (version "2.3.2")
10748 (source (origin
10749 (method git-fetch)
10750 (uri (git-reference
10751 (url "https://github.com/babelouest/orcania")
10752 (commit (string-append "v" version))))
10753 (file-name (git-file-name name version))
10754 (sha256
10755 (base32
10756 "0dhczbhwvf3f9mj38qm46j10rpr77yz1np68mabfw8zcfwhr0pn4"))))
10757 (build-system cmake-build-system)
10758 (arguments
10759 (list #:configure-flags #~(list "-DBUILD_ORCANIA_TESTING=ON"
10760 "-DBUILD_ORCANIA_DOCUMENTATION=ON")
10761 #:phases #~(modify-phases %standard-phases
10762 (add-after 'build 'build-doc
10763 (lambda _
10764 (invoke "make" "doc")))
10765 (add-after 'install 'install-doc
10766 (lambda _
10767 (let ((doc (string-append #$output
10768 "/share/doc/orcania")))
10769 (mkdir-p doc)
10770 (copy-recursively "../source/doc/html" doc)))))))
10771 (native-inputs (list check doxygen subunit))
10772 (home-page "https://babelouest.github.io/orcania/")
10773 (synopsis "Collection of C functions for Ulfius")
10774 (description
10775 "Orcania is a library with functions that can be shared among C programs.
10776It is intended to provide low-level functionalities for the Ulfius and Yder
10777libraries.")
10778 (license license:lgpl2.1)))
10779
10780(define-public yder
10781 (package
10782 (name "yder")
10783 (version "1.4.19")
10784 (source (origin
10785 (method git-fetch)
10786 (uri (git-reference
10787 (url "https://github.com/babelouest/yder")
10788 (commit (string-append "v" version))))
10789 (file-name (git-file-name name version))
10790 (sha256
10791 (base32
10792 "02jgrqby39ykfdhc7z0bh3x5aqisqybz6lnvn7msh9wqbj5zvzi8"))))
10793 (build-system cmake-build-system)
10794 (arguments
10795 (list #:configure-flags #~(list "-DWITH_JOURNALD=OFF"
10796 "-DBUILD_YDER_TESTING=ON"
10797 "-DBUILD_YDER_DOCUMENTATION=ON")
10798 #:phases #~(modify-phases %standard-phases
10799 (add-after 'build 'build-doc
10800 (lambda _
10801 (invoke "make" "doc")))
10802 (add-after 'install 'install-doc
10803 (lambda _
10804 (let ((doc (string-append #$output
10805 "/share/doc/yder")))
10806 (mkdir-p doc)
10807 (copy-recursively "../source/doc/html" doc)))))))
10808 (native-inputs (list check doxygen subunit))
10809 (inputs (list orcania))
10810 (home-page "https://babelouest.github.io/yder/")
10811 (synopsis "Logging library for C applications")
10812 (description
10813 "Yder is a logging library written in C. It can log messages to the
10814console, a file, syslog, journald, or a callback function.")
10815 (license license:lgpl2.1)))
10816
10817(define-public yoga
10818 (package
10819 (name "yoga")
10820 (version "3.2.1")
10821 (source (origin
10822 (method git-fetch)
10823 (uri (git-reference
10824 (url "https://github.com/facebook/yoga")
10825 (commit (string-append "v" version))))
10826 (file-name (git-file-name name version))
10827 (sha256
10828 (base32
10829 "09g2kispng520mcaky87lkpj7k1lscsz2jyv05cjxzfrwwf4pfyb"))))
10830 (build-system cmake-build-system)
10831 (arguments
10832 (list #:phases
10833 #~(modify-phases %standard-phases
10834 (add-after 'unpack 'use-system-googletest
10835 (lambda _
10836 (substitute* "tests/CMakeLists.txt"
10837 (("FetchContent_MakeAvailable[(]googletest[)]")
10838 "find_package(GTest REQUIRED)"))))
10839 (replace 'check
10840 (lambda* (#:key tests? #:allow-other-keys)
10841 (when tests?
10842 (invoke "./tests/yogatests")))))))
10843 (inputs (list googletest))
10844 (home-page "https://github.com/facebook/yoga/")
10845 (synopsis "Flexbox layout engine")
10846 (description
10847 "Yoga is an embeddable and performant flexbox layout engine with bindings
10848for multiple languages.")
10849 (license license:expat)))
10850
10851(define-public ulfius
10852 (package
10853 (name "ulfius")
10854 (version "2.7.13")
10855 (source (origin
10856 (method git-fetch)
10857 (uri (git-reference
10858 (url "https://github.com/babelouest/ulfius")
10859 (commit (string-append "v" version))))
10860 (file-name (git-file-name name version))
10861 (sha256
10862 (base32
10863 "1dfwdpqmqki63dddi53bfv6jd0kzv8gh2w1lxsv6mzk3sxl6qakf"))))
10864 (build-system cmake-build-system)
10865 (arguments
10866 (list #:configure-flags #~(list "-DBUILD_ULFIUS_TESTING=ON"
10867 "-DBUILD_ULFIUS_DOCUMENTATION=ON")
10868 #:phases #~(modify-phases %standard-phases
10869 (add-after 'build 'build-doc
10870 (lambda _
10871 (invoke "make" "doc")))
10872 (replace 'check
10873 (lambda* (#:key tests? parallel-tests? #:allow-other-keys)
10874 (when tests?
10875 (let ((job-count (number->string
10876 (or (and parallel-tests?
10877 (parallel-job-count))
10878 1))))
10879 ;; Skip failing tests that try to start a server.
10880 (invoke "ctest" "--output-on-failure"
10881 "-j" job-count "-E"
10882 "(core|framework|example_callbacks)")))))
10883 (add-after 'install 'install-doc
10884 (lambda _
10885 (let ((doc (string-append #$output
10886 "/share/doc/ulfius")))
10887 (mkdir-p doc)
10888 (copy-recursively "../source/doc/html" doc)))))))
10889 (native-inputs (list check doxygen subunit))
10890 (inputs (list zlib))
10891 (propagated-inputs ;for libulfius.pc
10892 (list curl
10893 gnutls
10894 jansson
10895 libgcrypt
10896 libmicrohttpd
10897 orcania
10898 yder))
10899 (home-page "https://babelouest.github.io/ulfius/")
10900 (synopsis "HTTP Framework for REST Applications in C")
10901 (description
10902 "Ulfius is a HTTP Framework library for REST Applications written in C.
10903It is based on GNU libmicrohttpd for the backend web server, Jansson for the
10904JSON manipulation library, and libcurl for the http/smtp client API. It can
10905be used to facilitate creation of web applications in C programs with a small
10906memory footprint, as in embedded systems applications. It can create
10907webservices in HTTP or HTTPS mode, stream data, or implement server
10908websockets.")
10909 (license license:lgpl2.1)))
10910
10911;;;
10912;;; Avoid adding new packages to the end of this file. To reduce the chances
10913;;; of a merge conflict, place them above by existing packages with similar
10914;;; functionality or similar names.
10915;;;