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))