summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/guix.texi2
-rw-r--r--gnu/build/file-systems.scm15
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/algebra.scm46
-rw-r--r--gnu/packages/browser-extensions.scm4
-rw-r--r--gnu/packages/c.scm22
-rw-r--r--gnu/packages/containers.scm78
-rw-r--r--gnu/packages/cpp.scm4
-rw-r--r--gnu/packages/databases.scm18
-rw-r--r--gnu/packages/engineering.scm92
-rw-r--r--gnu/packages/fonts.scm8
-rw-r--r--gnu/packages/gnome.scm4
-rw-r--r--gnu/packages/gnunet.scm54
-rw-r--r--gnu/packages/graphics.scm180
-rw-r--r--gnu/packages/gtk.scm4
-rw-r--r--gnu/packages/image-viewers.scm5
-rw-r--r--gnu/packages/man.scm39
-rw-r--r--gnu/packages/music.scm6
-rw-r--r--gnu/packages/package-management.scm9
-rw-r--r--gnu/packages/patches/python-apsw-3.39.2.1-test-fix.patch27
-rw-r--r--gnu/packages/python-science.scm4
-rw-r--r--gnu/packages/python-xyz.scm43
-rw-r--r--gnu/packages/python.scm2
-rw-r--r--gnu/packages/qt.scm304
-rw-r--r--gnu/packages/racket.scm2
-rw-r--r--gnu/packages/shellutils.scm25
-rw-r--r--gnu/packages/sqlite.scm4
-rw-r--r--gnu/packages/tcl.scm2
-rw-r--r--gnu/packages/tex.scm94
-rw-r--r--gnu/services/base.scm2
-rw-r--r--gnu/tests/dict.scm3
-rw-r--r--guix/build/syscalls.scm116
-rw-r--r--guix/import/gnome.scm14
-rw-r--r--guix/search-paths.scm19
34 files changed, 883 insertions, 369 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 20abfee772..db72e75a69 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -36437,7 +36437,7 @@ This is the data type representing the configuration of rshiny.
 @item @code{package} (default: @code{r-shiny})
 The package to use.
 
-@item @code{binary} (defaunlt @code{"rshiny"})
+@item @code{binary} (default @code{"rshiny"})
 The name of the binary or shell script located at @code{package/bin/} to
 run when the service is run.
 
diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm
index b9d46c9350..0ed5dc5671 100644
--- a/gnu/build/file-systems.scm
+++ b/gnu/build/file-systems.scm
@@ -98,6 +98,18 @@ standard input is /dev/null."
              system*/console)
          program args))
 
