[bug#79146] Update build tools. Deprecate python-meson-python.

Message ID q-DIbrizbktKv0JwRSYbDtv1lJIoq2RwdiL5pj9ZflQtvCbYymF7hkYzlrl2NkS3M47w8UxhbZ8BzgoeQpx4bqxGQWq4a2Pk3fpf6m1dgdU=@protonmail.com
State New
Headers
Series [bug#79146] Update build tools. Deprecate python-meson-python. |

Commit Message

vspefs Aug. 1, 2025, 6:06 p.m. UTC
A patch is attached to this email.

ThispatchupdatesmanybuildtoolsandrelatedpackagesinGNUrepo,the
formerincludinggn,meson,cmake,muon,osc,genie,pdpmake,andninja,the
latterincludingcpm-cmake,bear,compiledb,andpython-pyproject-medatada.

Thispatchalsodeprecatespython-meson-pythoninfavorofmeson-python.All
packagesthatusepython-meson-pythonaremanuallymitigated.
Rationale:Theyrefertothesamepackage.Thename"meson-python"ispreferred
becauseupstreamname"meson-python"alreadycontainsa"python".Otherpackage
managers (e.g. pacmanforArch) also use the name "meson-python". Only 4
packagesinGNUrepouse"python-meson-python",comparedtomorethan10
"meson-python"s.

Someothermodificationsaremade.Seecommitmessagefordetailedinformation.

Allpackagesinvolved,exceptforcmakeandosc,aretestedandcanbe
successfullybuiltonmysystem.
cmakeandoscrequirerusttobuild,whichtakesahugeamountoftimeto
bootstraponmycomputer.TheGuixserverdidn't seem to have substitutes whenI tested. Sorry about that.

This is my first time submitting a patch. What should be many commits are
bulked together in a single commit because my local edit history ain't that
clean. Apology in advance if inconvience is caused. Feel free to modify the
patch.
  

Patch

From c1a75bc3501514bea909e3b07c49647aedac0520 Mon Sep 17 00:00:00 2001
Message-ID: <c1a75bc3501514bea909e3b07c49647aedac0520.1754070075.git.vspefs@protonmail.com>
From: vspefs <vspefs@protonmail.com>
Date: Fri, 1 Aug 2025 05:55:55 +0800
Subject: [PATCH] gnu: Update build tools. Deprecate python-meson-python.

* gnu/packages/build-tools.scm (bear): Update to 3.1.6.
[inputs] Fix mismatched input name.
* gnu/packages/build-tools.scm (gn): Update to 0.0-2271.93cc2d3.
* gnu/packages/build-tools.scm (meson): Update to 1.8.3.
* gnu/packages/build-tools.scm (meson-python): Update to 0.18.0.
[build-system] Switch to meson-build-system to avoid circular dependency
between files.
[package] Move meson-python to...
* gnu/packages/python-xyz.scm (meson-python): ...here.
* gnu/packages/build-tools.scm (muon): Update to 0.5.0.
* gnu/packages/build-tools.scm (osc): Update to 0.19.0.
* gnu/packages/build-tools.scm (compiledb): Update to 0.10.7.
[arguments] Discard support for python<3.3 as upstream does.
[arguments] Patch hardcoded "/bin/echo" in tests.
* gnu/packages/build-tools.scm (genie): Update to 1190-0.18vdlcf.
* gnu/packages/build-tools.scm (pdpmake): Update to 2.0.3.
* gnu/packages/cmake.scm (cmake): Update to 4.0.3.
* gnu/packages/cmake.scm (cpm-cmake): Update to 0.42.0
* gnu/packages/finance.scm (beancount): [native-inputs] Switch from
python-meson-python to meson-python.
* gnu/packages/python-science.scm (python-scikit-misc): Likewise.
* gnu/packages/python-xyz.scm (python-pywavelets): Likewise.
* gnu/packages/python-xyz.scm (python-mccabe): Likewise.
* gnu/packages/python-xyz-scm (python-dbus-python): Likewise.
* gnu/packages/ninja.scm (ninja): Update to 1.13.1.
[inputs]: Add google test source for testing.
[arguments]: Use fetched google test source for testing.
* gnu/packages/python-xyz.scm (python-pyproject-metadata): Update to
0.9.1.
[native-inputs] Add python-flit-core.
* gnu/packages/python-xyz.scm (python-meson-python): Deprecated in favor
of meson-python.
---
 gnu/packages/build-tools.scm    | 464 ++++++++++++++++----------------
 gnu/packages/cmake.scm          |  39 +--
 gnu/packages/finance.scm        |  34 ++-
 gnu/packages/ninja.scm          |  81 +++---
 gnu/packages/python-build.scm   |   1 -
 gnu/packages/python-science.scm |   2 +-
 gnu/packages/python-xyz.scm     |  63 +++--
 7 files changed, 344 insertions(+), 340 deletions(-)

diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm
index c466e03139..112e98100b 100644
--- a/gnu/packages/build-tools.scm
+++ b/gnu/packages/build-tools.scm
@@ -129,7 +129,7 @@  (define-public bam
 (define-public bear
   (package
     (name "bear")
-    (version "3.1.4")
+    (version "3.1.6")
     (source
      (origin
        (method git-fetch)
@@ -138,7 +138,7 @@  (define-public bear
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1x99d2cycgxay62cz2ypjjkmjgrbdvz5d3pg4fyv0gnq2srnlcnm"))))
+        (base32 "0pnrsnwvsqby0vgb33zsrjznb7l82ji7i4aigk32hg3rl674qqvx"))))
     (build-system cmake-build-system)
     (arguments
      `(#:phases (modify-phases %standard-phases
@@ -146,7 +146,8 @@  (define-public bear
                     (lambda _
                       (substitute* "CMakeLists.txt"
                         ;; Delete the matching line—and comment out the next.
-                        ((".*TEST_(BEFORE_INSTALL|COMMAND).*") "#"))))
+                        ((".*TEST_(BEFORE_INSTALL|COMMAND).*")
+                         "#"))))
                   (add-before 'check 'set-build-environment
                     (lambda _
                       (setenv "CC" "gcc")))
@@ -155,25 +156,24 @@  (define-public bear
                     (lambda* (#:key tests? #:allow-other-keys)
                       (when tests?
                         (invoke "ctest")))))))
-    (inputs
-     `(("c-ares" ,c-ares)
-       ("fmt" ,fmt-8)
-       ("grpc" ,grpc)
-       ("nlohmann-json" ,nlohmann-json)
-       ("protobuf" ,protobuf)
-       ("python" ,python-wrapper)
-       ("re2" ,re2)
-       ("spdlog" ,spdlog-1.10)))
-    (native-inputs
-     `(("abseil-cpp" ,abseil-cpp-cxxstd11)
-       ("googletest" ,googletest)
-       ("openssl" ,openssl)
-       ("pkg-config" ,pkg-config)
-       ("python-lit" ,python-lit)
-       ("zlib" ,zlib)))
+    (inputs `(("c-ares" ,c-ares)
+              ("fmt" ,fmt-8)
+              ("grpc" ,grpc)
+              ("nlohmann-json" ,nlohmann-json)
+              ("protobuf" ,protobuf)
+              ("python-wrapper" ,python-wrapper)
+              ("re2" ,re2)
+              ("spdlog" ,spdlog-1.10)))
+    (native-inputs `(("abseil-cpp" ,abseil-cpp-cxxstd11)
+                     ("googletest" ,googletest)
+                     ("openssl" ,openssl)
+                     ("pkg-config" ,pkg-config)
+                     ("python-lit" ,python-lit)
+                     ("zlib" ,zlib)))
     (home-page "https://github.com/rizsotto/Bear")
     (synopsis "Tool for generating a compilation database")
-    (description "A JSON compilation database is used in the Clang project to
+    (description
+     "A JSON compilation database is used in the Clang project to
 provide information on how a given compilation unit is processed.  With this,
 it is easy to re-run the compilation with alternate programs.  Bear is used to
 generate such a compilation database.")
@@ -232,40 +232,42 @@  (define-public bmake
     (license license:bsd-3)))
 
 (define-public gn
-  (let ((commit "1c4151ff5c1d6fbf7fa800b8d4bb34d3abc03a41")
-        (revision "2072"))            ;as returned by `git describe`, used below
+  (let ((commit "93cc2d3fa6bdcc7dc580e3382ea40e19feb7f004")
+        (revision "2271"))
+    ;; as returned by `git describe`, used below
     (package
       (name "gn")
       (version (git-version "0.0" revision commit))
       (home-page "https://gn.googlesource.com/gn")
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference (url home-page) (commit commit)))
-                (sha256
-                 (base32
-                  "02621c9nqpr4pwcapy31x36l5kbyd0vdgd0wdaxj5p8hrxk67d6b"))
-                (file-name (git-file-name name version))))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url home-page)
+               (commit commit)))
+         (sha256
+          (base32 "1mdnkl4crhgbgl3zz5pyrfw1b4vz643pbki88s52d35fgjyw74ag"))
+         (file-name (git-file-name name version))))
       (build-system gnu-build-system)
       (arguments
-       (list #:phases
-             #~(modify-phases %standard-phases
-                 (add-before 'configure 'set-build-environment
-                   (lambda _
-                     (setenv "CC" "gcc")
-                     (setenv "CXX" "g++")
-                     (setenv "CXXFLAGS" "-g -O2 -Wno-error=redundant-move")
-                     (setenv "AR" "ar")))
-                 (replace 'configure
-                   (lambda _
-                     (invoke "python" "build/gen.py"
-                             "--no-last-commit-position")))
-                 (add-after 'configure 'create-last-commit-position
-                   (lambda _
-                     ;; Mimic GenerateLastCommitPosition from gen.py.
-                     (call-with-output-file "out/last_commit_position.h"
-                       (lambda (port)
-                         (format port
-                                 "// Generated by Guix.
+       (list
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-before 'configure 'set-build-environment
+              (lambda _
+                (setenv "CC" "gcc")
+                (setenv "CXX" "g++")
+                (setenv "CXXFLAGS" "-g -O2 -Wno-error=redundant-move")
+                (setenv "AR" "ar")))
+            (replace 'configure
+              (lambda _
+                (invoke "python" "build/gen.py" "--no-last-commit-position")))
+            (add-after 'configure 'create-last-commit-position
+              (lambda _
+                ;; Mimic GenerateLastCommitPosition from gen.py.
+                (call-with-output-file "out/last_commit_position.h"
+                  (lambda (port)
+                    (format port "// Generated by Guix.
 
 #ifndef OUT_LAST_COMMIT_POSITION_H_
 #define OUT_LAST_COMMIT_POSITION_H_
@@ -275,25 +277,34 @@  (define-public gn
 
 #endif  // OUT_LAST_COMMIT_POSITION_H_
 "
-                                 #$revision #$revision
-                                 #$(string-take commit 12))))))
-                 (replace 'build
-                   (lambda _
-                     (invoke "ninja" "-C" "out" "gn"
-                             "-j" (number->string (parallel-job-count)))))
-                 (replace 'check
-                   (lambda* (#:key tests? #:allow-other-keys)
-                     (if tests?
-                         (begin
-                           (invoke "ninja" "-C" "out" "gn_unittests"
-                                   "-j" (number->string (parallel-job-count)))
-                           (invoke "./out/gn_unittests"))
-                         (format #t "test suite not run~%"))))
-                 (replace 'install
-                   (lambda _
-                     (install-file "out/gn" (string-append #$output "/bin")))))))
-      (native-inputs
-       (list ninja python-wrapper))
+                            #$revision
+                            #$revision
+                            #$(string-take commit 12))))))
+            (replace 'build
+              (lambda _
+                (invoke "ninja"
+                        "-C"
+                        "out"
+                        "gn"
+                        "-j"
+                        (number->string (parallel-job-count)))))
+            (replace 'check
+              (lambda* (#:key tests? #:allow-other-keys)
+                (if tests?
+                    (begin
+                      (invoke "ninja"
+                              "-C"
+                              "out"
+                              "gn_unittests"
+                              "-j"
+                              (number->string (parallel-job-count)))
+                      (invoke "./out/gn_unittests"))
+                    (format #t "test suite not run~%"))))
+            (replace 'install
+              (lambda _
+                (install-file "out/gn"
+                              (string-append #$output "/bin")))))))
+      (native-inputs (list ninja python-wrapper))
       (synopsis "Generate Ninja build files")
       (description
        "GN is a tool that collects information about a project from @file{.gn}
@@ -305,30 +316,34 @@  (define-public gn
 (define-public meson
   (package
     (name "meson")
-    (version "1.5.2")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/mesonbuild/meson/"
-                                  "releases/download/" version  "/meson-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "02wi62k9w7716xxdgrrx68q89vaq3ncnbpw5ms0g27npn2df0mgr"))))
+    (version "1.8.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/mesonbuild/meson/"
+                           "releases/download/"
+                           version
+                           "/meson-"
+                           version
+                           ".tar.gz"))
+       (sha256
+        (base32 "1gvs2mm6z2b4pgsv1d9gl7cm68gqvcr244nh5p63g8f01y8sl67i"))))
     (build-system python-build-system)
     (arguments
-     (list #:tests? #f                  ;disabled to avoid extra dependencies
-           #:phases
-           #~(modify-phases %standard-phases
-               ;; Meson calls the various executables in out/bin through the
-               ;; Python interpreter, so we cannot use the shell wrapper.
-               (replace 'wrap
-                 (lambda* (#:key inputs outputs #:allow-other-keys)
-                   (substitute* (search-input-file outputs "bin/meson")
-                     (("# EASY-INSTALL-ENTRY-SCRIPT")
-                      (format #f "\
-import sys
+     (list
+      #:tests? #f ;disabled to avoid extra dependencies
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; Meson calls the various executables in out/bin through the
+          ;; Python interpreter, so we cannot use the shell wrapper.
+          (replace 'wrap
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (substitute* (search-input-file outputs "bin/meson")
+                (("# EASY-INSTALL-ENTRY-SCRIPT")
+                 (format #f "import sys
 sys.path.insert(0, '~a')
-# EASY-INSTALL-ENTRY-SCRIPT" (site-packages inputs outputs)))))))))
+# EASY-INSTALL-ENTRY-SCRIPT"
+                         (site-packages inputs outputs)))))))))
     (inputs (list python ninja))
     (home-page "https://mesonbuild.com/")
     (synopsis "Build system designed to be fast and user-friendly")
@@ -341,113 +356,82 @@  (define-public meson
 resembles Python.")
     (license license:asl2.0)))
 
-(define-public meson-python
+(define-public muon
   (package
-    (name "meson-python")
-    (version "0.17.1")
-    (source (origin
-              (method url-fetch)
-              (uri (pypi-uri "meson_python" version))
-              (sha256
-               (base32
-                "10szxcqgki4zwkrwmsirdg68h03k9qmfswd4r5xyz7p1y9lizfgg"))))
-    (build-system pyproject-build-system)
+    (name "muon")
+    (version "0.5.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/muon-build/muon")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1w0vkishj7r3swzg4m1fl3hacs8mycwhsrr5vw8sy67y81cihqbd"))))
+    (build-system meson-build-system)
     (arguments
-     (list #:test-flags #~(list "tests"
-                                ;; The test_pep518 tries to install
-                                ;; dependencies from the network using pip.
-                                "-k" "not test_pep518")))
-    (propagated-inputs
-     (list meson
-           ninja
-           python-colorama
-           python-cython-3
-           python-pyproject-metadata
-           python-tomli
-           python-typing-extensions
-           python-wheel))
-    (native-inputs
-     (list ;; For tests.
-           git-minimal/pinned
-           patchelf
-           pkg-config
-           python-cython-3
-           python-gitpython
-           python-pytest
-           python-pytest-cov
-           python-pytest-mock))
-    (home-page "https://github.com/mesonbuild/meson-python")
-    (synopsis "Meson-based build backend for Python")
-    (description "Meson-python is a PEP 517 build backend for Meson projects.")
-    (license license:expat)))
-
-(define-public muon
-  ;; Use the latest commit, as there hasn't yet been a new release including
-  ;; recent changes (see: https://github.com/muon-build/muon/issues/146).
-  (let ((commit "55b7285a92779bd8b8870482e5535ce878f3e09f")
-        (revision "0"))
-    (package
-      (name "muon")
-      (version (git-version "0.4.0" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/muon-build/muon")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "0kpk1h82djb0brxkwy5ylpvdpp2l1489bq822dmryhmsd573ii48"))))
-      (build-system meson-build-system)
-      (arguments
-       (list #:meson (computed-file "null-package" #~(mkdir #$output))
-             #:ninja samu-as-ninja-wrapper
-             #:configure-flags #~(list "-Dsamurai=disabled")
-             #:tests? #f                  ;to avoid extra dependencies
-             #:phases
-             #~(modify-phases %standard-phases
-                 (add-after 'unpack 'patch-/bin/sh
-                   (lambda* (#:key inputs #:allow-other-keys)
-                     (substitute* "tools/generate_test_check_script.py"
-                       (("#!/bin/sh")
-                        (string-append "#!" (search-input-file inputs
-                                                               "bin/sh"))))))
-                 (add-after 'patch-source-shebangs 'build-muon-bootstrap
-                   (lambda _
-                     (setenv "CC" #$(cc-for-target))
-                     (setenv "CFLAGS" "-DBOOTSTRAP_NO_SAMU")
-                     (invoke "./bootstrap.sh" "build")))
-                 (add-after 'build-muon-bootstrap 'setup-muon-bootstrap-as-meson
-                   (lambda _
-                     (mkdir "bin")
-                     (symlink "../build/muon-bootstrap" "bin/meson")
-                     (setenv  "PATH" (string-append (getcwd) "/bin:"
-                                                    (getenv "PATH"))))))))
-      (native-inputs (list samurai))
-      (inputs (list bash-minimal pkgconf))
-      (native-search-paths (list $PKG_CONFIG_PATH))
-      (home-page "https://muon.build/")
-      (synopsis "Meson build system alternative implementation in C99")
-      (description "Muon is an implementation of the meson build system in c99
+     (list
+      #:meson (computed-file "null-package"
+                             #~(mkdir #$output))
+      #:ninja samu-as-ninja-wrapper
+      #:configure-flags
+      #~(list "-Dsamurai=disabled")
+      #:tests? #f ;to avoid extra dependencies
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-/bin/sh
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "tools/generate_test_check_script.py"
+                (("#!/bin/sh")
+                 (string-append "#!"
+                                (search-input-file inputs "bin/sh"))))))
+          (add-after 'patch-source-shebangs 'build-muon-bootstrap
+            (lambda _
+              (setenv "CC"
+                      #$(cc-for-target))
+              (setenv "CFLAGS" "-DBOOTSTRAP_NO_SAMU")
+              (invoke "./bootstrap.sh" "build")))
+          (add-after 'build-muon-bootstrap 'setup-muon-bootstrap-as-meson
+            (lambda _
+              (mkdir "bin")
+              (symlink "../build/muon-bootstrap" "bin/meson")
+              (setenv "PATH"
+                      (string-append (getcwd) "/bin:"
+                                     (getenv "PATH"))))))))
+    (native-inputs (list samurai))
+    (inputs (list bash-minimal pkgconf))
+    (native-search-paths
+     (list $PKG_CONFIG_PATH))
+    (home-page "https://muon.build/")
+    (synopsis "Meson build system alternative implementation in C99")
+    (description "Muon is an implementation of the meson build system in c99
 with minimal dependencies.")
-      (license license:gpl3))))            ;for the combined work
+    (license license:gpl3)))
 
 (define-public muon-as-meson-wrapper
   (package/inherit muon
     (name "muon-as-meson-wrapper")
     (build-system trivial-build-system)
-    (arguments
-     (list #:builder
-           (with-imported-modules '((guix build utils))
-             #~(begin
-                 (use-modules (guix build utils))
-                 (let ((bindir (string-append #$output "/bin"))
-                       (samu (string-append #$(this-package-input "muon")
-                                            "/bin/muon")))
-                   (mkdir-p bindir)
-                   (symlink samu (string-append bindir "/meson")))))))
+    (arguments (list #:builder (with-imported-modules '((guix build utils))
+                                                      #~(begin
+                                                          (use-modules (guix
+                                                                        build
+                                                                        utils))
+                                                          (let ((bindir (string-append #$output
+                                                                         "/bin"))
+                                                                (samu (string-append #$
+                                                                       (this-package-input
+                                                                        "muon")
+                                                                       "/bin/muon")))
+                                                            (mkdir-p bindir)
+                                                            (symlink samu
+                                                                     (string-append
+                                                                      bindir
+                                                                      "/meson")))))))
     (inputs (list muon))
-    (description "This package provides the @command{meson} command,
+    (description
+     "This package provides the @command{meson} command,
 implemented as a symbolic link to the @command{muon} command of @code{muon}
 package.")))
 
@@ -710,7 +694,7 @@  (define-public tup
 (define-public osc
   (package
     (name "osc")
-    (version "0.172.0")
+    (version "0.19.0")
     (source
      (origin
        (method git-fetch)
@@ -719,7 +703,7 @@  (define-public osc
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1sqdnkka3c6b6hwnrmlwrgy7w62cp8raq8mph9pgd2lydzzbvwlp"))))
+        (base32 "09an4c5gjc99a6bfy4ax5yyng14v7b4fknkdzwl0hn89q5990xab"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -772,30 +756,28 @@  (define-public compdb
 (define-public compiledb
   (package
     (name "compiledb")
-    (version "0.10.1")
+    (version "0.10.7")
     (source
-      (origin
-        (method url-fetch)
-        (uri (pypi-uri "compiledb" version))
-        (sha256
-          (base32 "0vlngsdxfakyl8b7rnvn8h3l216lhbrrydr04yhy6kd03zflgfq6"))))
-    (build-system python-build-system)
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "compiledb" version))
+       (sha256
+        (base32 "0wc2mzb3cpqkph9a6pfvpiri9dzn3g2cs8hsl5a7d5xn2242sxcp"))))
+    (build-system pyproject-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'no-compat-shim-dependency
-           ;; shutilwhich is only needed for python 3.3 and earlier
-           (lambda _
-             (substitute* "setup.py" (("^ *'shutilwhich'\n") ""))
-             (substitute* "compiledb/compiler.py" (("shutilwhich") "shutil")))))))
-    (propagated-inputs
-      (list python-bashlex python-click))
-    (native-inputs
-      (list python-pytest))
-    (home-page
-      "https://github.com/nickdiego/compiledb")
+     `(#:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'avoid-bin-echo
+                    ;; absolute path '/bin/echo' is used in tests.
+                    ;; changing that to 'echo'
+                    (lambda _
+                      (substitute* "tests/data/multiple_commands_oneline.txt"
+                        (("/bin/echo")
+                         (which "echo"))))))))
+    (propagated-inputs (list python-bashlex python-click))
+    (native-inputs (list python-setuptools python-wheel python-pytest))
+    (home-page "https://github.com/nickdiego/compiledb")
     (synopsis
-      "Generate Clang JSON Compilation Database files for make-based build systems")
+     "Generate Clang JSON Compilation Database files for make-based build systems")
     (description
      "@code{compiledb} provides a @code{make} python wrapper script which,
 besides executing the make build command, updates the JSON compilation
@@ -844,29 +826,31 @@  (define-public build
     (license license:gpl2+)))
 
 (define-public genie
-  (let ((commit "22cc907a4351db46c55f73e6aa901f1b2f0c52ad")
+  (let ((commit "bf3bf3f051a5f829e9f77d792c169ff866528f8d")
         (revision "0"))
     (package
       (name "genie")
-      (version (git-version "1170" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/bkaradzic/genie")
-                      (commit commit)))
-                (file-name (git-file-name name version))
-                (sha256
-                 (base32
-                  "1wxhbdnr52qa2xr1i83577mwr25fxr5vby4r7m5brp9z5a08fwry"))))
+      (version (git-version "1190" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/bkaradzic/genie")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "18vdlcfbhynbp6h7g98hdy6gmwrgzyv3nl3dbx70kkf8ph4r2xk2"))))
       (build-system gnu-build-system)
       (arguments
-       (list #:phases #~(modify-phases %standard-phases
-                          (delete 'configure)
-                          (replace 'install
-                            (lambda _
-                              (install-file "bin/linux/genie"
-                                            (string-append #$output "/bin")))))
-             #:tests? #f)) ;no tests
+       (list
+        #:phases
+        #~(modify-phases %standard-phases
+            (delete 'configure)
+            (replace 'install
+              (lambda _
+                (install-file "bin/linux/genie"
+                              (string-append #$output "/bin")))))
+        #:tests? #f)) ;no tests
       (home-page "https://github.com/bkaradzic/genie")
       (synopsis "Project generator")
       (description
@@ -1093,16 +1077,16 @@  (define-public gnulib
 (define-public pdpmake
   (package
     (name "pdpmake")
-    (version "1.4.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/rmyorston/pdpmake")
-                    (commit version)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "0fjx5imd7s0h0yy8h2qc4vkdq7kxqcljnrw6h8n88720xha5z3cb"))))
+    (version "2.0.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rmyorston/pdpmake")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1aka7iyrg97w9bayj7pp3cbx3fg3awmc1s4qhxj7zia8fcmzx6kr"))))
     (build-system gnu-build-system)
     (arguments
      (list
@@ -1110,8 +1094,10 @@  (define-public pdpmake
       #:parallel-tests? #f
       #:make-flags
       #~(list "DESTDIR=\"\""
-              (string-append "CC=" #$(cc-for-target))
-              (string-append "PREFIX=" #$output))
+              (string-append "CC="
+                             #$(cc-for-target))
+              (string-append "PREFIX="
+                             #$output))
       #:phases
       #~(modify-phases %standard-phases
           (delete 'configure))))
diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm
index 608080954f..d1e36477cb 100644
--- a/gnu/packages/cmake.scm
+++ b/gnu/packages/cmake.scm
@@ -425,22 +425,22 @@  (define-public cmake
 (define-public cmake-next
   (package
     (inherit cmake)
-    (version "4.0.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://cmake.org/files/v"
-                                  (version-major+minor version)
-                                  "/cmake-" version ".tar.gz"))
-              (sha256
-               (base32
-                "1q9119wg68vz3ki4g3yw3dkb90zpbr13vy2raar21rb31vhafc6n"))))
-    (native-inputs
-     (modify-inputs (package-native-inputs cmake)
-       ;; Avoid circular dependency with (gnu packages debug).  Note: cppdap
-       ;; is built with cmake, so when the default cmake is updated to this
-       ;; version this circular dependency will need to be worked around.
-       (prepend (module-ref (resolve-interface '(gnu packages debug))
-                            'cppdap))))))
+    (version "4.0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://cmake.org/files/v"
+                           (version-major+minor version) "/cmake-" version
+                           ".tar.gz"))
+       (sha256
+        (base32 "1yrzkwkr2nxl8hcjkk333l9ycbw9prkg363k4km609kknyvkfdcd"))))
+    (native-inputs (modify-inputs (package-native-inputs cmake)
+                     ;; Avoid circular dependency with (gnu packages debug).  Note: cppdap
+                     ;; is built with cmake, so when the default cmake is updated to this
+                     ;; version this circular dependency will need to be worked around.
+                     (prepend (module-ref (resolve-interface '(gnu packages
+                                                                   debug))
+                                          'cppdap))))))
 
 (define-public cmake-minimal-3.30
   (package
@@ -635,7 +635,7 @@  (define-public tinycmmc
 (define-public cpm-cmake
   (package
     (name "cpm-cmake")
-    (version "0.38.6")
+    (version "0.42.0")
     (source
      (origin
        (method git-fetch)
@@ -644,11 +644,12 @@  (define-public cpm-cmake
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1qbbhdq6cz2y7qfyy1k11i98d13s229r3phd5y3n5maq51ky8bgb"))))
+        (base32 "0c28y8n1n6li5x73lfyb2vyd147d3lnc3iqbzay3ls8msqpz9983"))))
     (build-system copy-build-system)
     (arguments
      (list
-      #:install-plan #~'(("cmake/CPM.cmake" "lib/cmake/CPM.cmake"))))
+      #:install-plan
+      #~'(("cmake/CPM.cmake" "lib/cmake/CPM.cmake"))))
     (home-page "https://github.com/cpm-cmake/CPM.cmake")
     (synopsis "Package manager for CMake")
     (description "CPM.cmake is a cross-platform CMake script that adds
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index 1bc64735b7..54fadaddd6 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -2053,7 +2053,7 @@  (define-public beancount-3
     (version "3.1.0")
     (source
      (origin
-       (method git-fetch) ; Pypi archive doesn't contain the test suite.
+       (method git-fetch) ;Pypi archive doesn't contain the test suite.
        (uri (git-reference
              (url "https://github.com/beancount/beancount")
              (commit version)))
@@ -2069,25 +2069,23 @@  (define-public beancount-3
       #:test-flags
       #~(list
          ;; run tests against the built library
-         "--pyargs" "beancount"
+         "--pyargs"
+         "beancount"
          ;; disable tests supposed to run from the source repo
-         "-k" "not test_export_basic and not test_example_files")))
+         "-k"
+         "not test_export_basic and not test_example_files")))
     (build-system pyproject-build-system)
-    (native-inputs
-     (list bison
-           flex
-           gnupg
-           meson
-           ninja
-           python-meson-python
-           python-pytest
-           python-setuptools
-           python-wheel))
-    (propagated-inputs
-     (list python-bottle
-           python-click
-           python-dateutil
-           python-regex))
+    (native-inputs (list bison
+                         flex
+                         gnupg
+                         meson
+                         ninja
+                         meson-python
+                         python-pytest
+                         python-setuptools
+                         python-wheel))
+    (propagated-inputs (list python-bottle python-click python-dateutil
+                             python-regex))
     (home-page "https://beancount.github.io/")
     (synopsis "Command-line double-entry accounting tool")
     (description
diff --git a/gnu/packages/ninja.scm b/gnu/packages/ninja.scm
index 398c4be10f..ece1917181 100644
--- a/gnu/packages/ninja.scm
+++ b/gnu/packages/ninja.scm
@@ -36,42 +36,55 @@  (define-module (gnu packages ninja)
 (define-public ninja
   (package
     (name "ninja")
-    (version "1.11.1")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/ninja-build/ninja")
-                    (commit (string-append "v" version))))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "14kshkxdn833nkz2qkzb3w531dcqj6haad90gxj70ic05lb7zx9f"))))
+    (version "1.13.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ninja-build/ninja")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0vil4mz0h1z39d2airzdi8cia8xhn3n5p94pv4sd3mqk0pkha40s"))))
     (build-system gnu-build-system)
-    (inputs (list python-wrapper))
+    (inputs (list python-wrapper
+                  (origin
+                    (method git-fetch)
+                    (uri (git-reference (url
+                                         "https://github.com/google/googletest")
+                                        (commit "v1.17.0")))
+                    (file-name (string-append "gtest-source-for-ninja-"
+                                              version))
+                    (sha256 (base32
+                             "1zn701fgmbk29y45p49sajaswm01i2bv89ds2kkbiq8i0p2cr08w")))))
     (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (replace 'configure
-           (lambda _
-             (substitute* "src/subprocess-posix.cc"
-               (("/bin/sh") (which "sh")))
-             (substitute* "src/subprocess_test.cc"
-               (("/bin/echo") (which "echo")))))
-         (replace 'build
-           (lambda _
-             (invoke "./configure.py" "--bootstrap")))
-         (replace 'check
-           (lambda _
-             (invoke "./configure.py")
-             (invoke "./ninja" "ninja_test")
-             (invoke "./ninja_test")))
-         (replace 'install
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin"))
-                    (doc (string-append out "/share/doc/ninja")))
-               (install-file "ninja" bin)
-               (install-file "doc/manual.asciidoc" doc)))))))
+     '(#:phases (modify-phases %standard-phases
+                  (replace 'configure
+                    (lambda _
+                      (setenv "CXXFLAGS" "-std=gnu++17")
+                      (substitute* "src/subprocess-posix.cc"
+                        (("/bin/sh")
+                         (which "sh")))
+                      (substitute* "src/subprocess_test.cc"
+                        (("/bin/echo")
+                         (which "echo")))))
+                  (replace 'build
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      (invoke "./configure.py" "--bootstrap"
+                              (string-append "--gtest-source-dir="
+                                             (search-input-directory inputs
+                                              "googletest") "/.."))))
+                  (replace 'check
+                    (lambda _
+                      (invoke "./ninja" "ninja_test")
+                      (invoke "./ninja_test")))
+                  (replace 'install
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (let* ((out (assoc-ref outputs "out"))
+                             (bin (string-append out "/bin"))
+                             (doc (string-append out "/share/doc/ninja")))
+                        (install-file "ninja" bin)
+                        (install-file "doc/manual.asciidoc" doc)))))))
     (home-page "https://ninja-build.org/")
     (synopsis "Small build system")
     (description
diff --git a/gnu/packages/python-build.scm b/gnu/packages/python-build.scm
index 8e189c05dc..deda45d33e 100644
--- a/gnu/packages/python-build.scm
+++ b/gnu/packages/python-build.scm
@@ -911,4 +911,3 @@  (define-public python-pdm-backend
      "PDM-Backend is a build backend that supports the latest packaging
 standards, which includes PEP 517, PEP 621 and PEP 660.")
     (license license:expat)))
-
diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm
index b71f693538..3c7952ee92 100644
--- a/gnu/packages/python-science.scm
+++ b/gnu/packages/python-science.scm
@@ -2822,7 +2822,7 @@  (define-public python-scikit-misc
     (native-inputs (list gfortran
                          pkg-config
                          python-cython-3
-                         python-meson-python
+                         meson-python
                          python-numpy
                          python-pytest
                          python-pytest-cov
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index ce7ef03d47..625b1b7980 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -13053,7 +13053,7 @@  (define-public python-pywavelets
            ninja
            pkg-config
            python-cython-3
-           python-meson-python
+           meson-python
            python-numpy
            python-pytest))
     (propagated-inputs
@@ -16381,17 +16381,16 @@  (define-public python-pep517
 (define-public python-pyproject-metadata
   (package
     (name "python-pyproject-metadata")
-    (version "0.7.1")
+    (version "0.9.1")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/FFY00/python-pyproject-metadata")
+             (url "https://github.com/pypa/python-pyproject-metadata")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0yvs59ymz5gdix34a95wxlxvk9bnvjgrzsnmnc3ws7whpfv3yasm"))))
+        (base32 "14vwnzzpyq0raqq26vw8s4k27dcyicxpb2wkg4xxwjp2cixgshzm"))))
     (build-system pyproject-build-system)
     (arguments
      (list
@@ -16400,11 +16399,16 @@  (define-public python-pyproject-metadata
       ;; tests' regular expressions no longer match.
       '(list "--ignore=tests/test_standard_metadata.py")))
     (propagated-inputs (list python-packaging))
-    (native-inputs (list python-pypa-build python-pytest python-setuptools
-                         python-tomli python-wheel))
-    (home-page "https://github.com/FFY00/python-pyproject-metadata")
+    (native-inputs (list python-pypa-build
+                         python-pytest
+                         python-setuptools
+                         python-tomli
+                         python-wheel
+                         python-flit-core))
+    (home-page "https://github.com/pypa/python-pyproject-metadata")
     (synopsis "Dataclass for PEP 621 metadata")
-    (description "This project does not implement the parsing of
+    (description
+     "This project does not implement the parsing of
 @file{pyproject.toml} containing PEP 621 metadata.  Instead, given a Python
 data structure representing PEP 621 metadata (already parsed), it will
 validate this input and generate a PEP 643-compliant metadata
@@ -16415,24 +16419,6 @@  (define-public python-pyproject-metadata
 (define-public python-pep621
   (deprecated-package "python-pep621" python-pyproject-metadata))
 
-(define-public python-meson-python
-  (package
-    (name "python-meson-python")
-    (version "0.15.0")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (pypi-uri "meson_python" version))
-       (sha256
-        (base32 "0vyjhjabvm41hqijifk33idbdl62i76kfyf884f9rs29rpp77nzx"))))
-    (build-system meson-build-system)
-    (propagated-inputs (list python-pyproject-metadata python-tomli))
-    (home-page "https://github.com/mesonbuild/meson-python")
-    (synopsis "Meson Python build backend (PEP 517)")
-    (description "This package provides a PEP 517 build backend that makes
-use of the Meson build system.")
-    (license license:expat)))
-
 (define-public python-mccabe
   (package
     (name "python-mccabe")
@@ -31737,7 +31723,7 @@  (define-public python-dbus-python
                 (("(ninja|patchelf)") "")))))))
     (native-inputs
      (list pkg-config
-           python-meson-python
+           meson-python
            meson
            ninja
            patchelf
@@ -40168,6 +40154,27 @@  (define-public pythoncapi-compat
 base, via the @file{pythoncapi_compat.h} header file.")
       (license license:bsd-0))))
 
+(define-public meson-python
+  (package
+    (name "meson-python")
+    (version "0.18.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "meson_python" version))
+       (sha256
+        (base32 "13c44f765h89hwidn53c20a4nvmg441rcipyc83a8sgnkpn9jsn5"))))
+    (build-system meson-build-system)
+    (propagated-inputs (list python-pyproject-metadata python-tomli))
+    (home-page "https://github.com/mesonbuild/meson-python")
+    (synopsis "Meson Python build backend (PEP 517)")
+    (description "This package provides a PEP 517 build backend that makes
+use of the Meson build system.")
+    (license license:expat)))
+
+(define-public python-meson-python
+  (deprecated-package "python-meson-python" meson-python))
+
 ;;;
 ;;; Avoid adding new packages to the end of this file. To reduce the chances
 ;;; of a merge conflict, place them above by existing packages with similar
-- 
2.50.1