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 did 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 
   
   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


Reply via email to