From c3d1c4f39003f437ecc82361d95ded9f9ba198b4 Mon Sep 17 00:00:00 2001 From: Yaroslav Bolyukin Date: Tue, 28 May 2024 10:28:22 +0000 Subject: [PATCH] ci: bindings launch helper --- --- a/Cargo.lock +++ b/Cargo.lock @@ -507,9 +507,9 @@ [[package]] name = "jrsonnet-gcmodule" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c11fb98940a7f8b419619e98ccbf2e094671a5fdd0e277f05acd373071186d57" +checksum = "47975473b24b4503acee0d449fd5eda04ae18828f9811828a6cc99abbbbc38c8" dependencies = [ "jrsonnet-gcmodule-derive", "parking_lot", @@ -517,13 +517,13 @@ [[package]] name = "jrsonnet-gcmodule-derive" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bee774b7ba86fc86ee84482cd6732aa860ae3559f9827c65efd75c51e66ac76" +checksum = "4782d1d76731f5e5bb4bdeff26ed3350f21d662f178ce6dee7b4da810e7a8f72" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.64", ] [[package]] @@ -635,6 +635,7 @@ dependencies = [ "jrsonnet-evaluator", "jrsonnet-gcmodule", + "jrsonnet-interner", "jrsonnet-parser", "jrsonnet-stdlib", ] @@ -780,9 +781,9 @@ [[package]] name = "parking_lot" -version = "0.12.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core", --- a/xtask/src/main.rs +++ b/xtask/src/main.rs @@ -26,6 +26,11 @@ #[arg(long)] fix: bool, }, + TestCBindings { + #[arg(long, default_value = "x86_64-unknown-linux-gnu")] + target: String, + args: Vec, + }, } fn main() -> Result<()> { @@ -73,5 +78,26 @@ cmd!(sh, "cargo fmt {fmt_check...}").run()?; Ok(()) } + Opts::TestCBindings { target, args } => { + cmd!( + sh, + "cargo build -p libjsonnet --target={target} --release --no-default-features --features=interop-common,interop-threading" + ) + .run()?; + let built = format!("./target/{target}/release/libjsonnet.a"); + let c_bindings = "./bindings/c/"; + let test_file = "libjsonnet_test_file"; + cmd!(sh, "cp {built} {c_bindings}").run()?; + sh.change_dir(c_bindings); + + // TODO: Pass target to gcc? + cmd!(sh, "gcc -c {test_file}.c").run()?; + cmd!(sh, "gcc -o {test_file} -lc -lm {test_file}.o libjsonnet.a").run()?; + let sh = Shell::new()?; + + cmd!(sh, "{c_bindings}{test_file} {args...}").run()?; + + Ok(()) + } } } -- gitstuff