about summary refs log tree commit diff
path: root/tvix/build
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2024-10-18T19·42+0200
committerclbot <clbot@tvl.fyi>2024-10-19T09·35+0000
commit3fda90602d3de7a720149f090422c4da9d12d31d (patch)
tree2d43a05d1eb9fcbdb2404d205a40ae8d21d7f89b /tvix/build
parent9c223450199b466c535f2b715ad68f1f295fa7dc (diff)
refactor(tvix/castore): add try_into_anonymous_node, rename to try_* r/8836
We have two places where we parse protos and want their names to be
empty:

 - Receiving a root node in a nar-bridge NAR request
 - Processing the CalculateNAR gRPC call

We don't have any place where we want to keep a name as bytes::Bytes
around, yet we used the `into_name_bytes_and_node` method.

It was also a bit wrongly named - it wasn't very clear the name was
not validated, and that the function may fail.

This moves the "splitting off the name as bytes::Bytes" part into a
private helper, only leaving the `try_into_name_and_node` and
`try_into_anonymous_node` methods around.

Change-Id: I2c7fd9871d49ec67450d7efa6a30d96197fb319c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/12664
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
Reviewed-by: Marijan Petričević <marijan.petricevic94@gmail.com>
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
Diffstat (limited to 'tvix/build')
-rw-r--r--tvix/build/src/buildservice/oci.rs2
-rw-r--r--tvix/build/src/oci/spec.rs2
-rw-r--r--tvix/build/src/proto/mod.rs2
3 files changed, 3 insertions, 3 deletions
diff --git a/tvix/build/src/buildservice/oci.rs b/tvix/build/src/buildservice/oci.rs
index 7b88518e924f..89efbb4285d0 100644
--- a/tvix/build/src/buildservice/oci.rs
+++ b/tvix/build/src/buildservice/oci.rs
@@ -131,7 +131,7 @@ where
         let root_nodes: BTreeMap<PathComponent, Node> =
             BTreeMap::from_iter(request.inputs.iter().map(|input| {
                 // We know from validation this is Some.
-                input.clone().into_name_and_node().unwrap()
+                input.clone().try_into_name_and_node().unwrap()
             }));
         let patterns = ReferencePattern::new(request.refscan_needles.clone());
         // NOTE: impl Drop for FuseDaemon unmounts, so if the call is cancelled, umount.
diff --git a/tvix/build/src/oci/spec.rs b/tvix/build/src/oci/spec.rs
index ce70ad91e9a9..e80e442f0350 100644
--- a/tvix/build/src/oci/spec.rs
+++ b/tvix/build/src/oci/spec.rs
@@ -266,7 +266,7 @@ fn configure_mounts<'a>(
     for input in inputs {
         let (input_name, _input) = input
             .clone()
-            .into_name_and_node()
+            .try_into_name_and_node()
             .expect("invalid input name");
 
         let input_name = std::str::from_utf8(input_name.as_ref()).expect("invalid input name");
diff --git a/tvix/build/src/proto/mod.rs b/tvix/build/src/proto/mod.rs
index e6c94f5b56c9..0e106bb4cf63 100644
--- a/tvix/build/src/proto/mod.rs
+++ b/tvix/build/src/proto/mod.rs
@@ -128,7 +128,7 @@ impl TryFrom<BuildRequest> for crate::buildservice::BuildRequest {
         for (i, node) in value.inputs.iter().enumerate() {
             let (name, node) = node
                 .clone()
-                .into_name_and_node()
+                .try_into_name_and_node()
                 .map_err(|e| ValidateBuildRequestError::InvalidInputNode(i, e))?;
 
             if name.as_ref() <= last_name.as_ref() {