bnbarham added inline comments.

================
Comment at: llvm/include/llvm/Support/VirtualFileSystem.h:660
 ///   'use-external-names': <boolean, default=true>
+///   'root-relative': <string, one of 'cwd' or 'yaml-dir', default='cwd'>
 ///   'overlay-relative': <boolean, default=false>
----------------
haowei wrote:
> bnbarham wrote:
> > phosek wrote:
> > > Could we make this just a boolean akin to `overlay-relative` since there 
> > > are only two options (default to `false`)?
> > I personally prefer being explicit here, `overlay-relative` is fairly 
> > confusing as it is.
> > 
> > `overlay-relative` isn't about allowing relative paths, but instead means 
> > that *all* external paths should be prefixed with the directory of the 
> > overlay. To put another way, external paths can be relative whether this is 
> > true/false, `overlay-relative` just *always* prepends the overlay path.
> > 
> > Could you add a comment to make it clear that this has no interaction with 
> > `overlay-relative`? If you want to add a comment to `overlay-relative` with 
> > something like the above that would also be appreciated :)
> I also think `overlay-relative` is a bit misleading and it should be an enum 
> instead of a boolean option. And it should only work if the external paths 
> are relative instead of blindly prepend the overlay dir to every external 
> paths. But changing this will be a breaking change so I prefer to avoid it in 
> this patch.
> 
> I updated the descriptions.
FWIW it was added explicitly to always prepend, it's used for reproducers where 
the overlay may already have absolute paths. I was just trying to explain what 
`overlay-relative` does.


================
Comment at: llvm/lib/Support/VirtualFileSystem.cpp:1903
+        assert(!FullPath.empty() && "YAML file directory must exist");
+        sys::fs::make_absolute(FS->getYAMLFileDir(), Name);
+        Name = canonicalize(Name);
----------------
haowei wrote:
> bnbarham wrote:
> > IMO both this and CWD should be using the base FS instead. VFS didn't have 
> > a CWD previously, but now that it does it doesn't really make sense to use 
> > the process wide CWD. Especially since `-working-directory` doesn't change 
> > it.
> Could you clarify a bit more about the "base FS" please? I am still quite new 
> to the LLVM VFS system.  Which API should I use to get the appropriate 
> working directory instead of the the process wide CWD?
> 
> I avoided changing the default behavior (relative to the process's current 
> working directory) as I am a bit concerned breaking other people's use cases. 
> 
> I looked up a bit, the value "--working-directory" will be writen into 
> "VFS->setCurrentWorkingDirectory()" Do you think it is a better idea to use 
> this value instead of the process current working directory? Though it would 
> still be a behavior change for users rely on process current working 
> directories. 
> Could you clarify a bit more about the "base FS" please?

By "base FS" I just meant the filesystem that's passed down when creating the 
RedirectingFileSystem, ie. `ExternalFS` in `getVFSFromYAML`.

> Which API should I use to get the appropriate working directory instead of 
> the the process wide CWD?

`ExternalFS->getCurrentWorkingDirectory()` and `ExternalFS->makeAbsolute` is 
what I'd expect to be used here.

> Do you think it is a better idea to use this value instead of the process 
> current working directory? Though it would still be a behavior change for 
> users rely on process current working directories.

Yes, I think it's surprising that it currently *isn't* using it. It's just a 
hold over from when the VFS didn't have the concept of CWD. I'd be happy with 
accepting this patch as is, with a separate patch after that changes to using 
the VFS CWD.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D137473/new/

https://reviews.llvm.org/D137473

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to