oom pushed a commit to branch c++-team
in repository guix.

commit f8e202ca6a78681bc447d547ee98232f18e1ba34
Author: Greg Hogan <c...@greghogan.com>
AuthorDate: Wed Apr 2 16:29:24 2025 +0000

    gnu: ninja: Update to 1.12.1.
    
    * gnu/packages/ninja (ninja): Rename to ...
    (ninja-pinned): ... this and update to 1.12.1.
    [arguments]<#:tests?>: Disable.
    [inputs]: Add re2c.
    (ninja): Inherit from ninja/pinned.
    * guix/build-system/cmake.scm, guix/build-system/meson.scm,
    guix/build-system/qt.scm (default-ninja): Use ninja/pinned.
    * gnu/packages/build-tools.scm (meson)[inputs],
    (meson-python)[propagated-inputs]: Replace ninja with ninja/pinned.
    * gnu/packages/python-xyz.scm (python-dbus-python, python-scikit-build)
    [native-inputs]: Replace ninja with ninja/pinned.
    
    Change-Id: I1b0291a37e83280ed66fd8042df962ada6d475be
---
 gnu/packages/build-tools.scm |   4 +-
 gnu/packages/ninja.scm       | 103 ++++++++++++++++++++++++-------------------
 gnu/packages/python-xyz.scm  |   4 +-
 guix/build-system/cmake.scm  |  16 ++++---
 guix/build-system/meson.scm  |   2 +-
 guix/build-system/qt.scm     |  15 ++-----
 6 files changed, 77 insertions(+), 67 deletions(-)

diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm
index 1335989bb2..c13b9928e6 100644
--- a/gnu/packages/build-tools.scm
+++ b/gnu/packages/build-tools.scm
@@ -322,7 +322,7 @@ files and generates build instructions for the Ninja build 
system.")
 import sys
 sys.path.insert(0, '~a')
 # EASY-INSTALL-ENTRY-SCRIPT" (site-packages inputs outputs)))))))))
