vmrunner-sysroot 0.0.4

micro-vm runner sysroot extraction helpers
use std::{env, path::PathBuf};

fn main() {
    println!("cargo:rerun-if-changed=libguestfs-wrapper.h");

    pkg_config::Config::new().probe("libguestfs").expect(
        "libguestfs development files were not found; install libguestfs-devel or equivalent",
    );

    let bindings = bindgen::Builder::default()
        .header("libguestfs-wrapper.h")
        .allowlist_type("guestfs_h")
        .allowlist_type("guestfs_add_drive_opts_argv")
        .allowlist_function(
            "guestfs_(create|close|set_error_handler|last_error|last_errno|add_drive_opts_argv|launch|inspect_os|inspect_get_mountpoints|mount_ro|mount_options|mount_vfs|copy_out|exists|is_symlink|umount_all|shutdown)",
        )
        .allowlist_var("GUESTFS_ADD_DRIVE_OPTS_(READONLY|FORMAT)")
        .layout_tests(false)
        .parse_callbacks(Box::new(bindgen::CargoCallbacks::new()))
        .generate()
        .expect("generate libguestfs bindings");

    let out_dir = PathBuf::from(env::var("OUT_DIR").expect("OUT_DIR is set by Cargo"));
    bindings
        .write_to_file(out_dir.join("guestfs_bindings.rs"))
        .expect("write generated libguestfs bindings");
}