in kernel-abi-check/src/main.rs [33:72]
fn main() -> Result<()> {
// Initialize color_eyre error handling
color_eyre::install()?;
// Parse command-line arguments
let args = Cli::parse();
eprintln!(
"🐍 Checking for compatibility with {}, macOS {}, and Python ABI version {}",
args.manylinux, args.macos, args.python_abi
);
let binary_data = fs::read(args.object).context("Cannot open object file")?;
let file = object::File::parse(&*binary_data).context("Cannot parse object")?;
let many_linux_violations = check_manylinux(
&args.manylinux,
file.architecture(),
file.endianness(),
file.symbols(),
)?;
print_manylinux_violations(&many_linux_violations, &args.manylinux)?;
let macos_violations = check_macos(&file, &args.macos)?;
print_macos_violations(&macos_violations, &args.macos);
let python_abi_violations = check_python_abi(&args.python_abi, file.format(), file.symbols())?;
print_python_abi_violations(&python_abi_violations, &args.python_abi);
if !(many_linux_violations.is_empty()
&& macos_violations.is_empty()
&& python_abi_violations.is_empty())
{
return Err(eyre::eyre!("Compatibility issues found"));
} else {
eprintln!("✅ No compatibility issues found");
}
Ok(())
}