diff options
author | Laszlo Csomor <laszlocsomor@google.com> | 2016-10-25 13:15:55 +0000 |
---|---|---|
committer | John Cater <jcater@google.com> | 2016-10-25 20:18:14 +0000 |
commit | ca99bb71b8120e61a3bbde8e54f1a9488fa0478f (patch) | |
tree | b1001b1bbae7123ef97ca8523f914dec145d5aad /tools/cpp/wrapper/bin/pydir | |
parent | 86a28b0fa2940377d5073071f79a81383fd7cfe3 (diff) |
VFS: implement a Windows-specific Path subclass
This change rolls forward commit e0d7a540e3c615c628f63fcaaaba0c47fca2cb25 and
commit 8bb4299b28de14eed9d3b57bcaeb9350c81c7db3, and adds a bugfix:
- FileSystem.PathFactory got a new translatePath
method that WindowsFileSystem.PathFactory
overrides to translate absolute Unix paths to
MSYS-relative paths
- Path.getCachedChildPath calls this translatePath
method so the child path is registered with the
correct (translated) parent and under the
correct name (e.g. "C:" instead of say "c")
Below is the rest of the original change
description:
The new subclass WindowsFileSystem.WindowsPath is
aware of Windows drives.
This change:
- introduces a new factory for Path objects so
FileSystems can return a custom implementation
that instantiates filesystem-specific Paths
- implements the WindowsPath subclass of Path that
is aware of Windows drives
- introduces the bazel.windows_unix_root JVM
argument that defines the MSYS root, which
defines the absolute Windows path that is the
root of all Unix paths that Bazel creates (e.g.
"/usr/lib" -> "C:/tools/msys64/usr/lib") except
if the path is of the form "/c/foo" which is
treated as "C:/foo"
- removes all Windows-specific logic from Path
PathFragment is still aware of drive letters and
it has to remain so because it is unaware of file
systems.
WindowsPath restricts the allowed path strings to
absolute Unix paths where the first segment, if
any, is a volume specifier. From now on if Bazel
attempts to create a WindowsPath from an absolute
Unix path, Bazel will make it relative to
WindowsPath.UNIX_ROOT, unless the first component
is a single-letter name (e.g. "/c/foo" which is
"C:/foo").
Subclassing Path is necessary because a Unix-style
absolute path doesn't sufficiently define a full
Windows path, as it may be relative to any drive.
Fixes https://github.com/bazelbuild/bazel/issues/1463
--
MOS_MIGRATED_REVID=137149483
Diffstat (limited to 'tools/cpp/wrapper/bin/pydir')
0 files changed, 0 insertions, 0 deletions