[package] name = "microvmi" version = "0.3.14" authors = ["Mathieu Tarral "] edition = "2018" description = "A cross-platform, unified, low-level VM introspection API supporting multiple hypervisors" readme = "README.md" homepage = "https://github.com/Wenzel/libmicrovmi" repository = "https://github.com/Wenzel/libmicrovmi" license = "GPL-3.0-only" keywords = ["introspection", "VMI"] [lib] crate-type = ["cdylib", "lib"] [features] # Xen driver xen = [ "xenctrl", "xenstore-rs", "xenforeignmemory", "xenevtchn", "xenvmevent-sys", "libc", ] # KVM driver kvm = ["kvmi"] # VirtualBox driver virtualbox = ["fdp"] # memflow driver # feature name is "mflow" to avoid conflict with the dependency mflow = ["memflow"] [dependencies] env_logger = "0.9.0" log = "0.4.8" bitflags = "1.2.1" cty = "0.2.1" nix = "^0.23.0" enum-iterator = "0.7.0" thiserror = "1.0" libc = { version = "0.2.58", optional = true } xenctrl = { version = "=0.6.0", optional = true } xenstore-rs = { version = "=0.3.2", optional = true } xenforeignmemory = { version = "=0.2.3", optional = true } xenevtchn = { version = "=0.1.6", optional = true } xenvmevent-sys = { version = "=0.1.3", optional = true } kvmi = { version = "0.4.0", optional = true } fdp = { version = "=0.2.5", optional = true } winapi = { version = "0.3", features = [ "tlhelp32", "winnt", "handleapi", "securitybaseapi", ], optional = true } widestring = { version = "0.4", optional = true } ntapi = { version = "0.3", optional = true } vid-sys = { version = "=0.3.0", features = [ "deprecated-apis", ], optional = true } memflow = { version = "0.2.1", optional = true } [dev-dependencies] utilities = { path = "utilities" } ctrlc = "3.1" clap = "2.33" colored = "2.0" mockall = "0.10.2" test-case = "1" indicatif = "0.16.2" inventory = "0.2.0" [build-dependencies] cbindgen = "0.20.0" [profile.release] debug = true [[test]] name = "integration" path = "tests/integration.rs" harness = false [package.metadata.deb] extended-description = "A simple virtual machine introspection library providing a cross-platform interface on multiple hypervisors" # force an old enough libc6 # otherwise, the current libc of the CI is taken, and it will be too recent depends = "libc6 (>= 2.19)" section = "libs" priority = "optional" # add generated libmicrovmi.h header assets = [ [ "target/release/libmicrovmi.so", "usr/lib/libmicrovmi.so", "644", ], [ "target/release/capi/libmicrovmi.h", "usr/include/libmicrovmi.h", "644", ], ] [package.metadata.release] # releases are managed by cargo release, but publication is done on the CI # this metadata prevents a misuse when --no-publish flag is missing from cargo # release command line publish = false [workspace] members = ["python"]