All checks were successful
Run Check Script / check (pull_request) Successful in 2m0s
The harmony_composer CI job builds for x86_64-pc-windows-gnu. It was failing because workspace members that explicitly request the `kvm` feature (kvm examples) caused Cargo to unify that feature into the harmony build for all targets, including Windows — even though harmony_composer itself doesn't need kvm. Three-part fix: - Move `virt` (libvirt bindings) to `[target.'cfg(unix)'.dependencies]` so Cargo never tries to compile it for non-Unix targets, regardless of which workspace member requests `kvm` - Remove `kvm` from harmony's default features; callers that need it already opt in explicitly - Gate kvm and podman-topology code with `#[cfg(unix)]` / `#[cfg(all(feature = "kvm", unix))]` so harmony compiles cleanly on Windows. Podman score types (PodmanService, PodmanV0Score, ReconcileScore) remain available on all platforms since the fleet operator CRD definitions need them.
115 lines
3.3 KiB
TOML
115 lines
3.3 KiB
TOML
[package]
|
|
name = "harmony"
|
|
edition = "2024"
|
|
version.workspace = true
|
|
readme.workspace = true
|
|
license.workspace = true
|
|
|
|
[features]
|
|
# `podman` lights up the podman module AND the fleet operator's
|
|
# CRD types (which embed `ReconcileScore` from the podman module).
|
|
# Without it the operator CRD fails to compile, so it's part of
|
|
# the default build.
|
|
default = ["podman"]
|
|
kvm = ["dep:virt"]
|
|
podman = ["dep:podman-api"]
|
|
testing = []
|
|
|
|
[dependencies]
|
|
hex = "0.4"
|
|
webbrowser = "1.0"
|
|
reqwest = { version = "0.11", features = [
|
|
"blocking",
|
|
"cookies",
|
|
"json",
|
|
"rustls-tls",
|
|
"stream",
|
|
], default-features = false }
|
|
russh = { workspace = true }
|
|
russh-keys = { workspace = true }
|
|
rust-ipmi = "0.1.1"
|
|
semver = "1.0.23"
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
tokio.workspace = true
|
|
tokio-retry.workspace = true
|
|
tokio-util.workspace = true
|
|
derive-new.workspace = true
|
|
log.workspace = true
|
|
env_logger.workspace = true
|
|
async-trait.workspace = true
|
|
cidr.workspace = true
|
|
opnsense-api = { path = "../opnsense-api" }
|
|
opnsense-config = { path = "../opnsense-config" }
|
|
opnsense-config-xml = { path = "../opnsense-config-xml" }
|
|
harmony_macros = { path = "../harmony_macros" }
|
|
harmony_types = { path = "../harmony_types" }
|
|
harmony_execution = { path = "../harmony_execution" }
|
|
harmony-k8s = { path = "../harmony-k8s" }
|
|
harmony-reconciler-contracts = { path = "../harmony-reconciler-contracts" }
|
|
anyhow.workspace = true
|
|
uuid.workspace = true
|
|
url.workspace = true
|
|
kube = { workspace = true, features = ["derive"] }
|
|
k8s-openapi.workspace = true
|
|
serde_yaml.workspace = true
|
|
http.workspace = true
|
|
serde-value.workspace = true
|
|
helm-wrapper-rs = "0.4.0"
|
|
non-blank-string-rs = "1.0.4"
|
|
k3d-rs = { path = "../k3d" }
|
|
directories.workspace = true
|
|
lazy_static.workspace = true
|
|
dockerfile_builder = "0.1.5"
|
|
temp-file = "0.1.9"
|
|
convert_case.workspace = true
|
|
email_address = "0.2.9"
|
|
chrono.workspace = true
|
|
fqdn = { version = "0.5.2", features = [
|
|
"domain-label-cannot-start-or-end-with-hyphen",
|
|
"domain-label-length-limited-to-63",
|
|
"domain-name-without-special-chars",
|
|
"domain-name-length-limited-to-255",
|
|
"punycode",
|
|
"serde",
|
|
] }
|
|
temp-dir = "0.1.14"
|
|
dyn-clone = "1.0.19"
|
|
similar.workspace = true
|
|
futures-util = "0.3.31"
|
|
strum = { version = "0.27.1", features = ["derive"] }
|
|
tempfile.workspace = true
|
|
serde_with = "3.14.0"
|
|
schemars = "0.8.22"
|
|
kube-derive = "1.1.0"
|
|
bollard.workspace = true
|
|
tar.workspace = true
|
|
base64.workspace = true
|
|
thiserror.workspace = true
|
|
once_cell = "1.21.3"
|
|
walkdir = "2.5.0"
|
|
harmony_inventory_agent = { path = "../harmony_inventory_agent" }
|
|
harmony_secret_derive = { path = "../harmony_secret_derive" }
|
|
harmony_secret = { path = "../harmony_secret" }
|
|
askama.workspace = true
|
|
sha2 = "0.10"
|
|
sqlx.workspace = true
|
|
inquire.workspace = true
|
|
brocade = { path = "../brocade" }
|
|
option-ext = "0.2.0"
|
|
rand.workspace = true
|
|
podman-api = { version = "0.9", optional = true }
|
|
sysinfo = "0.30"
|
|
|
|
# virt (libvirt bindings) uses std::os::unix and only compiles on Unix targets.
|
|
# Declaring it here (not in [dependencies]) prevents Cargo from trying to
|
|
# compile it when cross-compiling to Windows, even if a workspace member
|
|
# requests the `kvm` feature.
|
|
[target.'cfg(unix)'.dependencies]
|
|
virt = { version = "0.4.3", optional = true }
|
|
|
|
[dev-dependencies]
|
|
pretty_assertions.workspace = true
|
|
assertor.workspace = true
|
|
httptest = "0.16"
|