difftreelog
ci bindings launch helper
in: master
2 files changed
Cargo.lockdiffbeforeafterboth507507508[[package]]508[[package]]509name = "jrsonnet-gcmodule"509name = "jrsonnet-gcmodule"510version = "0.3.6"510version = "0.3.7"511source = "registry+https://github.com/rust-lang/crates.io-index"511source = "registry+https://github.com/rust-lang/crates.io-index"512checksum = "c11fb98940a7f8b419619e98ccbf2e094671a5fdd0e277f05acd373071186d57"512checksum = "47975473b24b4503acee0d449fd5eda04ae18828f9811828a6cc99abbbbc38c8"513dependencies = [513dependencies = [514 "jrsonnet-gcmodule-derive",514 "jrsonnet-gcmodule-derive",515 "parking_lot",515 "parking_lot",516]516]517517518[[package]]518[[package]]519name = "jrsonnet-gcmodule-derive"519name = "jrsonnet-gcmodule-derive"520version = "0.3.6"520version = "0.3.7"521source = "registry+https://github.com/rust-lang/crates.io-index"521source = "registry+https://github.com/rust-lang/crates.io-index"522checksum = "6bee774b7ba86fc86ee84482cd6732aa860ae3559f9827c65efd75c51e66ac76"522checksum = "4782d1d76731f5e5bb4bdeff26ed3350f21d662f178ce6dee7b4da810e7a8f72"523dependencies = [523dependencies = [524 "proc-macro2",524 "proc-macro2",525 "quote",525 "quote",526 "syn 1.0.109",526 "syn 2.0.64",527]527]528528529[[package]]529[[package]]635dependencies = [635dependencies = [636 "jrsonnet-evaluator",636 "jrsonnet-evaluator",637 "jrsonnet-gcmodule",637 "jrsonnet-gcmodule",638 "jrsonnet-interner",638 "jrsonnet-parser",639 "jrsonnet-parser",639 "jrsonnet-stdlib",640 "jrsonnet-stdlib",640]641]780781781[[package]]782[[package]]782name = "parking_lot"783name = "parking_lot"783version = "0.12.2"784version = "0.12.3"784source = "registry+https://github.com/rust-lang/crates.io-index"785source = "registry+https://github.com/rust-lang/crates.io-index"785checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb"786checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"786dependencies = [787dependencies = [787 "lock_api",788 "lock_api",788 "parking_lot_core",789 "parking_lot_core",xtask/src/main.rsdiffbeforeafterboth--- 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<String>,
+ },
}
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(())
+ }
}
}