(zilch lang rust): call yj inside nix

Change-Id: I3bc75045534ef524ca2a8a2df290e2876a6a6964
This commit is contained in:
puck 2025-11-12 11:14:31 +00:00
parent d97a24bf1a
commit edbdf48a5a
3 changed files with 20 additions and 21 deletions

View file

@ -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.
;;

View file

@ -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.
;;