From d516ce56b1fe8b765e8833edb1568817158b306f Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Thu, 11 Jan 2024 15:44:31 +0200 Subject: feat(tvix/glue/derivationStrict): support __structuredAttrs 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 --- tvix/glue/src/tvix_build.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'tvix/glue/src/tvix_build.rs') diff --git a/tvix/glue/src/tvix_build.rs b/tvix/glue/src/tvix_build.rs index 227acd252c..e8dab10568 100644 --- a/tvix/glue/src/tvix_build.rs +++ b/tvix/glue/src/tvix_build.rs @@ -87,7 +87,8 @@ where ); handle_pass_as_file(&mut environment_vars, &mut additional_files)?; - // TODO: handle structuredAttrs. + + // TODO: handle __json (structured attrs, provide JSON file and source-able bash script) // Produce inputs. As we refer to the contents here, not just plain store path strings, // we need to perform lookups. -- cgit 1.4.1