d516ce56b1
This adds support to handle the __structuredAttrs argument, which can be passed to builtins.derivationStrict. If __structuredAttrs is passed, and set to true, most of the arguments passed to builtins.derivationStrict are not simply coerced to a string and passed down to "environments", but instead kept in a more structured fashion. Inside ATerm, which is what's relevant as far as path calculation is concerned, a virtual `__json` environment variable is present, containing these structured values. Inside Builds, these structured values are not made available as an environment variable, but a JSON file (and source-able bash script). This will need to be respected once we start emitting BuildRequests, and for that we can probably just parse the `__json` key in Derivation.environment again - or keep this additionally in non-serialized form around during Evaluation. No matter what, this is left for a followup CL. The existing handle_derivation_parameters and populate_outputs helper function were removed, as __structuredAttrs causes quite a change in behaviour, and so handling both in the same place makes it more readable. There's some open questions w.r.t. string contexts for structured attrs itself. A TODO is left for this, but at least path calculation for individual structured attrs derivations are correct now. Part of b/366. Change-Id: Ic293822266ced6f8c4826d8ef0d2e098a4adccaa Reviewed-on: https://cl.tvl.fyi/c/depot/+/10604 Tested-by: BuildkiteCI Reviewed-by: raitobezarius <tvl@lahfa.xyz>
33 lines
764 B
TOML
33 lines
764 B
TOML
[package]
|
|
name = "tvix-glue"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
|
|
[dependencies]
|
|
bstr = "1.6.0"
|
|
bytes = "1.4.0"
|
|
data-encoding = "2.3.3"
|
|
nix-compat = { path = "../nix-compat" }
|
|
tvix-build = { path = "../build", default-features = false, features = []}
|
|
tvix-eval = { path = "../eval" }
|
|
tvix-castore = { path = "../castore" }
|
|
tvix-store = { path = "../store", default-features = false, features = []}
|
|
tracing = "0.1.37"
|
|
tokio = "1.28.0"
|
|
thiserror = "1.0.38"
|
|
serde = "1.0.195"
|
|
serde_json = "1.0"
|
|
sha2 = "0.10.8"
|
|
|
|
[dependencies.wu-manber]
|
|
git = "https://github.com/tvlfyi/wu-manber.git"
|
|
|
|
[dev-dependencies]
|
|
criterion = { version = "0.5", features = ["html_reports"] }
|
|
lazy_static = "1.4.0"
|
|
tempfile = "3.8.1"
|
|
test-case = "3.3.1"
|
|
|
|
[[bench]]
|
|
name = "eval"
|
|
harness = false
|