summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/check.scm4
-rw-r--r--gnu/packages/databases.scm100
-rw-r--r--gnu/packages/glib.scm2
-rw-r--r--gnu/packages/gnome.scm13
-rw-r--r--gnu/packages/golang.scm6
-rw-r--r--gnu/packages/linux.scm1
-rw-r--r--gnu/packages/man.scm92
-rw-r--r--gnu/packages/password-utils.scm1
-rw-r--r--gnu/packages/patches/python2-pyopenssl-openssl-compat.patch51
-rw-r--r--gnu/packages/python-crypto.scm193
-rw-r--r--gnu/packages/python-web.scm15
-rw-r--r--gnu/packages/python-xyz.scm84
-rw-r--r--gnu/packages/time.scm21
-rw-r--r--gnu/packages/unicode.scm5
-rw-r--r--gnu/packages/version-control.scm6
-rw-r--r--gnu/packages/video.scm1
-rw-r--r--gnu/packages/web-browsers.scm1
-rw-r--r--gnu/packages/web.scm4
-rw-r--r--gnu/packages/wget.scm1
-rw-r--r--gnu/packages/xorg.scm1
21 files changed, 344 insertions, 259 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index ad39e648f7..34d7384448 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1689,6 +1689,7 @@ dist_patch_DATA = \
%D%/packages/patches/python-piexif-fix-tests-with-pillow-7.2.patch \
%D%/packages/patches/python-pyfakefs-remove-bad-test.patch \
%D%/packages/patches/python-pyflakes-test-location.patch \
+ %D%/packages/patches/python2-pyopenssl-openssl-compat.patch \
%D%/packages/patches/python-flint-includes.patch \
%D%/packages/patches/python-libxml2-utf8.patch \
%D%/packages/patches/python-magic-python-bytecode.patch \
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 335ab7ab11..32aedf5b6b 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -2737,13 +2737,13 @@ mocks, stubs and fakes.")
(define-public python-flaky
(package
(name "python-flaky")
- (version "3.5.3")
+ (version "3.7.0")
(source (origin
(method url-fetch)
(uri (pypi-uri "flaky" version))
(sha256
(base32
- "1nm1kjf857z5aw7v642ffsy1vwf255c6wjvmil71kckjyd0mxg8j"))))
+ "03daz352021211kvdb056f3afrd2gsdq0rd1awgr38910xw01l9s"))))
(build-system python-build-system)
(arguments
;; TODO: Tests require 'coveralls' and 'genty' which are not in Guix yet.
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 4472677ab3..56d838dd58 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -32,7 +32,7 @@
;;; Copyright © 2017 Kristofer Buffington <kristoferbuffington@gmail.com>
;;; Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net>
;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
-;;; Copyright © 2018, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2018, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2019 Jack Hill <jackhill@jackhill.us>
;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com>
@@ -56,6 +56,7 @@
;;; Copyright © 2021 jgart <jgart@dismail.de>
;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com>
;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
+;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -90,6 +91,7 @@
#:use-module (gnu packages curl)
#:use-module (gnu packages cyrus-sasl)
#:use-module (gnu packages dbm)
+ #:use-module (gnu packages docbook)
#:use-module (gnu packages emacs)
#:use-module (gnu packages flex)
#:use-module (gnu packages freedesktop)
@@ -1239,38 +1241,43 @@ and high-availability (HA).")
(patches (search-patches "postgresql-disable-resolve_symlinks.patch"))))
(build-system gnu-build-system)
(arguments
- `(#:configure-flags '("--with-uuid=e2fs" "--with-openssl"
- ;; PostgreSQL installs its own Makefile (should it?).
- ;; Prevent it from retaining needless references to
- ;; the build tools in order to save size.
- "MKDIR_P=mkdir -p" "INSTALL_BIN=install -c"
- "LD=ld" "TAR=tar")
- #:phases
- (modify-phases %standard-phases
- (add-before 'configure 'patch-/bin/sh
- (lambda _
- ;; Refer to the actual shell.
- (substitute* '("src/bin/pg_ctl/pg_ctl.c"
- "src/bin/psql/command.c")
- (("/bin/sh") (which "sh")))
- #t))
- (add-before 'configure 'set-socket-dir
- (lambda _
- (substitute* '("src/include/pg_config_manual.h")
- (("DEFAULT_PGSOCKET_DIR[^\n]*")
- "DEFAULT_PGSOCKET_DIR \"/var/run/postgresql\""))
- #t))
- (add-after 'build 'build-contrib
- (lambda _
- (invoke "make" "-C" "contrib")))
- (add-after 'install 'install-contrib
- (lambda _
- (invoke "make" "-C" "contrib" "install"))))))
- (inputs
- `(("readline" ,readline)
- ("libuuid" ,util-linux "lib")
- ("openssl" ,openssl)
- ("zlib" ,zlib)))
+ (list
+ #:configure-flags
+ #~(list "--with-uuid=e2fs" "--with-openssl"
+ (string-append "--mandir=" #$output "/share/man")
+ ;; PostgreSQL installs its own Makefile (should it?).
+ ;; Prevent it from retaining needless references to
+ ;; the build tools in order to save size.
+ "MKDIR_P=mkdir -p" "INSTALL_BIN=install -c"
+ "LD=ld" "TAR=tar")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'configure 'patch-/bin/sh
+ (lambda _
+ ;; Refer to the actual shell.
+ (substitute* '("src/bin/pg_ctl/pg_ctl.c"
+ "src/bin/psql/command.c")
+ (("/bin/sh") (which "sh")))))
+ (add-before 'configure 'set-socket-dir
+ (lambda _
+ (substitute* '("src/include/pg_config_manual.h")
+ (("DEFAULT_PGSOCKET_DIR[^\n]*")
+ "DEFAULT_PGSOCKET_DIR \"/var/run/postgresql\""))))
+ (add-after 'build 'build-contrib
+ (lambda _
+ (invoke "make" "-C" "contrib")))
+ (add-after 'install 'install-contrib
+ (lambda _
+ (invoke "make" "-C" "contrib" "install")))
+ (add-after 'install 'install-manuals
+ (lambda _
+ (with-directory-excursion "doc/src/sgml"
+ (invoke "make" "install-man")
+ (invoke "make" "postgres.info")
+ (install-file "postgres.info"
+ (string-append #$output "/share/info"))))))))
+ (native-inputs (list docbook-xml docbook2x libxml2 perl texinfo))
+ (inputs (list readline `(,util-linux "lib") openssl zlib))
(home-page "https://www.postgresql.org/")
(synopsis "Powerful object-relational database system")
(description
@@ -1285,36 +1292,15 @@ pictures, sounds, or video.")
(define-public postgresql-13
(package
(inherit postgresql-14)
- (version "13.4")
+ (version "13.6")
(source (origin
(inherit (package-source postgresql-14))
(uri (string-append "https://ftp.postgresql.org/pub/source/v"
version "/postgresql-" version ".tar.bz2"))
(sha256
(base32
- "1kf0gcsrl5n25rjlvkh87aywmn28kbwvakm5c7j1qpr4j01y34za"))))
- (arguments
- (if (target-riscv64?)
- `(,@(substitute-keyword-arguments (package-arguments postgresql-14)
- ((#:phases phases)
- #~(modify-phases #$phases
- (add-after 'unpack 'apply-riscv-spinlock-patch
- ;; The patch is applied in this custom phase and not via the
- ;; "origin" object above to avoid rebuilding a large number
- ;; of packages on other platforms.
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((patch-file
- #$(local-file
- (search-patch
- "postgresql-riscv-spinlocks.patch"))))
- (invoke "patch" "-p1" "-i" patch-file))))))))
- `(,@(package-arguments postgresql-14))))
- (native-inputs
- (if (target-riscv64?)
- (list
- (local-file (search-patch "postgresql-riscv-spinlocks.patch"))
- patch)
- '()))))
+ "1z37ix80hb2bqa2smh1hbj9r507ypnl3pil43gkqznnlv6ipzz5s"))
+ (patches (search-patches "postgresql-riscv-spinlocks.patch"))))))
(define-public postgresql-11
(package
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 30e5433776..7e6acc0984 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -9,7 +9,7 @@
;;; Copyright © 2017 Petter <petter@mykolab.ch>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
-;;; Copyright © 2019, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2019, 2020, 2021 Marius Bakke <marius@gnu.org>
;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index bc99454b1b..e6e576d7f7 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -3508,18 +3508,9 @@ for dealing with different structured file formats.")
`(,glib "bin")
gobject-introspection
pkg-config
- python-wrapper
- ruby
vala))
(inputs
- (list bzip2
- fontconfig
- freetype
- harfbuzz
- libcroco
- libgsf
- libxml2
- pango))
+ (list freetype harfbuzz libxml2 pango))
(propagated-inputs
(list cairo gdk-pixbuf glib))
(synopsis "SVG rendering library")
@@ -3610,7 +3601,7 @@ diagrams.")
`(,glib "bin") ; glib-mkenums, etc.
gobject-introspection)) ; g-ir-compiler, etc.
(inputs
- (list pango libcroco bzip2 libgsf libxml2))
+ (list pango libcroco libxml2))
(propagated-inputs
;; librsvg-2.0.pc refers to all of that.
(list cairo gdk-pixbuf glib))
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index a8b845e301..ba0fcee214 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -2683,8 +2683,8 @@ packages.")
(license license:bsd-3))))
(define-public go-golang-org-x-sys
- (let ((commit "05986578812163b26672dabd9b425240ae2bb0ad")
- (revision "7"))
+ (let ((commit "ed5796bab16455f104b6a384d51b7f9990cb9806")
+ (revision "8"))
(package
(name "go-golang-org-x-sys")
(version (git-version "0.0.0" revision commit))
@@ -2696,7 +2696,7 @@ packages.")
(file-name (git-file-name name version))
(sha256
(base32
- "1q2rxb6z5l6pmlckjsz2l0b8lw7bqgk6frhzbmi1dv0y5irb2ka7"))))
+ "081vs5bg91mwg5bdmlcvy2qyrvg766aicj47smcwfk4bbh0nc0qa"))))
(build-system go-build-system)
(arguments
`(#:import-path "golang.org/x/sys"
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 8d9dc01839..c69773c37b 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -50,6 +50,7 @@
;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
;;; Copyright © 2020 David Dashyan <mail@davie.li>
;;; Copyright © 2020 pukkamustard <pukkamustard@posteo.net>
+;;; Copyright © 2021 Solene Rapenne <solene@perso.pw>
;;; Copyright © 2021 B. Wilson <elaexuotee@wilsonb.com>
;;; Copyright © 2021 Ivan Gankevich <i.gankevich@spbu.ru>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index a434c70576..14aaa36ea1 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -10,6 +10,7 @@
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -125,14 +126,14 @@ a flexible and convenient way.")
(define-public man-db
(package
(name "man-db")
- (version "2.9.4")
+ (version "2.10.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://savannah/man-db/man-db-"
version ".tar.xz"))
(sha256
(base32
- "0mk7n7yn6scy785jhg1j14b3q9l0cgvpry49r0ldjsnizbnrjv5n"))))
+ "0kaiymd5lh4dnp6z15fnvfg0ir81kdxp5l690ccp64ra956rb5zf"))))
(build-system gnu-build-system)
(arguments
(list #:phases
@@ -146,8 +147,7 @@ a flexible and convenient way.")
(("#! /bin/sh")
(string-append "#!" (which "sh")))))
(remove file-is-directory?
- (find-files "src/tests" ".*")))
- #t)))
+ (find-files "src/tests" ".*"))))))
(add-after 'unpack 'patch-absolute-paths
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "src/man.c"
@@ -160,64 +160,56 @@ a flexible and convenient way.")
(("groff_preconv = NULL")
(string-append "groff_preconv = \""
(assoc-ref inputs "groff-minimal")
- "/bin/preconv\"")))
- #t)))
+ "/bin/preconv\""))))))
#:configure-flags
- #~(let ((groff (assoc-ref %build-inputs "groff"))
- (groff-minimal (assoc-ref %build-inputs "groff-minimal"))
- (less (assoc-ref %build-inputs "less"))
- (gzip (assoc-ref %build-inputs "gzip"))
- (bzip2 (assoc-ref %build-inputs "bzip2"))
- (xz (assoc-ref %build-inputs "xz"))
- (util (assoc-ref %build-inputs "util-linux")))
- ;; Invoke groff, less, gzip, bzip2, & xz directly from the store.
- (append (list ;; Disable setuid man user.
- "--disable-setuid"
- ;; Don't constrain ownership of system-wide cache files.
- ;; Otherwise creating the manpage database fails with
- ;; man-db > 2.7.5.
- "--disable-cache-owner"
- (string-append "--with-pager=" less "/bin/less")
- (string-append "--with-gzip=" gzip "/bin/gzip")
- (string-append "--with-bzip2=" bzip2 "/bin/gzip")
- (string-append "--with-xz=" xz "/bin/xz")
- (string-append "--with-col=" util "/bin/col")
- ;; The default systemd directories ignore --prefix.
- ;; XXX TODO: Replace with simply #$OUTPUT on staging.
- (string-append "--with-systemdsystemunitdir="
- #$(if (%current-target-system)
- #~#$output
- #~%output)
- "/lib/systemd/system")
- (string-append "--with-systemdtmpfilesdir="
- #$(if (%current-target-system)
- #~#$output
- #~%output)
- "/lib/tmpfiles.d"))
- (map (lambda (prog)
- (string-append "--with-" prog "=" groff-minimal
- "/bin/" prog))
- '("nroff" "eqn" "neqn" "tbl" "refer" "pic"))))
-
+ #~(cons*
+ ;; Disable setuid man user.
+ "--disable-setuid"
+ ;; Don't constrain ownership of system-wide cache files.
+ ;; Otherwise creating the manpage database fails with
+ ;; man-db > 2.7.5.
+ "--disable-cache-owner"
+ (string-append "--with-pager="
+ (search-input-file %build-inputs "bin/less"))
+ (string-append "--with-gzip="
+ (search-input-file %build-inputs "bin/gzip"))
+ (string-append "--with-bzip2="
+ (search-input-file %build-inputs "bin/bzip2"))
+ (string-append "--with-xz="
+ (search-input-file %build-inputs "bin/xz"))
+ (string-append "--with-zstd="
+ (search-input-file %build-inputs "bin/zstd"))
+ (string-append "--with-col="
+ (search-input-file %build-inputs "bin/col"))
+ ;; The default systemd directories ignore --prefix.
+ (string-append "--with-systemdsystemunitdir="
+ #$output "/lib/systemd/system")
+ (string-append "--with-systemdtmpfilesdir="
+ #$output "/lib/tmpfiles.d")
+ (map (lambda (prog)
+ (string-append
+ "--with-" prog "="
+ #$(this-package-input "groff-minimal")
+ (string-append "/bin/" prog)))
+ '("nroff" "eqn" "neqn" "tbl" "refer" "pic")))
;; At run time we should refer to GROFF-MINIMAL, not GROFF (the latter
;; pulls in Perl.)
- #:disallowed-references
- (list groff)
-
+ #:disallowed-references (list groff)
#:modules '((guix build gnu-build-system)
(guix build utils)
(srfi srfi-1))))
(native-inputs
- (list pkg-config flex groff)) ;needed at build time (troff, grops, soelim, etc.)
+ (list pkg-config flex
+ ;; Groff is needed at build time for troff, grops, soelim, etc.
+ groff))
(inputs
(list gdbm
groff-minimal
less
libpipeline
- ;; FIXME: 4.8 and later can use libseccomp, but it causes test
- ;; failures in the build chroot.
- ;;("libseccomp" ,libseccomp)
- util-linux))
+ libseccomp
+ util-linux
+ zstd))
(native-search-paths
(list (search-path-specification
(variable "MANPATH")
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index 0e5f63e1be..35a2d0249c 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -29,6 +29,7 @@
;;; Copyright © 2020 Jean-Baptiste Note <jean-baptiste.note@m4x.org>
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com>
diff --git a/gnu/packages/patches/python2-pyopenssl-openssl-compat.patch b/gnu/packages/patches/python2-pyopenssl-openssl-compat.patch
new file mode 100644
index 0000000000..a185f4172d
--- /dev/null
+++ b/gnu/packages/patches/python2-pyopenssl-openssl-compat.patch
@@ -0,0 +1,51 @@
+Adjust for OpenSSL 1.1.1:
+
+ https://github.com/pyca/pyopenssl/issues/1043
+
+Taken from upstream:
+
+ https://github.com/pyca/pyopenssl/commit/cc5c00ae5fd3c19d07fff79b5c4a08f5e58697ad
+
+diff --git a/src/OpenSSL/SSL.py b/src/OpenSSL/SSL.py
+index 59f21cec..fcdee047 100644
+--- a/src/OpenSSL/SSL.py
++++ b/src/OpenSSL/SSL.py
+@@ -1421,6 +1421,12 @@ def set_alpn_protos(self, protos):
+ This list should be a Python list of bytestrings representing the
+ protocols to offer, e.g. ``[b'http/1.1', b'spdy/2']``.
+ """
++ # Different versions of OpenSSL are inconsistent about how they handle empty
++ # proto lists (see #1043), so we avoid the problem entirely by rejecting them
++ # ourselves.
++ if not protos:
++ raise ValueError("at least one protocol must be specified")
++
+ # Take the list of protocols and join them together, prefixing them
+ # with their lengths.
+ protostr = b"".join(
+@@ -2449,6 +2455,12 @@ def set_alpn_protos(self, protos):
+ This list should be a Python list of bytestrings representing the
+ protocols to offer, e.g. ``[b'http/1.1', b'spdy/2']``.
+ """
++ # Different versions of OpenSSL are inconsistent about how they handle empty
++ # proto lists (see #1043), so we avoid the problem entirely by rejecting them
++ # ourselves.
++ if not protos:
++ raise ValueError("at least one protocol must be specified")
++
+ # Take the list of protocols and join them together, prefixing them
+ # with their lengths.
+ protostr = b"".join(
+diff --git a/tests/test_ssl.py b/tests/test_ssl.py
+index ffc505d8..ca363b45 100644
+--- a/tests/test_ssl.py
++++ b/tests/test_ssl.py
+@@ -1928,7 +1928,7 @@ def test_alpn_call_failure(self):
+ protocols list. Ensure that we produce a user-visible error.
+ """
+ context = Context(SSLv23_METHOD)
+- with pytest.raises(Error):
++ with pytest.raises(ValueError):
+ context.set_alpn_protos([])
+
+ def test_alpn_set_on_connection(self):
diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index 2e16392c9d..d331601c66 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -459,13 +459,13 @@ for example, for recording or replaying web content.")
(define-public python-certifi
(package
(name "python-certifi")
- (version "2020.12.5")
+ (version "2021.10.8")
(source (origin
(method url-fetch)
(uri (pypi-uri "certifi" version))
(sha256
(base32
- "177mdbw0livdjvp17sz6wsfrc32838m9y59v871gpgv2888raj8s"))))
+ "0wl8ln7acd797i1q7mmb430l6hqwhmk4bd37x8ycw02b3my4x23q"))))
(build-system python-build-system)
(arguments '(#:tests? #f)) ;no tests
(home-page "https://certifi.io/")
@@ -481,14 +481,14 @@ is used by the Requests library to verify HTTPS requests.")
(define-public python-cryptography-vectors
(package
(name "python-cryptography-vectors")
- (version "3.3.1")
+ (version "36.0.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "cryptography_vectors" version))
(sha256
(base32
- "192wix3sr678x21brav5hgc6j93l7ab1kh69p2scr3fsblq9qy03"))))
+ "166mvhhmgglqai1sjkkb76mpdkad2yykam11d2w44hs2snpr117w"))))
(build-system python-build-system)
(home-page "https://github.com/pyca/cryptography")
(synopsis "Test vectors for the cryptography package")
@@ -497,75 +497,9 @@ is used by the Requests library to verify HTTPS requests.")
;; Distributed under either BSD-3 or ASL2.0
(license (list license:bsd-3 license:asl2.0))))
-(define-public python2-cryptography-vectors
- (package-with-python2 python-cryptography-vectors))
-
(define-public python-cryptography
(package
(name "python-cryptography")
- (version "3.3.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "cryptography" version))
- (sha256
- (base32
- "1ribd1vxq9wwz564mg60dzcy699gng54admihjjkgs9dx95pw5vy"))))
- (build-system python-build-system)
- (inputs
- (list openssl))
- (propagated-inputs
- (list python-asn1crypto python-cffi python-six python-idna
- python-iso8601))
- (native-inputs
- (list python-cryptography-vectors python-hypothesis python-pretend
- python-pytz python-pytest))
- (home-page "https://github.com/pyca/cryptography")
- (synopsis "Cryptographic recipes and primitives for Python")
- (description
- "cryptography is a package which provides cryptographic recipes and
-primitives to Python developers. It aims to be the “cryptographic standard
-library” for Python. The package includes both high level recipes, and low
-level interfaces to common cryptographic algorithms such as symmetric ciphers,
-message digests and key derivation functions.")
- ;; Distributed under either BSD-3 or ASL2.0
- (license (list license:bsd-3 license:asl2.0))
- (properties `((python2-variant . ,(delay python2-cryptography))))))
-
-(define-public python2-cryptography
- (let ((crypto (package-with-python2
- (strip-python2-variant python-cryptography))))
- (package/inherit crypto
- (arguments
- `(#:python ,python-2
- #:phases
- (modify-phases %standard-phases
- ;; The sanity-check attempts attempts to import the non-existent
- ;; modules "_openssl" and "_padding".
- (delete 'sanity-check))))
- (propagated-inputs
- `(("python2-ipaddress" ,python2-ipaddress)
- ("python2-backport-ssl-match-hostname"
- ,python2-backport-ssl-match-hostname)
- ("python2-enum34" ,python2-enum34)
- ,@(package-propagated-inputs crypto))))))
-
-;; TODO: Make this the default in the next staging cycle.
-(define-public python-cryptography-vectors-next
- (package
- (inherit python-cryptography-vectors)
- (version "36.0.1")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "cryptography_vectors" version))
- (sha256
- (base32
- "166mvhhmgglqai1sjkkb76mpdkad2yykam11d2w44hs2snpr117w"))))))
-
-(define-public python-cryptography-next
- (package
- (inherit python-cryptography)
(version "36.0.1")
(source
(origin
@@ -663,50 +597,103 @@ message digests and key derivation functions.")
(list python-asn1crypto python-cffi python-six python-idna
python-iso8601))
(native-inputs
- (list python-cryptography-vectors-next
+ (list python-cryptography-vectors
python-hypothesis
python-pretend
python-pytz
python-pytest
python-pytest-subtests
python-setuptools-rust
- rust `(,rust "cargo")))
- (properties '())))
+ rust
+ `(,rust "cargo")))
+ (home-page "https://github.com/pyca/cryptography")
+ (synopsis "Cryptographic recipes and primitives for Python")
+ (description
+ "cryptography is a package which provides cryptographic recipes and
+primitives to Python developers. It aims to be the “cryptographic standard
+library” for Python. The package includes both high level recipes, and low
+level interfaces to common cryptographic algorithms such as symmetric ciphers,
+message digests and key derivation functions.")
+ ;; Distributed under either BSD-3 or ASL2.0
+ (license (list license:bsd-3 license:asl2.0))
+ (properties `((python2-variant . ,(delay python2-cryptography))))))
+
+(define-public python2-cryptography-vectors
+ (package
+ (inherit python-cryptography-vectors)
+ (version "3.3.1")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "cryptography_vectors" version))
+ (sha256
+ (base32
+ "192wix3sr678x21brav5hgc6j93l7ab1kh69p2scr3fsblq9qy03"))))
+ (arguments
+ (list #:python python-2))))
+
+(define-public python2-cryptography
+ (let ((crypto (package-with-python2
+ (strip-python2-variant python-cryptography))))
+ (package
+ (inherit crypto)
+ (version "3.3.1")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "cryptography" version))
+ (sha256
+ (base32
+ "1ribd1vxq9wwz564mg60dzcy699gng54admihjjkgs9dx95pw5vy"))))
+ (arguments
+ `(#:python ,python-2
+ #:phases
+ (modify-phases %standard-phases
+ ;; The sanity-check attempts attempts to import the non-existent
+ ;; modules "_openssl" and "_padding".
+ (delete 'sanity-check))))
+ (native-inputs
+ (list python2-cryptography-vectors python2-hypothesis python2-pretend
+ python2-pytz python2-pytest))
+ (inputs (list openssl))
+ (propagated-inputs
+ (modify-inputs (package-propagated-inputs crypto)
+ (prepend python2-ipaddress
+ python2-backport-ssl-match-hostname
+ python2-enum34))))))
(define-public python-pyopenssl
(package
(name "python-pyopenssl")
- (version "20.0.1")
+ (version "22.0.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pyOpenSSL" version))
(sha256
(base32
- "0labcbh2g0jhgisd79wx9kixmi6fip28096d1xb05fj3jmsiq8sc"))))
+ "1gzihw09sqi71lwx97c69hab7w4rbnl6hhfrl6za3i5a4la1n2v6"))))
(build-system python-build-system)
(arguments
- '(#:phases
- (modify-phases %standard-phases
- (delete 'check)
- (add-after 'install 'check
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (add-installed-pythonpath inputs outputs)
- ;; PyOpenSSL runs tests against a certificate with a fixed
- ;; expiry time. To ensure successful builds in the future,
- ;; set the time to roughly the release date.
- (invoke "faketime" "2021-05-01" "py.test" "-v" "-k"
- (string-append
- ;; This test tries to look up certificates from
- ;; the compiled-in default path in OpenSSL, which
- ;; does not exist in the build environment.
- "not test_fallback_default_verify_paths "
- ;; This test attempts to make a connection to
- ;; an external web service.
- "and not test_set_default_verify_paths "
- ;; Fails on i686-linux and possibly other 32-bit platforms
- ;; https://github.com/pyca/pyopenssl/issues/974
- "and not test_verify_with_time")))))))
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ ;; PyOpenSSL runs tests against a certificate with a fixed
+ ;; expiry time. To ensure successful builds in the future,
+ ;; set the time to roughly the release date.
+ (invoke "faketime" "2022-02-01" "py.test" "-v" "-k"
+ (string-append
+ ;; This test tries to look up certificates from
+ ;; the compiled-in default path in OpenSSL, which
+ ;; does not exist in the build environment.
+ "not test_fallback_default_verify_paths "
+ ;; This test attempts to make a connection to
+ ;; an external web service.
+ "and not test_set_default_verify_paths "
+ ;; Fails on i686-linux and possibly other 32-bit platforms
+ ;; https://github.com/pyca/pyopenssl/issues/974
+ "and not test_verify_with_time"))))))))
(propagated-inputs
(list python-cryptography python-six))
(inputs
@@ -718,10 +705,22 @@ message digests and key derivation functions.")
(description
"PyOpenSSL is a high-level wrapper around a subset of the OpenSSL
library.")
+ (properties `((python2-variant . ,(delay python2-pyopenssl))))
(license license:asl2.0)))
(define-public python2-pyopenssl
- (package-with-python2 python-pyopenssl))
+ (let ((base (package-with-python2 (strip-python2-variant python-pyopenssl))))
+ (package
+ (inherit base)
+ (version "21.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "pyOpenSSL" version))
+ (patches (search-patches "python2-pyopenssl-openssl-compat.patch"))
+ (sha256
+ (base32
+ "1cqcc20fwl521z3fxsc1c98gbnhb14q55vrvjfp6bn6h8rg8qbay")))))))
(define-public python-ed25519
(package
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index 9c2a48166a..3146cad933 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -2540,17 +2540,19 @@ APIs.")
(define-public python-requests
(package
(name "python-requests")
- (version "2.26.0")
+ (version "2.27.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "requests" version))
(sha256
(base32
- "19q73fq7hip7b74fwls3p9x6zwvfwqcwpn6kha3zsgvrrzw5iamq"))))
+ "0qcsbi919d689xqlgyhw9zkppp1fs6k09wwffa3ri6d8smpwbmv8"))))
(build-system python-build-system)
(propagated-inputs
- (list python-certifi python-chardet python-charset-normalizer
- python-idna python-urllib3))
+ (list python-certifi
+ python-charset-normalizer
+ python-idna
+ python-urllib3))
(arguments
;; FIXME: Some tests require network access.
'(#:tests? #f))
@@ -2569,6 +2571,7 @@ than Python’s urllib2 library.")
;; The python-charset-normalizer dependency is necessary on Python 3
;; only.
(propagated-inputs (modify-inputs (package-propagated-inputs base)
+ (append python2-chardet)
(delete "python-charset-normalizer"))))))
(define-public python-requests-unixsocket
@@ -2819,14 +2822,14 @@ addon for removing tracking fields from URLs.")
(define-public python-urllib3
(package
(name "python-urllib3")
- (version "1.26.7")
+ (version "1.26.8")
(source
(origin
(method url-fetch)
(uri (pypi-uri "urllib3" version))
(sha256
(base32
- "1kkf6gi8a1fs0dqkf6kpmdpsy97iirvliz8q1krxp8ppaiawd1s9"))))
+ "0g18xk7gfm88gr4bp3f58vgvsbzwps3sq2kqhv5xyz9ylvck6z0f"))))
(build-system python-build-system)
(arguments `(#:tests? #f))
(propagated-inputs
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 7649dd0ad5..5591210fce 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -7491,26 +7491,22 @@ data, and scientific formats.")
(define-public python-pycparser
(package
(name "python-pycparser")
- (version "2.20")
+ (version "2.21")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pycparser" version))
(sha256
(base32
- "1w0m3xvlrzq4lkbvd1ngfm8mdw64r1yxy6n7djlw6qj5d0km6ird"))))
+ "01kjlyn5w2nn2saj8w1rhq7v26328pd91xwgqn32z1zp2bngsi76"))))
(outputs '("out" "doc"))
(build-system python-build-system)
- (native-inputs
- (list pkg-config))
(arguments
`(#:phases
(modify-phases %standard-phases
(replace 'check
(lambda _
- (with-directory-excursion "tests"
- (invoke "python" "all_tests.py"))
- #t))
+ (invoke "python" "-m" "unittest" "discover")))
(add-after 'install 'install-doc
(lambda* (#:key outputs #:allow-other-keys)
(let* ((data (string-append (assoc-ref outputs "doc") "/share"))
@@ -7521,8 +7517,7 @@ data, and scientific formats.")
(copy-file (string-append "." file)
(string-append doc file)))
'("/README.rst" "/CHANGES" "/LICENSE"))
- (copy-recursively "examples" examples)
- #t))))))
+ (copy-recursively "examples" examples)))))))
(home-page "https://github.com/eliben/pycparser")
(synopsis "C parser in Python")
(description
@@ -12108,14 +12103,14 @@ versions of Python.")
(define-public python-idna
(package
(name "python-idna")
- (version "2.10")
+ (version "3.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "idna" version))
(sha256
(base32
- "1xmk3s92d2vq42684p61wixfmh3qpr2mw762w0n6662vhlpqf1xk"))))
+ "0v8f6qjfi5i7qc5icsbv2pi24qy6k6m8wjqjvdf2sxjvlpq3yr4x"))))
(build-system python-build-system)
(home-page "https://github.com/kjd/idna")
(synopsis "Internationalized domain names in applications")
@@ -12127,10 +12122,20 @@ from the earlier standard from 2003. The library is also intended to act as a
suitable drop-in replacement for the “encodings.idna” module that comes with
the Python standard library but currently only supports the older 2003
specification.")
+ (properties `((python2-variant . ,(delay python2-idna))))
(license license:bsd-4)))
(define-public python2-idna
- (package-with-python2 python-idna))
+ (let ((base (package-with-python2 (strip-python2-variant python-idna))))
+ (package
+ (inherit base)
+ (version "2.10")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "idna" version))
+ (sha256
+ (base32
+ "1xmk3s92d2vq42684p61wixfmh3qpr2mw762w0n6662vhlpqf1xk")))))))
(define-public python-libsass
(package
@@ -13131,19 +13136,40 @@ simulation, statistical modeling, machine learning and much more.")
(define-public python-chardet
(package
(name "python-chardet")
- (version "3.0.4")
+ (version "4.0.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "chardet" version))
(sha256
(base32
- "1bpalpia6r5x1kknbk11p1fzph56fmmnp405ds8icksd3knr5aw4"))))
+ "1ykr04qyhgpc0h5b7dhqw4g92b1xv7ki2ky910mhy4mlbnhm6vqd"))))
(native-inputs
- (list python-hypothesis python-pytest python-pytest-runner))
+ (list python-pytest))
(build-system python-build-system)
- ;; XXX: Incompatible with Pytest 4: <https://github.com/chardet/chardet/issues/173>.
- (arguments `(#:tests? #f))
+ (arguments
+ (list #:phases
+ #~(modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (invoke "pytest" "-vv")))
+ ;; This package provides a 'chardetect' executable that only
+ ;; depends on Python, so customize the wrap phase to avoid
+ ;; adding pytest and friends in order to save size.
+ ;; (See also <https://bugs.gnu.org/25235>.)
+ (replace 'wrap
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((sitedir (site-packages inputs outputs))
+ (python (dirname (dirname
+ (search-input-file
+ inputs "bin/python"))))
+ (python-sitedir
+ (string-append python "/lib/python"
+ (python-version python)
+ "/site-packages")))
+ (wrap-program (string-append #$output "/bin/chardetect")
+ `("GUIX_PYTHONPATH" ":" suffix
+ ,(list sitedir python-sitedir)))))))))
(home-page "https://github.com/chardet/chardet")
(synopsis "Universal encoding detector for Python 2 and 3")
(description
@@ -13157,14 +13183,34 @@ automatically detect a wide range of file encodings.")
(define-public python-charset-normalizer
(package
(name "python-charset-normalizer")
- (version "2.0.5")
+ (version "2.0.11")
(source
(origin
(method url-fetch)
(uri (pypi-uri "charset-normalizer" version))
(sha256
- (base32 "0rr3iv2xw4rz5ijnfqk229fw85cq6p6rhqqsilm0ldzncblfg63h"))))
+ (base32 "071pi2kd222rjjrjdllffqv3iz4bfaj93a9bfs65907fd6fqlfcq"))))
(build-system python-build-system)
+ (arguments
+ (list #:phases
+ #~(modify-phases %standard-phases
+ ;; This package provides a 'normalizer' executable that only
+ ;; depends on Python, so customize the wrap phase to avoid
+ ;; adding pytest and friends in order to save size.
+ ;; (See also <https://bugs.gnu.org/25235>.)
+ (replace 'wrap
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((sitedir (site-packages inputs outputs))
+ (python (dirname (dirname
+ (search-input-file
+ inputs "bin/python"))))
+ (python-sitedir
+ (string-append python "/lib/python"
+ (python-version python)
+ "/site-packages")))
+ (wrap-program (string-append #$output "/bin/normalizer")
+ `("GUIX_PYTHONPATH" ":" suffix
+ ,(list sitedir python-sitedir)))))))))
(native-inputs
(list python-pytest))
(home-page "https://github.com/ousret/charset_normalizer")
diff --git a/gnu/packages/time.scm b/gnu/packages/time.scm
index 9b57fe41fb..1b94632c09 100644
--- a/gnu/packages/time.scm
+++ b/gnu/packages/time.scm
@@ -353,14 +353,14 @@ ISO 8601 dates, time and duration.")
(define-public python-iso8601
(package
(name "python-iso8601")
- (version "0.1.13")
+ (version "1.0.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "iso8601" version))
(sha256
(base32
- "1cgfj91khil4ii5gb8s6nxwm73vx7hqc2k79dd9d8990ylmc5ppp"))))
+ "1ccl6plks706hxm35cn1wsvxhqh3bfwi5cjgjpdxjib81qi07x97"))))
(build-system python-build-system)
(arguments
'(#:phases (modify-phases %standard-phases
@@ -368,16 +368,27 @@ ISO 8601 dates, time and duration.")
(lambda _
(invoke "pytest" "-vv" "iso8601"))))))
(native-inputs
- (list python-pytest))
- (home-page "https://bitbucket.org/micktwomey/pyiso8601")
+ (list python-pytest python-pytz))
+ (home-page "https://github.com/micktwomey/pyiso8601")
(synopsis "Module to parse ISO 8601 dates")
(description
"This module parses the most common forms of ISO 8601 date strings (e.g.
@code{2007-01-14T20:34:22+00:00}) into @code{datetime} objects.")
+ (properties `((python2-variant . ,(delay python2-iso8601))))
(license expat)))
(define-public python2-iso8601
- (package-with-python2 python-iso8601))
+ (let ((base (package-with-python2 (strip-python2-variant python-iso8601))))
+ (package
+ (inherit base)
+ (version "0.1.16")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "iso8601" version))
+ (sha256
+ (base32
+ "0ny8dlycapxr8n2m13jxy0r7kbqvgypfshb6y7l981c0rivjylrn")))))))
(define-public python-monotonic
(package
diff --git a/gnu/packages/unicode.scm b/gnu/packages/unicode.scm
index 23c5de195c..bda0de04cc 100644
--- a/gnu/packages/unicode.scm
+++ b/gnu/packages/unicode.scm
@@ -78,15 +78,14 @@ renderer.")
(define-public ucd
(package
(name "ucd")
- (version "12.0.0")
+ (version "14.0.0")
(source
(origin
(method url-fetch/zipbomb)
(uri (string-append "https://www.unicode.org/Public/zipped/" version
"/UCD.zip"))
(sha256
- (base32
- "1ighy39cjkmqnv1797wrxjz76mv1fdw7zp5j04q55bkwxsdkvrmh"))))
+ (base32 "001nq9w52ijma0vps40xwy2q6ylpyf1393lzb128ibypnmv54fh3"))))
(build-system copy-build-system)
(arguments
'(#:install-plan
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 9489cf9980..0aa7fcc5b1 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -221,14 +221,14 @@ Python 3.3 and later, rather than on Python 2.")
(define-public git
(package
(name "git")
- (version "2.34.0")
+ (version "2.34.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/software/scm/git/git-"
version ".tar.xz"))
(sha256
(base32
- "07s1c9lzlm4kpbb5lmxy0869phg7037pv4faz5hlqyb5csrbjv7x"))))
+ "0b40vf315s1kz65x1wq47g8srl4wqac39pwnvlj1mdzs3kfma1rs"))))
(build-system gnu-build-system)
(native-inputs
`(("native-perl" ,perl)
@@ -248,7 +248,7 @@ Python 3.3 and later, rather than on Python 2.")
version ".tar.xz"))
(sha256
(base32
- "0wic95h0i1bm66hxnc38pfj31n74lvk2xb8lx6kcfpzg2wszmsj7"))))
+ "1f3y7hxvs9p00wwwi8zdn0sgn6nh1pgg1fdsnz2bq8gzfbbmsqww"))))
;; For subtree documentation.
("asciidoc" ,asciidoc)
("docbook-xsl" ,docbook-xsl)
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index dc05c0a222..fb01e3f30c 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -46,6 +46,7 @@
;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@posteo.ro>
;;; Copyright © 2020 Ivan Kozlov <kanichos@yandex.ru>
;;; Copyright © 2020 Antoine Côté <antoine.cote@posteo.net>
+;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2021 Alexey Abramov <levenson@mmer.org>
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
;;; Copyright © 2021 David Wilson <david@daviwil.com>
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index 8105ffcaf8..60d042fb66 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -15,6 +15,7 @@
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@posteo.ro>
+;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2021, 2022 Cage <cage-dev@twistfold.it>
;;; Copyright © 2021 Benoit Joly <benoit@benoitj.ca>
;;; Copyright © 2021 Alexander Krotov <krotov@iitp.ru>
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 75aa5ce907..89533d8469 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -1640,7 +1640,7 @@ used to validate and fix HTML data.")
(define-public esbuild
(package
(name "esbuild")
- (version "0.12.9")
+ (version "0.14.0")
(source
(origin
(method git-fetch)
@@ -1649,7 +1649,7 @@ used to validate and fix HTML data.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "10bz1xq2frdja7mbx04m009svg8b5rj7vfq3sc2gc88n31v21b1j"))
+ (base32 "09r1xy0kk6c9cpz6q0mxr4why373pwxbm439z2ihq3k1d5kk7x4w"))
(modules '((guix build utils)))
(snippet
'(begin
diff --git a/gnu/packages/wget.scm b/gnu/packages/wget.scm
index 9d23ecdaef..ec655b95bd 100644
--- a/gnu/packages/wget.scm
+++ b/gnu/packages/wget.scm
@@ -5,6 +5,7 @@
;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2021 Michael Rohleder <mike@rohleder.de>
;;;
;;; This file is part of GNU Guix.
;;;
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 14cd3bc789..dd0878a98c 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -26,6 +26,7 @@
;;; Copyright © 2020, 2021 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2020 Jean-Baptiste Note <jean-baptiste.note@m4x.org>
+;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org>
;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org>
;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>