summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu/local.mk4
-rw-r--r--gnu/packages/admin.scm12
-rw-r--r--gnu/packages/bdw-gc.scm5
-rw-r--r--gnu/packages/bioconductor.scm10
-rw-r--r--gnu/packages/build-tools.scm101
-rw-r--r--gnu/packages/direct-connect.scm2
-rw-r--r--gnu/packages/disk.scm1
-rw-r--r--gnu/packages/education.scm4
-rw-r--r--gnu/packages/emacs-xyz.scm183
-rw-r--r--gnu/packages/game-development.scm1
-rw-r--r--gnu/packages/geo.scm6
-rw-r--r--gnu/packages/gnome.scm81
-rw-r--r--gnu/packages/gps.scm1
-rw-r--r--gnu/packages/gtk.scm1
-rw-r--r--gnu/packages/image.scm1
-rw-r--r--gnu/packages/installers.scm2
-rw-r--r--gnu/packages/libffi.scm20
-rw-r--r--gnu/packages/patches/gnome-shell-polkit-autocleanup.patch50
-rw-r--r--gnu/packages/patches/scons-test-environment.patch57
-rw-r--r--gnu/packages/python-xyz.scm45
-rw-r--r--gnu/packages/qt.scm2
-rw-r--r--gnu/packages/samba.scm7
-rw-r--r--gnu/packages/web.scm4
-rw-r--r--gnu/packages/webkit.scm7
-rw-r--r--gnu/packages/wm.scm11
-rw-r--r--gnu/packages/xdisorg.scm1
-rw-r--r--guix/build-system/scons.scm4
27 files changed, 472 insertions, 151 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 68d2a3dc8c..c433cf7d98 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1210,7 +1210,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/gnome-online-miners-tracker-3.patch	\
   %D%/packages/patches/gnome-screenshot-meson-0.60.patch	\
   %D%/packages/patches/gnome-settings-daemon-gc.patch		\
-  %D%/packages/patches/gnome-session-support-elogind.patch      \
+  %D%/packages/patches/gnome-session-support-elogind.patch	\
+  %D%/packages/patches/gnome-shell-polkit-autocleanup.patch	\
   %D%/packages/patches/gnome-todo-libportal.patch		\
   %D%/packages/patches/gnome-tweaks-search-paths.patch		\
   %D%/packages/patches/gnupg-CVE-2022-34903.patch		\
@@ -1799,6 +1800,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/sbcl-png-fix-sbcl-compatibility.patch	\
   %D%/packages/patches/scalapack-gcc-10-compilation.patch	\
   %D%/packages/patches/scheme48-tests.patch			\
+  %D%/packages/patches/scons-test-environment.patch		\
   %D%/packages/patches/scotch-build-parallelism.patch		\
   %D%/packages/patches/scotch-integer-declarations.patch	\
   %D%/packages/patches/screen-hurd-path-max.patch		\
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index a4c5189222..b35d50ff56 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -1723,12 +1723,12 @@ over ssh connections.")
              (substitute* "Makefile"
                ((".*/service/realmd-.*") "")))))))
     (native-inputs
-     `(("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("glib-bin" ,glib "bin")
-       ("intltool" ,intltool)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python)))
+     (list autoconf
+           automake
+           `(,glib "bin")
+           intltool
+           pkg-config
+           python))
     (inputs
      (list glib mit-krb5 openldap polkit))
     (synopsis "DBus service for network authentication")
diff --git a/gnu/packages/bdw-gc.scm b/gnu/packages/bdw-gc.scm
index c812248e86..4dd559ef79 100644
--- a/gnu/packages/bdw-gc.scm
+++ b/gnu/packages/bdw-gc.scm
@@ -135,6 +135,11 @@ C or C++ programs, though that is not its primary goal.")
                (base32
                 "0glzah695wsf6c27hs5wwlw4mnq1vfivdshz1rb8pq7w4mp5dazh"))))
     (build-system gnu-build-system)
+    (arguments
+     `(,@(if (target-riscv64?)
+           `(#:configure-flags
+             (list "CFLAGS_EXTRA=-latomic"))
+           '())))
     (outputs '("out" "debug"))
     (synopsis "Accessing hardware atomic memory update operations")
     (description
diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm
index facfb75abf..7aee0c55c3 100644
--- a/gnu/packages/bioconductor.scm
+++ b/gnu/packages/bioconductor.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2016, 2017, 2018, 2020, 2021 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016 Pjotr Prins <pjotr.guix@thebird.nl>
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
-;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017, 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017, 2018, 2019, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019, 2020, 2021, 2022 Simon Tournier <zimon.toutoune@gmail.com>
 ;;; Copyright © 2020 Peter Lo <peterloleungyau@gmail.com>
@@ -2756,13 +2756,13 @@ over-abundant or less-abundant as compared to that of normal cells.")
 (define-public r-iranges
   (package
     (name "r-iranges")
-    (version "2.30.0")
+    (version "2.30.1")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "IRanges" version))
               (sha256
                (base32
-                "0hfx5n0b4pqrrc1w2dik596803ly8ffnxfs768iy5l5kr8wwyc8k"))))
+                "1r01c9lczkchgd9hbxxd6wrd5avhy52mfqjck7l9avjq1jimvzv3"))))
     (properties
      `((upstream-name . "IRanges")))
     (build-system r-build-system)
@@ -4328,13 +4328,13 @@ genomic intervals.  In addition, it can use BAM or BigWig files as input.")
 (define-public r-genomeinfodb
   (package
     (name "r-genomeinfodb")
-    (version "1.32.2")
+    (version "1.32.3")
     (source (origin
               (method url-fetch)
               (uri (bioconductor-uri "GenomeInfoDb" version))
               (sha256
                (base32
-                "1n37bwb2fqmdgqbn19rgsd2qn8vbdhv6khdwjr7v12bwabcbx9xh"))))
+                "17nwcq2ivj3bdibdywfyjq4n6z0djispbh9ahqa55sp31ksq41xh"))))
     (properties
      `((upstream-name . "GenomeInfoDb")))
     (build-system r-build-system)
diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm
index 38a7ee2783..5c9d5409cb 100644
--- a/gnu/packages/build-tools.scm
+++ b/gnu/packages/build-tools.scm
@@ -34,6 +34,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix utils)
   #:use-module (guix packages)
+  #:use-module (guix gexp)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
@@ -53,6 +54,7 @@
   #:use-module (gnu packages pretty-print)
   #:use-module (gnu packages protobuf)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-build)
   #:use-module (gnu packages python-crypto)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
@@ -384,6 +386,105 @@ other lower-level build files.")
 scripted definition of a software project and outputs @file{Makefile}s or
 other lower-level build files.")))
 
+(define-public scons
+  (package
+    (name "scons")
+    (version "4.4.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/SCons/scons")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (patches (search-patches "scons-test-environment.patch"))
+              (sha256
+               (base32
+                "1czswx1fj2j48rspkrvarkr43k0vii9rsmz054c9yby1dq362fgr"))))
+    (build-system python-build-system)
+    (arguments
+     (list
+      #:modules (append %python-build-system-modules
+                        '((ice-9 ftw) (srfi srfi-26)))
+      #:phases
+      #~(modify-phases (@ (guix build python-build-system) %standard-phases)
+          (add-after 'unpack 'adjust-hard-coded-paths
+            (lambda _
+              (substitute* "SCons/Script/Main.py"
+                (("/usr/share/scons")
+                 (string-append #$output "/share/scons")))))
+          (add-before 'build 'bootstrap
+            (lambda _
+              ;; XXX: Otherwise setup.py bdist_wheel fails.
+              (setenv "PYTHONPATH" (getenv "GUIX_PYTHONPATH"))
+              (invoke "python" "scripts/scons.py")))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (invoke "python" "runtest.py" "--all" "--unit-only"))))
+          (add-after 'install 'move-manuals
+            (lambda _
+              ;; XXX: For some reason manuals get installed to the top-level
+              ;; #$output directory.
+              (with-directory-excursion #$output
+                (let ((man1 (string-append #$output "/share/man/man1"))
+                      (stray-manuals (scandir "."
+                                              (cut string-suffix? ".1" <>))))
+                  (mkdir-p man1)
+                  (for-each (lambda (manual)
+                              (link manual (string-append man1 "/" manual))
+                              (delete-file manual))
+                            stray-manuals))))))))
+    (native-inputs
+     ;; TODO: Add 'fop' when available in Guix to generate manuals.
+     (list python-wheel
+           ;;For tests.
+           python-psutil))
+    (home-page "https://scons.org/")
+    (synopsis "Software construction tool written in Python")
+    (description
+     "SCons is a software construction tool.  Think of SCons as an improved,
+cross-platform substitute for the classic Make utility with integrated
+functionality similar to autoconf/automake and compiler caches such as ccache.
+In short, SCons is an easier, more reliable and faster way to build
+software.")
+    (license license:x11)))
+
+(define-public scons-3
+  (package
+    (inherit scons)
+    (version "3.0.4")
+    (source (origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/SCons/scons")
+                   (commit version)))
+             (file-name (git-file-name "scons" version))
+             (sha256
+              (base32
+               "1xy8jrwz87y589ihcld4hv7wn122sjbz914xn8h50ww77wbhk8hn"))))
+    (arguments
+     `(#:use-setuptools? #f                ; still relies on distutils
+       #:tests? #f                         ; no 'python setup.py test' command
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'bootstrap
+           (lambda _
+             (substitute* "src/engine/SCons/compat/__init__.py"
+               (("sys.modules\\[new\\] = imp.load_module\\(old, \\*imp.find_module\\(old\\)\\)")
+                "sys.modules[new] = __import__(old)"))
+             (substitute* "src/engine/SCons/Platform/__init__.py"
+               (("mod = imp.load_module\\(full_name, file, path, desc\\)")
+                "mod = __import__(full_name)"))
+             (invoke "python" "bootstrap.py" "build/scons" "DEVELOPER=guix")
+             (chdir "build/scons")
+             #t)))))
+    (native-inputs '())))
+
+(define-public scons-python2
+  (package
+    (inherit (package-with-python2 scons-3))
+    (name "scons-python2")))
+
 (define-public tup
   (package
     (name "tup")
diff --git a/gnu/packages/direct-connect.scm b/gnu/packages/direct-connect.scm
index d342537122..4898c7a038 100644
--- a/gnu/packages/direct-connect.scm
+++ b/gnu/packages/direct-connect.scm
@@ -25,12 +25,12 @@
   #:use-module (guix download)
   #:use-module (gnu packages)
   #:use-module (gnu packages boost)
+  #:use-module (gnu packages build-tools)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control))
 
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index 69c02347c3..60605417a9 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -45,6 +45,7 @@
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
+  #:use-module (gnu packages build-tools)
   #:use-module (gnu packages c)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm
index c5666fb02e..980088a670 100644
--- a/gnu/packages/education.scm
+++ b/gnu/packages/education.scm
@@ -579,7 +579,7 @@ a pen-tablet display and a beamer.")
 (define-public fet
   (package
     (name "fet")
-    (version "6.5.3")
+    (version "6.5.7")
     (source
      (origin
        (method url-fetch)
@@ -588,7 +588,7 @@ a pen-tablet display and a beamer.")
               (list (string-append directory base)
                     (string-append directory "old/" base))))
        (sha256
-        (base32 "030njv53azzw6fn2d5mkxn7hyvyb45yss2y49wxb8bgj3ayv1rgp"))))
+        (base32 "08j5i3dlp290fz142ljn68j8ssi5f3kabs0dd75ig33kms30hjs7"))))
     (build-system gnu-build-system)
     (arguments
      (list
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 379c5fb22c..c35912a26b 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -16,7 +16,7 @@
 ;;; Copyright © 2016, 2019 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2016-2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2016, 2017, 2018 Alex Vong <alexvong1995@gmail.com>
-;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2016-2022 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
 ;;; Copyright © 2017, 2018, 2019, 2020, 2022 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017, 2018, 2019, 2020, 2021, 2022 Clément Lassieur <clement@lassieur.org>
@@ -1993,6 +1993,41 @@ directly.")
 Distributed @acronym{Source Control Management, SCM} system.")
       (license license:gpl3+))))
 
+(define-public emacs-alarm-clock
+  (package
+    (name "emacs-alarm-clock")
+    (version "1.0.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/wlemuel/alarm-clock")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "11afq6lnlqdzbll015fx3031bslwfaz5362qgk2ipgqlk872559h"))))
+    (build-system emacs-build-system)
+    (arguments
+     (list #:include #~(cons "alarm.mp3" %default-include)
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'configure
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   (let ((mpg123 (search-input-file inputs "/bin/mpg123"))
+                         (notify-send
+                          (search-input-file inputs "/bin/notify-send")))
+                     (substitute* "alarm-clock.el"
+                       (("\"mpg123\"") (string-append "\"" mpg123 "\""))
+                       (("notify-send") notify-send))))))))
+    (inputs
+     (list libnotify mpg123))
+    (propagated-inputs
+     (list emacs-f))
+    (home-page "https://github.com/wlemuel/alarm-clock")
+    (synopsis "Alarm clock for Emacs")
+    (description "Alarm Clock provides an alarm clock for Emacs.")
+    (license license:gpl3+)))
+
 (define-public emacs-anaphora
   (package
     (name "emacs-anaphora")
@@ -2922,14 +2957,14 @@ as a library for other Emacs packages.")
 (define-public emacs-auctex
   (package
     (name "emacs-auctex")
-    (version "13.1.3")
+    (version "13.1.4")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://elpa.gnu.org/packages/"
                            "auctex-" version ".tar"))
        (sha256
-        (base32 "0v9rxwz6ngnwrgvzgdki861s136gq30lqhy2gcd9q0a36gb6zhwk"))))
+        (base32 "1r9qysnfdbiblq3c95rgsh7vgy3k4qabnj0vicqhdkca0cl2b2bj"))))
     (build-system emacs-build-system)
     ;; We use 'emacs' because AUCTeX requires dbus at compile time
     ;; ('emacs-minimal' does not provide dbus).
@@ -6611,14 +6646,14 @@ user.")
 (define-public emacs-subed
   (package
     (name "emacs-subed")
-    (version "1.0.3")
+    (version "1.0.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://elpa.nongnu.org/nongnu/subed-"
                                   version ".tar"))
               (sha256
                (base32
-                "0wibakmp1lhfyr6sifb7f3jcqp2s5sy0z37ad9n1n9rhj5q8yhzg"))))
+                "0js48yar8xgj3wjmlkv3k5208q1zvv74sg4lhk6asiy4cq3pqjia"))))
     (arguments
      (list
       #:tests? #t
@@ -9232,6 +9267,31 @@ replaced with the directory you choose.")
 and present results either as single emails or full trees.")
     (license license:gpl3+)))
 
+(define-public emacs-consult-org-roam
+  (let* ((commit "9572c5bc194a583dc9e86ea7d2751959d86b5c78")
+         (revision "0"))
+    (package
+      (name "emacs-consult-org-roam")
+      (version (git-version "0.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/jgru/consult-org-roam")
+               (commit commit)))
+         (sha256
+          (base32
+           "0c2hjd2gw77h77487fzdqfybg0ricsvlnwwfxai9baawz37bcn7q"))))
+      (build-system emacs-build-system)
+      (propagated-inputs (list emacs-consult emacs-org-roam))
+      (home-page "https://github.com/jgru/consult-org-roam")
+      (synopsis "Consult integration for Org Roam")
+      (description
+       "This is a set of functions to use Org Roam with Consult.  This
+packages replaces Org Roam's own completing read functions with equivalent
+versions utilizing Consult's internal API.")
+      (license license:gpl3+))))
+
 (define-public emacs-consult-eglot
   (package
    (name "emacs-consult-eglot")
@@ -10272,8 +10332,8 @@ state and will work even without lispy being enabled.")
 
 (define-public emacs-lpy
   ;; There is no proper release/tag.
-  (let ((commit "076ce9acb68f6ac1b39127b634a91ffd865d13d8")
-        (revision "4"))
+  (let ((commit "ce78a4613458790cc785c1687af7eed8f0d8d66c")
+        (revision "5"))
     (package
       (name "emacs-lpy")
       (version (git-version "0.1.0" revision commit))
@@ -10285,7 +10345,7 @@ state and will work even without lispy being enabled.")
                (commit commit)))
          (sha256
           (base32
-           "10sab50wmr3zn7jgzx93201ymhmacqacn3m2qllsqkfw2gpsi6dn"))
+           "1vxrjy6k030hcbclblgcaaw7h6k17kl3n9zla08527525c0gma01"))
          (file-name (git-file-name name version))))
       (propagated-inputs
        (list emacs-zoutline emacs-lispy))
@@ -12148,7 +12208,7 @@ target will call @code{compile} on it.")
 (define-public emacs-cider
   (package
     (name "emacs-cider")
-    (version "1.4.1")
+    (version "1.5.0")
     (source
      (origin
        (method git-fetch)
@@ -12157,11 +12217,19 @@ target will call @code{compile} on it.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "08635ln514nrglx6qyhaq1x7y7lw4mcd659ba8zs071yjiariarm"))))
+        (base32 "1ih902n8p3pl1apprprkyrlnrp2dxli86y5k09zahy9mglfz2z5n"))))
     (build-system emacs-build-system)
     (arguments
      '(#:exclude                        ;don't exclude 'cider-test.el'
-       '("^\\.dir-locals\\.el$" "^test/")))
+       '("^\\.dir-locals\\.el$" "^test/")
+       #:phases
+       ;; XXX: file "test/cider-tests.el" contains a bogus "/bin/command"
+       ;; string, and `patch-el-files' phase chokes on it (even though the
+       ;; file is excluded from installation).  Remove the phase altogether
+       ;; since there is no "/bin/executable" to replace in the code base
+       ;; anyway.
+       (modify-phases %standard-phases
+         (delete 'patch-el-files))))
     (propagated-inputs
      (list emacs-clojure-mode
            emacs-parseedn
@@ -13224,7 +13292,7 @@ programming and reproducible research.")
 (define-public emacs-org-contrib
   (package
     (name "emacs-org-contrib")
-    (version "0.3")
+    (version "0.4")
     (source
      (origin
        (method git-fetch)
@@ -13233,16 +13301,7 @@ programming and reproducible research.")
              (commit (string-append "release_" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "17aca4mc3gbdh6nhlcaa5ymh1yy76nwysrvy9sfcqkzvd5lgagzc"))
-       ;; XXX: ob-sclang.el is packaged separately to avoid the dependency on
-       ;; SuperCollider and qtwebengine-5.  This will be unnecessary in 0.4+
-       ;; release as the file is going to be removed from the repository.
-
-       ;; XXX: org-contacts.el is now maintained in a separate repository and
-       ;; will soon be removed from org-contrib
-       (modules '((guix build utils)))
-       (snippet '(begin (delete-file "lisp/ob-sclang.el")
-                        (delete-file "lisp/org-contacts.el")))))
+        (base32 "06b1rpywj596nnnap6pj6fnmcq8fcc4i30zv7qsvs3ryxciw01fb"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -13253,8 +13312,7 @@ programming and reproducible research.")
     (native-inputs
      (list emacs-cider))
     (propagated-inputs
-     (list emacs-arduino-mode ;XXX: remove after 0.4+ release.
-           emacs-org))
+     (list emacs-org))
     (home-page "https://git.sr.ht/~bzg/org-contrib")
     (synopsis "Unmaintained add-ons for Org mode")
     (description
@@ -13858,6 +13916,27 @@ files in Emacs.  Files of this type (e.g., @file{BUILD.gn} or @file{*.gni})
 are common in Chromium-derived projects.")
     (license license:bsd-3)))
 
+(define-public emacs-drag-stuff
+  (package
+    (name "emacs-drag-stuff")
+    (version "0.3.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rejeep/drag-stuff")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1jrr59iazih3imkl9ja1lbni9v3xv6b8gmqs015g2mxhlql35jka"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/rejeep/drag-stuff")
+    (synopsis "Drag stuff around in Emacs")
+    (description
+"Drag Stuff is a minor mode for Emacs that makes it possible to drag
+stuff (words, region, lines) around in Emacs.")
+    (license license:gpl3+)))
+
 (define-public emacs-bazel
   ;; From 2021-11-21.
   ;; No releases available.
@@ -16844,7 +16923,7 @@ groups.")
 (define-public emacs-taxy-magit-section
   (package
     (name "emacs-taxy-magit-section")
-    (version "0.9.1")
+    (version "0.10")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -16852,7 +16931,7 @@ groups.")
                     ".tar"))
               (sha256
                (base32
-                "0ybkz5nqjdrg2z9bfd07xg4k49hrl26vsrwz2vqpfbsqqg5vr4pr"))))
+                "1g58nvpb04ldhn5qnjw2q5idrv6vhlfa0qmb46cvis6bkz46cxkw"))))
     (build-system emacs-build-system)
     (propagated-inputs (list emacs-magit emacs-taxy))
     (home-page "https://github.com/alphapapa/taxy.el")
@@ -24370,37 +24449,27 @@ other frame parameters.")
     (license license:gpl3+)))
 
 (define-public emacs-arduino-mode
-  (let ((commit "23ae47c9f28f559e70b790b471f20310e163a39b")
-        (revision "1"))                 ;no release yet
+  (let ((commit "652c6a328fa8f2db06534d5f231c6b6933be3edc")
+        (revision "0"))
     (package
       (name "emacs-arduino-mode")
-      (version (git-version "0" revision commit))
+      (version (git-version "1.3.0" revision commit))
       (source
        (origin
          (method git-fetch)
          (uri (git-reference
-               (url "https://github.com/stardiviner/arduino-mode")
+               (url "https://repo.or.cz/arduino-mode")
                (commit commit)))
          (sha256
-          (base32 "08vnbz9gpah1l93fzfd87aawrhcnh2v1kyfxgsn88pdwg8awz8rx"))
+          (base32 "16izwrk1dfsa14kylfhsxdwkx76g0jdk0znl1z7cypxh5q9ijy1x"))
          (file-name (git-file-name name version))))
       (build-system emacs-build-system)
-      (arguments
-       `(#:phases
-         (modify-phases %standard-phases
-           ;; Emacs complains that "defmethod" and "defgeneric" are obsolete
-           ;; macros when compiling. Substitute them with the recommended
-           ;; macros "cl-defmethod" and "cl-defgeneric", respectively.
-           (add-after 'unpack 'fix-obsolete
-             (lambda _
-               (substitute* "ede-arduino.el"
-                 (("defmethod") "cl-defmethod")
-                 (("defgeneric") "cl-defgeneric")))))))
       (inputs
        (list emacs-flycheck emacs-spinner))
       (synopsis "Emacs major mode for editing Arduino sketches")
-      (description "Emacs major mode for editing Arduino sketches.")
-      (home-page "https://github.com/stardiviner/arduino-mode")
+      (description "This package provides an Emacs major mode for editing
+Arduino sketches and Org Babel support.")
+      (home-page "https://repo.or.cz/arduino-mode")
       (license license:gpl3+))))
 
 (define-public emacs-annalist
@@ -30311,6 +30380,28 @@ conversion program}, a Japanese input method on Emacs.")
 conversion program}, a Japanese input method on Emacs.  This package adds
 support for the Nicola keyboard layout to it.")))
 
+(define-public emacs-tamil99
+  (package
+    (name "emacs-tamil99")
+    (version "0.1.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://git.systemreboot.net/tamil99/")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0f9s3b6fd42j21922qkxfr3j83a7qym73nynph86w87vkis40zqw"))))
+    (build-system emacs-build-system)
+    (home-page "https://git.systemreboot.net/tamil99/about/")
+    (synopsis "Tamil99 input method for Emacs")
+    (description "This package implements the @code{tamil99} input method for
+Emacs.  Tamil99 is a keyboard layout and input method that is specifically
+designed for the Tamil language.  Vowels and vowel modifiers are input with
+your left hand, and consonants are input with your right hand.")
+    (license license:gpl3+)))
+
 (define-public emacs-objed
   (package
     (name "emacs-objed")
@@ -31020,7 +31111,7 @@ web development.")
 (define-public emacs-iter2
   (package
     (name "emacs-iter2")
-    (version "1.2")
+    (version "1.3")
     (source
      (origin
        (method git-fetch)
@@ -31029,7 +31120,7 @@ web development.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1jzd9kzxf3ncw40d55r1apw0cpk4i1a3s5p85mg9n20553cb6lhj"))))
+        (base32 "1hsg5q1acghb0xz2pv5g20zg5j32wikp47b62if8afq767rkc5f3"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/doublep/iter2")
     (synopsis "Reimplementation of Elisp generators")
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 661e1c0e07..b3a54798d4 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -63,6 +63,7 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages boost)
+  #:use-module (gnu packages build-tools)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages check)
   #:use-module (gnu packages curl)
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 66c97d3d6a..83bb4d9cb0 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -253,7 +253,7 @@ topology functions.")
 (define-public gnome-maps
   (package
     (name "gnome-maps")
-    (version "41.2")
+    (version "42.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -261,7 +261,7 @@ topology functions.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "037xmkmcmcw87vb1c1s3y225m8757k331cvk1m8cshf6mx61p0l1"))))
+                "1cb9s2zz1zib3f33c035lmgshpl679isbzdd3alrx4yclw61nvay"))))
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
@@ -318,7 +318,7 @@ topology functions.")
        ("libhandy" ,libhandy)
        ("libsecret" ,libsecret)
        ("libsoup" ,libsoup-minimal-2)
-       ("libgweather" ,libgweather)
+       ("libgweather" ,libgweather4)
        ("libxml2" ,libxml2)
        ("librsvg" ,librsvg)
        ("glib-networking" ,glib-networking)
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 44effe2b2b..fe20a9fa20 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -5538,27 +5538,24 @@ service via the system message bus.")
                 "1rkf4yv43qcahyx7bismdv6z2vh5azdnm1fqfmnzrada9cm8ykna"))))
     (build-system meson-build-system)
     (arguments
-     `(#:tests? #f ; one of two tests requires network access
-       #:configure-flags
-       `(,(string-append "-Dzoneinfo_dir="
-                         (assoc-ref %build-inputs "tzdata")
-                         "/share/zoneinfo"))))
+     (list
+      #:tests? #f                    ;one of two tests requires network access
+      #:configure-flags
+      #~(list (string-append "-Dzoneinfo_dir="
+                             (search-input-directory %build-inputs
+                                                     "share/zoneinfo")))))
     (native-inputs
-     `(("glib:bin" ,glib "bin") ; for glib-mkenums
-       ("gobject-introspection" ,gobject-introspection)
-       ("pkg-config" ,pkg-config)
-       ("python" ,python)
-       ("vala" ,vala)
-       ("intltool" ,intltool)
-       ("python-pygobject" ,python-pygobject)))
+     (list gettext-minimal
+           `(,glib "bin")               ;for glib-mkenums
+           gobject-introspection
+           pkg-config
+           python
+           vala
+           python-pygobject))
     (propagated-inputs
      ;; gweather-3.0.pc refers to GTK+, GDK-Pixbuf, GLib/GObject, libxml, and
      ;; libsoup.
-     `(("gtk+" ,gtk+)
-       ("gdk-pixbuf" ,gdk-pixbuf)
-       ("libxml2" ,libxml2)
-       ("libsoup" ,libsoup-minimal-2)
-       ("geocode-glib" ,geocode-glib)))
+     (list gtk+ gdk-pixbuf libxml2 libsoup-minimal-2 geocode-glib))
     (inputs
      (list tzdata))
     (home-page "https://wiki.gnome.org/action/show/Projects/LibGWeather")
@@ -5568,6 +5565,55 @@ service via the system message bus.")
 services for numerous locations.")
     (license license:gpl2+)))
 
+;; libgweather no longer follows the GNOME version, and recommends changing
+;; the package name in distributions to avoid accidental downgrades.  See
+;; <https://discourse.gnome.org/t/changes-in-libgweather-for-gnome-42/7770/2>.
+;; TODO: how to prevent the updater from picking version 40?
+(define-public libgweather4
+  (package
+    (inherit libgweather)
+    (name "libgweather4")
+    (version "4.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/libgweather/"
+                                  (version-major+minor version) "/"
+                                  "libgweather-" version ".tar.xz"))
+              (sha256
+               (base32
+                "0k43mr7vmcg14lkwjk6p9wwy3zlw23wkfpkfcy6b8wkg3f0483a4"))))
+    (arguments
+     (list
+      ;; FIXME: multiple tests fails as such:
+      ;;   "GLib-GIO-FATAL-ERROR: Settings schema 'org.gnome.system.proxy'
+      ;;   is not installed"
+      #:tests? #f
+      #:configure-flags
+      #~(list (string-append "-Dzoneinfo_dir="
+                             (search-input-directory %build-inputs
+                                                     "share/zoneinfo"))
+              ;; TODO: Requires 'gi-docgen'.
+              "-Dgtk_doc=false")
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'check 'pre-check
+            (lambda _
+              (setenv "HOME" "/tmp"))))))
+    (native-inputs
+     (list gettext-minimal
+           `(,glib "bin")               ;for glib-mkenums
+           gobject-introspection
+           pkg-config
+           python
+           vala
+           python-pygobject))
+    ;; TODO: It would be good to make the package respect TZDIR instead
+    ;; of using a "hard coded" version of tzdata.
+    (inputs (list tzdata))
+    (propagated-inputs
+     ;; gweather4.pc refers to all of these.
+     (list glib libxml2 libsoup-minimal-2 geocode-glib))))
+
 (define-public gnome-settings-daemon
   (package
     (name "gnome-settings-daemon")
@@ -8671,6 +8717,7 @@ properties, screen resolution, and other GNOME parameters.")
               (uri (string-append "mirror://gnome/sources/" name "/"
                                   (version-major version) "/"
                                   name "-" version ".tar.xz"))
+              (patches (search-patches "gnome-shell-polkit-autocleanup.patch"))
               (sha256
                (base32
                 "0ragmcln210zvzhc2br33yprbkj9drjzd7inp5sdxra0a7l73yaj"))))
diff --git a/gnu/packages/gps.scm b/gnu/packages/gps.scm
index e528807de7..91e0ee12ac 100644
--- a/gnu/packages/gps.scm
+++ b/gnu/packages/gps.scm
@@ -34,6 +34,7 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages build-tools)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages glib)
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 5eda60aa30..c3ef7085a5 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -69,7 +69,6 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages boost)
-  #:use-module (gnu packages build-tools)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 752b7f80ca..557a89aa6b 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -58,6 +58,7 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages boost)
+  #:use-module (gnu packages build-tools)
   #:use-module (gnu packages check)
   #:use-module (gnu packages cmake)
   #:use-module (gnu packages cpp)
diff --git a/gnu/packages/installers.scm b/gnu/packages/installers.scm
index 30cd0e4e6c..79738598cb 100644
--- a/gnu/packages/installers.scm
+++ b/gnu/packages/installers.scm
@@ -19,9 +19,9 @@
 (define-module (gnu packages installers)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
+  #:use-module (gnu packages build-tools)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cross-base)
-  #:use-module (gnu packages python-xyz)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system scons)
diff --git a/gnu/packages/libffi.scm b/gnu/packages/libffi.scm
index f09a43db37..6d16e6a03b 100644
--- a/gnu/packages/libffi.scm
+++ b/gnu/packages/libffi.scm
@@ -171,28 +171,22 @@ project.")
 (define-public ruby-ffi
   (package
     (name "ruby-ffi")
-    (version "1.12.2")
+    (version "1.15.5")
     (source (origin
               ;; Pull from git because the RubyGems release bundles LibFFI,
               ;; and comes with a gemspec that makes it difficult to unbundle.
               (method git-fetch)
               (uri (git-reference
                     (url "https://github.com/ffi/ffi")
-                    (commit version)))
+                    (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1cvqsbjr2gfjgqggq9kdx90qhhzr7qkyr9wmxdsfsik6cnxnnpmd"))))
+                "1qk55s1zwpdjykwkj9l37m71i5n228i7f8bg3ply3ks9py16m7s6"))))
     (build-system ruby-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'do-not-depend-on-ccache
-           (lambda _
-             (substitute* "spec/ffi/fixtures/GNUmakefile"
-               (("^CCACHE := .*")
-                ""))
-             #t))
          (replace 'replace-git-ls-files
            (lambda _
              ;; Do not try to execute git, or include the (un)bundled LibFFI.
@@ -202,9 +196,10 @@ project.")
                (("lfs \\+?= .*")
                 "lfs = []\n"))
              (substitute* "Rakefile"
+               (("git .*ls-files -z")
+                "find * -type f -print0 | sort -z")
                (("LIBFFI_GIT_FILES = .*")
-                "LIBFFI_GIT_FILES = []\n"))
-             #t))
+                "LIBFFI_GIT_FILES = []\n"))))
          (replace 'build
           (lambda _
             ;; Tests depend on the native extensions, so we build it
@@ -223,8 +218,7 @@ project.")
                    (setenv "MAKE" "make")
                    (setenv "CC" "gcc")
                    (invoke "rspec" "spec"))
-                 (format #t "test suite not run~%"))
-             #t)))))
+                 (format #t "test suite not run~%")))))))
     (native-inputs
      (list ruby-rake-compiler ruby-rspec ruby-rubygems-tasks))
     (inputs
diff --git a/gnu/packages/patches/gnome-shell-polkit-autocleanup.patch b/gnu/packages/patches/gnome-shell-polkit-autocleanup.patch
new file mode 100644
index 0000000000..08968b83a1
--- /dev/null
+++ b/gnu/packages/patches/gnome-shell-polkit-autocleanup.patch
@@ -0,0 +1,50 @@
+Don't redefine G_DEFINE_AUTOPTR_CLEANUP_FUNC when available in polkit.
+
+Taken from upstream:
+
+  https://gitlab.gnome.org/GNOME/gnome-shell/-/commit/1d0a08b5e25fea7b0e792ec9798e68a7c5606a75
+
+diff --git a/config.h.meson b/config.h.meson
+index b93fda8727..ff355d3062 100644
+--- a/config.h.meson
++++ b/config.h.meson
+@@ -33,3 +33,6 @@
+ 
+ /* Define if fdwalk is available in libc */
+ #mesondefine HAVE_FDWALK
++
++/* Define if polkit defines autocleanup functions */
++#mesondefine HAVE_POLKIT_AUTOCLEANUP
+diff --git a/meson.build b/meson.build
+index 42ec01c566..778a34c6ef 100644
+--- a/meson.build
++++ b/meson.build
+@@ -169,6 +169,13 @@ cdata.set('HAVE_FDWALK',
+           cc.has_function('fdwalk')
+ )
+ 
++polkit_has_autocleanup = cc.compiles(
++  '#define POLKIT_AGENT_I_KNOW_API_IS_SUBJECT_TO_CHANGE
++  #include <polkitagent/polkitagent.h>
++  void main(void) { g_autoptr(PolkitAgentListener) agent = NULL; }',
++  dependencies: polkit_dep)
++cdata.set('HAVE_POLKIT_AUTOCLEANUP', polkit_has_autocleanup)
++
+ buildtype = get_option('buildtype')
+ if buildtype != 'plain'
+   all_warnings = [
+diff --git a/src/shell-polkit-authentication-agent.h b/src/shell-polkit-authentication-agent.h
+index 55b46af110..4f14749563 100644
+--- a/src/shell-polkit-authentication-agent.h
++++ b/src/shell-polkit-authentication-agent.h
+@@ -14,8 +14,10 @@
+ 
+ G_BEGIN_DECLS
+ 
++#ifndef HAVE_POLKIT_AUTOCLEANUP
+ /* Polkit doesn't have g_autoptr support, thus we have to manually set the autoptr function here */
+ G_DEFINE_AUTOPTR_CLEANUP_FUNC (PolkitAgentListener, g_object_unref)
++#endif
+ 
+ #define SHELL_TYPE_POLKIT_AUTHENTICATION_AGENT (shell_polkit_authentication_agent_get_type())
+ 
diff --git a/gnu/packages/patches/scons-test-environment.patch b/gnu/packages/patches/scons-test-environment.patch
new file mode 100644
index 0000000000..be5b61b2d4
--- /dev/null
+++ b/gnu/packages/patches/scons-test-environment.patch
@@ -0,0 +1,57 @@
+Inherit essential environment variables in tests.
+
+Note: it could be better to generalize this in SCons/Platform/posix.py
+instead of just patching the tests.
+
+diff --git a/SCons/ActionTests.py b/SCons/ActionTests.py
+--- a/SCons/ActionTests.py
++++ b/SCons/ActionTests.py
+@@ -98,6 +98,7 @@ outfile2 = test.workpath('outfile2')
+ pipe_file = test.workpath('pipe.out')
+ 
+ scons_env = SCons.Environment.Environment()
++scons_env['ENV']['PATH'] += os.environ['PATH']
+ 
+ # Capture all the stuff the Actions will print,
+ # so it doesn't clutter the output.
+@@ -1090,6 +1091,8 @@ class CommandActionTestCase(unittest.TestCase):
+         except AttributeError:
+             env = Environment()
+ 
++        env = Environment(ENV={'PATH': os.environ['PATH']})
++
+         cmd1 = r'%s %s %s xyzzy' % (_python_, act_py, outfile)
+ 
+         act = SCons.Action.CommandAction(cmd1)
+@@ -1884,7 +1887,7 @@ class ListActionTestCase(unittest.TestCase):
+                     f.write("class2b\n")
+ 
+         act = SCons.Action.ListAction([cmd2, function2, class2a(), class2b])
+-        r = act([], [], Environment(out=outfile))
++        r = act([], [], Environment(out=outfile, ENV={'PATH' : os.getenv('PATH')}))
+         assert isinstance(r.status, class2b), r.status
+         c = test.read(outfile, 'r')
+         assert c == "act.py: 'syzygy'\nfunction2\nclass2a\nclass2b\n", c
+@@ -1948,7 +1951,7 @@ class LazyActionTestCase(unittest.TestCase):
+         a([], [], env=Environment(BAR=f, s=self))
+         assert self.test == 1, self.test
+         cmd = r'%s %s %s lazy' % (_python_, act_py, outfile)
+-        a([], [], env=Environment(BAR=cmd, s=self))
++        a([], [], env=Environment(BAR=cmd, s=self, ENV={'PATH' : os.getenv('PATH')}))
+         c = test.read(outfile, 'r')
+         assert c == "act.py: 'lazy'\n", c
+ 
+diff --git a/SCons/SConfTests.py b/SCons/SConfTests.py
+--- a/SCons/SConfTests.py
++++ b/SCons/SConfTests.py
+@@ -71,7 +71,9 @@ class SConfTestCase(unittest.TestCase):
+         # and we need a new environment, cause references may point to
+         # old modules (well, at least this is safe ...)
+         self.scons_env = self.Environment.Environment()
+-        self.scons_env.AppendENVPath('PATH', os.environ['PATH'])
++        # Inherit the OS environment to get essential variables.
++        inherited_env = os.environ.copy()
++        self.scons_env['ENV'] = inherited_env
+ 
+         # we want to do some autodetection here
+         # this stuff works with
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index ca7b1074b1..73d2954d23 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -3047,51 +3047,6 @@ user configuration files.  It does not have support for serializing into YAML
 and is not compatible with JSON.")
     (license license:expat)))
 
-(define-public scons
-  (package
-    (name "scons")
-    (version "3.0.4")
-    (source (origin
-             (method git-fetch)
-             (uri (git-reference
-                   (url "https://github.com/SCons/scons")
-                   (commit version)))
-             (file-name (git-file-name name version))
-             (sha256
-              (base32
-               "1xy8jrwz87y589ihcld4hv7wn122sjbz914xn8h50ww77wbhk8hn"))))
-    (build-system python-build-system)
-    (arguments
-     `(#:use-setuptools? #f                ; still relies on distutils
-       #:tests? #f                         ; no 'python setup.py test' command
-       #:phases
-       (modify-phases %standard-phases
-         (add-before 'build 'bootstrap
-           (lambda _
-             (substitute* "src/engine/SCons/compat/__init__.py"
-               (("sys.modules\\[new\\] = imp.load_module\\(old, \\*imp.find_module\\(old\\)\\)")
-                "sys.modules[new] = __import__(old)"))
-             (substitute* "src/engine/SCons/Platform/__init__.py"
-               (("mod = imp.load_module\\(full_name, file, path, desc\\)")
-                "mod = __import__(full_name)"))
-             (invoke "python" "bootstrap.py" "build/scons" "DEVELOPER=guix")
-             (chdir "build/scons")
-             #t)))))
-    (home-page "https://scons.org/")
-    (synopsis "Software construction tool written in Python")
-    (description
-     "SCons is a software construction tool.  Think of SCons as an improved,
-cross-platform substitute for the classic Make utility with integrated
-functionality similar to autoconf/automake and compiler caches such as ccache.
-In short, SCons is an easier, more reliable and faster way to build
-software.")
-    (license license:x11)))
-
-(define-public scons-python2
-  (package
-    (inherit (package-with-python2 scons))
-    (name "scons-python2")))
-
 (define-public python-exceptiongroup
   (package
     (name "python-exceptiongroup")
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index cc41338b74..5a1d3f22c8 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -2831,7 +2831,7 @@ linux/libcurl_wrapper.h"
             (file-type 'regular)
             (separator #f)
             (variable "QTWEBENGINEPROCESS_PATH")
-            (files '("lib/qt5/libexec/QtWebEngineProcess")))))
+            (files '("lib/qt6/libexec/QtWebEngineProcess")))))
     (home-page "https://wiki.qt.io/QtWebEngine")
     (synopsis "Qt WebEngine module")
     (description "The Qt WebEngine module provides support for web
diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm
index f6ead57cc1..360c06d216 100644
--- a/gnu/packages/samba.scm
+++ b/gnu/packages/samba.scm
@@ -12,6 +12,7 @@
 ;;; Copyright © 2020, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2022 Jean-Pierre De Jesus DIAZ <me@jeandudey.tech>
 ;;; Copyright © 2022 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -185,14 +186,16 @@ external dependencies.")
 (define-public samba
   (package
     (name "samba")
-    (version "4.16.2")
+    (version "4.16.4")
     (source
+     ;; For updaters: the current PGP fingerprint is
+     ;; 81F5E2832BD2545A1897B713AA99442FB680B620.
      (origin
        (method url-fetch)
        (uri (string-append "https://download.samba.org/pub/samba/stable/"
                            "samba-" version ".tar.gz"))
        (sha256
-        (base32 "1745gx36gyd7353a94w4lrgksbmms0502kj9gg63il9zbdns1dx0"))))
+        (base32 "0bvhqinxwpbwp4ayhd9q8ga0w89gnkl1m3nrwpj1fnhjzd4ghclm"))))
     (build-system gnu-build-system)
     (arguments
      (list
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 49afdbd54a..b687e4e3e7 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -107,6 +107,7 @@
   #:use-module (gnu packages bison)
   #:use-module (gnu packages bittorrent)
   #:use-module (gnu packages boost)
+  #:use-module (gnu packages build-tools)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cpp)
@@ -1943,7 +1944,8 @@ from streaming URLs.  It is a command-line wrapper for the libquvi library.")
            ;;("gss" ,gss)
            zlib))
     (arguments
-     `(#:scons-flags (list (string-append "APR=" (assoc-ref %build-inputs "apr"))
+     `(#:scons ,scons-3   ;TODO: remove in the next rebuild cycle
+       #:scons-flags (list (string-append "APR=" (assoc-ref %build-inputs "apr"))
                            (string-append "APU=" (assoc-ref %build-inputs "apr-util"))
                            (string-append "OPENSSL=" (assoc-ref %build-inputs "openssl"))
                            ;; (string-append "GSSAPI=" (assoc-ref %build-inputs "gss"))
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index d9e84b95a3..1af610b17f 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2022 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -123,7 +124,7 @@ the WPE-flavored port of WebKit.")
 engine that uses Wayland for graphics output.")
     (license license:bsd-2)))
 
-(define %webkit-version "2.36.4")
+(define %webkit-version "2.36.7")
 
 (define-public webkitgtk
   (package
@@ -134,7 +135,7 @@ engine that uses Wayland for graphics output.")
               (uri (string-append "https://www.webkitgtk.org/releases/"
                                   name "-" version ".tar.xz"))
               (sha256
-               (base32 "1a72w9md2xvb82rd2sk3c7pqrvr28rqa8i4yq5ldjyd4hlgvxgmn"))
+               (base32 "0hqpfgzbb7lzdih9aw86rmkljm8ynv8zw3b72z88211gngr0q9hc"))
               (patches (search-patches
                         "webkitgtk-adjust-bubblewrap-paths.patch"))))
     (build-system cmake-build-system)
@@ -302,7 +303,7 @@ propagated by default) such as @code{gst-plugins-good} and
               (uri (string-append "https://wpewebkit.org/releases/"
                                   name "-" version ".tar.xz"))
               (sha256
-               (base32 "08f0sz4d5bpgrgvkgby3fri3wk5474f66gvp3y39laflypnknyih"))))
+               (base32 "1jcm5fjzn1k9l87qwqgmvd5qriwpv3vgs632zc6asqn5zxr7sx7k"))))
     (arguments
      (substitute-keyword-arguments (package-arguments webkitgtk)
        ((#:configure-flags flags)
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 7ea6840689..5084d194a6 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -579,7 +579,16 @@ subscribe to events.")
                   (assoc-ref inputs "pango") "/lib/libpango-1.0.so.0\")\n"))
                 (("^pangocairo = ffi.dlopen.*")
                  (string-append "pangocairo = ffi.dlopen(\""
-                  (assoc-ref inputs "pango") "/lib/libpangocairo-1.0.so.0\")\n"))))))))
+                  (assoc-ref inputs "pango") "/lib/libpangocairo-1.0.so.0\")\n")))))
+       (add-after 'install 'install-xsession
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (xsessions (string-append out "/share/xsessions"))
+                    (qtile (string-append out "/bin/qtile start")))
+               (mkdir-p xsessions)
+               (copy-file "resources/qtile.desktop" (string-append xsessions "/qtile.desktop"))
+               (substitute* (string-append xsessions "/qtile.desktop")
+                 (("qtile start") qtile))))))))
     (inputs
       (list glib pango pulseaudio))
     (propagated-inputs
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 8360708445..7be995a438 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -93,6 +93,7 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages build-tools)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages documentation)
diff --git a/guix/build-system/scons.scm b/guix/build-system/scons.scm
index 74901b3478..e38213e8e0 100644
--- a/guix/build-system/scons.scm
+++ b/guix/build-system/scons.scm
@@ -45,8 +45,8 @@
 (define (default-scons)
   "Return the default SCons package."
   ;; Lazily resolve the binding to avoid a circular dependency.
-  (let ((python (resolve-interface '(gnu packages python-xyz))))
-    (module-ref python 'scons)))
+  (let ((build-tools (resolve-interface '(gnu packages build-tools))))
+    (module-ref build-tools 'scons)))
 
 (define* (lower name
                 #:key source inputs native-inputs outputs system target