-    (inputs (list python ninja))
+    (inputs (list python ninja/pinned))
     (home-page "https://mesonbuild.com/";)
     (synopsis "Build system designed to be fast and user-friendly")
     (description
@@ -352,7 +352,7 @@ resembles Python.")
                                 "-k" "not test_pep518")))
     (propagated-inputs
      (list meson
-           ninja
+           ninja/pinned
            python-colorama
            python-cython-3
            python-pyproject-metadata
diff --git a/gnu/packages/ninja.scm b/gnu/packages/ninja.scm
index 42c9309b82..e20b3510c2 100644
--- a/gnu/packages/ninja.scm
+++ b/gnu/packages/ninja.scm
@@ -23,55 +23,68 @@
 (define-module (gnu packages ninja)
   #:use-module ((guix licenses) #:select (asl2.0))
   #:use-module (guix packages)
+  #:use-module (guix utils)
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system cmake)
   #:use-module (gnu packages)
-  #:use-module (gnu packages python))
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages re2c)
+  #:use-module (srfi srfi-1))
 
-(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"))))
-    (build-system gnu-build-system)
-    (inputs (list python-wrapper))
-    (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)))))))
-    (home-page "https://ninja-build.org/";)
-    (synopsis "Small build system")
-    (description
-     "Ninja is a small build system with a focus on speed.  It differs from
+(define-public ninja/pinned
+  (hidden-package
+   (package
+     (name "ninja")
+     (version "1.12.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
+                 "00033jmh30z2vjxs40hjfnn74inlfwzn412l26wi2nzg63wnwgj5"))))
+     (build-system gnu-build-system)
+     (inputs (list python-wrapper re2c))
+     (arguments
+      '(; Tests now require googletest, which is a circular dependency.
+        #:tests? #f
+        #: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* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (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)))))))
+     (home-page "https://ninja-build.org/";)
+     (synopsis "Small build system")
+     (description
+      "Ninja is a small build system with a focus on speed.  It differs from
 other build systems in two major respects: it is designed to have its input
 files generated by a higher-level build system, and it is designed to run
 builds as fast as possible.")
-    (license asl2.0)))
+     (license asl2.0))))
+
+(define-public ninja
+  (package/inherit ninja/pinned
+    (properties (alist-delete 'hidden? (package-properties ninja/pinned)))))
+
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 0fc26f3dcb..3146242861 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -31636,7 +31636,7 @@ for YAML and JSON.")
      (list pkg-config
            python-meson-python
            meson
-           ninja
+           ninja/pinned
            patchelf
            python-setuptools
            python-sphinx
@@ -35417,7 +35417,7 @@ and frame grabber interface.")
      (list cmake-minimal
            gfortran
            git-minimal/pinned           ;for tests
-           ninja
+           ninja/pinned
            python-coverage
            python-cython
            python-hatchling
diff --git a/guix/build-system/cmake.scm b/guix/build-system/cmake.scm
index 785dd17fe6..a453ee8868 100644
--- a/guix/build-system/cmake.scm
+++ b/guix/build-system/cmake.scm
@@ -31,7 +31,9 @@
   #:use-module (guix packages)
   #:export (%cmake-build-system-modules
             cmake-build
-            cmake-build-system))
+            cmake-build-system
+            default-cmake
+            default-ninja))
 
 ;; Commentary:
 ;;
@@ -64,10 +66,17 @@
                     'cmake-minimal-cross
                     'cmake-minimal))))
 
+(define (default-ninja)
+  "Return the default ninja package."
+  ;; Lazily resolve the binding to avoid a circular dependency.
+  (let ((module (resolve-interface '(gnu packages ninja))))
+    (module-ref module 'ninja/pinned)))
+
 (define* (lower name
                 #:key source inputs native-inputs outputs system target
                 (implicit-inputs? #t) (implicit-cross-inputs? #t)
                 (cmake (default-cmake target))
+                (ninja (default-ninja))
                 #:allow-other-keys
                 #:rest arguments)
   "Return a bag for NAME."
@@ -84,10 +93,7 @@
                           `(("source" ,source))
                           '())
                     ,@`(("cmake" ,cmake))
-                    ,@`(("ninja" ,(module-ref
-                                   (resolve-interface
-                                    '(gnu packages ninja))
-                                   'ninja)))
+                    ,@`(("ninja" ,ninja))
                     ,@native-inputs
                     ,@(if target '() inputs)
                     ,@(if (and target implicit-cross-inputs?)
diff --git a/guix/build-system/meson.scm b/guix/build-system/meson.scm
index 5eeeb59e65..612e148fb6 100644
--- a/guix/build-system/meson.scm
+++ b/guix/build-system/meson.scm
@@ -137,7 +137,7 @@ TRIPLET."
   "Return the default ninja package."
   ;; Lazily resolve the binding to avoid a circular dependency.
   (let ((module (resolve-interface '(gnu packages ninja))))
-    (module-ref module 'ninja)))
+    (module-ref module 'ninja/pinned)))
 
 (define (default-meson)
   "Return the default meson package."
diff --git a/guix/build-system/qt.scm b/guix/build-system/qt.scm
index ea1095a64c..85ae2f0047 100644
--- a/guix/build-system/qt.scm
+++ b/guix/build-system/qt.scm
@@ -61,13 +61,6 @@
     (guix build qt-utils)
     ,@%cmake-build-system-modules))
 
-(define (default-cmake)
-  "Return the default CMake package."
-
-  ;; Do not use `@' to avoid introducing circular dependencies.
-  (let ((module (resolve-interface '(gnu packages cmake))))
-    (module-ref module 'cmake-minimal)))
-
 (define (default-qtbase)
   "Return the default qtbase package."
 
@@ -79,7 +72,8 @@
 ;; the variables defined here.
 (define* (lower name
                 #:key source inputs native-inputs outputs system target
-                (cmake (default-cmake))
+                (cmake (default-cmake target))
+                (ninja (default-ninja))
                 (qtbase (default-qtbase))
                 #:allow-other-keys
                 #:rest arguments)
@@ -96,10 +90,7 @@
                           `(("source" ,source))
                           '())
                     ,@`(("cmake" ,cmake))
-                    ,@`(("ninja" ,(module-ref
-                                   (resolve-interface
-                                    '(gnu packages ninja))
-                                   'ninja)))
+                    ,@`(("ninja" ,ninja))
                     ,@`(("qtbase" ,qtbase))
                     ,@native-inputs
                     ,@(if target

Reply via email to