+(define (call-with-input-file file proc)
+  "Like 'call-with-input-file', but pass O_CLOEXEC."
+  (let ((port #f))
+    (dynamic-wind
+      (lambda ()
+        (set! port (open file (logior O_RDONLY O_CLOEXEC))))
+      (lambda ()
+        (proc port))
+      (lambda ()
+        (close-port port)
+        (set! port #f)))))
+
 (define (bind-mount source target)
   "Bind-mount SOURCE at TARGET."
   (mount source target "" MS_BIND))
@@ -1183,7 +1195,8 @@ corresponds to the symbols listed in FLAGS."
                  (not (file-is-directory? source)))
             (unless (file-exists? target)
               (mkdir-p (dirname target))
-              (call-with-output-file target (const #t)))
+              (close-fdes
+               (open-fdes target (logior O_WRONLY O_CREAT O_CLOEXEC))))
             (mkdir-p target))
 
         (cond
diff --git a/gnu/local.mk b/gnu/local.mk
index 50b9c37fac..cc96b77e03 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1681,6 +1681,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-3-fix-tests.patch			\
   %D%/packages/patches/python-3-hurd-configure.patch		\
   %D%/packages/patches/python-3-no-static-lib.patch		\
+  %D%/packages/patches/python-apsw-3.39.2.1-test-fix.patch	\
   %D%/packages/patches/python-aionotify-0.2.0-py3.8.patch	\
   %D%/packages/patches/python-argcomplete-1.11.1-fish31.patch	\
   %D%/packages/patches/python-cross-compile.patch		\
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index d3f2549152..e5bd12eeb8 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -74,7 +74,8 @@
   #:use-module (guix hg-download)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
-  #:use-module (guix utils))
+  #:use-module (guix utils)
+  #:use-module (ice-9 match))
 
 
 (define-public mpfrcx
@@ -1009,10 +1010,39 @@ extends it by a set of algebraic capabilities.")
                   #t))))
     (build-system cmake-build-system)
     (arguments
-     '(;; Turn off debugging symbols to save space.
+     `(;; Turn off debugging symbols to save space.
        #:build-type "Release"
 
+       #:modules ((ice-9 match)
+                  (guix build utils)
+                  (guix build cmake-build-system))
+
        #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'disable-some-tests
+                    ;; Not all platforms are well supported by the test suite.
+                    (lambda _
+                      ,@(match (%current-system)
+                          ("i686-linux"
+                           `((substitute* "test/CMakeLists.txt"
+                               ((".*packetmath.*") ""))))
+                          ("aarch64-linux"
+                           `((substitute* "test/CMakeLists.txt"
+                               ((".*array_cwise.*") "")
+                               ((".*vectorization_logic.*") ""))))
+                          ("armhf-linux"
+                           `((substitute* "test/CMakeLists.txt"
+                               ((".*geo_quaternion.*") "")
+                               ((".*jacobisvd.*") "")
+                               ((".*packetmath.*") "")
+                               ((".*prec_inverse.*") "")
+                               ((".*qr_colpivoting.*") "")
+                               ((".*vectorization_logic.*") ""))))
+                          ("riscv64-linux"
+                           `((substitute* "test/CMakeLists.txt"
+                               ((".*array_cwise.*") "")
+                               ((".*geo_quaternion.*") ""))))
+                          (_
+                            '((display "No tests to disable on this architecture.\n"))))))
                   (replace 'check
                     (lambda* (#:key tests? #:allow-other-keys)
                       (let* ((cores  (parallel-job-count))
@@ -1101,6 +1131,11 @@ features, and more.")
                     (substitute* "unsupported/CMakeLists.txt"
                       (("add_subdirectory\\(test.*")
                        "# Do not build the tests for unsupported features.\n"))))))
+      (arguments
+       (substitute-keyword-arguments (package-arguments eigen)
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (delete 'disable-some-tests)))))
       (native-inputs
        (list gcc-7)))))
 
@@ -1129,7 +1164,12 @@ features, and more.")
                  '(begin
                     (substitute* "unsupported/CMakeLists.txt"
                       (("add_subdirectory\\(test.*")
-                       "# Do not build the tests for unsupported features.\n")))))))))
+                       "# Do not build the tests for unsupported features.\n"))))))
+      (arguments
+       (substitute-keyword-arguments (package-arguments eigen)
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (delete 'disable-some-tests))))))))
 
 (define-public xtensor
   (package
diff --git a/gnu/packages/browser-extensions.scm b/gnu/packages/browser-extensions.scm
index 63bd11b226..db27101b9b 100644
--- a/gnu/packages/browser-extensions.scm
+++ b/gnu/packages/browser-extensions.scm
@@ -51,7 +51,7 @@ supported content to the Kodi media center.")
 (define ublock-origin
   (package
     (name "ublock-origin")
-    (version "1.44.0")
+    (version "1.44.2")
     (home-page "https://github.com/gorhill/uBlock")
     (source (origin
               (method git-fetch)
@@ -62,7 +62,7 @@ supported content to the Kodi media center.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0sws7xd8nvxnzcyw92i9sc5xv3hpqw1kzdj9vm8bhfxlh042l7ly"))))
+                "0hci19wv5sj4vph8k24bmcz7q74y1adyykwijqyga4p7h68jklw1"))))
     (build-system gnu-build-system)
     (outputs '("xpi" "firefox" "chromium"))
     (arguments
diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm
index d7d649488b..10275970b1 100644
--- a/gnu/packages/c.scm
+++ b/gnu/packages/c.scm
@@ -1083,6 +1083,28 @@ Telemetry Transport (MQTT) publish-subscribe messaging protocol.")
     (home-page "https://github.com/awslabs/aws-c-mqtt")
     (license license:asl2.0)))
 
+;; Note: there is another mimalloc embedded in rust-mimalloc (version 1.6.4).
+(define-public mimalloc
+  (package
+    (name "mimalloc")
+    (version "2.0.6")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/microsoft/mimalloc")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "05x2dl3zimflfj91ns3vrphmzpdlyyr230p9adqgfds101f16qmv"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:build-type "Release"))
+    (synopsis "General purpose memory allocator")
+    (description "@code{mimalloc} is a drop-in replacement for @code{malloc}.")
+    (home-page "https://microsoft.github.io/mimalloc/")
+    (license license:expat)))
+
 ;;; Factored out of the ck package so that it can be adjusted and called on
 ;;; the host side easily, without impacting the package definition.
 (define (gnu-triplet->ck-machine target)
diff --git a/gnu/packages/containers.scm b/gnu/packages/containers.scm
index a156f4191c..2c7e7ae9c4 100644
--- a/gnu/packages/containers.scm
+++ b/gnu/packages/containers.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2021 Timmy Douglas <mail@timmydouglas.com>
 ;;; Copyright © 2022 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -271,7 +272,7 @@ configure network interfaces in Linux containers.")
 (define-public podman
   (package
     (name "podman")
-    (version "3.4.4")
+    (version "4.2.0")
     (source
      (origin
        (method git-fetch)
@@ -279,46 +280,49 @@ configure network interfaces in Linux containers.")
              (url "https://github.com/containers/podman")
              (commit (string-append "v" version))))
        (sha256
-        (base32 "1q09qsl1wwiiy5njvb97n1j5f5jin4ckmzj5xbdfs28czb2kx3g5"))
+        (base32 "00wyjppd11hznmals9ax4s2qjklj6p1vfz4jjkp50bk8q4blxfbj"))
        (file-name (git-file-name name version))))
 
     (build-system gnu-build-system)
     (arguments
-     `(#:make-flags (list ,(string-append "CC=" (cc-for-target))
-                          (string-append "PREFIX=" %output))
-       #:tests? #f ; /sys/fs/cgroup not set up in guix sandbox
-       #:test-target "test"
-       #:phases (modify-phases %standard-phases
-                  (delete 'configure)
-                  (add-after 'unpack 'set-env
-                    (lambda* (#:key inputs #:allow-other-keys)
-                      ;; when running go, things fail because
-                      ;; HOME=/homeless-shelter.
-                      (setenv "HOME" "/tmp")))
-                  (replace 'check
-                    (lambda* (#:key tests? #:allow-other-keys)
-                      (when tests?
-                        ;; (invoke "strace" "-f" "bin/podman" "version")
-                        (invoke "make" "localsystem")
-                        (invoke "make" "remotesystem"))))
-                  (add-after 'unpack 'fix-hardcoded-paths
-                    (lambda _
-                      (substitute* (find-files "libpod" "\\.go")
-                        (("exec.LookPath[(][\"]slirp4netns[\"][)]")
-                         (string-append "exec.LookPath(\""
-                                        (which "slirp4netns") "\")")))
-                      (substitute* "hack/install_catatonit.sh"
-                        (("CATATONIT_PATH=\"[^\"]+\"")
-                         (string-append "CATATONIT_PATH=" (which "true"))))
-                      (substitute* "vendor/github.com/containers/common/pkg/config/config_linux.go"
-                        (("/usr/local/libexec/podman")
-                         (string-append (assoc-ref %outputs "out") "/bin")))
-                      (substitute* "vendor/github.com/containers/common/pkg/config/default.go"
-                        (("/usr/libexec/podman/conmon") (which "conmon"))
-                        (("/usr/local/libexec/cni")
-                         (string-append (assoc-ref %build-inputs "cni-plugins")
-                                        "/bin"))
-                        (("/usr/bin/crun") (which "crun"))))))))
+     (list
+      #:make-flags
+      #~(list #$(string-append "CC=" (cc-for-target))
+              (string-append "PREFIX=" #$output))
+      #:tests? #f                  ; /sys/fs/cgroup not set up in guix sandbox
+      #:test-target "test"
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'configure)
+          (add-after 'unpack 'set-env
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; when running go, things fail because
+              ;; HOME=/homeless-shelter.
+              (setenv "HOME" "/tmp")))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                ;; (invoke "strace" "-f" "bin/podman" "version")
+                (invoke "make" "localsystem")
+                (invoke "make" "remotesystem"))))
+          (add-after 'unpack 'fix-hardcoded-paths
+            (lambda _
+              (substitute* (find-files "libpod" "\\.go")
+                (("exec.LookPath[(][\"]slirp4netns[\"][)]")
+                 (string-append "exec.LookPath(\""
+                                (which "slirp4netns") "\")")))
+              (substitute* "hack/install_catatonit.sh"
+                (("CATATONIT_PATH=\"[^\"]+\"")
+                 (string-append "CATATONIT_PATH=" (which "true"))))
+              (substitute* "vendor/github.com/containers/common/pkg/config/config_linux.go"
+                (("/usr/local/libexec/podman")
+                 (string-append #$output "/bin")))
+              (substitute* "vendor/github.com/containers/common/pkg/config/default.go"
+                (("/usr/libexec/podman/conmon") (which "conmon"))
+                (("/usr/local/libexec/cni")
+                 (string-append #$(this-package-input "cni-plugins")
+                                "/bin"))
+                (("/usr/bin/crun") (which "crun"))))))))
     (inputs
      (list btrfs-progs
            cni-plugins
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index f00317e949..606cd792c1 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -1023,7 +1023,7 @@ Google's C++ code base.")
   (let ((base abseil-cpp-20200923.3))
     (package/inherit base
       (name "abseil-cpp")
-      (version "20220623.0")
+      (version "20220623.1")
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -1032,7 +1032,7 @@ Google's C++ code base.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1kyvlpdkkh8spqrdh9yvq2d4ri46hwxljicy3i9mp7mk2rqcnyvj"))))
+                  "0vxh2a74g4s45yr8kdjqnzl64k10qdlc0hbnn987a4cnwdj4bp9r"))))
       (arguments
        (substitute-keyword-arguments (package-arguments base)
          ((#:configure-flags flags)
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 3b8d6db967..84aa0f5ebc 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -3540,18 +3540,22 @@ PickleShare.")
 (define-public python-apsw
   (package
     (name "python-apsw")
-    (version "3.39.2.0")
+    (version "3.39.2.1")
+    ;; The compressed release has fetching functionality disabled.
     (source
      (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/rogerbinns/apsw")
-             (commit version)))
-       (file-name (git-file-name name version))
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/rogerbinns/apsw/releases/download/"
+             version "/apsw-" version ".zip"))
        (sha256
         (base32
-         "0q7fnk8n3m5mpjzh6xyhj409k8sacdbjsfis98my9c50fdn5sr7y"))))
+         "06x3qgg71xz8l3kz8gz04wkfp5f6zfrg476a4mm1c5hikqyw6ykj"))
+       ;; Cherry-picked from upstream, remove when bumping to 3.39.3.
+       (patches
+        (search-patches "python-apsw-3.39.2.1-test-fix.patch"))))
     (build-system python-build-system)
+    (native-inputs (list unzip))
     (inputs (list sqlite-next))         ;SQLite 3.39 required.
     (arguments
      (list #:phases
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index f195179413..a8b9f1e786 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -78,6 +78,7 @@
   #:use-module (gnu packages bdw-gc)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages boost)
+  #:use-module (gnu packages c)
   #:use-module (gnu packages check)
   #:use-module (gnu packages cmake)
   #:use-module (gnu packages commencement)
@@ -2895,6 +2896,97 @@ for the milling of PCBs.  It also includes an autoleveller for the automatic
 dynamic calibration of the milling depth.")
      (license license:gpl3+))))
 
+;; libdxfrw has no readme, no version release, no tags.  Initial commit says
+;; "libdxfrw-0.6.3 import", but it shares no git history with "upstream"
+;; https://github.com/codelibs/libdxfrw.  Both are difficult to package
+;; separately as they don't install properly.  Copying in-tree instead of
+;; #:recursive #t to avoid downloading the other bigger dependencies which
+;; aren't needed.
+(define libdxfrw-sources
+  (origin
+    (method git-fetch)
+    (uri (git-reference (url
+                         "https://github.com/solvespace/libdxfrw")
+                        (commit
+                         "0b7b7b709d9299565db603f878214656ef5e9ddf")))
+    (sha256 (base32
+             "0d2wjq81466m3hb5cffiy99vhx0irwwy47yfxp318k2q4cvd5z2a"))))
+
+(define-public solvespace
+  (let ((commit "70bde63cb32a7f049fa56cbdf924e2695fcb2916")
+        (version "3.1"))
+    (package
+      (name "solvespace")
+      (version version)
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/solvespace/solvespace")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1hbdln44k00a6vlklv2mq2c9zda3i9d5x0f7ks85w4v6zskhqnra"))))
+      (build-system cmake-build-system)
+      (native-inputs (list pkg-config gettext-minimal))
+      (arguments
+       (list
+        #:build-type "Release"
+        #:phases #~(modify-phases %standard-phases
+                     (add-after 'unpack 'unpack-libdxfrw
+                       (lambda _
+                         (copy-recursively #$libdxfrw-sources
+                                           "extlib/libdxfrw")))
+                     (add-before 'configure 'embed-git-commit-hash
+                       (lambda _
+                         ;; `git describe` doesn't work here, so embed
+                         ;; the commit hash directly in CMakeLists.txt as
+                         ;; described instead.
+                         (substitute* "CMakeLists.txt"
+                           (("include\\(GetGitCommitHash\\)")
+                            (string-append "set(GIT_COMMIT_HASH "
+                                           #$commit ")")))))
+                     (add-before 'configure 'use-packaged-mimalloc
+                       (lambda _
+                         (substitute* "CMakeLists.txt"
+                           (("message\\(STATUS \"Using in-tree mimalloc\"\\)")
+                            "message(STATUS \"Using guix packaged mimalloc\")")
+                           (("add_subdirectory\\(extlib/mimalloc EXCLUDE_FROM_ALL\\)")
+                            "find_package(mimalloc REQUIRED)")))))))
+      (inputs (list cairo
+                    eigen
+                    freetype
+                    gtkmm-3
+                    json-c
+                    libpng
+                    libspnav            ;spaceware
+                    mimalloc
+                    mesa
+                    zlib))
+      (synopsis
+       "Parametric 2D/3D @acronym{CAD, computer-aided design} software")
+      (description
+       "SOLVESPACE is a parametric 3D @acronym{CAD,
+computer-aided design} tool.  Applications include:
+
+@itemize
+@item modeling 3D parts — draw with extrudes, revolves, helixes and
+      Boolean (union / difference / intersection) operations
+@item modeling 2D parts — draw the part as a single section,
+      and export DXF, PDF, SVG; use 3D assembly to verify fit
+@item 3D-printed parts — export the STL or other triangle mesh
+      expected by most 3D printers
+@item preparing CAM data — export 2D vector art for a waterjet
+      machine or laser cutter; or generate STEP or STL, for import into
+      third-party CAM software for machining
+@item mechanism design — use the constraint solver to simulate planar
+      or spatial linkages, with pin, ball, or slide joints
+@item plane and solid geometry — replace hand-solved trigonometry and spreadsheets
+      with a live dimensioned drawing
+@end itemize")
+      (home-page "https://solvespace.com/")
+      (license license:gpl3+))))
+
 (define-public syscall-intercept
   ;; Upstream provides no tag. Also, last version update is 4 years old.
   (let ((commit "304404581c57d43478438d175099d20260bae74e")
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 09445cd00c..7a23aa8552 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -2735,7 +2735,7 @@ and readability.  This package bundles those icons into a font.")
 (define-public font-lxgw-wenkai
   (package
     (name "font-lxgw-wenkai")
-    (version "1.235.2")
+    (version "1.240")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2743,7 +2743,7 @@ and readability.  This package bundles those icons into a font.")
                     version "/lxgw-wenkai-v" version ".tar.gz"))
               (sha256
                (base32
-                "17li3xry4j4ccdnwz2pcnf0gv7c5mwq0h5fwvl7ar28brn2qgdbk"))))
+                "1rg6i6fqs1b0b2g4kijimkyqbxfn6n8ac74rppsizq65n6crvfib"))))
     (build-system font-build-system)
     (home-page "https://lxgw.github.io/2021/01/28/Klee-Simpchin/")
     (synopsis "Simplified Chinese Imitation Song typeface")
@@ -2757,7 +2757,7 @@ within GB 2312, standard glyphs for Mainland China is used.")
   (package
     (inherit font-lxgw-wenkai)
     (name "font-lxgw-wenkai-tc")
-    (version "0.920")
+    (version "0.921")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2765,7 +2765,7 @@ within GB 2312, standard glyphs for Mainland China is used.")
                     version "/lxgw-wenkai-tc-v" version ".tar.gz"))
               (sha256
                (base32
-                "1kysqzi19ldd1a3pd9axmggcbm1719myq6i6q6fdb1afscn272cp"))))
+                "0s7zvb8i1f7ziw8r94l1f3rcv21b80dbgc43zjwz34s43465lwrb"))))
     (home-page "https://github.com/lxgw/LxgwWenKaitc")
     (synopsis "Traditional Chinese Imitation Song typeface")
     (description
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 2057aa47cf..fbb0dc1206 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -12471,7 +12471,7 @@ profiler via Sysprof, debugging support, and more.")
 (define-public komikku
   (package
     (name "komikku")
-    (version "0.40.0")
+    (version "0.41.0")
     (source
      (origin
        (method git-fetch)
@@ -12481,7 +12481,7 @@ profiler via Sysprof, debugging support, and more.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "12l6qks4kwi75ss61yx1f515nb30d987qw3yhi4a36w5xz721p5z"))))
+         "17r059srxrx26w40swy47pdpyigyjdczp8550g4rfh86qs3ld4il"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index a0f902e534..b477fee537 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -33,6 +33,7 @@
   #:use-module (gnu packages file)
   #:use-module (gnu packages aidc)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages curl)
@@ -349,29 +350,35 @@ services.")
 (define-public gnunet-scheme
   (package
     (name "gnunet-scheme")
-    (version "0.2")
+    (version "0.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                     (url "https://git.gnunet.org/git/gnunet-scheme.git")
-                    (commit (string-append "v" version))))
+                    ;; Go three commits beyond the v0.3 tag, as these three
+                    ;; commits work-around
+                    ;; <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=49623>.
+                    (commit "f5dc44e66373c29f1c84ea89d8080939a8dfbfd2")))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0a11n58m346vs2khns2hfnxv8lbscf8aaqzhmq0d7nwdpn808nrp"))
+                "0kvqbqijfyp3fhsqjyzwd7b3cm5khwv557wq196mv6rx47aaivgd"))
               (modules '((guix build utils)))
-              ;; XXX: Work-around
-              ;; <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=49623>,
-              ;; this can be removed once Guile > 3.0.7 is released.
-              (snippet '(substitute* '("gnu/gnunet/config/parser.scm"
-                                       "tests/config-parser.scm")
-                          (("#\\{\\$\\{\\}\\}#") "#{${;};}#")
-                          (("#\\{\\$\\{:-\\}\\}#") "#{${;:-};}#")
-                          (("#\\{\\$\\{\\}\\}# #\\{\\$\\{:-\\}\\}#")
-                           "#{$\\x7b;\\x7d;}# #{$\\x7b;:-\\x7d;}#")
-                          (("'#\\{\\$\\{\\}\\}# '#\\{\\$\\{:-\\}\\}#")
-                           "'#{$\\x7b;\\x7d;}# '#{$\\x7b;:-\\x7d;}#")))))
+              (snippet
+               ;; Unbundle dependencies.  TODO: build-aux/test-driver.scm
+               ;; is bundled too, but it's not yet automatically copied by
+               ;; autoreconf -i.
+               #~(delete-file "build-aux/config.rpath"))))
     (build-system gnu-build-system)
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               ;; For reproducibility, do not insert real timestamps in the PDF.
+               (add-after 'unpack 'reproducible-timestamp
+                 (lambda _
+                   (substitute* "Makefile.am"
+                     (("\\$\\(TEXMACS_CONVERT\\)")
+                      "faketime -m -f '1970-01-01 00:00:00' $(TEXMACS_CONVERT)")))))))
     (inputs (list guile-3.0)) ;for pkg-config
     (propagated-inputs (list guile-bytestructures guile-gcrypt guile-pfds
                              guile-fibers-1.1))
