From edbdf48a5ab55845c28370142fad3d3fff248ad3 Mon Sep 17 00:00:00 2001 From: Puck Meerburg Date: Wed, 12 Nov 2025 11:14:31 +0000 Subject: [PATCH] (zilch lang rust): call yj inside nix Change-Id: I3bc75045534ef524ca2a8a2df290e2876a6a6964 --- lang/rust/default.nix | 1 - lang/rust/src/cargo.sld | 19 ++++++++++--------- lang/rust/src/registry.sld | 21 ++++++++++----------- 3 files changed, 20 insertions(+), 21 deletions(-) diff --git a/lang/rust/default.nix b/lang/rust/default.nix index ca143eb..3e157f2 100644 --- a/lang/rust/default.nix +++ b/lang/rust/default.nix @@ -15,7 +15,6 @@ xxd ]; - overrides.NIX_CFLAGS_COMPILE = "-DYJ_PATH=\"${yj}/bin/yj\""; overrides.preBuild = '' (cat ${./helpers/src/bin/buildscript-runner.rs}; printf '\0') | xxd -i -n runner_source > runner_source.h (cat ${./helpers/src/bin/rustc-wrapper.rs}; printf '\0') | xxd -i -n rustc_wrap_source > rustc_wrap_source.h diff --git a/lang/rust/src/cargo.sld b/lang/rust/src/cargo.sld index 755d7ae..bf36d3a 100644 --- a/lang/rust/src/cargo.sld +++ b/lang/rust/src/cargo.sld @@ -45,17 +45,18 @@ (begin (define linker (delay (let ((v (cdr (assoc "out" (nixpkgs "gcc"))))) #~,(string-append #$v "/bin/cc")))) - (define yj-path (foreign-value "YJ_PATH" nonnull-c-string)) - ;; Shell out to a TOML-to-JSON parser. This will be replaced with a Nix-native solution later(tm). + (define yj (delay (let ((v (cdr (assoc "out" (nixpkgs "yj"))))) #~,(string-append #$v "/bin/yj")))) (define (parse-toml toml-to-parse) - (define-values (read-port write-port pid) (process yj-path '("yj" "-tj"))) - (write-string toml-to-parse write-port) - (close-output-port write-port) - (define parsed (json-read read-port)) - (close-input-port read-port) - ; (define-values (_ _ _) (process-wait pid)) - parsed) + (define store-path + (cdar + (store-path-for-ca-drv* + "parse-toml" "x86_64-linux" + '("/bin/sh" "-c" "$yj -tj < $in > $out") + `(("in" . ,(zfile toml-to-parse)) + ("yj" . ,(force yj))) + '("out")))) + (call-with-port (store-path-open store-path) json-read)) ;; A single target for a crate. ;; diff --git a/lang/rust/src/registry.sld b/lang/rust/src/registry.sld index b8cdd1a..2578cda 100644 --- a/lang/rust/src/registry.sld +++ b/lang/rust/src/registry.sld @@ -18,18 +18,17 @@ lockfile-entry-checksum lockfile-entry-dependencies) (begin - (define yj-path (foreign-value "YJ_PATH" nonnull-c-string)) - - ;; Shell out to a TOML-to-JSON parser. This will be replaced with a Nix-native solution later(tm). + (define yj (delay (let ((v (cdr (assoc "out" (nixpkgs "yj"))))) #~,(string-append #$v "/bin/yj")))) (define (parse-toml toml-to-parse) - (define-values (read-port write-port pid) (process yj-path '("yj" "-tj"))) - (write-string toml-to-parse write-port) - (close-output-port write-port) - (define parsed (json-read read-port)) - (close-input-port read-port) - ; (define-values (_ _ _) (process-wait pid)) - parsed) - + (define store-path + (cdar + (store-path-for-ca-drv* + "parse-toml" "x86_64-linux" + '("/bin/sh" "-c" "$yj -tj < $in > $out") + `(("in" . ,(zfile toml-to-parse)) + ("yj" . ,(force yj))) + '("out")))) + (call-with-port (store-path-open store-path) json-read)) ;; The contents of a single lockfile entry. ;;