projects/guix·blob python-team · refs

603 lines · 23.6 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2016 Ricardo Wurmus <[email protected]>
3;;; Copyright © 2017 Tobias Geerinckx-Rice <[email protected]>
4;;; Copyright © 2021 Efraim Flashner <[email protected]>
5;;; Copyright © 2023 Wilko Meyer <[email protected]>
6;;;
7;;; This file is part of GNU Guix.
8;;;
9;;; GNU Guix is free software; you can redistribute it and/or modify it
10;;; under the terms of the GNU General Public License as published by
11;;; the Free Software Foundation; either version 3 of the License, or (at
12;;; your option) any later version.
13;;;
14;;; GNU Guix is distributed in the hope that it will be useful, but
15;;; WITHOUT ANY WARRANTY; without even the implied warranty of
16;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17;;; GNU General Public License for more details.
18;;;
19;;; You should have received a copy of the GNU General Public License
20;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
21
22(define-module (gnu packages perl-web)
23 #:use-module ((guix licenses) #:prefix license:)
24 #:use-module (gnu packages)
25 #:use-module (guix packages)
26 #:use-module (gnu packages autotools)
27 #:use-module (gnu packages base)
28 #:use-module (gnu packages compression)
29 #:use-module (gnu packages curl)
30 #:use-module (gnu packages databases)
31 #:use-module (gnu packages dbm)
32 #:use-module (gnu packages gnupg)
33 #:use-module (gnu packages libidn)
34 #:use-module (gnu packages mail)
35 #:use-module (gnu packages networking)
36 #:use-module (gnu packages perl)
37 #:use-module (gnu packages perl-check)
38 #:use-module (gnu packages perl-compression)
39 #:use-module (gnu packages compiler-tools)
40 #:use-module (gnu packages tls)
41 #:use-module (gnu packages web)
42 #:use-module (gnu packages xml)
43 #:use-module (guix build-system copy)
44 #:use-module (guix build-system perl)
45 #:use-module (guix download)
46 #:use-module (guix gexp))
47
48(define-public perl-mojolicious
49 (package
50 (name "perl-mojolicious")
51 (version "9.17")
52 (source
53 (origin
54 (method url-fetch)
55 (uri (string-append "mirror://cpan/authors/id/S/SR/SRI/Mojolicious-"
56 version ".tar.gz"))
57 (sha256
58 (base32
59 "13dxjhr03dhh1f5bbxbb3jiwdv7jby96qqb97l3arf5x043yd9hd"))))
60 (build-system perl-build-system)
61 (home-page "https://mojolicious.org/")
62 (synopsis "Real-time web framework")
63 (description "Back in the early days of the web, many people learned Perl
64because of a wonderful Perl library called @code{CGI}. It was simple enough
65to get started without knowing much about the language and powerful enough to
66keep you going, learning by doing was much fun. While most of the techniques
67used are outdated now, the idea behind it is not. Mojolicious is a new
68endeavor to implement this idea using modern technologies.")
69 (license license:artistic2.0)))
70
71(define-public perl-uri-db
72 (package
73 (name "perl-uri-db")
74 (version "0.19")
75 (source
76 (origin
77 (method url-fetch)
78 (uri (string-append
79 "mirror://cpan/authors/id/D/DW/DWHEELER/URI-db-"
80 version
81 ".tar.gz"))
82 (sha256
83 (base32
84 "0n56xxlw7c39pfar0dxckr9mbmp6yrzk53ic0cb24raiykm9v6f4"))))
85 (build-system perl-build-system)
86 (native-inputs
87 (list perl-module-build))
88 (propagated-inputs
89 (list perl-uri perl-uri-nested))
90 (home-page "https://metacpan.org/release/URI-db")
91 (synopsis "Handle database URIs")
92 (description
93 "This module defines a format for database URIs, and provides a @code{URI}
94class to handle these.")
95 (license license:perl-license)))
96
97(define-public perl-uri-escape
98 (package
99 (name "perl-uri-escape")
100 (version "1.76")
101 (source
102 (origin
103 (method url-fetch)
104 (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/URI-"
105 version ".tar.gz"))
106 (sha256
107 (base32
108 "0gj1aj18k43kmzc3y1zhj5giinf8rksacf757r475xfna0fqxjdj"))))
109 (build-system perl-build-system)
110 (native-inputs
111 (list perl-test-needs))
112 (home-page "https://github.com/libwww-perl/URI")
113 (synopsis "Percent-encode and percent-decode unsafe characters")
114 (description "This module provides functions to percent-encode and
115percent-decode URI strings as defined by RFC 3986. Percent-encoding URI's is
116informally called URI escaping. This is the terminology used by this module,
117which predates the formalization of the terms by the RFC by several years.")
118 (license license:perl-license)))
119
120(define-public perl-uri-nested
121 (package
122 (name "perl-uri-nested")
123 (version "0.10")
124 (source
125 (origin
126 (method url-fetch)
127 (uri (string-append
128 "mirror://cpan/authors/id/D/DW/DWHEELER/URI-Nested-"
129 version
130 ".tar.gz"))
131 (sha256
132 (base32
133 "1bzg6f11m8wfnmycflvp858rs99xknsx8hkip0xcdfjzlqwi75z1"))))
134 (build-system perl-build-system)
135 (native-inputs
136 (list perl-module-build))
137 (propagated-inputs
138 (list perl-uri))
139 (home-page "https://metacpan.org/release/URI-Nested")
140 (synopsis "Nested URIs")
141 (description
142 "@code{URI::Nested} provides support for nested URIs, where the scheme is
143a prefix, and the remainder of the URI is another URI.")
144 (license license:perl-license)))
145
146(define-public perl-mojo-dom58
147 (package
148 (name "perl-mojo-dom58")
149 (version "3.001")
150 (source
151 (origin
152 (method url-fetch)
153 (uri (string-append "mirror://cpan/authors/id/D/DB/DBOOK/Mojo-DOM58-"
154 version ".tar.gz"))
155 (sha256
156 (base32 "15jp9wiczrnvdx8cld0jn43bmj20v5ll6cfzvmd4252k3ra6vchq"))))
157 (build-system perl-build-system)
158 (propagated-inputs (list perl-role-tiny))
159 (home-page "https://metacpan.org/release/Mojo-DOM58")
160 (synopsis "Minimalistic HTML/XML DOM parser with CSS selectors")
161 (description "This package provides a HTML and XML DOM parser. It also
162supports CSS selectors.")
163 (license license:artistic2.0)))
164
165(define-public perl-gravatar-url
166 (package
167 (name "perl-gravatar-url")
168 (version "1.07")
169 (source (origin
170 (method url-fetch)
171 (uri (string-append
172 "mirror://cpan/authors/id/M/MS/MSCHWERN/Gravatar-URL-"
173 version ".tar.gz"))
174 (sha256
175 (base32
176 "1mxnd70xsb7kxd1sf8s7phcds2nf0m8b8asmy3ikv76wzfpbvji3"))))
177 (build-system perl-build-system)
178 (native-inputs (list perl-module-build
179 perl-test-mockrandom
180 perl-test-warn))
181 (propagated-inputs (list perl-net-dns perl-uri))
182 (home-page "https://metacpan.org/release/Gravatar-URL")
183 (synopsis "Make URLs for Gravatars from an email address")
184 (description
185 "This module looks up the Gravatar for any email address by constructing
186a URL to get the image from @url{gravatar.com}. A Gravatar is a Globally
187Recognized Avatar for a given email address. This allows you to have a global
188picture associated with your email address.")
189 (license license:perl-license)))
190
191(define-public perl-io-sessiondata
192 (package
193 (name "perl-io-sessiondata")
194 (version "1.03")
195 (source (origin
196 (method url-fetch)
197 (uri (string-append
198 "mirror://cpan/authors/id/P/PH/PHRED/IO-SessionData-"
199 version ".tar.gz"))
200 (sha256
201 (base32
202 "1p9d77pqy9a8dbgw7h7vmmkg0rlckk19dchd4c8gvcyv7qm73934"))))
203 (build-system perl-build-system)
204 (home-page "https://metacpan.org/release/IO-SessionData")
205 (synopsis "Supporting module for SOAP::Lite")
206 (description
207 "Package extracted from SOAP::Lite. Slightly modified to work on
208multiple platforms.")
209 (license license:perl-license)))
210
211(define-public perl-soap-lite
212 (package
213 (name "perl-soap-lite")
214 (version "1.27")
215 (source (origin
216 (method url-fetch)
217 (uri (string-append
218 "mirror://cpan/authors/id/P/PH/PHRED/SOAP-Lite-"
219 version ".tar.gz"))
220 (sha256
221 (base32
222 "00fkvmnxiy5mr45rj5qmxmflw0xdkw2gihm48iha2i8smdmi0ng3"))))
223 (build-system perl-build-system)
224 (arguments
225 (list #:phases #~(modify-phases %standard-phases
226 (add-after 'unpack 'patch
227 (lambda _
228 (substitute* "t/Issues/rt53375.t"
229 (("XML::Parser::Lite")
230 "XML::Parser")))))))
231 (native-inputs (list perl-test-most perl-test-warn))
232 (propagated-inputs (list perl-class-inspector
233 perl-constant
234 perl-io-compress
235 perl-io-sessiondata
236 perl-io-socket-ssl
237 perl-libwww
238 perl-lwp-protocol-https
239 perl-mime-base64
240 perl-scalar-list-utils
241 perl-task-weaken
242 perl-uri
243 perl-xml-parser))
244 (home-page "https://metacpan.org/release/SOAP-Lite")
245 (synopsis "Client/server interface to the Simple Object Access Protocol")
246 (description
247 "@code{SOAP::Lite} is a collection of Perl modules that provide a
248simple and lightweight interface to the
249@acronym{SOAP, Simple Object Access Protocol}, both on client and server
250side.")
251 (license license:perl-license)))
252
253(define-public perl-www-pastebin-pastebincom-create
254 (package
255 (name "perl-www-pastebin-pastebincom-create")
256 (version "1.003")
257 (source
258 (origin
259 (method url-fetch)
260 (uri (string-append
261 "mirror://cpan/authors/id/Z/ZO/ZOFFIX/WWW-Pastebin-PastebinCom-Create-"
262 version ".tar.gz"))
263 (sha256
264 (base32 "0xs29hilmlr51hcg4azbvi7c30yivan5gzwiq2z0dwrdy13lvcln"))))
265 (build-system perl-build-system)
266 ;; TODO: tests currently fail, disabled for now
267 (arguments
268 (list #:tests? #f))
269 (native-inputs (list perl-module-build))
270 (propagated-inputs (list perl-moo perl-www-mechanize))
271 (home-page "https://metacpan.org/release/WWW-Pastebin-PastebinCom-Create")
272 (synopsis "Paste on Pastebin without API keys")
273 (description
274 "@code{WWW::Pastebin::PastebinCom::Create} provides functionality to
275paste on @url{https://www.pastebin.com, Pastebin} without API keys.")
276 (license license:artistic2.0)))
277
278(define-public geolite-country-data
279 ;; TODO: Figure out how to get an updated, free database.
280 (hidden-package
281 (package
282 (name "geolite-country-data")
283 (version "2019-12-06")
284 (source (origin
285 (method url-fetch)
286 (uri (string-append
287 "https://web.archive.org/web/20181229152721/"
288 "http://geolite.maxmind.com/download/geoip/database/"
289 "GeoLiteCountry/" "GeoIP.dat.gz"))
290 (sha256
291 (base32
292 "0j84ms2x893cpn7x8gffy082gnx882pmr0f6zpfsd46gpyw5xh5r"))))
293 (build-system copy-build-system)
294 (arguments
295 (list #:install-plan #~'(("GeoIP.dat" "share/GeoIP/"))))
296 (home-page "https://dev.maxmind.com/geoip/geolite2-free-geolocation-data")
297 (synopsis "Country-level GeoIP data (December 2018)")
298 (description
299 "This package provides an old GeoIP database in the legacy @file{.dat}
300format. The data was collected before MaxMind changed the license and format
301of their databases. It is intended only as a compatibility package for
302SpamAssassin.")
303 (license license:cc-by-sa4.0))))
304
305(define-public perl-geo-ip
306 (package
307 (name "perl-geo-ip")
308 (version "1.51")
309 (source (origin
310 (method url-fetch)
311 (uri (string-append
312 "mirror://cpan/authors/id/M/MA/MAXMIND/Geo-IP-"
313 version ".tar.gz"))
314 (sha256
315 (base32
316 "1fka8fr7fw6sh3xa9glhs1zjg3s2gfkhi7n7da1l2m2wblqj0c0n"))))
317 (build-system perl-build-system)
318 (arguments
319 (list #:phases #~(modify-phases %standard-phases
320 (add-after 'unpack 'patch
321 (lambda _
322 (substitute* "lib/Geo/IP.pm"
323 (("/usr/local/share/GeoIP/GeoIP.dat")
324 (string-append
325 #$(this-package-input "geolite-country-data")
326 "/share/GeoIP/GeoIP.dat"))))))))
327 (inputs (list geolite-country-data))
328 (home-page "https://metacpan.org/release/Geo-IP")
329 (synopsis "Look up location and network information by IP Address")
330 (description
331 "The Perl module @code{Geo::IP} looks up location and network information
332by IP Address.")
333 (license license:perl-license)))
334
335(define-public perl-net-smtps
336 (package
337 (name "perl-net-smtps")
338 (version "0.10")
339 (source (origin
340 (method url-fetch)
341 (uri (string-append
342 "mirror://cpan/authors/id/T/TO/TOMO/src/Net-SMTPS-" version
343 ".tar.gz"))
344 (sha256
345 (base32
346 "1w6h7yjbk6a8xyi6rxgb0xlp2yqn55axl23wnqx687fy9y7gmzx9"))))
347 (build-system perl-build-system)
348 (propagated-inputs (list perl-authen-sasl
349 perl-io-socket-ssl))
350 (home-page "https://metacpan.org/release/Net-SMTPS")
351 (synopsis "SSL/STARTTLS support for Net::SMTP")
352 (description
353 "This module implements a wrapper for @code{Net::SMTP}, enabling
354over-SSL/STARTTLS support. This module inherits most of all the methods from
355@code{Net::SMTP}(2.X).")
356 (license license:perl-license)))
357
358(define-public perl-net-ip
359 (package
360 (name "perl-net-ip")
361 (version "1.26")
362 (source (origin
363 (method url-fetch)
364 (uri (string-append "mirror://cpan/authors/id/M/MA/MANU/Net-IP-"
365 version ".tar.gz"))
366 (sha256
367 (base32
368 "0ffn2xqqbkfi7v303sp5dwgbv36jah3vg8r4nxhxfiv60vric3q4"))))
369 (build-system perl-build-system)
370 (home-page "https://metacpan.org/release/Net-IP")
371 (synopsis "Perl extension for manipulating IPv4/IPv6 addresses")
372 (description
373 "This module provides functions to deal with IPv4/IPv6 addresses. The
374module can be used as a class, allowing the user to instantiate IP objects,
375which can be single IP addresses, prefixes, or ranges of addresses. There is
376also a procedural way of accessing most of the functions. Most subroutines can
377take either IPv4 or IPv6 addresses transparently.")
378 (license license:perl-license)))
379
380(define-public perl-net-imap-simple
381 (package
382 (name "perl-net-imap-simple")
383 (version "1.2212")
384 (source (origin
385 (method url-fetch)
386 (uri (string-append
387 "mirror://cpan/authors/id/J/JE/JETTERO/Net-IMAP-Simple-"
388 version ".tar.gz"))
389 (sha256
390 (base32
391 "0mbzbfn0v1x1brd8nsyw8bzdkz31lw9qp7h6nrl3fcxylc5cs4lq"))))
392 (build-system perl-build-system)
393 (propagated-inputs (list perl-parse-recdescent))
394 (home-page "https://metacpan.org/release/Net-IMAP-Simple")
395 (synopsis "Perl extension for simple IMAP account handling.")
396 (description
397 "This package provides a class method constructs a new
398@code{Net::IMAP::Simple} object. It takes one required parameter which is the
399server to connect to, and additional optional parameters.")
400 (license license:perl-license)))
401
402(define-public perl-mail-dmarc
403 (package
404 (name "perl-mail-dmarc")
405 (version "1.20230215")
406 (source (origin
407 (method url-fetch)
408 (uri (string-append
409 "mirror://cpan/authors/id/M/MB/MBRADSHAW/Mail-DMARC-"
410 version ".tar.gz"))
411 (sha256
412 (base32
413 "00xrgq7cz75aj2m6bpfrb162fi0kyr016579as7494nbb53zbp2p"))))
414 (build-system perl-build-system)
415 (arguments
416 (list #:tests? #f)) ;some require network, like 03.Base and 06.Result
417 (native-inputs (list perl-file-sharedir-install
418 perl-module-build
419 perl-test-exception
420 perl-test-file-sharedir
421 perl-test-output))
422 (propagated-inputs (list perl-config-tiny
423 perl-dbd-sqlite
424 perl-dbix-simple
425 perl-email-mime
426 perl-email-sender
427 perl-email-simple
428 perl-file-sharedir
429 perl-io-socket-ssl
430 perl-mail-dkim
431 perl-net-dns
432 perl-net-idn-encode
433 perl-net-imap-simple
434 perl-net-ip
435 perl-net-smtps
436 perl-net-ssleay
437 perl-regexp-common
438 perl-socket6
439 perl-uri
440 perl-xml-libxml))
441 (home-page "https://metacpan.org/release/Mail-DMARC")
442 (synopsis "Perl implementation of DMARC")
443 (description
444 "This module is a suite of tools for implementing DMARC. It adheres to
445the 2013 DMARC draft, intending to implement every MUST and every SHOULD.")
446 (license license:perl-license)))
447
448(define-public perl-net-libidn
449 (package
450 (name "perl-net-libidn")
451 (version "0.12")
452 (source (origin
453 (method url-fetch)
454 (uri (string-append
455 "mirror://cpan/authors/id/T/TH/THOR/Net-LibIDN-" version
456 ".tar.gz"))
457 (sha256
458 (base32
459 "05xvpn9z7dpv62a5wgjx1n9kxblkqsgl9kb3vk3nx1mk8aacr2ig"))))
460 (build-system perl-build-system)
461 (inputs (list libidn))
462 (home-page "https://metacpan.org/release/Net-LibIDN")
463 (synopsis "Perl bindings for GNU Libidn")
464 (description
465 "The package provides bindings for GNU Libidn, a C library for handling
466Internationalized Domain Names according to IDNA (RFC 3490), in a way very
467much inspired by Turbo Fredriksson's PHP-IDN.")
468 (license (list license:gpl1+ license:clarified-artistic))))
469
470(define-public perl-razor2-client-agent
471 ;; TODO: Package razor-agents and razor-agents-sdk
472 (package
473 (name "perl-razor2-client-agent")
474 (version "2.86")
475 (source (origin
476 (method url-fetch)
477 (uri (string-append
478 "mirror://cpan/authors/id/T/TO/TODDR/Razor2-Client-Agent-"
479 version ".tar.gz"))
480 (sha256
481 (base32
482 "0pw4jhxhm2naqkz0h3gjgdjnygf4019zmvp712vj8pmnxc12w1jy"))))
483 (build-system perl-build-system)
484 (propagated-inputs (list perl-digest-sha1 perl-uri))
485 (home-page "https://metacpan.org/release/Razor2-Client-Agent")
486 (synopsis "Collaborative, content-based spam filtering network agent.")
487 (description
488 "This package provides a client library for Vipul's Razor. Vipul's Razor
489is a distributed, collaborative, spam detection and filtering network.
490Through user contribution, Razor establishes a distributed and constantly
491updating catalogue of spam in propagation that is consulted by email clients
492to filter out known spam. Detection is done with statistical and randomized
493signatures that efficiently spot mutating spam content. User input is
494validated through reputation assignments based on consensus on report and
495revoke assertions which in turn is used for computing confidence values
496associated with individual signatures.")
497 (license license:perl-license)))
498
499(define-public spamassassin
500 (package
501 (name "spamassassin")
502 (version "4.0.1")
503 (source (origin
504 (method url-fetch)
505 (uri (string-append
506 "mirror://cpan/authors/id/S/SI/SIDNEY/Mail-SpamAssassin-"
507 version ".tar.gz"))
508 (sha256
509 (base32
510 "1rfmsr0vbhh68m5p2r8jbrw91k65zzhh8vc1fsig21c4w4ib4ssw"))
511 (modules '((guix build utils)))
512 (snippet #~(delete-file "spamc/configure"))))
513 (build-system perl-build-system)
514 (arguments
515 (list
516 #:phases #~(modify-phases %standard-phases
517 (add-before 'configure 'setup
518 (lambda _
519 (setenv "CONFIG_SHELL" (which "sh"))
520 (substitute* "t/spamc_x_e.t" (("/bin/echo" all) (which "echo")))
521 (substitute* "build/parse-rules-for-masses" (("date" all) (which "date")))
522 (with-directory-excursion "spamc"
523 (invoke "autoreconf" "-vif"))))
524 (add-after 'install 'fix-lib-path
525 (lambda _
526 (let ((bin (string-append #$output "/bin/")))
527 (for-each
528 (lambda (file)
529 (substitute* file
530 ;; TODO: Can we find a way to keep -T?
531 (("perl -T")
532 "perl"))
533 (wrap-program file
534 `("PERL5LIB" ":" prefix
535 (,(getenv "PERL5LIB")
536 ,(string-append
537 #$output
538 "/lib/perl5/site_perl")))))
539 (map (lambda (file)
540 (string-append bin file))
541 '("spamd" "sa-awl" "sa-check_spamd"
542 "sa-compile" "sa-learn"
543 "sa-update" "spamassassin")))))))))
544 (native-inputs (list autoconf
545 automake
546 perl-critic
547 perl-critic-policy-perlsecret
548 perl-data-dumper
549 perl-devel-cycle
550 perl-test-pod
551 perl-text-diff))
552 (inputs
553 (list
554 coreutils
555 curl
556 gnupg
557 openssl
558 re2c
559 zlib))
560 (propagated-inputs
561 (list perl-archive-zip
562 perl-bsd-resource
563 perl-dbd-sqlite
564 perl-db-file
565 perl-dbi
566 perl-email-address-xs
567 perl-encode-detect
568 perl-geo-ip
569 perl-html-parser
570 perl-io-compress
571 perl-io-socket-inet6
572 perl-io-socket-ip
573 perl-io-socket-ssl
574 perl-io-string
575 perl-io-zlib
576 perl-libwww
577 perl-lwp-protocol-https
578 perl-mail-dkim
579 perl-mail-dmarc
580 perl-mail-spf
581 perl-mime-base64
582 perl-net-cidr-lite
583 perl-net-dns
584 perl-net-libidn
585 perl-pathtools
586 perl-net-patricia
587 perl-net-smtps
588 perl-netaddr-ip
589 perl-razor2-client-agent
590 perl-sys-hostname-long
591 perl-time-hires
592 perl-time-local))
593 (home-page "https://metacpan.org/release/Mail-SpamAssassin")
594 (synopsis
595 "Extensible email filter used to identify spam")
596 (description
597 "Apache SpamAssassin is an anti-spam platform giving system
598administrators a filter to classify email and block spam (unsolicited bulk
599email). It uses a robust scoring framework and plug-ins to integrate a wide
600range of advanced heuristic and statistical analysis tests on email headers
601and body text including text analysis, Bayesian filtering, DNS blocklists,
602and collaborative filtering databases.")
603 (license license:asl2.0)))