Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/holger

holger-recipe/Cargo.toml

# holger's **recipe** — the one Rust declaration of holger's build space.
#
# ## A PLAIN RLIB, and that is why this crate exists (MEASURED 2026-09-16)
#
# The declaration first lived directly in `holger-build-thing`, which must be a
# `cdylib` (dwarves' code road refuses a `<repo>-build-thing` that is not). For a
# lib whose `crate-type` contains `cdylib`, cargo emits NO `--extra-filename`, so
# every unit of it writes the same `target/debug/deps/libholger_build_thing.rlib`.
# build-space reaches it with a different feature resolution under its tests
# (its dev-deps turn on nornir-build-thing features) than its lib does, so there
# were two units and one filename, and the doctest linked the loser:
#
#   error[E0460]: found possibly newer version of crate `holger_build_thing`
#                 which `holger_build_space` depends on
#
# green when run alone, red inside `cargo test -p holger-build-space
# --no-fail-fast` — the same cargo#6313 shape gunnar recorded 2026-09-03 and fixed
# with the same split: the recipe is a plain rlib (it gets an `--extra-filename`,
# so its units coexist) and `holger-build-thing` is a shim nothing depends on.
[package]
name = "holger-recipe"
workspace = "../estate"
version.workspace = true
edition = "2021"
authors = ["Rickard Ernst Björn Lundin <rickard@x14.se>"]
description = "holger's build recipe as code: every build variant, the appliance container row and the per-site installer row declared in Rust through nornir-build-thing's declaration API, and the emitter of .nornir/build-variants.toml (code -> toml, one-directional). holger-build-thing is its wasm32 cdylib shim."
license = "AGPL-3.0-only"
repository = "https://git.gunnar.rs/nordisk/holger"

[lib]
name = "holger_recipe"

[dependencies]
# The declaration types (`BuildVariant`, `BuildVariantSet`, `ContainerBuild`,
# `InstallerBuild`, `ParamSpec`), the `plugin::BuildThing` trait and the ONE
# emitter (`emit::recipe_toml` — round-trips through the one loader). Version
# beside the path: 0.1.18 is the crates.io release edda main carries; the path is
# the sibling-checkout convention every `../../edda` dep here uses. No features:
# the recipe declares and computes nothing, and must build for wasm32.
nornir-build-thing = { version = "0.2.6", default-features = false }
anyhow = "1"

# `toml` — the rule engine's manifest reader (`honesty.rs`). Optional, and off
# for the wasm32 cdylib shim, which must link no parser and no `std::fs`.
toml = { version = "1", optional = true }

[features]
# `gate` is ON by default so `cargo test -p holger-recipe` runs RULE 1 and RULE
# 2 without a flag. The shim (`holger-build-thing`) depends on this crate with
# `default-features = false`, so the wasm module is unchanged.
default = ["gate"]
# RULE 1 (no feature riders) and RULE 2 (no bench or test crate in a shipped
# graph), computed over holger's own manifests with no cargo process. The
# pre-existing guard in `build-space` shells `Command::new(env!("CARGO"))` and
# skips silently when cargo is absent; this one cannot skip.
gate = ["dep:toml"]

[dev-dependencies]
# The LFS-pointer check on the declared boot logo (`test_support::lfs_bytes`).
traits = { package = "holger-traits", path = "../traits", features = ["test-support"] }