)]}'
{"id":"depot~10793","triplet_id":"depot~canon~Id2075d8a2b18554d0dd608b4b29146a8cd411e7f","project":"depot","branch":"canon","attention_set":{},"removed_from_attention_set":{"1000036":{"account":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"last_update":"2024-02-18 08:59:49.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"Id2075d8a2b18554d0dd608b4b29146a8cd411e7f","subject":"feat(tvix/glue): drive builds on IO","status":"MERGED","created":"2024-02-10 16:22:36.000000000","updated":"2024-02-18 08:59:49.000000000","submitted":"2024-02-18 08:59:49.000000000","submitter":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"total_comment_count":2,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"10793","meta_rev_id":"ada74fae00f2a83adc8019cbb6a354628f3c6ad2","_number":10793,"virtual_id_number":10793,"owner":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"actions":{},"labels":{"Code-Review":{"approved":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},"all":[{"value":0,"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},{"tag":"autogenerated:gerrit:merged","value":2,"date":"2024-02-18 08:59:49.000000000","_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},{"value":0,"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]}],"values":{"-2":"This shall not be merged","-1":"I would prefer this is not merged as is"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me, approved"},"description":"","default_value":0},"Verified":{"approved":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},{"value":0,"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},{"tag":"autogenerated:gerrit:merged","value":1,"date":"2024-02-18 08:59:49.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]}],"values":{"-1":"Fails"," 0":"No score","+1":"Verified"},"description":"","default_value":0},"Autosubmit":{"all":[{"value":0,"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},{"value":0,"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},{"value":0,"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]}],"values":{" 0":"Submit manually","+1":"Submit automatically"},"description":"","default_value":0,"optional":true},"All-Comments-Resolved":{"approved":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"all":[{"value":0,"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},{"value":0,"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},{"value":0,"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]}]},"Conformant-Commit-Message":{"approved":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"all":[{"value":0,"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},{"value":0,"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},{"value":0,"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]}]}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2024-02-10 16:22:39.000000000","updated_by":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"reviewer":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"state":"CC"},{"updated":"2024-02-10 16:28:57.000000000","updated_by":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"reviewer":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2024-02-14 03:34:33.000000000","updated_by":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},"reviewer":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},"state":"REVIEWER"}],"messages":[{"id":"b2bd6c71f5fb53de55051d19c6551774a184e24b","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"date":"2024-02-10 16:22:36.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"b5ec9c21f7f8635ffd8f244c90ff9bc01b01f16e","tag":"autogenerated:buildkite~trigger","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2024-02-10 16:22:39.000000000","message":"Patch Set 1:\n\nStarted build for patchset #1 on: https://buildkite.com/tvl/depot/builds/31353","accounts_in_message":[],"_revision_number":1},{"id":"f9e1cad4507b1a202ed9677f60b5573efffc16f9","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"date":"2024-02-10 16:26:20.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"2cda4a2eb26cee30141474252d9697ec423e221b","tag":"autogenerated:buildkite~trigger","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2024-02-10 16:26:24.000000000","message":"Patch Set 2:\n\nStarted build for patchset #2 on: https://buildkite.com/tvl/depot/builds/31356","accounts_in_message":[],"_revision_number":2},{"id":"55378aece85bd8e90974729e0293da94af4e537f","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2024-02-10 16:28:57.000000000","message":"Patch Set 2: Verified-1\n\nBuild of patchset 2 failed: https://buildkite.com/tvl/depot/builds/31356","accounts_in_message":[],"_revision_number":2},{"id":"09f4afe14e4e86af7d2066b3fa8e2e354ccb4140","author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"date":"2024-02-10 16:56:54.000000000","message":"Patch Set 2:\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"dbfb5e3064f75857c0b6e1b9380f6869d341d531","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"date":"2024-02-13 15:53:39.000000000","message":"Uploaded patch set 3.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"(**is:ANY** AND changekind:NO_CODE_CHANGE) OR changekind:NO_CHANGE\")\n","accounts_in_message":[],"_revision_number":3},{"id":"e3a64d20e5541f83f7a59b5fd2dbc5f33492e740","author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"date":"2024-02-13 15:53:39.000000000","message":"Patch Set 3:\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"8474e3d485e6f3041e99e9ca3d7841272bc2f782","tag":"autogenerated:buildkite~trigger","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2024-02-13 15:53:42.000000000","message":"Patch Set 3:\n\nStarted build for patchset #3 on: https://buildkite.com/tvl/depot/builds/31416","accounts_in_message":[],"_revision_number":3},{"id":"c0134eb674cf7cacc3ef6e6c9831c3e983d8ead9","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2024-02-13 15:59:22.000000000","message":"Patch Set 3: Verified+1\n\nBuild of patchset 3 passed: https://buildkite.com/tvl/depot/builds/31416","accounts_in_message":[],"_revision_number":3},{"id":"a34e83551d4002458c7b8260f4cfe96e8223f8a1","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"date":"2024-02-13 16:12:50.000000000","message":"Uploaded patch set 4: Patch Set 3 was rebased.\n\nOutdated Votes:\n* Verified+1 (copy condition: \"(**is:ANY** AND changekind:NO_CODE_CHANGE) OR changekind:NO_CHANGE\")\n","accounts_in_message":[],"_revision_number":4},{"id":"8acc300cb1534abfcc442aa4f8c361b02e034730","tag":"autogenerated:buildkite~trigger","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2024-02-13 16:12:55.000000000","message":"Patch Set 4:\n\nStarted build for patchset #4 on: https://buildkite.com/tvl/depot/builds/31419","accounts_in_message":[],"_revision_number":4},{"id":"0118835077739dd59443c8a00cf7d75381f3d068","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2024-02-13 16:44:38.000000000","message":"Patch Set 4: Verified+1\n\nBuild of patchset 4 passed: https://buildkite.com/tvl/depot/builds/31419","accounts_in_message":[],"_revision_number":4},{"id":"3898f8a018af15862a8e5d2b6d3f1852354d832b","author":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},"date":"2024-02-14 03:34:33.000000000","message":"Patch Set 4: Code-Review+2","accounts_in_message":[],"_revision_number":4},{"id":"2efae5916d670ca7b5b4634fbe4f9e619f769390","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"date":"2024-02-17 09:06:54.000000000","message":"Uploaded patch set 5.\n\nCopied Votes:\n* Code-Review+2 (copy condition: \"((**is:ANY** AND **has:unchanged-files**) OR is:MIN) OR changekind:NO_CHANGE\")\n\nOutdated Votes:\n* Verified+1 (copy condition: \"(**is:ANY** AND changekind:NO_CODE_CHANGE) OR changekind:NO_CHANGE\")\n","accounts_in_message":[],"_revision_number":5},{"id":"2faba0c91c25752392faa4534bd7d3a44870b6a7","tag":"autogenerated:buildkite~trigger","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2024-02-17 09:07:00.000000000","message":"Patch Set 5:\n\nStarted build for patchset #5 on: https://buildkite.com/tvl/depot/builds/31582","accounts_in_message":[],"_revision_number":5},{"id":"02658b9e9942c83cf1af7c880b8bd4bd4278d735","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2024-02-17 11:11:05.000000000","message":"Patch Set 5: Verified-1\n\nBuild of patchset 5 failed: https://buildkite.com/tvl/depot/builds/31582","accounts_in_message":[],"_revision_number":5},{"id":"042d1a7d1d26d350b1006c7ce1f60c3ad3f66d5a","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"date":"2024-02-18 08:15:25.000000000","message":"Uploaded patch set 6.\n\nCopied Votes:\n* Code-Review+2 (copy condition: \"((**is:ANY** AND **has:unchanged-files**) OR is:MIN) OR changekind:NO_CHANGE\")\n\nOutdated Votes:\n* Verified-1 (copy condition: \"(**is:ANY** AND changekind:NO_CODE_CHANGE) OR changekind:NO_CHANGE\")\n","accounts_in_message":[],"_revision_number":6},{"id":"a095d9f9c631fbc3958f7b26076b3c6d60e56710","tag":"autogenerated:buildkite~trigger","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2024-02-18 08:15:34.000000000","message":"Patch Set 6:\n\nStarted build for patchset #6 on: https://buildkite.com/tvl/depot/builds/31605","accounts_in_message":[],"_revision_number":6},{"id":"b91b31f466480c8dd46ff5075fbe8ec100b90250","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2024-02-18 08:21:51.000000000","message":"Patch Set 6: Verified-1\n\nBuild of patchset 6 failed: https://buildkite.com/tvl/depot/builds/31605","accounts_in_message":[],"_revision_number":6},{"id":"e549974d3a72dfd5c22f153cc3345007ab18fa31","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"date":"2024-02-18 08:44:50.000000000","message":"Uploaded patch set 7.\n\nCopied Votes:\n* Code-Review+2 (copy condition: \"((**is:ANY** AND **has:unchanged-files**) OR is:MIN) OR changekind:NO_CHANGE\")\n\nOutdated Votes:\n* Verified-1 (copy condition: \"(**is:ANY** AND changekind:NO_CODE_CHANGE) OR changekind:NO_CHANGE\")\n","accounts_in_message":[],"_revision_number":7},{"id":"c02e4121ccee3622b333cc7c63f673faffc36c4d","tag":"autogenerated:buildkite~trigger","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2024-02-18 08:44:53.000000000","message":"Patch Set 7:\n\nStarted build for patchset #7 on: https://buildkite.com/tvl/depot/builds/31608","accounts_in_message":[],"_revision_number":7},{"id":"4bdda7f7d856e15b28357bb9c8862852fb8b3c3d","tag":"autogenerated:buildkite~result","author":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]},"date":"2024-02-18 08:51:24.000000000","message":"Patch Set 7: Verified+1\n\nBuild of patchset 7 passed: https://buildkite.com/tvl/depot/builds/31608","accounts_in_message":[],"_revision_number":7},{"id":"ada74fae00f2a83adc8019cbb6a354628f3c6ad2","tag":"autogenerated:gerrit:merged","author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"date":"2024-02-18 08:59:49.000000000","message":"Change has been successfully rebased and submitted as c6605992c06bf6adc93a7bb19b0ed34b8c213bf3\n\n4 is the latest approved patch-set.\nThe change was submitted with unreviewed changes in the following files:\n\n```\nThe name of the file: tvix/glue/src/tvix_store_io.rs\nInsertions: 54, Deletions: 5.\n\n@@ -1,8 +1,12 @@\n //! This module provides an implementation of EvalIO talking to tvix-store.\n \n use async_recursion::async_recursion;\n+use bytes::Bytes;\n use futures::{StreamExt, TryStreamExt};\n-use nix_compat::store_path::{StorePath, StorePathRef};\n+use nix_compat::{\n+    nixhash::CAHash,\n+    store_path::{StorePath, StorePathRef},\n+};\n use std::{\n     cell::RefCell,\n     collections::BTreeSet,\n@@ -11,7 +15,7 @@\n     sync::Arc,\n };\n use tokio::io::AsyncReadExt;\n-use tracing::{error, instrument, warn};\n+use tracing::{error, instrument, warn, Level};\n use tvix_build::buildservice::BuildService;\n use tvix_eval::{EvalIO, FileType, StdIO};\n \n@@ -21,7 +25,7 @@\n     proto::{node::Node, NamedNode},\n     B3Digest,\n };\n-use tvix_store::pathinfoservice::PathInfoService;\n+use tvix_store::{pathinfoservice::PathInfoService, proto::PathInfo};\n \n use crate::known_paths::KnownPaths;\n use crate::tvix_build::derivation_to_build_request;\n@@ -79,7 +83,7 @@\n     /// In case there is no PathInfo yet, this means we need to build it\n     /// (which currently is stubbed out still).\n     #[async_recursion(?Send)]\n-    #[instrument(skip(self), ret, err)]\n+    #[instrument(skip(self, store_path), fields(store_path\u003d%store_path), ret(level \u003d Level::TRACE), err)]\n     async fn store_path_to_node(\n         \u0026self,\n         store_path: \u0026StorePath,\n@@ -112,10 +116,13 @@\n                 warn!(\"triggering build\");\n \n                 // Look up the derivation for this output path.\n-                let drv \u003d {\n+                let (drv_path, drv) \u003d {\n                     let known_paths \u003d self.known_paths.borrow();\n-                    match known_paths.get_drv_by_output_path(store_path) {\n-                        Some(drv) \u003d\u003e drv.to_owned(),\n+                    match known_paths.get_drv_path_for_output_path(store_path) {\n+                        Some(drv_path) \u003d\u003e (\n+                            drv_path.to_owned(),\n+                            known_paths.get_drv_by_drvpath(drv_path).unwrap().to_owned(),\n+                        ),\n                         None \u003d\u003e {\n                             warn!(store_path\u003d%store_path, \"no drv found\");\n                             // let StdIO take over\n@@ -205,6 +212,48 @@\n \n                 // TODO: refscan?\n \n+                // For each output, insert a PathInfo.\n+                for output in \u0026build_result.outputs {\n+                    let root_node \u003d output.node.as_ref().expect(\"invalid root node\");\n+\n+                    // calculate the nar representation\n+                    let (nar_size, nar_sha256) \u003d\n+                        self.path_info_service.calculate_nar(root_node).await?;\n+\n+                    // assemble the PathInfo to persist\n+                    let path_info \u003d PathInfo {\n+                        node: Some(tvix_castore::proto::Node {\n+                            node: Some(root_node.clone()),\n+                        }),\n+                        references: vec![], // TODO: refscan\n+                        narinfo: Some(tvix_store::proto::NarInfo {\n+                            nar_size,\n+                            nar_sha256: Bytes::from(nar_sha256.to_vec()),\n+                            signatures: vec![],\n+                            reference_names: vec![], // TODO: refscan\n+                            deriver: Some(tvix_store::proto::StorePath {\n+                                name: drv_path\n+                                    .name()\n+                                    .strip_suffix(\".drv\")\n+                                    .expect(\"missing .drv suffix\")\n+                                    .to_string(),\n+                                digest: drv_path.digest().to_vec().into(),\n+                            }),\n+                            ca: drv.fod_digest().map(\n+                                |fod_digest| -\u003e tvix_store::proto::nar_info::Ca {\n+                                    (\u0026CAHash::Nar(nix_compat::nixhash::NixHash::Sha256(fod_digest)))\n+                                        .into()\n+                                },\n+                            ),\n+                        }),\n+                    };\n+\n+                    self.path_info_service\n+                        .put(path_info)\n+                        .await\n+                        .map_err(|e| std::io::Error::new(io::ErrorKind::Other, e))?;\n+                }\n+\n                 // find the output for the store path requested\n                 build_result\n                     .outputs\n@@ -236,7 +285,7 @@\n }\n \n impl EvalIO for TvixStoreIO {\n-    #[instrument(skip(self), ret, err)]\n+    #[instrument(skip(self), ret(level \u003d Level::TRACE), err)]\n     fn path_exists(\u0026self, path: \u0026Path) -\u003e io::Result\u003cbool\u003e {\n         if let Ok((store_path, sub_path)) \u003d\n             StorePath::from_absolute_path_full(\u0026path.to_string_lossy())\n@@ -257,7 +306,7 @@\n         }\n     }\n \n-    #[instrument(skip(self), ret, err)]\n+    #[instrument(skip(self), err)]\n     fn read_to_string(\u0026self, path: \u0026Path) -\u003e io::Result\u003cString\u003e {\n         if let Ok((store_path, sub_path)) \u003d\n             StorePath::from_absolute_path_full(\u0026path.to_string_lossy())\n@@ -325,7 +374,7 @@\n         }\n     }\n \n-    #[instrument(skip(self), ret, err)]\n+    #[instrument(skip(self), ret(level \u003d Level::TRACE), err)]\n     fn read_dir(\u0026self, path: \u0026Path) -\u003e io::Result\u003cVec\u003c(bytes::Bytes, FileType)\u003e\u003e {\n         if let Ok((store_path, sub_path)) \u003d\n             StorePath::from_absolute_path_full(\u0026path.to_string_lossy())\n@@ -390,7 +439,7 @@\n         }\n     }\n \n-    #[instrument(skip(self), ret, err)]\n+    #[instrument(skip(self), ret(level \u003d Level::TRACE), err)]\n     fn import_path(\u0026self, path: \u0026Path) -\u003e io::Result\u003cPathBuf\u003e {\n         let output_path \u003d self.tokio_handle.block_on(async {\n             tvix_store::import::import_path_as_nar_ca(\n@@ -406,7 +455,7 @@\n         Ok(output_path.to_absolute_path().into())\n     }\n \n-    #[instrument(skip(self), ret)]\n+    #[instrument(skip(self), ret(level \u003d Level::TRACE))]\n     fn store_dir(\u0026self) -\u003e Option\u003cString\u003e {\n         Some(\"/nix/store\".to_string())\n     }\n@@ -416,7 +465,7 @@\n mod tests {\n     use std::{path::Path, rc::Rc, sync::Arc};\n \n-    use bstr::ByteVec;\n+    use bstr::ByteSlice;\n     use tempfile::TempDir;\n     use tvix_build::buildservice::DummyBuildService;\n     use tvix_castore::{\n@@ -475,7 +524,7 @@\n \n         let value \u003d result.value.expect(\"must be some\");\n         match value {\n-            tvix_eval::Value::String(s) \u003d\u003e Some((***s).clone().into_string_lossy()),\n+            tvix_eval::Value::String(s) \u003d\u003e Some(s.to_str_lossy().into_owned()),\n             _ \u003d\u003e panic!(\"unexpected value type: {:?}\", value),\n         }\n     }\n```\n","accounts_in_message":[],"_revision_number":8}],"current_revision_number":8,"current_revision":"c6605992c06bf6adc93a7bb19b0ed34b8c213bf3","revisions":{"65188cd8b2c4e40fea359de6dafc78fb9ba92470":{"kind":"REWORK","_number":1,"created":"2024-02-10 16:22:36.000000000","uploader":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"ref":"refs/changes/93/10793/1","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/93/10793/1","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/93/10793/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/93/10793/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/93/10793/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/93/10793/1"}}},"commit":{"parents":[{"commit":"14807c123d8aa01f36803d459827a0fdf489383f","subject":"feat(tvix/glue/known_paths): add get_drv_by_output_path","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d14807c123d8aa01f36803d459827a0fdf489383f"}]}],"author":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-01-16 19:14:38.000000000","tz":120},"committer":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-02-10 16:20:04.000000000","tz":60},"subject":"feat(tvix/glue): drive builds on IO","message":"feat(tvix/glue): drive builds on IO\n\nThat\u0027s one possible abstraction to drive builds.\nWhenever IO into a store path is requested, we look up the root node,\nand in case we don\u0027t have it in PathInfoService, but KnownPaths gives us\na Derivation for that output path, trigger a build and await the result.\n\nThis recursively might trigger builds for parent paths if they haven\u0027t\nbeen built yet.\n\nAnother option would be to simply expose a PathInfoService interface for\na builder too, and loop all building into IO via PathInfoService\ncomposition - but let\u0027s start with something.\n\nChange-Id: Id2075d8a2b18554d0dd608b4b29146a8cd411e7f\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d65188cd8b2c4e40fea359de6dafc78fb9ba92470"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d65188cd8b2c4e40fea359de6dafc78fb9ba92470"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"14807c123d8aa01f36803d459827a0fdf489383f","is_merged_in_target_branch":false,"change_id":"I89858d91bffc2ef7f1d86314c16fa4f850f21426","change_number":10791,"patch_set_number":4,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"cfd8b915c41b5844e0ca2e26c375ebdce7f1d7bb":{"kind":"REWORK","_number":2,"created":"2024-02-10 16:26:20.000000000","uploader":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"ref":"refs/changes/93/10793/2","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/93/10793/2","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/93/10793/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/93/10793/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/93/10793/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/93/10793/2"}}},"commit":{"parents":[{"commit":"4694b0e0db1560dcb51d268c00504b6ba2a74265","subject":"feat(tvix/glue/known_paths): add get_drv_by_output_path","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d4694b0e0db1560dcb51d268c00504b6ba2a74265"}]}],"author":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-01-16 19:14:38.000000000","tz":120},"committer":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-02-10 16:24:11.000000000","tz":60},"subject":"feat(tvix/glue): drive builds on IO","message":"feat(tvix/glue): drive builds on IO\n\nThat\u0027s one possible abstraction to drive builds.\nWhenever IO into a store path is requested, we look up the root node,\nand in case we don\u0027t have it in PathInfoService, but KnownPaths gives us\na Derivation for that output path, trigger a build and await the result.\n\nThis recursively might trigger builds for parent paths if they haven\u0027t\nbeen built yet.\n\nAnother option would be to simply expose a PathInfoService interface for\na builder too, and loop all building into IO via PathInfoService\ncomposition - but let\u0027s start with something.\n\nNote tvix-cli doesn\u0027t have a configurable BuildService yet, it\u0027s plugged\nto the DummyBuildService, so whenever it needs to do a build, it\u0027ll fail,\nbut that\u0027s how it can be provoked:\n\n```\n(builtins.readFile (import \u003cnixpkgs\u003e {}).hello.outPath + \"/bin/hello\")\n[…]\nerror[E029]: I/O error: /nix/store/cg8a576pz2yfc1wbhxm1zy4x7lrk8pix-hello-2.12.1: builds are not supported with DummyBuildService\n --\u003e [code]:1:2\n  |\n1 | (builtins.readFile (import \u003cnixpkgs\u003e {}).hello.outPath + \"/bin/hello\")\n  |  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n```\n\nNote how this fails, while pure output path calculation\n(`(import \u003cnixpkgs\u003e {}).hello.outPath + \"/bin/hello\")`) still succeeds.\n\nChange-Id: Id2075d8a2b18554d0dd608b4b29146a8cd411e7f\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dcfd8b915c41b5844e0ca2e26c375ebdce7f1d7bb"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dcfd8b915c41b5844e0ca2e26c375ebdce7f1d7bb"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"4694b0e0db1560dcb51d268c00504b6ba2a74265","is_merged_in_target_branch":false,"change_id":"I89858d91bffc2ef7f1d86314c16fa4f850f21426","change_number":10791,"patch_set_number":5,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"561cce98e1b37d4e72672a89a33de3823bb49a66":{"kind":"REWORK","_number":3,"created":"2024-02-13 15:53:39.000000000","uploader":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"ref":"refs/changes/93/10793/3","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/93/10793/3","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/93/10793/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/93/10793/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/93/10793/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/93/10793/3"}}},"commit":{"parents":[{"commit":"c08eed03655d3b07bf3383b1f8620fe707e9d41b","subject":"feat(tvix/glue/known_paths): add get_drv_by_output_path","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dc08eed03655d3b07bf3383b1f8620fe707e9d41b"}]}],"author":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-01-16 19:14:38.000000000","tz":120},"committer":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-02-13 15:52:51.000000000","tz":420},"subject":"feat(tvix/glue): drive builds on IO","message":"feat(tvix/glue): drive builds on IO\n\nThat\u0027s one possible abstraction to drive builds.\nWhenever IO into a store path is requested, we look up the root node,\nand in case we don\u0027t have it in PathInfoService, but KnownPaths gives us\na Derivation for that output path, trigger a build and await the result.\n\nThis recursively might trigger builds for parent paths if they haven\u0027t\nbeen built yet.\n\nAnother option would be to simply expose a PathInfoService interface for\na builder too, and loop all building into IO via PathInfoService\ncomposition - but let\u0027s start with something.\n\nNote tvix-cli doesn\u0027t have a configurable BuildService yet, it\u0027s plugged\nto the DummyBuildService, so whenever it needs to do a build, it\u0027ll fail,\nbut that\u0027s how it can be provoked:\n\n```\n(builtins.readFile (import \u003cnixpkgs\u003e {}).hello.outPath + \"/bin/hello\")\n[…]\nerror[E029]: I/O error: /nix/store/cg8a576pz2yfc1wbhxm1zy4x7lrk8pix-hello-2.12.1: builds are not supported with DummyBuildService\n --\u003e [code]:1:2\n  |\n1 | (builtins.readFile (import \u003cnixpkgs\u003e {}).hello.outPath + \"/bin/hello\")\n  |  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n```\n\nNote how this fails, while pure output path calculation\n(`(import \u003cnixpkgs\u003e {}).hello.outPath + \"/bin/hello\")`) still succeeds.\n\nChange-Id: Id2075d8a2b18554d0dd608b4b29146a8cd411e7f\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d561cce98e1b37d4e72672a89a33de3823bb49a66"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d561cce98e1b37d4e72672a89a33de3823bb49a66"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"c08eed03655d3b07bf3383b1f8620fe707e9d41b","is_merged_in_target_branch":false,"change_id":"I89858d91bffc2ef7f1d86314c16fa4f850f21426","change_number":10791,"patch_set_number":6,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"821e1158555463fe45b6ae09813039e8fcd474a2":{"kind":"TRIVIAL_REBASE","_number":4,"created":"2024-02-13 16:12:50.000000000","uploader":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"ref":"refs/changes/93/10793/4","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/93/10793/4","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/93/10793/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/93/10793/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/93/10793/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/93/10793/4"}}},"commit":{"parents":[{"commit":"c92d98eb0f18a9ac4d4aae3edc20a49fe41fcc56","subject":"feat(tvix/glue/known_paths): add get_drv_by_output_path","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dc92d98eb0f18a9ac4d4aae3edc20a49fe41fcc56"}]}],"author":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-01-16 19:14:38.000000000","tz":120},"committer":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-02-13 16:06:51.000000000","tz":420},"subject":"feat(tvix/glue): drive builds on IO","message":"feat(tvix/glue): drive builds on IO\n\nThat\u0027s one possible abstraction to drive builds.\nWhenever IO into a store path is requested, we look up the root node,\nand in case we don\u0027t have it in PathInfoService, but KnownPaths gives us\na Derivation for that output path, trigger a build and await the result.\n\nThis recursively might trigger builds for parent paths if they haven\u0027t\nbeen built yet.\n\nAnother option would be to simply expose a PathInfoService interface for\na builder too, and loop all building into IO via PathInfoService\ncomposition - but let\u0027s start with something.\n\nNote tvix-cli doesn\u0027t have a configurable BuildService yet, it\u0027s plugged\nto the DummyBuildService, so whenever it needs to do a build, it\u0027ll fail,\nbut that\u0027s how it can be provoked:\n\n```\n(builtins.readFile (import \u003cnixpkgs\u003e {}).hello.outPath + \"/bin/hello\")\n[…]\nerror[E029]: I/O error: /nix/store/cg8a576pz2yfc1wbhxm1zy4x7lrk8pix-hello-2.12.1: builds are not supported with DummyBuildService\n --\u003e [code]:1:2\n  |\n1 | (builtins.readFile (import \u003cnixpkgs\u003e {}).hello.outPath + \"/bin/hello\")\n  |  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n```\n\nNote how this fails, while pure output path calculation\n(`(import \u003cnixpkgs\u003e {}).hello.outPath + \"/bin/hello\")`) still succeeds.\n\nChange-Id: Id2075d8a2b18554d0dd608b4b29146a8cd411e7f\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d821e1158555463fe45b6ae09813039e8fcd474a2"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d821e1158555463fe45b6ae09813039e8fcd474a2"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"c92d98eb0f18a9ac4d4aae3edc20a49fe41fcc56","is_merged_in_target_branch":false,"change_id":"I89858d91bffc2ef7f1d86314c16fa4f850f21426","change_number":10791,"patch_set_number":7,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"74ea75facdf6c1e1142b2bfe6258b8f1d770fb26":{"kind":"REWORK","_number":5,"created":"2024-02-17 09:06:54.000000000","uploader":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"ref":"refs/changes/93/10793/5","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/93/10793/5","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/93/10793/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/93/10793/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/93/10793/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/93/10793/5"}}},"commit":{"parents":[{"commit":"3379b357d9c7421818a2c32e68e35a8d13908c5a","subject":"feat(tvix/cli): add tracing-tracy","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d3379b357d9c7421818a2c32e68e35a8d13908c5a"}]}],"author":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-01-16 19:14:38.000000000","tz":120},"committer":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-02-17 09:06:12.000000000","tz":420},"subject":"feat(tvix/glue): drive builds on IO","message":"feat(tvix/glue): drive builds on IO\n\nThat\u0027s one possible abstraction to drive builds.\nWhenever IO into a store path is requested, we look up the root node,\nand in case we don\u0027t have it in PathInfoService, but KnownPaths gives us\na Derivation for that output path, trigger a build and await the result.\n\nThis recursively might trigger builds for parent paths if they haven\u0027t\nbeen built yet.\n\nAnother option would be to simply expose a PathInfoService interface for\na builder too, and loop all building into IO via PathInfoService\ncomposition - but let\u0027s start with something.\n\nNote tvix-cli doesn\u0027t have a configurable BuildService yet, it\u0027s plugged\nto the DummyBuildService, so whenever it needs to do a build, it\u0027ll fail,\nbut that\u0027s how it can be provoked:\n\n```\n(builtins.readFile (import \u003cnixpkgs\u003e {}).hello.outPath + \"/bin/hello\")\n[…]\nerror[E029]: I/O error: /nix/store/cg8a576pz2yfc1wbhxm1zy4x7lrk8pix-hello-2.12.1: builds are not supported with DummyBuildService\n --\u003e [code]:1:2\n  |\n1 | (builtins.readFile (import \u003cnixpkgs\u003e {}).hello.outPath + \"/bin/hello\")\n  |  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n```\n\nNote how this fails, while pure output path calculation\n(`(import \u003cnixpkgs\u003e {}).hello.outPath + \"/bin/hello\")`) still succeeds.\n\nChange-Id: Id2075d8a2b18554d0dd608b4b29146a8cd411e7f\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d74ea75facdf6c1e1142b2bfe6258b8f1d770fb26"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d74ea75facdf6c1e1142b2bfe6258b8f1d770fb26"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"3379b357d9c7421818a2c32e68e35a8d13908c5a","is_merged_in_target_branch":false,"change_id":"Ica824496728fa276ceae3f7a9754be0166e6558f","change_number":10952,"patch_set_number":2,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"3cf387738ebf2a9d3e3943e9a77ea94f7265ddad":{"kind":"REWORK","_number":6,"created":"2024-02-18 08:15:25.000000000","uploader":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"ref":"refs/changes/93/10793/6","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/93/10793/6","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/93/10793/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/93/10793/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/93/10793/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/93/10793/6"}}},"commit":{"parents":[{"commit":"33e68496f25e2a060f72088284a90be5299c3ba5","subject":"fix(tvix/cli): set max level to info on release mode","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d33e68496f25e2a060f72088284a90be5299c3ba5"}]}],"author":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-01-16 19:14:38.000000000","tz":120},"committer":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-02-18 08:13:40.000000000","tz":420},"subject":"feat(tvix/glue): drive builds on IO","message":"feat(tvix/glue): drive builds on IO\n\nThat\u0027s one possible abstraction to drive builds.\nWhenever IO into a store path is requested, we look up the root node,\nand in case we don\u0027t have it in PathInfoService, but KnownPaths gives us\na Derivation for that output path, trigger a build and await the result.\n\nThis recursively might trigger builds for parent paths if they haven\u0027t\nbeen built yet.\n\nAnother option would be to simply expose a PathInfoService interface for\na builder too, and loop all building into IO via PathInfoService\ncomposition - but let\u0027s start with something.\n\nNote tvix-cli doesn\u0027t have a configurable BuildService yet, it\u0027s plugged\nto the DummyBuildService, so whenever it needs to do a build, it\u0027ll fail,\nbut that\u0027s how it can be provoked:\n\n```\n(builtins.readFile (import \u003cnixpkgs\u003e {}).hello.outPath + \"/bin/hello\")\n[…]\nerror[E029]: I/O error: /nix/store/cg8a576pz2yfc1wbhxm1zy4x7lrk8pix-hello-2.12.1: builds are not supported with DummyBuildService\n --\u003e [code]:1:2\n  |\n1 | (builtins.readFile (import \u003cnixpkgs\u003e {}).hello.outPath + \"/bin/hello\")\n  |  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n```\n\nNote how this fails, while pure output path calculation\n(`(import \u003cnixpkgs\u003e {}).hello.outPath + \"/bin/hello\")`) still succeeds.\n\nChange-Id: Id2075d8a2b18554d0dd608b4b29146a8cd411e7f\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d3cf387738ebf2a9d3e3943e9a77ea94f7265ddad"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d3cf387738ebf2a9d3e3943e9a77ea94f7265ddad"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"33e68496f25e2a060f72088284a90be5299c3ba5","is_merged_in_target_branch":true,"change_id":"I57d4282b4e19a8d44f68da2f15c7534dd3e08977","change_number":10955,"patch_set_number":2,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"ea4f98139aff2ee6ee7e79437cde07328e2fbc1b":{"kind":"REWORK","_number":7,"created":"2024-02-18 08:44:50.000000000","uploader":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"ref":"refs/changes/93/10793/7","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/93/10793/7","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/93/10793/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/93/10793/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/93/10793/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/93/10793/7"}}},"commit":{"parents":[{"commit":"6f8eda99bdcda21e62ad0be70f504da28f43c45e","subject":"fix(tvix/cli): regenerate Cargo.nix","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d6f8eda99bdcda21e62ad0be70f504da28f43c45e"}]}],"author":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-01-16 19:14:38.000000000","tz":120},"committer":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-02-18 08:44:37.000000000","tz":420},"subject":"feat(tvix/glue): drive builds on IO","message":"feat(tvix/glue): drive builds on IO\n\nThat\u0027s one possible abstraction to drive builds.\nWhenever IO into a store path is requested, we look up the root node,\nand in case we don\u0027t have it in PathInfoService, but KnownPaths gives us\na Derivation for that output path, trigger a build and await the result.\n\nThis recursively might trigger builds for parent paths if they haven\u0027t\nbeen built yet.\n\nAnother option would be to simply expose a PathInfoService interface for\na builder too, and loop all building into IO via PathInfoService\ncomposition - but let\u0027s start with something.\n\nNote tvix-cli doesn\u0027t have a configurable BuildService yet, it\u0027s plugged\nto the DummyBuildService, so whenever it needs to do a build, it\u0027ll fail,\nbut that\u0027s how it can be provoked:\n\n```\n(builtins.readFile (import \u003cnixpkgs\u003e {}).hello.outPath + \"/bin/hello\")\n[…]\nerror[E029]: I/O error: /nix/store/cg8a576pz2yfc1wbhxm1zy4x7lrk8pix-hello-2.12.1: builds are not supported with DummyBuildService\n --\u003e [code]:1:2\n  |\n1 | (builtins.readFile (import \u003cnixpkgs\u003e {}).hello.outPath + \"/bin/hello\")\n  |  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n```\n\nNote how this fails, while pure output path calculation\n(`(import \u003cnixpkgs\u003e {}).hello.outPath + \"/bin/hello\")`) still succeeds.\n\nChange-Id: Id2075d8a2b18554d0dd608b4b29146a8cd411e7f\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dea4f98139aff2ee6ee7e79437cde07328e2fbc1b"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dea4f98139aff2ee6ee7e79437cde07328e2fbc1b"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"6f8eda99bdcda21e62ad0be70f504da28f43c45e","is_merged_in_target_branch":false,"change_id":"Ia7715d69b3b6316e612c1e3947c6ab819c7bf843","change_number":10960,"patch_set_number":1,"change_status":"MERGED"}],"branch":"refs/heads/canon"},"c6605992c06bf6adc93a7bb19b0ed34b8c213bf3":{"kind":"REWORK","_number":8,"created":"2024-02-18 08:59:49.000000000","uploader":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"ref":"refs/changes/93/10793/8","fetch":{"anonymous http":{"url":"https://cl.tvl.fyi/depot","ref":"refs/changes/93/10793/8","commands":{"Checkout":"git fetch https://cl.tvl.fyi/depot refs/changes/93/10793/8 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://cl.tvl.fyi/depot refs/changes/93/10793/8 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://cl.tvl.fyi/depot refs/changes/93/10793/8 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://cl.tvl.fyi/depot refs/changes/93/10793/8"}}},"commit":{"parents":[{"commit":"6b22d4e1faec2b81173fc7029a5107cbe7db1a50","subject":"fix(tvix/cli): regenerate Cargo.nix","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003d6b22d4e1faec2b81173fc7029a5107cbe7db1a50"}]}],"author":{"name":"Florian Klink","email":"flokli@flokli.de","date":"2024-01-16 19:14:38.000000000","tz":120},"committer":{"name":"flokli","email":"flokli@flokli.de","date":"2024-02-18 08:59:49.000000000","tz":0},"subject":"feat(tvix/glue): drive builds on IO","message":"feat(tvix/glue): drive builds on IO\n\nThat\u0027s one possible abstraction to drive builds.\nWhenever IO into a store path is requested, we look up the root node,\nand in case we don\u0027t have it in PathInfoService, but KnownPaths gives us\na Derivation for that output path, trigger a build and await the result.\n\nThis recursively might trigger builds for parent paths if they haven\u0027t\nbeen built yet.\n\nAnother option would be to simply expose a PathInfoService interface for\na builder too, and loop all building into IO via PathInfoService\ncomposition - but let\u0027s start with something.\n\nNote tvix-cli doesn\u0027t have a configurable BuildService yet, it\u0027s plugged\nto the DummyBuildService, so whenever it needs to do a build, it\u0027ll fail,\nbut that\u0027s how it can be provoked:\n\n```\n(builtins.readFile (import \u003cnixpkgs\u003e {}).hello.outPath + \"/bin/hello\")\n[…]\nerror[E029]: I/O error: /nix/store/cg8a576pz2yfc1wbhxm1zy4x7lrk8pix-hello-2.12.1: builds are not supported with DummyBuildService\n --\u003e [code]:1:2\n  |\n1 | (builtins.readFile (import \u003cnixpkgs\u003e {}).hello.outPath + \"/bin/hello\")\n  |  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n```\n\nNote how this fails, while pure output path calculation\n(`(import \u003cnixpkgs\u003e {}).hello.outPath + \"/bin/hello\")`) still succeeds.\n\nChange-Id: Id2075d8a2b18554d0dd608b4b29146a8cd411e7f\nReviewed-on: https://cl.tvl.fyi/c/depot/+/10793\nReviewed-by: raitobezarius \u003ctvl@lahfa.xyz\u003e\nTested-by: BuildkiteCI\n","web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dc6605992c06bf6adc93a7bb19b0ed34b8c213bf3"}],"resolve_conflicts_web_links":[{"name":"cgit","tooltip":"Open in GitWeb","url":"https://code.tvl.fyi/commit/?id\u003dc6605992c06bf6adc93a7bb19b0ed34b8c213bf3"}]},"parents_data":[{"branch_name":"refs/heads/canon","commit_id":"6b22d4e1faec2b81173fc7029a5107cbe7db1a50","is_merged_in_target_branch":true,"change_id":"Ia7715d69b3b6316e612c1e3947c6ab819c7bf843","change_number":10960,"patch_set_number":2,"change_status":"MERGED"}],"branch":"refs/heads/canon","description":"Rebase"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~PrologRule","status":"CLOSED","labels":[{"label":"Autosubmit","status":"MAY"},{"label":"Conformant-Commit-Message","status":"OK","applied_by":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"}},{"label":"All-Comments-Resolved","status":"OK","applied_by":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"}},{"label":"Verified","status":"OK","applied_by":{"_account_id":1000014,"name":"BuildkiteCI","username":"buildkite","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"OK","applied_by":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"}}]},{"rule_name":"Code-Owners","status":"CLOSED"}],"submit_requirements":[{"name":"All-Comments-Resolved","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:All-Comments-Resolved\u003dgerrit~PrologRule","fulfilled":true,"status":"PASS","passing_atoms":["label:All-Comments-Resolved\u003dgerrit~PrologRule"],"failing_atoms":[]}},{"name":"Verified","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Verified\u003dgerrit~PrologRule","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dgerrit~PrologRule"],"failing_atoms":[]}},{"name":"Code-Owners","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"rule:Code-Owners","fulfilled":true,"status":"PASS","passing_atoms":["Code-Owners"],"failing_atoms":[]}},{"name":"Conformant-Commit-Message","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Conformant-Commit-Message\u003dgerrit~PrologRule","fulfilled":true,"status":"PASS","passing_atoms":["label:Conformant-Commit-Message\u003dgerrit~PrologRule"],"failing_atoms":[]}},{"name":"Code-Review","status":"SATISFIED","is_legacy":true,"submittability_expression_result":{"expression":"label:Code-Review\u003dgerrit~PrologRule","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dgerrit~PrologRule"],"failing_atoms":[]}}]}
