mirror of
https://github.com/tlsnotary/tlsn-js.git
synced 2026-01-09 20:47:55 -05:00
WIP ci: experiment with clang check
This commit is contained in:
@@ -77,9 +77,16 @@ console_error_panic_hook = {version = "0.1.7"}
|
||||
|
||||
[dev-dependencies]
|
||||
wasm-bindgen-test = "0.3.34"
|
||||
rstest = "0.18.2"
|
||||
|
||||
[profile.release]
|
||||
# Tell `rustc` to optimize for small code size.
|
||||
|
||||
[package.metadata.wasm-pack.profile.release]
|
||||
wasm-opt = false
|
||||
|
||||
[build-dependencies]
|
||||
regex = "1.10.2"
|
||||
|
||||
[package.metadata.build-script]
|
||||
name = "build.rs"
|
||||
|
||||
58
wasm/prover/build.rs
Normal file
58
wasm/prover/build.rs
Normal file
@@ -0,0 +1,58 @@
|
||||
use regex::Regex;
|
||||
use std::{error::Error, process::Command};
|
||||
|
||||
fn main() {
|
||||
let raw_output = Command::new("clang")
|
||||
.arg("--version")
|
||||
.output()
|
||||
.expect("Could not verify clang version. Is clang installed?") //TODO add url here
|
||||
.stdout;
|
||||
let clang_version_str = std::str::from_utf8(&raw_output)
|
||||
.expect("Could not verify clang version. Is clang installed?");
|
||||
let clang_version = get_major_version(clang_version_str)
|
||||
.expect(format!("Could not verify clang version. {:?}?", &clang_version_str).as_str());
|
||||
|
||||
if clang_version < 16 {
|
||||
panic!("Please install clang version 16.0 or newer.");
|
||||
}
|
||||
}
|
||||
|
||||
fn get_major_version(clang_raw_version_output: &str) -> Result<u32, Box<dyn Error>> {
|
||||
let version_pattern = r#"version (\d+(\.\d+)+)"#;
|
||||
let re = Regex::new(version_pattern).unwrap();
|
||||
|
||||
if let Some(captures) = re.captures(clang_raw_version_output) {
|
||||
let version = captures.get(1).map_or("", |m| m.as_str());
|
||||
if let Some(major_vesrion) = version.split('.').next() {
|
||||
return Ok(major_vesrion.parse::<u32>().unwrap());
|
||||
}
|
||||
}
|
||||
|
||||
return Err(format!(
|
||||
"Could not verify clang version. {:?}?",
|
||||
&clang_raw_version_output
|
||||
)
|
||||
.into());
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use rstest::rstest;
|
||||
|
||||
#[rstest]
|
||||
#[case("Apple clang version 15.0.0 (clang-1500.0.40.1)
|
||||
Target: arm64-apple-darwin23.1.0
|
||||
Thread model: posix
|
||||
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin", "15.0.0")]
|
||||
#[case(
|
||||
"Homebrew clang version 17.0.5
|
||||
Target: arm64-apple-darwin23.1.0
|
||||
Thread model: posix
|
||||
InstalledDir: /opt/homebrew/Cellar/llvm/17.0.5/bin",
|
||||
"17.0.5"
|
||||
)]
|
||||
fn test_get_version(#[case] clang_output: &str, #[case] expected: &str) {
|
||||
assert_eq!(get_major_version(clang_output), Some(expected));
|
||||
}
|
||||
}
|
||||
2
wasm/prover/check.sh
Executable file
2
wasm/prover/check.sh
Executable file
@@ -0,0 +1,2 @@
|
||||
#!/bin/sh
|
||||
cargo check --target "wasm32-unknown-unknown"
|
||||
Reference in New Issue
Block a user