mqy edited a comment on pull request #8967: URL: https://github.com/apache/arrow/pull/8967#issuecomment-749648137
> I wonder if we can use a Cargo environment variable rather than calling out to git to find the appropriate paths. For example, I think env!("CARGO_MANIFEST_DIR") is the directory containing Cargo.toml. @alamb I [The Cargo Book :: Environment Variables](https://doc.rust-lang.org/cargo/reference/environment-variables.html) states that: ``` CARGO_MANIFEST_DIR — The directory containing the manifest for **the package** being built (the package containing the build script). Also note that this is the value of the current working directory of the build script when it starts. ``` I've verified with unit test in the "arrow" package, that `env!("CARGO_MANIFEST_DIR")` equals to `env::current_dir().unwrap().display().to_string()` -- the dir "rust/arrow". Actually, the most simplest implementation to get "git toplevel dir" is to append "../../" to current dir at present. I have tried various ways to get the `git top level dir`: - find ".git" file or dir from parents of current dir - find dir "rust" from parents of current dir - use `git` command -- this is current solution I prefer that `arrow_test_data()` and `parquet_test_dir()` SHOULD NOT depends on the actual dir structure: workspace dir "rust/" or any existing package dir ("parquet/" for example), or possible deeper nesting dirs. The major reason is: these data dirs are **defined (controlled)** by `git submodule` for all sub projects, it's none of the business of underlying dir structures in "apache arrow". Thank you for your review and comments! ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org