-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCargo.toml
More file actions
118 lines (105 loc) · 3.26 KB
/
Copy pathCargo.toml
File metadata and controls
118 lines (105 loc) · 3.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
[workspace]
members = [".", "fuse-pipe", "fc-agent", "exec-proto", "fc-mock"]
# Build all members by default (not just the root package)
default-members = [".", "fuse-pipe", "fc-agent", "exec-proto", "fc-mock"]
# Exclude sync-test (used only for Makefile sync verification)
exclude = ["sync-test"]
# Resolver v2 makes --no-default-features work across all workspace members
resolver = "2"
[package]
name = "fcvm"
version = "0.1.0"
edition = "2021"
rust-version = "1.75"
authors = ["ejc3"]
description = "Firecracker VM runner for Podman containers with sub-second cloning"
license = "MIT OR Apache-2.0"
readme = "README.md"
repository = "https://github.com/ejc3/fcvm"
homepage = "https://github.com/ejc3/fcvm"
keywords = ["firecracker", "vm", "container", "podman", "microvm"]
categories = ["command-line-utilities", "virtualization"]
exclude = [
".github/",
".claude/",
"tests/",
"benches/",
"scripts/",
"Containerfile",
"Makefile",
]
[profile.release]
lto = "thin"
strip = true
codegen-units = 1
[dependencies]
anyhow = "1"
clap = { version = "4", features = ["derive", "env"] }
clap_complete = "4"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
sha2 = "0.10"
hex = "0.4"
toml = "0.8"
tokio = { version = "1", features = ["rt-multi-thread", "macros", "process", "fs", "signal", "io-util", "io-std", "sync", "time"] }
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] }
which = "6"
uuid = { version = "1", features = ["v4", "serde"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
tracing-log = "0.2" # Bridge log crate to tracing (for fuse-backend-rs)
libc = "0.2"
nix = { version = "0.29", features = ["sched", "net", "fs", "user", "mount", "signal", "term"] }
chrono = { version = "0.4", features = ["serde"] }
tempfile = "3"
rand = "0.8"
async-trait = "0.1"
hyper = { version = "0.14", features = ["client", "http1"] }
hyperlocal = "0.8"
shellexpand = "3"
userfaultfd = "0.8"
memmap2 = "0.9"
vmm-sys-util = "0.12"
shell-words = "1"
fuse-pipe = { path = "fuse-pipe", default-features = false }
exec-proto = { path = "exec-proto" }
url = "2"
axum = { version = "0.8", features = ["ws"] }
tower-http = { version = "0.6", features = ["cors"] }
percent-encoding = "2"
tokio-util = "0.7"
regex = "1.12.2"
fs2 = "0.4.3"
directories = "5"
glob = "0.3"
tar = "0.4"
[features]
# Default: all integration tests that work without sudo (rootless networking)
default = ["integration-fast", "integration-slow"]
# Test speed tiers (unit tests always run, no feature flag needed)
integration-fast = [] # Quick VM tests, < 30s each (sanity, signal, exec, port forward)
integration-slow = [] # Slow VM tests, > 30s each (clone, snapshot, fuse posix, egress)
# Privileged tests require sudo (bridged networking, pjdfstest, iptables)
privileged-tests = []
# libfuse remap_file_range container test (requires pre-built container)
libfuse-test = []
[dev-dependencies]
serial_test = "3"
criterion = "0.5"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
[build-dependencies]
sha2 = "0.10"
hex = "0.4"
[[bench]]
name = "exec"
harness = false
[[bench]]
name = "clone"
harness = false
[[bench]]
name = "hugepages"
harness = false
[[bench]]
name = "container_import"
harness = false