Expand description
Typed TargetPredicate — conditional-dependency activation.
Every package manager has its own syntax for “only install this dep on platform X” / “only on node 18+” / “only on Linux”:
- Cargo:
target.'cfg(unix)'.dependencies - npm:
"engines": { "node": ">=18" }+"os": ["linux"] - pip:
[platform_python_implementation == 'CPython']markers - Bundler:
platforms :ruby, :mswin - Composer:
"php": ">=8.0"
Adapters normalise their native predicate into the canonical
typed shape here. The resolver in gen-engine consults this
once + decides per-target whether the dep is active.
Structs§
- Compound
Target Predicate - Compound predicate combining atomic
TargetPredicates. Kept separate fromTargetPredicateto avoid serde recursion- overflow on the derive macros — same trick ascrate::CompoundConstraint. - Target
- A concrete target the engine evaluates predicates against.
Typically derived from the host system the engine is running on,
optionally overridden via shikumi config (e.g.
--target aarch64-linuxcross-build).
Enums§
- Predicate
Combinator - Target
Predicate - Typed conditional-activation predicate. Adapters set this on
crate::Dependencywhen the dep is conditional.