guix_mirror_bot pushed a commit to branch python-team
in repository guix.

commit 38f999ff81f4c7d44e420362eaa16c2b72f3ec3e
Author: Efraim Flashner <[email protected]>
AuthorDate: Thu Sep 11 14:55:49 2025 +0300

    build-system: cargo: Migrate to (json).
    
    Fixes guix/guix#2620.
    
    * guix/build-system/cargo.scm (%cargo-build-system-modules): Remove
    (guix build json).
    (cargo-guile-json): New procedure.
    (cargo-build, cargo-cross-build): Add guile-json extension.
    * guix/build/cargo-build-system.scm (manifest-targets): Adjust to using
    (json).
    
    Change-Id: I832a5555e63520241d3a4c4ccd2dcf860573dbab
    
    Change-Id: I545f72b00f17e88ad19fe33870785367cac63ac4
    Signed-off-by: Sharlatan Hellseher <[email protected]>
---
 guix/build-system/cargo.scm       | 16 ++++++++++++----
 guix/build/cargo-build-system.scm |  4 ++--
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/guix/build-system/cargo.scm b/guix/build-system/cargo.scm
index e37da8d873..42bd495c30 100644
--- a/guix/build-system/cargo.scm
+++ b/guix/build-system/cargo.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2016 David Craven <[email protected]>
 ;;; Copyright © 2019 Ivan Petkov <[email protected]>
 ;;; Copyright © 2020 Jakub Kądziołka <[email protected]>
-;;; Copyright © 2021, 2024 Efraim Flashner <[email protected]>
+;;; Copyright © 2021, 2024, 2025 Efraim Flashner <[email protected]>
 ;;; Copyright © 2024 Herman Rimm <[email protected]>
 ;;; Copyright © 2024 Maxim Cournoyer <[email protected]>
 ;;;
@@ -44,6 +44,7 @@
   #:export (%cargo-build-system-modules
             %cargo-utils-modules
             cargo-build-system
+            cargo-guile-json
             %crate-base-url
             crate-url
             crate-url?
@@ -117,6 +118,10 @@ unavailable."
   (let ((module (resolve-interface '(gnu packages rust))))
     (module-ref module 'make-rust-sysroot)))
 
+(define (cargo-guile-json)
+  "Return the default guile-json package, resolved lazily."
+  (@* (gnu packages guile) guile-json-4))
+
 (define* (cargo-triplet #:optional
                         (target (or (%current-target-system)
                                     (%current-system))))
@@ -132,7 +137,6 @@ unavailable."
 (define %cargo-build-system-modules
   ;; Build-side modules imported by default.
   `((guix build cargo-build-system)
-    (guix build json)
     ,@%cargo-utils-modules))
 
 (define* (cargo-build name inputs
@@ -156,12 +160,14 @@ unavailable."
                       (search-paths '())
                       (system (%current-system))
                       (guile #f)
+                      (guile-json (cargo-guile-json))
                       (imported-modules %cargo-build-system-modules)
                       (modules '((guix build cargo-build-system)
                                  (guix build utils))))
   "Build SOURCE using CARGO, and with INPUTS."
 
   (define builder
+   (with-extensions (list guile-json)
     (with-imported-modules imported-modules
       #~(begin
           (use-modules #$@(sexp->gexp modules))
@@ -190,7 +196,7 @@ unavailable."
                        #:inputs #$(input-tuples->gexp inputs)
                        #:search-paths '#$(sexp->gexp
                                           (map search-path-specification->sexp
-                                               search-paths))))))
+                                               search-paths)))))))
 
   (gexp->derivation name builder
                     #:system system
@@ -222,12 +228,14 @@ unavailable."
                             (native-search-paths '())
                             (system (%current-system))
                             (guile #f)
+                            (guile-json (default-guile-json))
                             (imported-modules %cargo-build-system-modules)
                             (modules '((guix build cargo-build-system)
                                        (guix build utils))))
   "Cross-build SOURCE using CARGO, and with INPUTS."
 
   (define builder
+   (with-extensions (list guile-json)
     (with-imported-modules imported-modules
       #~(begin
           (use-modules #$@(sexp->gexp modules))
@@ -263,7 +271,7 @@ unavailable."
                                                search-paths))
                        #:native-search-paths '#$(sexp->gexp
                                           (map search-path-specification->sexp
-                                               native-search-paths))))))
+                                               native-search-paths)))))))
 
   (gexp->derivation name builder
                     #:system system
diff --git a/guix/build/cargo-build-system.scm 
b/guix/build/cargo-build-system.scm
index 2c321ec212..1c0531b41f 100644
--- a/guix/build/cargo-build-system.scm
+++ b/guix/build/cargo-build-system.scm
@@ -25,7 +25,6 @@
 
 (define-module (guix build cargo-build-system)
   #:use-module ((guix build gnu-build-system) #:prefix gnu:)
-  #:use-module (guix build json)
   #:use-module ((guix build utils) #:hide (delete))
   #:use-module (ice-9 binary-ports)
   #:use-module (ice-9 popen)
@@ -38,6 +37,7 @@
   #:use-module (ice-9 threads)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
+  #:use-module (json)
   #:export (%standard-phases
             cargo-build))
 
@@ -50,7 +50,7 @@
 (define (manifest-targets)
   "Extract all targets from the Cargo.toml manifest"
   (let* ((port (open-input-pipe "cargo read-manifest"))
-         (data (read-json port))
+         (data (json->scm port))
          (targets (or (assoc-ref data "targets") '())))
     (close-port port)
     targets))

Reply via email to