)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},"change_message_id":"c1be624e976d6aec2a741a123a4c9fe292153727","unresolved":true,"context_lines":[{"line_number":1,"context_line":"Parent:     b0d44c30 (refactor(tvix/castore): break down `ingest_path` into `ingest_entries`)"},{"line_number":2,"context_line":"Author:     Ryan Lahfa \u003ctvl@lahfa.xyz\u003e"},{"line_number":3,"context_line":"AuthorDate: 2024-01-08 09:50:13 +0100"},{"line_number":4,"context_line":"Commit:     Ryan Lahfa \u003ctvl@lahfa.xyz\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"4436abc8_535b1429","line":1,"updated":"2024-01-18 14:53:30.000000000","message":"Still need to edit this message.","commit_id":"e771d5e42b724ebff025734e8f7acbd87f7e5bc4"},{"author":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},"change_message_id":"ceeaf225d242a5d9c09efc16caf22f48312496a4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Parent:     b0d44c30 (refactor(tvix/castore): break down `ingest_path` into `ingest_entries`)"},{"line_number":2,"context_line":"Author:     Ryan Lahfa \u003ctvl@lahfa.xyz\u003e"},{"line_number":3,"context_line":"AuthorDate: 2024-01-08 09:50:13 +0100"},{"line_number":4,"context_line":"Commit:     Ryan Lahfa \u003ctvl@lahfa.xyz\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"a3e60a94_11f88306","line":1,"in_reply_to":"4436abc8_535b1429","updated":"2024-01-20 00:01:24.000000000","message":"Done","commit_id":"e771d5e42b724ebff025734e8f7acbd87f7e5bc4"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},"change_message_id":"c1be624e976d6aec2a741a123a4c9fe292153727","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"77e94744_3ae31410","updated":"2024-01-18 14:53:30.000000000","message":"Still need to edit the commit me","commit_id":"e771d5e42b724ebff025734e8f7acbd87f7e5bc4"}],"tvix/store/src/import.rs":[{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"52ea61c5a0ca516d142a892653a1664a1a5f9ea0","unresolved":true,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"/// Imports a given path on the filesystem into the store, and returns the"},{"line_number":60,"context_line":"/// [`StorePath`] describing the path, that was sent to"},{"line_number":61,"context_line":"/// [`PathInfoService`]."},{"line_number":62,"context_line":"#[instrument(skip_all, fields(path\u003d?path), err)]"},{"line_number":63,"context_line":"pub async fn import_path\u003cBS, DS, PS, P\u003e("},{"line_number":64,"context_line":"    path: P,"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"f4271a2d_aa0219fd","line":61,"updated":"2024-01-08 09:41:52.000000000","message":"This only does nar-based import, and conflates output calculation concerns. It should probably be specifically named to reflect this fact, it\u0027s unusable to e.g. ingest build results.","commit_id":"6c6558b18fc704099f1eff3405a8680a4fc6dd48"},{"author":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},"change_message_id":"d5f892321b35b6b29b2f38a45ba3b21a2d93638b","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"/// Imports a given path on the filesystem into the store, and returns the"},{"line_number":60,"context_line":"/// [`StorePath`] describing the path, that was sent to"},{"line_number":61,"context_line":"/// [`PathInfoService`]."},{"line_number":62,"context_line":"#[instrument(skip_all, fields(path\u003d?path), err)]"},{"line_number":63,"context_line":"pub async fn import_path\u003cBS, DS, PS, P\u003e("},{"line_number":64,"context_line":"    path: P,"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"0653a230_f7ad144a","line":61,"in_reply_to":"f4271a2d_aa0219fd","updated":"2024-01-17 08:07:44.000000000","message":"Done","commit_id":"6c6558b18fc704099f1eff3405a8680a4fc6dd48"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"52ea61c5a0ca516d142a892653a1664a1a5f9ea0","unresolved":true,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"/// Transforms a given path and returns its corresponding [`Node`] by interacting with"},{"line_number":80,"context_line":"/// [`BlobService`] and [`DirectoryService`] for ingestion."},{"line_number":81,"context_line":"pub async fn path_to_root_node\u003cP, BS, DS\u003e("},{"line_number":82,"context_line":"    path: P,"},{"line_number":83,"context_line":"    blob_service: BS,"},{"line_number":84,"context_line":"    directory_service: DS,"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"80127643_3cad9853","line":81,"updated":"2024-01-08 09:41:52.000000000","message":"This is just calling tvix_castore::import::ingest_path, why the separate function?","commit_id":"6c6558b18fc704099f1eff3405a8680a4fc6dd48"},{"author":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},"change_message_id":"d5f892321b35b6b29b2f38a45ba3b21a2d93638b","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"/// Transforms a given path and returns its corresponding [`Node`] by interacting with"},{"line_number":80,"context_line":"/// [`BlobService`] and [`DirectoryService`] for ingestion."},{"line_number":81,"context_line":"pub async fn path_to_root_node\u003cP, BS, DS\u003e("},{"line_number":82,"context_line":"    path: P,"},{"line_number":83,"context_line":"    blob_service: BS,"},{"line_number":84,"context_line":"    directory_service: DS,"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"0221a3da_7f9cfb88","line":81,"in_reply_to":"80127643_3cad9853","updated":"2024-01-17 08:07:44.000000000","message":"Done","commit_id":"6c6558b18fc704099f1eff3405a8680a4fc6dd48"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"52ea61c5a0ca516d142a892653a1664a1a5f9ea0","unresolved":true,"context_lines":[{"line_number":94,"context_line":"}"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"/// Imports a root [`Node`] which was obtained at a given path using an [`PathInfoService`] and"},{"line_number":97,"context_line":"/// returns a [`StorePath`] corresponding to that import."},{"line_number":98,"context_line":"pub async fn import_root_node\u003cPS\u003e("},{"line_number":99,"context_line":"    path_info_service: PS,"},{"line_number":100,"context_line":"    path: \u0026Path,"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"dff76a93_9fcd5e14","line":97,"updated":"2024-01-08 09:41:52.000000000","message":"The comment is gibberish and doesn\u0027t describe what it\u0027s doing. Specifically it\u0027s creating and inserting a PathInfo struct, using NAR-based path calculation, and I don\u0027t think it should be sliced that way. See comment right below.","commit_id":"6c6558b18fc704099f1eff3405a8680a4fc6dd48"},{"author":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},"change_message_id":"7322fd8a6369b3f34b3dd3d70cd176934e5d1473","unresolved":false,"context_lines":[{"line_number":94,"context_line":"}"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"/// Imports a root [`Node`] which was obtained at a given path using an [`PathInfoService`] and"},{"line_number":97,"context_line":"/// returns a [`StorePath`] corresponding to that import."},{"line_number":98,"context_line":"pub async fn import_root_node\u003cPS\u003e("},{"line_number":99,"context_line":"    path_info_service: PS,"},{"line_number":100,"context_line":"    path: \u0026Path,"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"9e4685e3_f63aa0f0","line":97,"in_reply_to":"dff76a93_9fcd5e14","updated":"2024-01-19 23:37:54.000000000","message":"Done","commit_id":"6c6558b18fc704099f1eff3405a8680a4fc6dd48"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"52ea61c5a0ca516d142a892653a1664a1a5f9ea0","unresolved":true,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"/// Imports a root [`Node`] which was obtained at a given path using an [`PathInfoService`] and"},{"line_number":97,"context_line":"/// returns a [`StorePath`] corresponding to that import."},{"line_number":98,"context_line":"pub async fn import_root_node\u003cPS\u003e("},{"line_number":99,"context_line":"    path_info_service: PS,"},{"line_number":100,"context_line":"    path: \u0026Path,"},{"line_number":101,"context_line":"    root_node: Node,"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"9725eb13_196daf53","line":98,"updated":"2024-01-08 09:41:52.000000000","message":"This constructs a NAR-based PathInfo object for a root node, and inserts it into the PathInfoService.\n\nThere\u0027s however other ways how PathInfos can appear, for example for input-addressed builds.\n\nI\u0027d feel more comfortable having one or multiple helper functions returing a PathInfo-to-insert, maybe just accepting the name of the root node as a parameter. There\u0027s no need the whole path is taken as an argument.\n\nThe consumer of these functions can do the nar calculation (if necessary), and populate the fields. The consumer can also populate references, in case it\u0027s not a pure NAR-CA path.","commit_id":"6c6558b18fc704099f1eff3405a8680a4fc6dd48"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"24e52cbd775c2447f175f8b62c67a6e4fe5aee0a","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"/// Imports a root [`Node`] which was obtained at a given path using an [`PathInfoService`] and"},{"line_number":97,"context_line":"/// returns a [`StorePath`] corresponding to that import."},{"line_number":98,"context_line":"pub async fn import_root_node\u003cPS\u003e("},{"line_number":99,"context_line":"    path_info_service: PS,"},{"line_number":100,"context_line":"    path: \u0026Path,"},{"line_number":101,"context_line":"    root_node: Node,"}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"9a52d20f_0ad39590","line":98,"in_reply_to":"9725eb13_196daf53","updated":"2024-01-16 07:22:37.000000000","message":"Let\u0027s leave this for later.","commit_id":"6c6558b18fc704099f1eff3405a8680a4fc6dd48"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"52ea61c5a0ca516d142a892653a1664a1a5f9ea0","unresolved":true,"context_lines":[{"line_number":140,"context_line":"        }),"},{"line_number":141,"context_line":"    };"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    // put into [PathInfoService], and return the PathInfo that we get back"},{"line_number":144,"context_line":"    // from there (it might contain additional signatures)."},{"line_number":145,"context_line":"    let _path_info \u003d path_info_service.put(path_info).await?;"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"a14b972f_852ffbe8","line":143,"updated":"2024-01-08 09:41:52.000000000","message":"The comment is outdated, we don\u0027t return it (anymore?).","commit_id":"6c6558b18fc704099f1eff3405a8680a4fc6dd48"},{"author":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},"change_message_id":"7322fd8a6369b3f34b3dd3d70cd176934e5d1473","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        }),"},{"line_number":141,"context_line":"    };"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    // put into [PathInfoService], and return the PathInfo that we get back"},{"line_number":144,"context_line":"    // from there (it might contain additional signatures)."},{"line_number":145,"context_line":"    let _path_info \u003d path_info_service.put(path_info).await?;"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-rustsrc","patch_set":2,"id":"17694d1d_cb73d4c9","line":143,"in_reply_to":"a14b972f_852ffbe8","updated":"2024-01-19 23:37:54.000000000","message":"Done","commit_id":"6c6558b18fc704099f1eff3405a8680a4fc6dd48"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"9f488f875ce523889b2e3ff3ddfdca6ae2ff1044","unresolved":true,"context_lines":[{"line_number":45,"context_line":"/// Transform a path into its base name and returns an [`std::io::Error`] if it is `..` or if the"},{"line_number":46,"context_line":"/// basename is not valid unicode."},{"line_number":47,"context_line":"#[inline]"},{"line_number":48,"context_line":"pub fn path_to_name(path: \u0026Path) -\u003e std::io::Result\u003c\u0026str\u003e {"},{"line_number":49,"context_line":"    path.file_name()"},{"line_number":50,"context_line":"        .and_then(|file_name| file_name.to_str())"},{"line_number":51,"context_line":"        .ok_or_else(|| {"}],"source_content_type":"text/x-rustsrc","patch_set":16,"id":"f3827819_4912e36c","line":48,"updated":"2024-01-18 15:20:29.000000000","message":"NOTE: I think we need the same logic when when importing via tvix-eval and EvalIO in the case of path interpolation. Did you make sure we use it both? How does it treat a .. at the end?\n\nThis also needs some unit tests.","commit_id":"e771d5e42b724ebff025734e8f7acbd87f7e5bc4"},{"author":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},"change_message_id":"7322fd8a6369b3f34b3dd3d70cd176934e5d1473","unresolved":false,"context_lines":[{"line_number":45,"context_line":"/// Transform a path into its base name and returns an [`std::io::Error`] if it is `..` or if the"},{"line_number":46,"context_line":"/// basename is not valid unicode."},{"line_number":47,"context_line":"#[inline]"},{"line_number":48,"context_line":"pub fn path_to_name(path: \u0026Path) -\u003e std::io::Result\u003c\u0026str\u003e {"},{"line_number":49,"context_line":"    path.file_name()"},{"line_number":50,"context_line":"        .and_then(|file_name| file_name.to_str())"},{"line_number":51,"context_line":"        .ok_or_else(|| {"}],"source_content_type":"text/x-rustsrc","patch_set":16,"id":"17971404_2e8dfc64","line":48,"in_reply_to":"f3827819_4912e36c","updated":"2024-01-19 23:37:54.000000000","message":"This is what is happening @ same logic, yes. `..` at the end are failed as invalid inputs.\n\nI added clear unit tests.","commit_id":"e771d5e42b724ebff025734e8f7acbd87f7e5bc4"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"9f488f875ce523889b2e3ff3ddfdca6ae2ff1044","unresolved":true,"context_lines":[{"line_number":57,"context_line":"}"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"/// Transforms a given path and returns its corresponding [`Node`] by interacting with"},{"line_number":60,"context_line":"/// [`BlobService`] and [`DirectoryService`] for ingestion."},{"line_number":61,"context_line":"/// Returns the path information object for a NAR-style (recursive) fixed-output path."},{"line_number":62,"context_line":"#[inline]"},{"line_number":63,"context_line":"pub fn derive_recursive_fod_path_info("}],"source_content_type":"text/x-rustsrc","patch_set":16,"id":"36592146_3a067e08","line":60,"updated":"2024-01-18 15:20:29.000000000","message":"it doesn\u0027t interact with any service, docstring needs updating (and maybe function renamed?)","commit_id":"e771d5e42b724ebff025734e8f7acbd87f7e5bc4"},{"author":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},"change_message_id":"7322fd8a6369b3f34b3dd3d70cd176934e5d1473","unresolved":false,"context_lines":[{"line_number":57,"context_line":"}"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"/// Transforms a given path and returns its corresponding [`Node`] by interacting with"},{"line_number":60,"context_line":"/// [`BlobService`] and [`DirectoryService`] for ingestion."},{"line_number":61,"context_line":"/// Returns the path information object for a NAR-style (recursive) fixed-output path."},{"line_number":62,"context_line":"#[inline]"},{"line_number":63,"context_line":"pub fn derive_recursive_fod_path_info("}],"source_content_type":"text/x-rustsrc","patch_set":16,"id":"72715e6b_e32077a3","line":60,"in_reply_to":"36592146_3a067e08","updated":"2024-01-19 23:37:54.000000000","message":"Done","commit_id":"e771d5e42b724ebff025734e8f7acbd87f7e5bc4"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"9f488f875ce523889b2e3ff3ddfdca6ae2ff1044","unresolved":true,"context_lines":[{"line_number":89,"context_line":"/// Ingest the given path [`path`] and register the resulting output path in the"},{"line_number":90,"context_line":"/// [`PathInfoService`] as a recursive fixed output NAR."},{"line_number":91,"context_line":"#[instrument(skip_all, fields(path\u003d?path), err)]"},{"line_number":92,"context_line":"pub async fn import_path_as_recursive_fod\u003cBS, DS, PS, P\u003e("},{"line_number":93,"context_line":"    path: P,"},{"line_number":94,"context_line":"    blob_service: BS,"},{"line_number":95,"context_line":"    directory_service: DS,"}],"source_content_type":"text/x-rustsrc","patch_set":16,"id":"1c4cdb9c_18694b09","line":92,"updated":"2024-01-18 15:20:29.000000000","message":"following the naming scheme of cahash, we call these \"NAR\", not recursive - so maybe import_path_as_nar_ca is more appropriate?","commit_id":"e771d5e42b724ebff025734e8f7acbd87f7e5bc4"},{"author":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},"change_message_id":"7322fd8a6369b3f34b3dd3d70cd176934e5d1473","unresolved":false,"context_lines":[{"line_number":89,"context_line":"/// Ingest the given path [`path`] and register the resulting output path in the"},{"line_number":90,"context_line":"/// [`PathInfoService`] as a recursive fixed output NAR."},{"line_number":91,"context_line":"#[instrument(skip_all, fields(path\u003d?path), err)]"},{"line_number":92,"context_line":"pub async fn import_path_as_recursive_fod\u003cBS, DS, PS, P\u003e("},{"line_number":93,"context_line":"    path: P,"},{"line_number":94,"context_line":"    blob_service: BS,"},{"line_number":95,"context_line":"    directory_service: DS,"}],"source_content_type":"text/x-rustsrc","patch_set":16,"id":"7107cd4b_b2ec461a","line":92,"in_reply_to":"1c4cdb9c_18694b09","updated":"2024-01-19 23:37:54.000000000","message":"Done","commit_id":"e771d5e42b724ebff025734e8f7acbd87f7e5bc4"},{"author":{"_account_id":1000036,"name":"flokli","email":"flokli@flokli.de","username":"flokli"},"change_message_id":"9f488f875ce523889b2e3ff3ddfdca6ae2ff1044","unresolved":true,"context_lines":[{"line_number":107,"context_line":"    // Ask the PathInfoService for the NAR size and sha256"},{"line_number":108,"context_line":"    let (nar_size, nar_sha256) \u003d path_info_service.as_ref().calculate_nar(\u0026root_node).await?;"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    // Calculate the output path. This might still fail, as some names are illegal."},{"line_number":111,"context_line":"    let name \u003d path_to_name(path.as_ref())?;"},{"line_number":112,"context_line":"    let output_path \u003d store_path::build_nar_based_store_path(\u0026nar_sha256, name).map_err(|_| {"},{"line_number":113,"context_line":"        std::io::Error::new("}],"source_content_type":"text/x-rustsrc","patch_set":16,"id":"83b4bc72_f438dd87","line":110,"updated":"2024-01-18 15:20:29.000000000","message":"Can we detect these cases already upfront, just by looking at the path to be imported?","commit_id":"e771d5e42b724ebff025734e8f7acbd87f7e5bc4"},{"author":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},"change_message_id":"7322fd8a6369b3f34b3dd3d70cd176934e5d1473","unresolved":true,"context_lines":[{"line_number":107,"context_line":"    // Ask the PathInfoService for the NAR size and sha256"},{"line_number":108,"context_line":"    let (nar_size, nar_sha256) \u003d path_info_service.as_ref().calculate_nar(\u0026root_node).await?;"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    // Calculate the output path. This might still fail, as some names are illegal."},{"line_number":111,"context_line":"    let name \u003d path_to_name(path.as_ref())?;"},{"line_number":112,"context_line":"    let output_path \u003d store_path::build_nar_based_store_path(\u0026nar_sha256, name).map_err(|_| {"},{"line_number":113,"context_line":"        std::io::Error::new("}],"source_content_type":"text/x-rustsrc","patch_set":16,"id":"a8b2cc28_b4a83c6a","line":110,"in_reply_to":"83b4bc72_f438dd87","updated":"2024-01-19 23:37:54.000000000","message":"We can, but this is a local refactor, next CL is about exposing `name` and we will be able to expect the name to be a legal one at the type level in the future.\n\nI would avoid trying to do too many things at the same time in this CL. I can add a TODO to propose to do this as future work.","commit_id":"e771d5e42b724ebff025734e8f7acbd87f7e5bc4"},{"author":{"_account_id":1000073,"name":"raitobezarius","display_name":"Ryan Lahfa","email":"tvl@lahfa.xyz","username":"raitobezarius"},"change_message_id":"ceeaf225d242a5d9c09efc16caf22f48312496a4","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    // Ask the PathInfoService for the NAR size and sha256"},{"line_number":108,"context_line":"    let (nar_size, nar_sha256) \u003d path_info_service.as_ref().calculate_nar(\u0026root_node).await?;"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    // Calculate the output path. This might still fail, as some names are illegal."},{"line_number":111,"context_line":"    let name \u003d path_to_name(path.as_ref())?;"},{"line_number":112,"context_line":"    let output_path \u003d store_path::build_nar_based_store_path(\u0026nar_sha256, name).map_err(|_| {"},{"line_number":113,"context_line":"        std::io::Error::new("}],"source_content_type":"text/x-rustsrc","patch_set":16,"id":"923beaf8_90b8df7a","line":110,"in_reply_to":"a8b2cc28_b4a83c6a","updated":"2024-01-20 00:01:24.000000000","message":"Done","commit_id":"e771d5e42b724ebff025734e8f7acbd87f7e5bc4"}]}
