chore(tvix/store): drop walkdir workaround for symlinks at root

https://github.com/BurntSushi/walkdir/pull/170 got merged, meaning we
don't need to keep our own logic in here anymore.

Our test cases already cover this.

Change-Id: Ied3043ee651c8aafa10271c1e1ca5d460fb6c0b8
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9269
Autosubmit: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
This commit is contained in:
Florian Klink 2023-09-05 17:08:50 +03:00 committed by clbot
parent e187a7bcb1
commit 7bd3c42c74
4 changed files with 9 additions and 25 deletions

4
tvix/Cargo.lock generated
View file

@ -2920,9 +2920,9 @@ dependencies = [
[[package]]
name = "walkdir"
version = "2.3.3"
version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
dependencies = [
"same-file",
"winapi-util",

View file

@ -8658,9 +8658,9 @@ rec {
};
"walkdir" = rec {
crateName = "walkdir";
version = "2.3.3";
version = "2.4.0";
edition = "2018";
sha256 = "16768hy32kcvghq7v4ci8llfjvdiwrwg6sj9nzcdiisnv9699prn";
sha256 = "1vjl9fmfc4v8k9ald23qrpcbyb8dl1ynyq8d516cm537r1yqa7fp";
authors = [
"Andrew Gallant <jamslam@gmail.com>"
];

View file

@ -21,7 +21,7 @@ tokio = { version = "1.28.0", features = ["rt-multi-thread", "net"] }
tonic = "0.8.2"
tracing = "0.1.37"
tracing-subscriber = { version = "0.3.16", features = ["json"] }
walkdir = "2.3.2"
walkdir = "2.4.0"
tokio-util = { version = "0.7.8", features = ["io", "io-util"] }
tower = "0.4.13"
futures = "0.3.28"

View file

@ -6,7 +6,6 @@ use std::sync::Arc;
use std::{
collections::HashMap,
fmt::Debug,
fs,
fs::File,
io,
os::unix::prelude::PermissionsExt,
@ -130,6 +129,9 @@ fn process_entry(
/// interacting with a [BlobService] and [DirectoryService].
/// It returns the root node or an error.
///
/// It does not follow symlinks at the root, they will be ingested as actual
/// symlinks.
///
/// It's not interacting with a
/// [PathInfoService](crate::pathinfoservice::PathInfoService), it's up to the
/// caller to possibly register it somewhere (and potentially rename it based on
@ -140,25 +142,6 @@ pub fn ingest_path<P: AsRef<Path> + Debug>(
directory_service: Arc<dyn DirectoryService>,
p: P,
) -> Result<proto::node::Node, Error> {
// Probe if the path points to a symlink. If it does, we process it manually,
// due to https://github.com/BurntSushi/walkdir/issues/175.
let symlink_metadata = fs::symlink_metadata(p.as_ref())
.map_err(|e| Error::UnableToStat(p.as_ref().to_path_buf(), e))?;
if symlink_metadata.is_symlink() {
let target = std::fs::read_link(p.as_ref())
.map_err(|e| Error::UnableToStat(p.as_ref().to_path_buf(), e))?;
return Ok(proto::node::Node::Symlink(proto::SymlinkNode {
name: p
.as_ref()
.file_name()
.unwrap_or_default()
.as_bytes()
.to_owned()
.into(),
target: target.as_os_str().as_bytes().to_vec().into(),
}));
}
let mut directories: HashMap<PathBuf, proto::Directory> = HashMap::default();
// TODO: pass this one instead?
@ -166,6 +149,7 @@ pub fn ingest_path<P: AsRef<Path> + Debug>(
for entry in WalkDir::new(p)
.follow_links(false)
.follow_root_links(false)
.contents_first(true)
.sort_by_file_name()
{