@@ -382,6 +389,7 @@ services.")
                          guile-gcrypt
                          guile-pfds
                          guile-fibers-1.1
+                         libfaketime
                          automake
                          autoconf
                          pkg-config
@@ -390,11 +398,19 @@ services.")
                          guile-quickcheck)) ;for tests
     (synopsis "Guile implementation of GNUnet client libraries")
     (description
-     "This package provides Guile modules for connecting to the NSE (network
-size estimation) and DHT (distributed hash table) services of GNUnet.  It also
-has infrastructure for writing new GNUnet services and connecting to them and
-can be used from multi-threaded environments.  It is not to be confused with
-@code{guile-gnunet} -- @code{guile-gnunet} supports a different set of services.")
+     "This package provides Guile modules for connecting to various
+GNUnet services. It also has infrastructure for writing new GNUnet services and
+connecting to them and can be used from multi-threaded environments.  It is not
+to be confused with @code{guile-gnunet} -- @code{guile-gnunet} supports a different
+set of services.
+
+The following services are supported:
+
+@itemize
+@item NSE (network size estimation)
+@item DHT (distributed hash table)
+@item CADET (secure end-to-end communication between arbitrary peers)
+@end itemize")
     ;; Most code is licensed as AGPL and a few modules are licensed as LGPL
     ;; or GPL.  Documentation is licensed as GFDL.
     (license (list license:agpl3+ license:gpl3+ license:fdl1.3+ license:lgpl3+))
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 697223cfdb..d4300f01da 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -2306,97 +2306,89 @@ a tetrahedral mesh, isovalue discretization and Lagrangian movement;
     (license license:lgpl3+)))
 
 (define-public f3d
-  ;; There have been many improvements since the last tagged version (1.2.1,
-  ;; released in December 2021), including support for the Alembic file
-  ;; format.
-  (let ((commit "46df21fe9409349917af5e6f7d1cb931f4c68e59")
-        (revision "0"))
-    (package
-      (name "f3d")
-      ;; F3D has not actually been tagged as 1.3.0-pre, but upstream commit
-      ;; 401d4d27b2094568378c07f400fbad48b7af3168 updated the version string
-      ;; to 1.3.0.
-      (version (git-version "1.3.0-pre" revision commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/f3d-app/f3d")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32 "0x0jw9vqf1b8pxh84xpr47hzcjynk07dp8q7r2xihh9cd00kglp1"))
-         (modules '((guix build utils)))
-         (snippet
-          '(begin
-             (delete-file "application/cxxopts.hpp")
-             (delete-file "application/json.hpp")
-             (substitute* "application/F3DOptionsParser.cxx"
-               (("^#include \"cxxopts\\.hpp\"")
-                "#include <cxxopts.hpp>")
-               (("^#include \"json\\.hpp\"")
-                "#include <nlohmann/json.hpp>"))))))
-      (build-system cmake-build-system)
-      ;; The package cannot easily be split into out and lib outputs because
-      ;; VTK's vtkModule.cmake complains, and also the CMake files in
-      ;; /lib/cmake/f3d expect the f3d executable and library to be available,
-      ;; as they set up targets for both of them.
-      (arguments
-       (list
-        ;; Many tests require files supplied by git-lfs.
-        ;; Also, some tests segfault (after an exception?) but the tested
-        ;; behavior, i.e., when the program is run manually, does not (for
-        ;; example, TestNonExistentConfigFile and TestInvalidConfigFile).
-        ;; Upstream is aware of occasionally flaky tests [1], but the tests
-        ;; run in CI seem to be passing.
-        ;; Anyway, the program runs and is able to open at least STL files
-        ;; without issue.
-        ;;
-        ;; [1]: https://github.com/f3d-app/f3d/issues/92
-        #:tests? #f
-        #:configure-flags
-        #~(list (string-append "-DCMAKE_INSTALL_DOCDIR=" #$output
-                               "/share/doc/" #$name "-" #$version)
-                "-DBUILD_TESTING=OFF"
-                "-DF3D_GENERATE_MAN=ON"
-                "-DF3D_INSTALL_DEFAULT_CONFIGURATION_FILE=ON"
-                "-DF3D_INSTALL_DEFAULT_CONFIGURATION_FILE_IN_PREFIX=ON"
-                "-DF3D_INSTALL_MIME_TYPES_FILE=ON"
-                "-DF3D_INSTALL_THUMBNAILER_FILES=ON"
-                "-DF3D_MODULE_ALEMBIC=ON"
-                "-DF3D_MODULE_ASSIMP=ON"
-                "-DF3D_MODULE_EXTERNAL_RENDERING=ON"
-                "-DF3D_MODULE_OCCT=ON")))
-      (native-inputs
-       (list cxxopts
-             help2man
-             json-modern-cxx))
-      (inputs
-       (list alembic
-             assimp
-             double-conversion
-             eigen
-             expat
-             fontconfig
-             freetype
-             glew
-             hdf5
-             imath
-             jsoncpp
-             libjpeg-turbo
-             libpng
-             libtiff
-             libx11
-             lz4
-             netcdf
-             opencascade-occt
-             vtk
-             zlib))
-      (home-page "https://f3d-app.github.io/f3d/")
-      (synopsis "VTK-based 3D viewer")
-      (description "F3D (pronounced @samp{/fɛd/}) is a VTK-based 3D viewer
-with simple interaction mechanisms and which is fully controllable using
-arguments on the command line.  It supports a range of file formats (including
-animated glTF, STL, STEP, PLY, OBJ, FBX), and provides numerous rendering and
-texturing options.")
-      (license license:bsd-3))))
+  (package
+    (name "f3d")
+    (version "1.3.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/f3d-app/f3d")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0hdfgwf5d24ykab634xg4vv9r09nh96ss7hhnqnh5nmw4abhxzg7"))
+       (modules '((guix build utils)))
+       (snippet
+        #~(begin
+            (delete-file "application/cxxopts.hpp")
+            (delete-file "application/json.hpp")
+            (substitute* "application/F3DOptionsParser.cxx"
+              (("^#include \"cxxopts\\.hpp\"")
+               "#include <cxxopts.hpp>")
+              (("^#include \"json\\.hpp\"")
+               "#include <nlohmann/json.hpp>"))))))
+    (build-system cmake-build-system)
+    ;; The package cannot easily be split into out and lib outputs because
+    ;; VTK's vtkModule.cmake complains, and also the CMake files in
+    ;; /lib/cmake/f3d expect the f3d executable and library to be available,
+    ;; as they set up targets for both of them.
+    (arguments
+     (list
+      ;; Many tests require files supplied by git-lfs.
+      ;; Also, some tests segfault (after an exception?) but the tested
+      ;; behavior, i.e., when the program is run manually, does not (for
+      ;; example, TestNonExistentConfigFile and TestInvalidConfigFile).
+      ;; Upstream is aware of occasionally flaky tests [1], but the tests
+      ;; run in CI seem to be passing.
+      ;; Anyway, the program runs and is able to open at least STL files
+      ;; without issue.
+      ;;
+      ;; [1]: https://github.com/f3d-app/f3d/issues/92
+      #:tests? #f
+      #:configure-flags
+      #~(list (string-append "-DCMAKE_INSTALL_DOCDIR=" #$output
+                             "/share/doc/" #$name "-" #$version)
+              "-DBUILD_TESTING=OFF"
+              "-DF3D_GENERATE_MAN=ON"
+              "-DF3D_INSTALL_DEFAULT_CONFIGURATION_FILE=ON"
+              "-DF3D_INSTALL_DEFAULT_CONFIGURATION_FILE_IN_PREFIX=ON"
+              "-DF3D_INSTALL_MIME_TYPES_FILES=ON"
+              "-DF3D_INSTALL_THUMBNAILER_FILES=ON"
+              "-DF3D_MODULE_ALEMBIC=ON"
+              "-DF3D_MODULE_ASSIMP=ON"
+              "-DF3D_MODULE_EXTERNAL_RENDERING=ON"
+              "-DF3D_MODULE_OCCT=ON")))
+    (native-inputs
+     (list cxxopts
+           help2man
+           json-modern-cxx))
+    (inputs
+     (list alembic
+           assimp
+           double-conversion
+           eigen
+           expat
+           fontconfig
+           freetype
+           glew
+           hdf5
+           imath
+           jsoncpp
+           libjpeg-turbo
+           libpng
+           libtiff
+           libx11
+           lz4
+           netcdf
+           opencascade-occt
+           vtk
+           zlib))
+    (home-page "https://f3d-app.github.io/f3d/")
+    (synopsis "VTK-based 3D viewer")
+    (description "F3D (pronounced @samp{/fɛd/}) is a VTK-based 3D viewer with
+simple interaction mechanisms and which is fully controllable using arguments
+on the command line.  It supports a range of file formats (including animated
+glTF, STL, STEP, PLY, OBJ, FBX), and provides numerous rendering and texturing
+options.")
+    (license license:bsd-3)))
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index c3ef7085a5..3c1e1ac848 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -2566,7 +2566,7 @@ shell scripts.  Example of how to use @code{yad} can be consulted at
 (define-public dragon-drop
   (package
    (name "dragon-drop")
-   (version "1.1.1")
+   (version "1.2.0")
    (source (origin
              (method git-fetch)
              (uri
@@ -2576,7 +2576,7 @@ shell scripts.  Example of how to use @code{yad} can be consulted at
              (file-name (git-file-name name version))
              (sha256
               (base32
-               "0fgzz39007fdjwq72scp0qygp2v3zc5f1xkm0sxaa8zxm25g1bra"))))
+               "1cspkrr976mqi6cjkgrckdmjbgahnxmq267wn1zd7gamv64vm8f2"))))
    (build-system gnu-build-system)
    (inputs (list gtk+))
    (native-inputs (list pkg-config))
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index ff880ef79d..77979e8b8f 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -110,7 +110,7 @@
 (define-public ytfzf
   (package
     (name "ytfzf")
-    (version "2.3")
+    (version "2.4.1")
     (home-page "https://github.com/pystardust/ytfzf")
     (source
      (origin
@@ -121,7 +121,7 @@
          (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "01prcg6gfwy1r49v92pkzxay9iadqqhpaxvn8jmij2jm5l50iynd"))))
+        (base32 "198qhnjklrgrjs35ygym6sgx1ibwn6qrihfiginvmx38gdavdj4x"))))
     (build-system gnu-build-system)
     (arguments
      (list
@@ -162,6 +162,7 @@
            libnotify
            mpv
            ncurses
+           perl                         ;for convert-ascii-escape.pl
            python-ueberzug
            sed
            util-linux
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index 1c1d82758b..50796df89e 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -282,7 +282,7 @@ PostScript, and PDF.  Additional tools include the @command{man} viewer, and
         (base32 "12vb15gs56g8wl5nqlm4llr508brh4m2lfknhq4lizbxzqzawkb1"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (modify-phases %standard-phases (delete 'configure))
+     `(#:phases (modify-phases %standard-phases (delete 'configure))
 
        ;; The 'all' target depends on three targets that directly populate
        ;; $(MANDIR) based on its current contents.  Doing that in parallel
@@ -290,9 +290,7 @@ PostScript, and PDF.  Additional tools include the @command{man} viewer, and
        #:parallel-build? #f
 
        #:tests? #f
-       #:make-flags (list (string-append "mandir="
-                                         (assoc-ref %outputs "out")
-                                         "/share/man"))))
+       #:make-flags ,#~(list (string-append "mandir=" #$output "/share/man"))))
     (home-page "https://www.kernel.org/doc/man-pages/")
     (synopsis "Development manual pages from the Linux project")
     (description
@@ -302,6 +300,39 @@ Linux kernel and C library interfaces employed by user-space programs.")
     ;; Each man page has its own license; some are GPLv2+, some are MIT/X11.
     (license license:gpl2+)))
 
+(define-public man-pages-posix
+  (package
+    (name "man-pages-posix")
+    (version "2013-a")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kernel.org/linux/docs/man-pages/"
+                           "man-pages-posix/man-pages-posix-" version
+                           ".tar.xz"))
+       (sha256
+        (base32 "0258j05zdrxpgdj8nndbyi7bvrs8fxdksb0xbfrylzgzfmf3lqqr"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f
+       ;; The compress-documentation phase doesn't pick up on our manpages as
+       ;; its regex doesn't support trailing letters, so manually compress.
+       #:make-flags ,#~(list (string-append "prefix=" #$output) "gz")
+       #:license-file-regexp "POSIX-COPYRIGHT"
+       #:phases (modify-phases %standard-phases (delete 'configure))))
+    (home-page "https://www.kernel.org/doc/man-pages/")
+    (synopsis "Man pages from the POSIX.1-2013 standard")
+    (description
+     "This package provides excerpts from the POSIX.1-2008 and TC1 standards
+(collectively, POSIX.1-2013) in manual page form.  While the Linux man-pages
+project documents the system as it exists on Linux- and glibc-based systems,
+this package documents the portable software API as nominally implemented by
+many Unix-likes.")
+    (license (license:fsdg-compatible "file://POSIX-COPYRIGHT"
+                                      "Redistribution of this material is permitted so long as this
+notice and the corresponding notices within each POSIX manual page are retained
+on any distribution, and the nroff source is included."))))
+
 (define-public help2man
   ;; TODO: Manual pages for languages not available from the implicit
   ;; input "locales" contain the original (English) text.
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 5b6440455e..627050eeec 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -134,6 +134,7 @@
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages haskell)
+  #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
   #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages java)
@@ -476,7 +477,7 @@ playing your music.")
 (define-public strawberry
   (package
     (name "strawberry")
-    (version "1.0.7")
+    (version "1.0.9")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -485,7 +486,7 @@ playing your music.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "17mfavbbzx7hp7j5n9i7c3rajy16jicarabrl174p4gjv4zpy2sc"))
+                "0gm97sdz78s67rnyrs4ixg5dwv2haxdmb7s21yqb8axp624vvalp"))
               (modules '((guix build utils)
                          (ice-9 regex)))
               (snippet
@@ -542,6 +543,7 @@ playing your music.")
            gstreamer
            gst-plugins-base
            gst-plugins-good
+           icu4c
            libcdio
            libmtp
            protobuf
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 4ac32581fa..2d1fe914e3 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -63,6 +63,7 @@
   #:use-module (gnu packages dbm)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages file)
+  #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages gettext)
@@ -1900,14 +1901,14 @@ the boot loader configuration.")
 (define-public flatpak
   (package
     (name "flatpak")
-    (version "1.12.7")
+    (version "1.14.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/flatpak/flatpak/releases/download/"
                            version "/flatpak-" version ".tar.xz"))
        (sha256
-        (base32 "05lkpbjiwp69q924i1jfyk5frcqbdbv9kyzbqwm2hy723i9jmdbd"))
+        (base32 "05bqy9kwmaj32y7f94fydcz3k63bsgn4mbcp4pglv8hffxrnj9wf"))
        (patches
         (search-patches "flatpak-fix-path.patch"
                         "flatpak-unset-gdk-pixbuf-for-sandbox.patch"))))
@@ -1976,8 +1977,10 @@ cp -r /tmp/locale/*/en_US.*")))
            socat
            which))
     (inputs
-     (list appstream-glib
+     (list appstream
+           appstream-glib
            bubblewrap
+           curl
            dconf
            fuse
            gdk-pixbuf
diff --git a/gnu/packages/patches/python-apsw-3.39.2.1-test-fix.patch b/gnu/packages/patches/python-apsw-3.39.2.1-test-fix.patch
new file mode 100644
index 0000000000..cc233e3ccd
--- /dev/null
+++ b/gnu/packages/patches/python-apsw-3.39.2.1-test-fix.patch
@@ -0,0 +1,27 @@
+From 1111f902075169bd0d96cdd10607ef8499f0fed5 Mon Sep 17 00:00:00 2001
+From: Roger Binns <rogerb@rogerbinns.com>
+Date: Mon, 5 Sep 2022 07:12:25 -0700
+Subject: [PATCH] Deal with mismatched SQLITE_ENABLE_COLUMN_METADATA
+
+Address #363
+---
+ apsw/tests.py   | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletion(-)
+
+diff --git a/apsw/tests.py b/apsw/tests.py
+index b4a94d3..256ead0 100644
+--- a/apsw/tests.py
++++ b/apsw/tests.py
+@@ -772,8 +772,8 @@ class APSW(unittest.TestCase):
+         c.execute("drop table foo; create table foo (%s)" % (", ".join(["[%s] %s" % (n, t) for n, t in cols]), ))
+         c.execute("insert into foo([x a space]) values(1)")
+         c.execute("create temp table two(fred banana); insert into two values(7); create temp view three as select fred as [a space] from two")
+-        has_full=any(o=="ENABLE_COLUMN_METADATA" or o.startswith("ENABLE_COLUMN_METADATA=") for o in apsw.compile_options)
++        has_full=any(o=="ENABLE_COLUMN_METADATA" or o.startswith("ENABLE_COLUMN_METADATA=") for o in apsw.compile_options) if apsw.using_amalgamation else hasattr(c, "description_full")
+         for row in c.execute("select * from foo"):
+             self.assertEqual(cols, c.getdescription())
+             self.assertEqual(has_full, hasattr(c, "description_full"))
+
+base-commit: f628374c5857d940067ef26c9ea4e85a08a94f76
+--
+2.37.2
diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm
index ce0ba4b6d2..b218759bf8 100644
--- a/gnu/packages/python-science.scm
+++ b/gnu/packages/python-science.scm
@@ -1226,7 +1226,7 @@ aggregated sum and more.")
 (define-public python-pyvista
   (package
     (name "python-pyvista")
-    (version "0.35.2")
+    (version "0.36.1")
     (source
      ;; The PyPI tarball does not contain the tests.
      ;; (However, we don't yet actually run the tests.)
@@ -1237,7 +1237,7 @@ aggregated sum and more.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1qmxrhqm3ag736yb761jy1himwlr3p676xyqbry61h97dj11n6sq"))))
+        (base32 "1kjilcrz2cyh67n79r8dpxrans99mlviz2whc6g7j8hgn7v14z2n"))))
     (build-system python-build-system)
     (propagated-inputs
      (list python-appdirs
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 3ec132ea22..59b4264285 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -29,7 +29,7 @@
 ;;; Copyright © 2016-2022 Marius Bakke <marius@gnu.org>
 ;;; Copyright © 2016, 2017, 2021, 2022 Stefan Reichör <stefan@xsteve.at>
 ;;; Copyright © 2016, 2017, 2019 Alex Vong <alexvong1995@gmail.com>
-;;; Copyright © 2016, 2017, 2018, 2021 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2016, 2017, 2018, 2021, 2022 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2016, 2017, 2018, 2020, 2021 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
@@ -10008,13 +10008,13 @@ function signatures.")
 (define-public python-sympy
   (package
     (name "python-sympy")
-    (version "1.10.1")
+    (version "1.11.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "sympy" version))
        (sha256
-        (base32 "0yvqb2fhrm81skl8s9znbkkjfb1a09n64qqlc1r225cyvzzywfar"))))
+        (base32 "0n46x1rfy8c2a9za3yp2va5icigxj805f9fmiq8c1drwwvf808z3"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -30739,3 +30739,40 @@ platform using the ActivityPub protocol.")
      "@code{python-lief} is a cross platform library which can parse, modify
 and abstract ELF, PE and MachO formats.")
     (license license:asl2.0)))
+
+(define-public python-pymonad
+  (package
+    (name "python-pymonad")
+    (version "2.4.0")
+    ;; The tests are incomplete in the PyPI archive.
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/jasondelaat/pymonad")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0ci1mpydldiyg9qv6d19ljhfh7wxlrl2k4mlvqd9bm7dqvpdjsx7"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "./run_tests.sh")))))))
+    (home-page "https://github.com/jasondelaat/pymonad")
+    (synopsis "Monadic style functional programming for Python")
+    (description "@code{python-pymonad} implements data structures typically
+available in purely functional or functional first programming languages such
+as Haskell and F#.  Included are
+
+@itemize
+@item Monad and Monoid data types with several common monads such as Maybe and
+State
+@item Useful tools such as the @code{@@curry} decorator for defining curried
+functions
+@item Type annotations to help ensure correct usage
+@end itemize")
+    (license license:bsd-3)))
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 6b571f6d12..edbdf7cfad 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -865,7 +865,7 @@ ease from the desktop to a microcontroller or embedded system.")
                     (substitute* '("lib_pypy/_md5.py"
                                    "lib_pypy/_sha1.py")
                       ((shebang-match-python) shebang-pypy3))))
-                (copy-recursively dist-dir out)))))))
+                (copy-recursively dist-dir #$output)))))))
     (native-inputs
      (list gzip
            nss-certs                    ; For ssl tests
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 9359a9f382..a1ef352263 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -24,6 +24,7 @@
 ;;; Copyright © 2021, 2022 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;; Copyright © 2022 Foo Chuan Wei <chuanwei.foo@hotmail.com>
+;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -3751,6 +3752,9 @@ color-related widgets.")
      "QCustomPlot is a Qt C++ widget providing 2D plots, graphs and charts.")
     (license license:gpl3+)))
 
+;; TODO: Split shiboken2 binding generator into a dedicated output.
+;; This executable requires libxml2, libxslt, clang-toolchain at runtime.
+;; The libshiboken library only requires Qt and Python at runtime.
 (define-public python-shiboken-2
   (package
     (name "python-shiboken-2")
@@ -3773,30 +3777,31 @@ color-related widgets.")
            qtbase-5
            qtxmlpatterns))
     (arguments
-     `(#:tests? #f
-       ;; FIXME: Building tests fails
-       #:configure-flags '("-DBUILD_TESTS=off")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'use-shiboken-dir-only
-           (lambda _ (chdir "sources/shiboken2") #t))
-         (add-before 'configure 'make-files-writable-and-update-timestamps
-           (lambda _
-             ;; The build scripts need to modify some files in
-             ;; the read-only source directory, and also attempts
-             ;; to create Zip files which fails because the Zip
-             ;; format does not support timestamps before 1980.
-             (let ((circa-1980 (* 10 366 24 60 60)))
-               (for-each (lambda (file)
-                           (make-file-writable file)
-                           (utime file circa-1980 circa-1980))
-                         (find-files ".")))
-             #t))
-         (add-before 'configure 'set-build-env
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((llvm (assoc-ref inputs "clang-toolchain")))
-               (setenv "CLANG_INSTALL_DIR" llvm)
-               #t))))))
+     (list
+      #:tests? #f
+      ;; FIXME: Building tests fails
+      #:configure-flags #~(list "-DBUILD_TESTS=off")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'use-shiboken-dir-only
+            (lambda _ (chdir "sources/shiboken2") #t))
+          (add-before 'configure 'make-files-writable-and-update-timestamps
+            (lambda _
+              ;; The build scripts need to modify some files in
+              ;; the read-only source directory, and also attempts
+              ;; to create Zip files which fails because the Zip
+              ;; format does not support timestamps before 1980.
+              (let ((circa-1980 (* 10 366 24 60 60)))
+                (for-each (lambda (file)
+                            (make-file-writable file)
+                            (utime file circa-1980 circa-1980))
+                          (find-files ".")))
+              #t))
+          (add-before 'configure 'set-build-env
+            (lambda _
+              (let ((llvm #$(this-package-input "clang-toolchain")))
+                (setenv "CLANG_INSTALL_DIR" llvm)
+                #t))))))
     (home-page "https://wiki.qt.io/Qt_for_Python")
     (synopsis
      "Shiboken generates bindings for C++ libraries using CPython source code")
@@ -3810,6 +3815,40 @@ color-related widgets.")
       license:lgpl3
       license:bsd-3))))
 
+(define-public python-shiboken-6
+  (package
+    (inherit python-shiboken-2)
+    (name "python-shiboken-6")
+    (version "6.3.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://download.qt.io/official_releases"
+                                  "/QtForPython/pyside6/PySide6-" version
+                                  "-src/pyside-setup-opensource-src-"
+                                  version ".tar.xz"))
+              (sha256
+               (base32
+                "0xwri69nnbhn6fajm7l045r0s0qv8nlq6qj8wcj87srli3b5xa75"))))
+    (build-system cmake-build-system)
+    (inputs
+     (modify-inputs (package-inputs python-shiboken-2)
+       (replace "qtbase" qtbase)
+       (delete "qtxmlpatterns")))
+    (arguments
+     (substitute-keyword-arguments (package-arguments python-shiboken-2)
+       ((#:phases p)
+        #~(modify-phases #$p
+            (replace 'use-shiboken-dir-only
+              (lambda _ (chdir "sources/shiboken6") #t))))
+       ((#:configure-flags flags)
+        #~(cons*
+           ;; The RUNPATH of shibokenmodule contains the entry in build
+           ;; directory instead of install directory.
+           "-DCMAKE_SKIP_RPATH=TRUE"
+           (string-append "-DCMAKE_MODULE_LINKER_FLAGS=-Wl,-rpath="
+                          #$output "/lib")
+           #$flags))))))
+
 (define-public python-pyside-2
   (package
     (name "python-pyside-2")
@@ -3817,10 +3856,7 @@ color-related widgets.")
     (source (package-source python-shiboken-2))
     (build-system cmake-build-system)
     (inputs
-     (list libxml2
-           libxslt
-           clang-toolchain
-           qtbase-5
+     (list qtbase-5
            qtdatavis3d
            qtdeclarative-5
            qtlocation
@@ -3832,6 +3868,7 @@ color-related widgets.")
            qtsensors
            qtspeech
            qtsvg-5
+           qttools-5
            qtwebchannel-5
            qtwebengine-5
            qtwebsockets-5
@@ -3840,68 +3877,63 @@ color-related widgets.")
     (propagated-inputs
      (list python-shiboken-2))
     (native-inputs
-     `(("cmake" ,cmake-minimal)
-       ("python" ,python-wrapper)
-       ("qttools-5" ,qttools-5)
-       ("which" ,which)))
+     (list python-wrapper))
     (arguments
-     `(#:tests? #f
-       ;; FIXME: Building tests fail.
-       #:configure-flags
-       (list "-DBUILD_TESTS=FALSE"
-             (string-append "-DPYTHON_EXECUTABLE="
-                            (assoc-ref %build-inputs "python")
-                            "/bin/python"))
-       #:modules ((guix build cmake-build-system)
+     (list
+      #:tests? #f
+      ;; FIXME: Building tests fail.
+      #:configure-flags
+      #~(list "-DBUILD_TESTS=FALSE"
+              (string-append "-DPYTHON_EXECUTABLE="
+                             (search-input-file %build-inputs
+                                                "/bin/python")))
+      #:modules '((guix build cmake-build-system)
                   (guix build utils)
                   (srfi srfi-1))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'go-to-source-dir
-           (lambda _ (chdir "sources/pyside2") #t))
-         (add-after 'go-to-source-dir 'fix-qt-module-detection
-           (lambda* (#:key inputs #:allow-other-keys)
-             ;; Activate qt module support even if it not in the same
-             ;; directory as qtbase.
-             (substitute* "../cmake_helpers/helpers.cmake"
-               (("\\(\"\\$\\{found_basepath\\}\" GREATER \"0\"\\)")
-                "true"))
-             ;; Add include directories for qt modules.
-             (let ((dirs (map (lambda (name)
-                                (string-append (assoc-ref inputs name)
-                                               "/include/qt5"))
-                              '("qtdatavis3d"
-                                "qtdeclarative"
-                                "qtlocation"
-                                "qtmultimedia"
-                                "qtquickcontrols"
-                                "qtquickcontrols2"
-                                "qtscript"
-                                "qtscxml"
-                                "qtsensors"
-                                "qtspeech"
-                                "qtsvg"
-                                "qttools-5"
-                                "qtwebchannel"
-                                "qtwebengine"
-                                "qtwebsockets"
-                                "qtx11extras"
-                                "qtxmlpatterns"))))
-               (substitute* "cmake/Macros/PySideModules.cmake"
-                 (("\\$\\{PATH_SEP\\}\\$\\{core_includes\\}" all)
-                  (fold (lambda (dir paths)
-                          (string-append paths "${PATH_SEP}" dir))
-                        all
-                        dirs)))
-               (setenv "CXXFLAGS" (fold (lambda (dir paths)
-                                          (string-append paths " -I" dir))
-                                        ""
-                                        dirs)))))
-         (add-before 'configure 'set-clang-dir
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((clang (assoc-ref inputs "clang-toolchain")))
-               (setenv "CLANG_INSTALL_DIR" clang)
-               #t))))))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'go-to-source-dir
+            (lambda _ (chdir "sources/pyside2") #t))
+          (add-after 'go-to-source-dir 'fix-qt-module-detection
+            (lambda _
+              ;; Activate qt module support even if it not in the same
+              ;; directory as qtbase.
+              (substitute* "../cmake_helpers/helpers.cmake"
+                (("\\(\"\\$\\{found_basepath\\}\" GREATER \"0\"\\)")
+                 "true"))
+              ;; Add include directories for qt modules.
+              (let ((dirs (map (lambda (path)
+                                 (string-append path "/include/qt5"))
+                               (list
+                                #$@(map (lambda (name)
+                                          (this-package-input name))
+                                        '("qtdatavis3d"
+                                          "qtdeclarative"
+                                          "qtlocation"
+                                          "qtmultimedia"
+                                          "qtquickcontrols"
+                                          "qtquickcontrols2"
+                                          "qtscript"
+                                          "qtscxml"
+                                          "qtsensors"
+                                          "qtspeech"
+                                          "qtsvg"
+                                          "qttools"
+                                          "qtwebchannel"
+                                          "qtwebengine"
+                                          "qtwebsockets"
+                                          "qtx11extras"
+                                          "qtxmlpatterns"))))))
+                (substitute* "cmake/Macros/PySideModules.cmake"
+                  (("\\$\\{PATH_SEP\\}\\$\\{core_includes\\}" all)
+                   (fold (lambda (dir paths)
+                           (string-append paths "${PATH_SEP}" dir))
+                         all
+                         dirs)))
+                (setenv "CXXFLAGS" (fold (lambda (dir paths)
+                                           (string-append paths " -I" dir))
+                                         ""
+                                         dirs))))))))
     (home-page "https://wiki.qt.io/Qt_for_Python")
     (synopsis
      "The Qt for Python product enables the use of Qt5 APIs in Python applications")
@@ -3923,6 +3955,78 @@ generate Python bindings for your C or C++ code.")
               license:gpl3
               license:gpl2))))
 
+(define-public python-pyside-6
+  (package
+    (inherit python-pyside-2)
+    (name "python-pyside-6")
+    (version (package-version python-shiboken-6))
+    (source (package-source python-shiboken-6))
+    ;; TODO: Add more Qt components if available.
+    (inputs
+     (list qtbase
+           qtdeclarative
+           qtmultimedia
+           qtnetworkauth
+           qtpositioning
+           qtsvg
+           qttools
+           qtwebchannel
+           qtwebengine
+           qtwebsockets))
+    (propagated-inputs
+     (list python-shiboken-6))
+    (native-inputs
+     (list python-wrapper))
+    (arguments
+     (list
+      #:tests? #f
+      #:configure-flags
+      #~(list "-DBUILD_TESTS=FALSE"
+              (string-append "-DPYTHON_EXECUTABLE="
+                             (search-input-file %build-inputs
+                                                "/bin/python")))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'go-to-source-dir
+            (lambda _ (chdir "sources/pyside6") #t))
+          (add-after 'go-to-source-dir 'fix-qt-module-detection
+            (lambda _
+              (substitute* "cmake/PySideHelpers.cmake"
+                (("\\(\"\\$\\{found_basepath\\}\" GREATER \"0\"\\)")
+                 "true"))
+              (let ((dirs (map (lambda (path)
+                                 (string-append path "/include/qt6"))
+                               (list
+                                #$@(map (lambda (name)
+                                          (this-package-input name))
+                                        '("qtdeclarative"
+                                          "qtmultimedia"
+                                          "qtnetworkauth"
+                                          "qtpositioning"
+                                          "qtsvg"
+                                          "qttools"
+                                          "qtwebchannel"
+                                          "qtwebengine"
+                                          "qtwebsockets"))))))
+                (substitute* "cmake/Macros/PySideModules.cmake"
+                  (("set\\(shiboken_include_dir_list " all)
+                   (string-append all (string-join dirs ";") " ")))
+                (setenv "CXXFLAGS"
+                        (string-join
+                         (map (lambda (dir)
+                                (string-append "-I" dir))
+                              dirs)
+                         " "))))))))
+    (synopsis
+     "The Qt for Python product enables the use of Qt6 APIs in Python applications")
+    (description
+     "The Qt for Python product enables the use of Qt6 APIs in Python
+applications.  It lets Python developers utilize the full potential of Qt,
+using the PySide6 module.  The PySide6 module provides access to the
+individual Qt modules such as QtCore, QtGui,and so on.  Qt for Python also
+comes with the Shiboken6 CPython binding code generator, which can be used to
+generate Python bindings for your C or C++ code.")))
+
 (define-public python-pyside-2-tools
   (package
     (name "python-pyside-2-tools")
@@ -3932,22 +4036,24 @@ generate Python bindings for your C or C++ code.")
     (inputs
      (list python-pyside-2 python-shiboken-2 qtbase-5))
     (native-inputs
-     `(("python" ,python-wrapper)))
+     (list python-wrapper))
     (arguments
-     `(#:tests? #f
-       #:configure-flags
-       (list "-DBUILD_TESTS=off"
-             (string-append "-DPYTHON_EXECUTABLE="
-                            (assoc-ref %build-inputs "python")
-                            "/bin/python"))
-       #:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'go-to-source-dir
-                    (lambda _ (chdir "sources/pyside2-tools") #t)))))
+     (list
+      #:tests? #f
+      #:configure-flags
+      #~(list "-DBUILD_TESTS=off"
+              (string-append "-DPYTHON_EXECUTABLE="
+                             (search-input-file %build-inputs
+                                                "/bin/python")))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'go-to-source-dir
+            (lambda _ (chdir "sources/pyside2-tools") #t)))))
     (home-page "https://wiki.qt.io/Qt_for_Python")
     (synopsis
-     "Contains command line tools for PySide2")
+     "Command line tools for PySide2")
     (description
-     "Contains lupdate, rcc and uic tools for PySide2")
+     "Python-pyside-2-tools contains lupdate, rcc and uic tools for PySide2")
     (license license:gpl2)))
 
 (define-public libqglviewer
diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm
index 32ea866bff..10f93a1362 100644
--- a/gnu/packages/racket.scm
+++ b/gnu/packages/racket.scm
@@ -255,7 +255,7 @@
       ;; ^ This is downstream of https://github.com/racket/racket,
       ;; but it's designed to be a friendly landing place
       (synopsis "Tiny Racket for build scripts")
-      (description "Zuo (作) is a tiny Racket with primitives for dealing
+      (description "Zuo is a tiny Racket with primitives for dealing
 with files and running processes.  It comes with a @command{make}-like
 embedded DSL, which is used to build Racket itself.
 
diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm
index 110cbe9fda..06860dc5b2 100644
--- a/gnu/packages/shellutils.scm
+++ b/gnu/packages/shellutils.scm
@@ -38,6 +38,7 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
+  #:use-module (guix build-system copy)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system go)
   #:use-module (guix build-system python)
@@ -145,6 +146,30 @@ chart.")
 text.")
     (license license:gpl2)))
 
+(define-public zsh-autopair
+  (package
+    (name "zsh-autopair")
+    (version "1.0")
+    (home-page "https://github.com/hlissner/zsh-autopair")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/hlissner/zsh-autopair.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1h0vm2dgrmb8i2pvsgis3lshc5b0ad846836m62y8h3rdb3zmpy1"))))
+    (build-system copy-build-system)
+    (arguments
+     '(#:install-plan '(("autopair.zsh"
+                         "/share/zsh/plugins/zsh-autopair/zsh-autopair.zsh"))))
+    (synopsis "Auto-close and delete matching delimiters in Zsh")
+    (description
+     "This Zsh plugin auto-closes, deletes, and skips over matching delimiters
+in Zsh intelligently.")
+    (license license:expat)))
+
 (define-public zsh-autosuggestions
   (package
     (name "zsh-autosuggestions")
diff --git a/gnu/packages/sqlite.scm b/gnu/packages/sqlite.scm
index c6b1b63173..7e8d444b7d 100644
--- a/gnu/packages/sqlite.scm
+++ b/gnu/packages/sqlite.scm
@@ -113,10 +113,10 @@ is in the public domain.")
 (define-public sqlite-next
   (package
     (inherit sqlite)
-    (version "3.39.1")
+    (version "3.39.3")
     (source (origin
               (method url-fetch)
               (uri (sqlite-uri version 2022))
               (sha256
                (base32
-                "1i0wjd1mig720q1gk9jkpw6h0mialbrlkfh8w8lans0czakygj47"))))))
+                "1f922kq16g7f4h3gpzim78lvrp5xw9nvlvqw97s2qgxyh8qgns3q"))))))
diff --git a/gnu/packages/tcl.scm b/gnu/packages/tcl.scm
index 4cbc9d84b4..ab86ddee2f 100644
--- a/gnu/packages/tcl.scm
+++ b/gnu/packages/tcl.scm
@@ -180,7 +180,7 @@ multiple inheritance and public and private classes and variables.")
              #t)))
 
        #:test-target "test"))
-    (home-page "http://expect.sourceforge.net/")
+    (home-page "https://core.tcl-lang.org/expect/")
     (synopsis "Tool for automating interactive applications")
     (description
      "Expect is a tool for automating interactive applications such as
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 7bb6c4bd22..46ad251a64 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -11589,3 +11589,97 @@ within ‘words’ that contain non-alphabetic characters (e.g., that include
 underscores), and hyphenation of text typeset in monospaced (e.g., cmtt)
 fonts.")
     (license license:lppl1.3c+)))
+
+(define-public texlive-latex-lastpage
+  (package
+    (inherit (simple-texlive-package
+              "texlive-latex-lastpage"
+              (list "doc/latex/lastpage/"
+                    "tex/latex/lastpage/")
+              (base32 "0q6x743b8fkw9r82lrxy49f9xsg81bffynwvpnvpnp3h4mkafvdb")
+              #:trivial? #t))
+    (build-system texlive-build-system)
+    (home-page "https://ctan.org/pkg/lastpage")
+    (synopsis "Reference last page for Page N of M type footers")
+    (description
+     "This package enables referencing the number of pages in a LaTeX document
+through the introduction of a new label which can be referenced like
+@code{\\pageref{LastPage}} to give a reference to the last page of a document.
+It is particularly useful in the page footer that says: Page N of M.")
+    (license license:lppl1.3c+)))
+
+(define-public texlive-latex-tabto-ltx
+  (package
+    (name "texlive-latex-tabto-ltx")
+    (version (number->string %texlive-revision))
+    (source (origin
+              (method svn-fetch)
+              (uri (svn-reference (url (string-append
+                                        "svn://www.tug.org/texlive/tags/"
+                                        %texlive-tag "/Master/texmf-dist/"
+                                        "/tex/latex/tabto-ltx"))
+                                  (revision %texlive-revision)))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "1vq9s3n0mdgx2w84bjdsqxp3vcasfb824agjy56713902li1g8vm"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder (begin
+                   (use-modules (guix build utils))
+                   (let ((target (string-append (assoc-ref %outputs "out")
+                                  "/share/texmf-dist/tex/latex/tabto")))
+                     (mkdir-p target)
+                     (copy-recursively (assoc-ref %build-inputs "source")
+                                       target) #t))))
+    (home-page "https://ctan.org/pkg/tabto-ltx")
+    (synopsis "``Tab'' to a measured position in the line")
+    (description
+     "This package provides @code{\\tabto{<length>}}, which moves the
+typesetting position to @code{<length>} from the left margin of the paragraph.
+If the typesetting position is already further along, @code{\\tabto} starts a
+new line; the command @code{\\tabto*} will move position backwards if
+necessary, so that previous text may be overwritten.  In addition, the command
+@code{\\TabPositions} may be used to define a set of tabbing positions, after
+which the command @code{\\tab} advances typesetting position to the next
+defined ``tab stop''.")
+    (license license:lppl1.3+)))
+
+(define-public texlive-generic-soul
+  (let ((template (simple-texlive-package
+                   "texlive-generic-soul"
+                   (list "/doc/generic/soul/"
+                         "/tex/generic/soul/")
+                   (base32
+                    "11jdgvfpcv10y5j898495lf29k2m03x39v9jzb4v79w4cgxcmfps")
+                   #:trivial? #t)))
+    (package
+      (inherit template)
+      (home-page "http://www.ctan.org/pkg/soul")
+      (synopsis "Hyphenation for letterspacing, underlining, and more")
+      (description
+       "@code{soul} enables hyphenatable spacing out (letterspacing),
+underlining, striking out, etc., using the TeX hyphenation algorithm to find
+the proper hyphens automatically.  The package also provides a mechanism that
+can be used to implement similar tasks, that have to treat text syllable by
+syllable.  The package itself does not support UTF-8 input in ordinary
+(PDF)LaTeX; some UTF-8 support is offered by package @code{soulutf8}.")
+      (license license:lppl))))
+
+(define-public texlive-latex-totcount
+  (package
+    (inherit (simple-texlive-package
+              "texlive-latex-totcount"
+              (list "doc/latex/totcount/"
+                    "tex/latex/totcount/")
+              (base32 "0z4mijyk3z7555q8da41aiji602plis5z261z4rr1fl8sndhnhn1")
+              #:trivial? #t))
+    (build-system texlive-build-system)
+    (home-page "https://ctan.org/pkg/totcount")
+    (synopsis "Find the last value of a counter")
+    (description
+     "This package records the value that was last set, for any counter of
+interest.  Since most such counters are simply incremented when they are
+changed, the recorded value will usually be the maximum value.")
+    (license license:lppl1.3c+)))
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index bb11732de2..616bc42e69 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -880,7 +880,7 @@ the message of the day, among other things."
                     (default #f))
   (no-hints?        agetty-no-hints?              ;Boolean
                     (default #f))
-  (no-hostname?     agetty-no hostname?           ;Boolean
+  (no-hostname?     agetty-no-hostname?           ;Boolean
                     (default #f))
   (long-hostname?   agetty-long-hostname?         ;Boolean
                     (default #f))
diff --git a/gnu/tests/dict.scm b/gnu/tests/dict.scm
index 4d9702360c..f02bd5ac99 100644
--- a/gnu/tests/dict.scm
+++ b/gnu/tests/dict.scm
@@ -63,7 +63,8 @@
   (define vm
     (virtual-machine
      (operating-system os)
-     (port-forwardings '((8000 . 2628)))))
+     (port-forwardings '((8000 . 2628)))
+     (memory-size 1024)))
 
   (define test
     (with-imported-modules '((gnu build marionette))
diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm
index eda487f52e..7842b0a9fc 100644
--- a/guix/build/syscalls.scm
+++ b/guix/build/syscalls.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014-2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
@@ -549,50 +549,50 @@ the last argument of `mknod'."
 (define MNT_EXPIRE      4)
 (define UMOUNT_NOFOLLOW 8)
 
-(define-as-needed (mount source target type
-                         #:optional (flags 0) options
-                         #:key (update-mtab? #f))
-  "Mount device SOURCE on TARGET as a file system TYPE.
-Optionally, FLAGS may be a bitwise-or of the MS_* <sys/mount.h>
-constants, and OPTIONS may be a string.  When FLAGS contains
-MS_REMOUNT, SOURCE and TYPE are ignored.  When UPDATE-MTAB? is true,
-update /etc/mtab.  Raise a 'system-error' exception on error."
+(define-as-needed mount
   ;; XXX: '#:update-mtab?' is not implemented by core 'mount'.
   (let ((proc (syscall->procedure int "mount" `(* * * ,unsigned-long *))))
-    (let-values (((ret err)
-                  (proc (if source
-                            (string->pointer source)
-                            %null-pointer)
-                        (string->pointer target)
-                        (if type
-                            (string->pointer type)
-                            %null-pointer)
-                        flags
-                        (if options
-                            (string->pointer options)
-                            %null-pointer))))
-      (unless (zero? ret)
-        (throw 'system-error "mount" "mount ~S on ~S: ~A"
-               (list source target (strerror err))
-               (list err)))
-      (when update-mtab?
-        (augment-mtab source target type options)))))
-
-(define-as-needed (umount target
-                          #:optional (flags 0)
-                          #:key (update-mtab? #f))
-  "Unmount TARGET.  Optionally FLAGS may be one of the MNT_* or UMOUNT_*
-constants from <sys/mount.h>."
+    (lambda* (source target type
+                     #:optional (flags 0) options
+                     #:key (update-mtab? #f))
+      "Mount device SOURCE on TARGET as a file system TYPE.
+Optionally, FLAGS may be a bitwise-or of the MS_* <sys/mount.h> constants, and
+OPTIONS may be a string.  When FLAGS contains MS_REMOUNT, SOURCE and TYPE are
+ignored.  When UPDATE-MTAB? is true, update /etc/mtab.  Raise a 'system-error'
+exception on error."
+      (let-values (((ret err)
+                    (proc (if source
+                              (string->pointer source)
+                              %null-pointer)
+                          (string->pointer target)
+                          (if type
+                              (string->pointer type)
+                              %null-pointer)
+                          flags
+                          (if options
+                              (string->pointer options)
+                              %null-pointer))))
+        (unless (zero? ret)
+          (throw 'system-error "mount" "mount ~S on ~S: ~A"
+                 (list source target (strerror err))
+                 (list err)))
+        (when update-mtab?
+          (augment-mtab source target type options))))))
+
+(define-as-needed umount
   ;; XXX: '#:update-mtab?' is not implemented by core 'umount'.
-  (let ((proc (syscall->procedure int "umount2" `(* ,int))))
-    (let-values (((ret err)
-                  (proc (string->pointer target) flags)))
-      (unless (zero? ret)
-        (throw 'system-error "umount" "~S: ~A"
-               (list target (strerror err))
-               (list err)))
-      (when update-mtab?
-        (remove-from-mtab target)))))
+  (let ((proc (syscall->procedure int "umount2" `(* ,int)))) ;XXX
+    (lambda* (target #:optional (flags 0) #:key (update-mtab? #f))
+      "Unmount TARGET.  Optionally FLAGS may be one of the MNT_* or UMOUNT_*
+constants from <sys/mount.h>."
+      (let-values (((ret err)
+                    (proc (string->pointer target) flags)))
+        (unless (zero? ret)
+          (throw 'system-error "umount" "~S: ~A"
+                 (list target (strerror err))
+                 (list err)))
+        (when update-mtab?
+          (remove-from-mtab target))))))
 
 ;; Mount point information.
 (define-record-type <mount>
@@ -732,25 +732,27 @@ current process."
 (define-as-needed RB_SW_SUSPEND  #xd000fce2)
 (define-as-needed RB_KEXEC       #x45584543)
 
-(define-as-needed (reboot #:optional (cmd RB_AUTOBOOT))
+(define-as-needed reboot
   (let ((proc (syscall->procedure int "reboot" (list int))))
-    (let-values (((ret err) (proc cmd)))
-      (unless (zero? ret)
-        (throw 'system-error "reboot" "~S: ~A"
-               (list cmd (strerror err))
-               (list err))))))
+    (lambda* (#:optional (cmd RB_AUTOBOOT))
+      (let-values (((ret err) (proc cmd)))
+        (unless (zero? ret)
+          (throw 'system-error "reboot" "~S: ~A"
+                 (list cmd (strerror err))
+                 (list err)))))))
 
-(define-as-needed (load-linux-module data #:optional (options ""))
+(define-as-needed load-linux-module
   (let ((proc (syscall->procedure int "init_module"
                                   (list '* unsigned-long '*))))
-    (let-values (((ret err)
-                  (proc (bytevector->pointer data)
-                        (bytevector-length data)
-                        (string->pointer options))))
-      (unless (zero? ret)
-        (throw 'system-error "load-linux-module" "~A"
-               (list (strerror err))
-               (list err))))))
+    (lambda* (data #:optional (options ""))
+      (let-values (((ret err)
+                    (proc (bytevector->pointer data)
+                          (bytevector-length data)
+                          (string->pointer options))))
+        (unless (zero? ret)
+          (throw 'system-error "load-linux-module" "~A"
+                 (list (strerror err))
+                 (list err)))))))
 
 (define (kernel? pid)
   "Return #t if PID designates a \"kernel thread\" rather than a normal
diff --git a/guix/import/gnome.scm b/guix/import/gnome.scm
index 3915f19e84..49ad7169fd 100644
--- a/guix/import/gnome.scm
+++ b/guix/import/gnome.scm
@@ -62,14 +62,16 @@ not be determined."
 
   (define (even-minor-version? version)
     (match (string-tokenize version %not-dot)
-      (((= string->number major) (= string->number minor) micro)
+      (((= string->number major) (= string->number minor) (= string->number micro))
        ;; This is for things like GLib, with version strings like "2.72.3".
-       (and minor (even? minor)))
-      (((= string->number major) . _)
+       (and minor (even? minor) micro))
+      (((= string->number major) (= string->number minor))
        ;; GNOME applications have version strings like "42.1" (only two
-       ;; integers) and are not subject to the odd/even policy.  MAJOR should
-       ;; be a valid number though.
-       major)))
+       ;; integers) and are not subject to the odd/even policy.  MAJOR and
+       ;; MINOR should be valid numbers though; "43.alpha" is rejected.
+       (and major minor))
+      (_
+       #f)))
 
   (define upstream-name
     ;; Some packages like "NetworkManager" have camel-case names.
diff --git a/guix/search-paths.scm b/guix/search-paths.scm
index 5a0cddac8f..4a8f5131ed 100644
--- a/guix/search-paths.scm
+++ b/guix/search-paths.scm
@@ -74,33 +74,32 @@
    (variable "PATH")
    (files '("bin" "sbin"))))
 
-(define-public $GUIX_EXTENSIONS_PATH
+(define $GUIX_EXTENSIONS_PATH
   ;; 'GUIX_EXTENSIONS_PATH' is used by Guix to locate extension commands.
-  ;; Like 'PATH', it's not attached to any package, so that users don't have
-  ;; to install the 'guix' package (which is not supposed to be installed,
-  ;; as it will mess up the 'guix pull' installation) or set the variable
-  ;; manually.
+  ;; Unlike 'PATH', it is attached to a package, Guix; however, it is
+  ;; convenient to define it by default because the 'guix' package is not
+  ;; supposed to be installed in a profile.
   (search-path-specification
    (variable "GUIX_EXTENSIONS_PATH")
    (files '("share/guix/extensions"))))
 
-;; Two variables for certificates (see (guix)X.509 Certificates),
-;; respected by 'openssl', possibly GnuTLS in the future
+;; Two variables for certificates (info "(guix)X.509 Certificates"),
+;; respected by OpenSSL and possibly GnuTLS in the future
 ;; (https://gitlab.com/gnutls/gnutls/-/merge_requests/1541)
-;; and many of their dependents -- even some GnuTLS depepdents
+;; and many of their dependents -- even some GnuTLS dependents
 ;; like Guile.  As they are not tied to a single package, define
 ;; them here to avoid duplication.
 ;;
 ;; Additionally, the 'native-search-paths' field is not thunked,
 ;; so doing (package-native-search-paths openssl)
 ;; could cause import cycle issues.
-(define-public $SSL_CERT_DIR
+(define $SSL_CERT_DIR
   (search-path-specification
    (variable "SSL_CERT_DIR")
    (separator #f)              ;single entry
    (files '("etc/ssl/certs"))))
 
-(define-public $SSL_CERT_FILE
+(define $SSL_CERT_FILE
   (search-path-specification
    (variable "SSL_CERT_FILE")
    (file-type 'regular)