;;; Copyright © 2020 Justus Winter <justus@sequoia-pgp.org>
;;; Copyright © 2020 Eric Brown <ecbrown@ericcbrown.com>
;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (gnu packages guile-xyz)
#:use-module (gnu packages flex)
#:use-module (gnu packages haskell-xyz)
+ #:use-module (gnu packages icu4c)
#:use-module (gnu packages kerberos)
+ #:use-module (gnu packages language)
#:use-module (gnu packages libcanberra)
#:use-module (gnu packages libevent)
#:use-module (gnu packages libidn)
#:use-module (gnu packages python-crypto)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
+ #:use-module (gnu packages rdf)
#:use-module (gnu packages readline)
#:use-module (gnu packages ruby)
#:use-module (gnu packages search)
(define-public mailutils
(package
(name "mailutils")
- (version "3.9")
+ (version "3.10")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/mailutils/mailutils-"
version ".tar.xz"))
(sha256
(base32
- "1g1xf2lal04nsnf1iym9n9n0wxjpqbcr9nysxpm98v4pniinqwsz"))))
+ "17smrxjdgbbzbzakik30vj46q4iib85ksqhb82jr4vjp57akszh9"))))
(build-system gnu-build-system)
(arguments
`(#:phases
(("\\$\\(SHELL\\) \\$\\(TESTSUITE\\)" all)
(string-append "-" all)))
+ ;; XXX: The ‘moderator: program discard’ test does not specify
+ ;; an explicit From: but does expect an exact match. But why are
+ ;; all other tests unaffected?
+ (substitute* "sieve/tests/testsuite"
+ (("gray@")
+ "nixbld@"))
+
;; 'frm' tests expect write access to $HOME.
(setenv "HOME" (getcwd))
(define-public mu
(package
(name "mu")
- (version "1.4.10")
+ (version "1.4.13")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/djcb/mu/releases/"
"mu-" version ".tar.xz"))
(sha256
(base32
- "0vbyrmv3d2bja4vx86za93gq46vxg18j12g0lca3x1dl8d5g2xa6"))))
+ "13kfpr77qrnp3i5qnb5zd03frd3fdviggnl50973gdk0hr7m0smj"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
(define-public msmtp
(package
(name "msmtp")
- (version "1.8.11")
+ (version "1.8.12")
(source
(origin
(method url-fetch)
(uri (string-append "https://marlam.de/msmtp/releases/"
"/msmtp-" version ".tar.xz"))
(sha256
- (base32 "0q0fg235qk448l1xjcwyxr7vcpzk6w57jzhjbkb0m7nffyhhypzj"))))
+ (base32 "0m33m5bc7ajmgy7vivnzj3mhybg37259hx79xypj769kfyafyvx8"))))
(build-system gnu-build-system)
(inputs
`(("libsecret" ,libsecret)
(define-public dovecot
(package
(name "dovecot")
- (version "2.3.10.1")
+ (version "2.3.11.3")
(source
(origin
(method url-fetch)
(version-major+minor version) "/"
"dovecot-" version ".tar.gz"))
(sha256
- (base32 "035idr2j81s5mngnhd58rih79dhwwak7q01mqbx3rcmi4cpychk6"))))
+ (base32 "1p5gp8jbavcsaara5mfn5cbrnlxssajnchczbgmmfzr7228fmnfk"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("bzip2" ,bzip2)
+ ("clucene" ,clucene)
+ ("icu4c" ,icu4c)
("libsodium" ,libsodium) ; extra password algorithms
+ ("libstemmer" ,libstemmer)
;; FIXME: The 'test-backtrace' tests fail on arm when using glibc's
;; backtrace_symbol() function so fallback to using libunwind.
,@(if (target-arm?)
("lz4" ,lz4)
("openssl" ,openssl)
("sqlite" ,sqlite)
- ("zlib" ,zlib)))
+ ("zlib" ,zlib)
+ ("zstd" ,zstd "lib")))
(arguments
`(#:configure-flags '("--sysconfdir=/etc"
"--localstatedir=/var"
- "--with-sqlite") ; not auto-detected
+ "--with-sqlite" ; not auto-detected
+ "--with-lucene") ; not auto-detected
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-file-names
(define-public isync
(package
(name "isync")
- (version "1.3.1")
+ (version "1.3.3")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/isync/isync/"
version "/isync-" version ".tar.gz"))
(sha256 (base32
- "1sphd30jplii58y2zmw365bckm6pszmapcy905zhjll1sm1ldjv8"))))
+ "10n8ykag0q3ws6fc15xqyg3v980v5nq3kzpablly2rh2z7vkn8gj"))))
(build-system gnu-build-system)
(native-inputs
`(("perl" ,perl)))
("cyrus-sasl" ,cyrus-sasl)
("openssl" ,openssl-1.0)
("zlib" ,zlib)))
- (home-page "http://isync.sourceforge.net/")
+ (home-page "https://isync.sourceforge.io/")
(synopsis "Mailbox synchronization program")
(description
"isync/mbsync is a command-line tool for two-way synchronization of
(define-public khard
(package
(name "khard")
- (version "0.16.1")
+ (version "0.17.0")
(source (origin
(method url-fetch)
(uri (pypi-uri name version))
(sha256
(base32
- "0fg4qh5gzki5wg958wlpc8a2icnk74gzg33lqxjm755cfnjng7qd"))))
+ "062nv4xkfsjc11k9m52dh6xjn9z68a4a6x1s8z05wwv4jbp1lkhn"))))
(build-system python-build-system)
(arguments
`(#:phases
(inputs
`(("python-atomicwrites" ,python-atomicwrites)
("python-configobj" ,python-configobj)
- ("python-pyyaml" ,python-pyyaml)
("python-ruamel.yaml" ,python-ruamel.yaml)
("python-unidecode" ,python-unidecode)
("python-vobject" ,python-vobject)))
(description
"This package contains libraries and templates for Django-based interfaces
interacting with Mailman.")
- (properties `((python2-variant . ,(delay python2-django-mailman))))
+ (properties `((python2-variant . ,(delay python2-django-mailman3))))
(license license:gpl3+)))
;; This is the last version to support Python-2.
interacting with Mailman.")
(license license:gpl3+)))
+(define-public python-mailman-hyperkitty
+ (package
+ (name "python-mailman-hyperkitty")
+ (version "1.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "mailman-hyperkitty" version))
+ (sha256
+ (base32
+ "1lfqa9admhvdv71f528jmz2wl0i5cv77v6l64px2pm4zqr9ckkjx"))
+ (patches
+ (list
+ (origin
+ ;; see: https://gitlab.com/mailman/mailman-hyperkitty/issues/17
+ ;; fixes test_archive_message_unserializable
+ (method url-fetch)
+ (uri "https://salsa.debian.org/mailman-team/mailman-hyperkitty/raw/debian/1.1.0-9/debian/patches/0002-Skip-the-test_archive_message_unserializable.patch")
+ (sha256
+ (base32
+ "0p1fwm46c4bl81lvsg3kjhn2r1lwgkpgxamb3xyqn7h9qdrw10hw")))))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-requests" ,python-requests)
+ ("python-zope-interface" ,python-zope-interface)))
+ (inputs
+ `(("mailman" ,mailman)))
+ (native-inputs
+ `(("python-mock" ,python-mock)
+ ("python-nose" ,python-nose)
+ ("python-nose2" ,python-nose2)))
+ (home-page "https://gitlab.com/mailman/mailman-hyperkitty/")
+ (synopsis "Mailman archiver plugin for HyperKitty")
+ (description
+ "Mailman3 allows emails sent to its mailing lists to be archived by any
+software provided that there is a plugin (loadable by Mailman3) designed to
+communicate with it properly. This module contains a Mailman3 archiver plugin
+which sends emails to HyperKitty, the official Mailman3 web archiver.")
+ (license license:gpl3+)))
+
+(define-public python-hyperkitty
+ (package
+ (name "python-hyperkitty")
+ (version "1.3.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "HyperKitty" version))
+ (sha256
+ (base32
+ "0p85r9q6mn5as5b39xp9hkkipnk0156acx540n2ygk3qb3jd4a5n"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ ;; It is unclear why this test fails.
+ (substitute* "hyperkitty/tests/commands/test_import.py"
+ (("def test_bad_content_type_part_two")
+ "@SkipTest\n def test_bad_content_type_part_two"))
+ (setenv "PYTHONPATH" (string-append ".:" (getenv "PYTHONPATH")))
+ (invoke "example_project/manage.py" "test"
+ "--settings=hyperkitty.tests.settings_test"))))))
+ (propagated-inputs
+ `(("python-dateutil" ,python-dateutil)
+ ("python-django" ,python-django)
+ ("python-django-compressor" ,python-django-compressor)
+ ("python-django-extensions" ,python-django-extensions)
+ ("python-django-gravatar2" ,python-django-gravatar2)
+ ("python-django-haystack" ,python-django-haystack)
+ ("python-django-mailman3" ,python-django-mailman3)
+ ("python-django-q" ,python-django-q)
+ ("python-djangorestframework" ,python-djangorestframework)
+ ("python-flufl-lock" ,python-flufl-lock)
+ ("python-mailmanclient" ,python-mailmanclient)
+ ("python-networkx" ,python-networkx)
+ ("python-pytz" ,python-pytz)
+ ("python-robot-detection" ,python-robot-detection)))
+ (native-inputs
+ `(("python-beautifulsoup4" ,python-beautifulsoup4)
+ ("python-elasticsearch" ,python-elasticsearch)
+ ("python-isort" ,python-isort)
+ ("python-mock" ,python-mock)
+ ("python-whoosh" ,python-whoosh)))
+ (home-page "https://gitlab.com/mailman/hyperkitty")
+ (synopsis "Web interface to access GNU Mailman v3 archives")
+ (description
+ "The hyperkitty Django app provides a web user interface to access GNU
+Mailman3 archives, and manage it. This interface uses django, and requires
+some configuration.")
+ (license license:gpl3))) ; Some files are gpl2+
+
(define-public postorius
(package
(name "postorius")
- (version "1.0.3")
+ (version "1.3.3")
(source
(origin
(method url-fetch)
- (uri (pypi-uri "postorius" version "+post2.tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (uri (pypi-uri "postorius" version))
(sha256
(base32
- "1wymcpv2icjjy8h1ni52p6dr7wwxf71ivqgbqhzx4i82yqphcaq5"))))
+ "08jn23gblbkfl09qlykbpsmp39mmach3sl69h1j5cd5kkx839rwa"))))
(build-system python-build-system)
(arguments
- `(; One test dependency relies on Persona, which was shut down in
- ;; November 2016.
- #:tests? #f
- ;; The part of the frontend of Mailman is still python 2.7.
- #:python ,python-2))
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key inputs outputs tests? #:allow-other-keys)
+ (add-installed-pythonpath inputs outputs)
+ (if tests?
+ (invoke "python" "example_project/manage.py" "test"
+ "--settings=test_settings" "postorius")
+ #t))))
+ #:tests? #f)) ; Tests try to run a mailman instance to test against.
(inputs
- `(("python2-django" ,python2-django)
- ("python2-django-mailman3" ,python2-django-mailman3)
- ("python2-mailmanclient" ,python2-mailmanclient)))
+ `(("python-django" ,python-django)
+ ("python-django-mailman3" ,python-django-mailman3)
+ ("python-mailmanclient" ,python-mailmanclient)
+ ("python-readme-renderer" ,python-readme-renderer)))
+ (native-inputs
+ `(("python-beautifulsoup4" ,python-beautifulsoup4)
+ ("python-isort" ,python-isort)
+ ("python-mock" ,python-mock)
+ ("python-vcrpy" ,python-vcrpy)))
(home-page "https://gitlab.com/mailman/postorius")
(synopsis "Web user interface for GNU Mailman")
(description
(license license:gpl2+)))
(define-public public-inbox
- (let ((commit "05a06f3262a2ddbf46adb85169e13ce9127e4524")
- (revision "0"))
- (package
- (name "public-inbox")
- (version (git-version "1.2.0" revision commit))
- (source
- (origin (method git-fetch)
- (uri (git-reference
- (url "https://public-inbox.org")
- (commit commit)))
- (sha256
- (base32
- "06cclxg46gsls3x19l9s8s9x8gkjghm6gd4jb1v9ng6fds6xi2fg"))
- (file-name (git-file-name name version))))
- (build-system perl-build-system)
- (arguments
- '(#:phases
- (modify-phases %standard-phases
- (add-before 'configure 'qualify-paths
- (lambda _
- ;; Use absolute paths for 'xapian-compact'.
- (let ((xapian-compact (which "xapian-compact")))
- (substitute* "script/public-inbox-compact"
- (("xapian-compact") xapian-compact)))
- #t))
- (add-before 'check 'pre-check
- (lambda _
- (substitute* "t/spawn.t"
- (("\\['env'\\]") (string-append "['" (which "env") "']")))
- (substitute* "t/ds-leak.t"
- (("/bin/sh") (which "sh")))
- (invoke "./certs/create-certs.perl")
- ;; XXX: This test fails due to zombie process is not reaped by
- ;; the builder.
- (substitute* "t/httpd-unix.t"
- (("^SKIP: \\{") "SKIP: { skip('Guix');"))
- #t))
- (add-after 'install 'wrap-programs
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (for-each
- (lambda (prog)
- (wrap-program prog
- ;; Let those scripts find their perl modules.
- `("PERL5LIB" ":" prefix
- (,(string-append out "/lib/perl5/site_perl")
- ,(getenv "PERL5LIB")))
- ;; 'git' is invoked in various files of the PublicInbox
- ;; perl module.
- `("PATH" ":" prefix
- (,(string-append (assoc-ref inputs "git") "/bin")))))
- (find-files (string-append out "/bin"))))
- #t)))))
- (native-inputs
- `(("git" ,git)
- ("xapian" ,xapian)
- ;; For testing.
- ("lsof" ,lsof)
- ("openssl" ,openssl)))
- (inputs
- `(("perl-dbd-sqlite" ,perl-dbd-sqlite)
- ("perl-dbi" ,perl-dbi)
- ("perl-email-address-xs" ,perl-email-address-xs)
- ("perl-email-mime-contenttype" ,perl-email-mime-contenttype)
- ("perl-email-mime" ,perl-email-mime)
- ("perl-email-simple" ,perl-email-simple)
- ("perl-net-server" ,perl-net-server)
- ("perl-filesys-notify-simple" ,perl-filesys-notify-simple)
- ("perl-plack-middleware-deflater" ,perl-plack-middleware-deflater)
- ("perl-plack-middleware-reverseproxy" ,perl-plack-middleware-reverseproxy)
- ("perl-plack" ,perl-plack)
- ("perl-search-xapian" ,perl-search-xapian)
- ("perl-timedate" ,perl-timedate)
- ("perl-uri-escape" ,perl-uri-escape)
- ;; For testing.
- ("perl-ipc-run" ,perl-ipc-run)
- ("perl-xml-feed" ,perl-xml-feed)))
- (home-page "https://public-inbox.org/README.html")
- (synopsis "Archive mailing lists in git repositories")
- (description
- "public-inbox implements the sharing of an email inbox via git to
+ (package
+ (name "public-inbox")
+ (version "1.5.0")
+ (source
+ (origin (method git-fetch)
+ (uri (git-reference
+ (url "https://public-inbox.org")
+ (commit (string-append "v" version))))
+ (sha256
+ (base32
+ "03zj7shdl3vibs7k5lr673bwcf8j1xx8is3mjz34ca4cdh6p5j2k"))
+ (file-name (git-file-name name version))))
+ (build-system perl-build-system)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'qualify-paths
+ (lambda _
+ ;; Use absolute paths for 'xapian-compact'.
+ (let ((xapian-compact (which "xapian-compact")))
+ (substitute* "script/public-inbox-compact"
+ (("xapian-compact") xapian-compact)))
+ #t))
+ (add-before 'check 'pre-check
+ (lambda _
+ (substitute* "t/spawn.t"
+ (("\\['env'\\]") (string-append "['" (which "env") "']")))
+ (substitute* "t/ds-leak.t"
+ (("/bin/sh") (which "sh")))
+ (invoke "./certs/create-certs.perl")
+ ;; XXX: This test fails due to zombie process is not reaped by
+ ;; the builder.
+ (substitute* "t/httpd-unix.t"
+ (("^SKIP: \\{") "SKIP: { skip('Guix');"))
+ #t))
+ (add-after 'install 'wrap-programs
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (for-each
+ (lambda (prog)
+ (wrap-program prog
+ ;; Let those scripts find their perl modules.
+ `("PERL5LIB" ":" prefix
+ (,(string-append out "/lib/perl5/site_perl")
+ ,(getenv "PERL5LIB")))
+ ;; 'git' is invoked in various files of the PublicInbox
+ ;; perl module.
+ `("PATH" ":" prefix
+ (,(string-append (assoc-ref inputs "git") "/bin")))))
+ (find-files (string-append out "/bin"))))
+ #t)))))
+ (native-inputs
+ `(("xapian" ,xapian)
+ ;; For testing.
+ ("lsof" ,lsof)
+ ("openssl" ,openssl)))
+ (inputs
+ `(("git" ,git)
+ ("perl-dbd-sqlite" ,perl-dbd-sqlite)
+ ("perl-dbi" ,perl-dbi)
+ ("perl-email-address-xs" ,perl-email-address-xs)
+ ("perl-email-mime-contenttype" ,perl-email-mime-contenttype)
+ ("perl-email-mime" ,perl-email-mime)
+ ("perl-email-simple" ,perl-email-simple)
+ ("perl-net-server" ,perl-net-server)
+ ("perl-filesys-notify-simple" ,perl-filesys-notify-simple)
+ ("perl-plack-middleware-deflater" ,perl-plack-middleware-deflater)
+ ("perl-plack-middleware-reverseproxy" ,perl-plack-middleware-reverseproxy)
+ ("perl-plack" ,perl-plack)
+ ("perl-search-xapian" ,perl-search-xapian)
+ ("perl-timedate" ,perl-timedate)
+ ("perl-uri-escape" ,perl-uri-escape)
+ ;; For testing.
+ ("perl-ipc-run" ,perl-ipc-run)
+ ("perl-xml-feed" ,perl-xml-feed)))
+ (home-page "https://public-inbox.org/README.html")
+ (synopsis "Archive mailing lists in git repositories")
+ (description
+ "public-inbox implements the sharing of an email inbox via git to
complement or replace traditional mailing lists. Readers may read via NNTP,
Atom feeds or HTML archives.")
- (license license:agpl3+))))
+ (license license:agpl3+)))
(define-public sylpheed
(package
(define-public python-dkimpy
(package
(name "python-dkimpy")
- (version "1.0.4")
+ (version "1.0.5")
(source
(origin
(method url-fetch)
(uri (pypi-uri "dkimpy" version))
(sha256
- (base32
- "14idcs0wiyc0iyi5bz3xqimxf3x6dizcjfn92s2ka5zxp95xdyvd"))))
+ (base32 "088iz5cqjqh4c7141d94pvn13bh25aizqlrifwv6fs5g16zj094s"))))
(build-system python-build-system)
(arguments
'(#:phases
(define-public python-aiosmtpd
(package
(name "python-aiosmtpd")
- (version "1.2")
+ (version "1.2.1")
(source
- (origin
- (method url-fetch)
- (uri (pypi-uri "aiosmtpd" version))
- (sha256
- (base32
- "1xdfk741pjmz1cm8dsi4n5vq4517i175rm94696m3f7kcgk7xsmp"))))
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/aio-libs/aiosmtpd")
+ (commit version)))
+ (sha256
+ (base32 "14c30dm6jzxiblnsah53fdv68vqhxwvb9x0aq9bc4vcdas747vr7"))
+ (file-name (git-file-name name version))))
(build-system python-build-system)
(arguments
'(#:phases
(modify-phases %standard-phases
- (add-after 'unpack 'delete-failing-test
+ (add-after 'unpack 'delete-failing-tests
(lambda _
+ ;; This test uses an expired certificate.
(delete-file "aiosmtpd/tests/test_smtps.py")
#t))
(replace 'check