| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
| |
This will enable an easier transition from checked-in BUILD files to ones generated by copybara.
RELNOTES: None
PiperOrigin-RevId: 177514519
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In this commit:
- fix the Windows JNI library to only use UTF-16
strings
Converting between multi-byte strings (UTF-8) and
wstrings (UTF-16) always carries the risk of
incorrectly handling the strings. It also takes
time, even if not much.
Not converting the strings but using the raw Java
strings (which are in fact UTF-16 strings)
simplifies the code and allows using non-ASCII
paths (at least in the JNI module, even if Bazel
as a whole doesn't support non-ASCII characters).
Change-Id: I827fbe92a1bbefac049a1e34ac1738c965ed2e9c
PiperOrigin-RevId: 172715277
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add recursive test_suite rules for all tests that
ci.bazel.io runs for Windows, and set the
top-level test_suite as the CI test target.
Doing so shortens the command line and works
around https://github.com/bazelbuild/bazel/issues/3742
I verified that the old set of tests are the same
as the new set.
Change-Id: Id8d5da3f0c03c9b8969a9f8e1e9a3096888365aa
PiperOrigin-RevId: 169242858
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a method to test if a path is /dev/null (or
case-insensitive "NUL" on Windows), and use it in
blaze::MakeAbsolute.
In this commit:
- implement blaze_util::IsDevNull with POSIX and
Windows semantics + add tests
- blaze::MakeAbsolute calls blaze::ConvertPath
on its input to convert MSYS paths on Windows
- blaze_util::GetCwdW (thus GetCwd) always returns
a lowercase path so that it is deterministic
- blaze_util::GetCurrentDrive returns lowercase
letter to be consisent with blaze::ConvertPath,
which also returns a lowercase path
Fixes https://github.com/bazelbuild/bazel/issues/3440
Change-Id: I3af5ba0a033d542fe64a676d67f27472298d1089
PiperOrigin-RevId: 163038503
|
|
|
|
|
|
|
|
|
|
|
| |
Replace blaze_util::AsWindowsPathWithUncPrefix
with AsAbsoluteWindowsPath, which always returns
an absolute path.
Fixes https://github.com/bazelbuild/bazel/issues/2935
RELNOTES: none
PiperOrigin-RevId: 162727218
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In this change:
- add support for absolute-on-current-drive paths
(e.g. "\foo", meaning "c:\foo")
- report error for relative-on-current-drive paths
(e.g. "c:" and "c:foo")
- report error for remote Windows paths
(e.g. "\\servername\path\on\server")
- update blaze_util::AsWindowsPath comments
- update tests
RELNOTES: none
PiperOrigin-RevId: 162719763
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In this commit:
- remove blaze::PrintError in favor of
blaze_util::PrintError
- remove Ijar's PrintLastErrorMessage in favor of
blaze_util::PrintError
- use pdie every time path conversion fails,
because that indicates a fatal error (bad user
input for a path flag, or downright bug)
- remove explicitly printing GetLastErrror; pdie
and PrintError do it already
- unify the pdie/PrintError message formats
Fixes https://github.com/bazelbuild/bazel/issues/2935
Change-Id: I5feaf73885cab95c43a28c529ada6942e037b162
PiperOrigin-RevId: 162587490
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move the Windows JNI C++ sources to a separate
package and separate namespace.
This no-op refactoring allows other build rules
than Bazel's client library to depend on file I/O
and/or JNI functionality.
A follow-up commit will split the
//src/main/native/windows:processes library into
:jni-processes and :jni-file.
Change-Id: I33c5f8ebd8961cc440db3b4a95ff78024d7c1d74
PiperOrigin-RevId: 160404298
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Make it more robust: it now works with Cygwin too,
e.g. BAZEL_SH=c:/cygwin64/bin/bash.exe
See https://github.com/bazelbuild/bazel/issues/2725
Related to https://github.com/bazelbuild/bazel/issues/2447
--
Change-Id: I911f09acd3e39c7cd0fe0750774fa0a900ffd844
Reviewed-on: https://cr.bazel.build/9510
PiperOrigin-RevId: 150885982
MOS_MIGRATED_REVID=150885982
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Support drive roots as --output_user_root values,
so "d:\" and "d:/" will now work. However "d:"
doesn't work yet because that's shorthand for the
current working directory on "D:".
See https://github.com/bazelbuild/bazel/issues/2683
--
PiperOrigin-RevId: 150203657
MOS_MIGRATED_REVID=150203657
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
After this change, a msys bazel can be built with
a MSVC-default Bazel by adding --cpu=x64_windows_msys --host=x64_windows_msys
See https://github.com/bazelbuild/bazel/issues/2627
--
Change-Id: Iaa82bf4dd911c5740b98d3b2739dfccca6203f79
Reviewed-on: https://cr.bazel.build/9293
PiperOrigin-RevId: 149532274
MOS_MIGRATED_REVID=149532274
|
|
|
|
|
|
|
|
|
|
|
| |
Mimic read(2) behavior when reading from /dev/null
and always successfully read 0 bytes.
See https://github.com/bazelbuild/bazel/issues/2107
--
PiperOrigin-RevId: 149286494
MOS_MIGRATED_REVID=149286494
|
|
|
|
|
|
|
|
|
|
| |
This method now works for non-existent paths too.
See https://github.com/bazelbuild/bazel/issues/2107
--
PiperOrigin-RevId: 149284633
MOS_MIGRATED_REVID=149284633
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Do not use `errno` in platform-independent code,
because Windows API functions don't set it.
This change abstracts away error handling and the
functions whose `errno` result we care about, will
set an input error variable.
Fixes https://github.com/bazelbuild/bazel/issues/2506
--
PiperOrigin-RevId: 148977873
MOS_MIGRATED_REVID=148977873
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Introduce a platform-specific file handle type
(HANDLE on Windows, int on Linux/Darwin/FreeBSD)
so we can get rid of the read_func and write_func
functions, since they are always the same
everywhere.
Also include file_platform.h in file.h, since they
are logically the same file (file_platform.h is
just the platform-specific part of file.h).
--
PiperOrigin-RevId: 148892736
MOS_MIGRATED_REVID=148892736
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of writing from / reading to a string,
these variants take a buffer and a size.
These methods will be used from ijar.
See https://github.com/bazelbuild/bazel/issues/2157
--
PiperOrigin-RevId: 148635487
MOS_MIGRATED_REVID=148635487
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is the last function we needed from
file_posix for MSYS, so now we can remove that
from the compilation.
Fixes https://github.com/bazelbuild/bazel/issues/2386
The problem originally was that I used CloseHandle
to close the HANDLE, instead of using FindClose,
so we were holding on to open directory HANDLEs,
so we couldn't rename the installation directory.
See https://github.com/bazelbuild/bazel/issues/2107
--
Change-Id: If6c1b3c99cf386d82e829dbee2323e6bce5f6b46
Reviewed-on: https://cr.bazel.build/8952
PiperOrigin-RevId: 147734165
MOS_MIGRATED_REVID=147734165
|
|
|
|
|
|
|
|
|
|
| |
See https://github.com/bazelbuild/bazel/issues/2107
--
Change-Id: I27a97881e3e19cbb7913e1248a24e9e631bc4f40
Reviewed-on: https://cr.bazel.build/8951
PiperOrigin-RevId: 147719277
MOS_MIGRATED_REVID=147719277
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In this change:
* Fix pdie and PrintError to acquire the last
error string as the first thing the method does,
otherwise we may display an error coming from
pdie's/PrintError's own logic
* Auto-close file handles in file_test in order to
avoid leaking them in case an assertion fails
(which means an early return from the function)
--
Change-Id: Ia4392b42cbc93b931dcee76993db0ad264d0c147
Reviewed-on: https://cr.bazel.build/8932
PiperOrigin-RevId: 147610527
MOS_MIGRATED_REVID=147610527
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use the JNI library's CreateJuction in
file_windows_test.
See https://github.com/bazelbuild/bazel/issues/2107
--
Change-Id: I4ef1536d43691fe7a2ae3ee457064d4e8f4ac6d7
Reviewed-on: https://cr.bazel.build/8895
PiperOrigin-RevId: 147594365
MOS_MIGRATED_REVID=147594365
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The TearDown method clears up after tests, so
manual cleanup is unnecessary.
See https://github.com/bazelbuild/bazel/issues/2107
--
Change-Id: Idf5d2b2bf012774171f1868d1341a7952015c35f
Reviewed-on: https://cr.bazel.build/8894
PiperOrigin-RevId: 147591032
MOS_MIGRATED_REVID=147591032
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Implement a CreateJunction function in the Windows
JNI library. Also move a bit of code from
file_windows to the JNI library, where it is
(also) needed.
This implementation is an improved version of
`blaze_util::SymlinkDirectories` in
blaze_util_windows: this version handles Windows
paths as `name` and `target`, and performs more
validation (e.g. on the length of `target`), plus
has more comments explaining the logic. In a
subsequent change I'll start using this new
function in blaze_util_windows.
This method will also be helpful in tests: we will
no longer have to shell out to mklink.
See https://github.com/bazelbuild/bazel/issues/2107
--
Change-Id: I7e9b085fdc2ba47be83da5319bded02bd323e71b
Reviewed-on: https://cr.bazel.build/8892
PiperOrigin-RevId: 147585207
MOS_MIGRATED_REVID=147585207
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move the OpenDirectory helper method into the JNI
library. We'll need it there; a subsequent change
will make use of it there.
See https://github.com/bazelbuild/bazel/issues/2107
--
PiperOrigin-RevId: 147448792
MOS_MIGRATED_REVID=147448792
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add test helpers to recursively delete the
TEST_TMPDIR in the TearDown method of tests, to
ensure each test sees a fresh temp directory.
Also add tests for these test helpers.
--
PiperOrigin-RevId: 147135561
MOS_MIGRATED_REVID=147135561
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Do not give up immediately if renaming/moving the
install base directory fails, wait and retry
instead.
This is necessary because on Windows the directory
we just created and populated with the extracted
embedded binaries may still be scanned by the
antivirus, so there are open file handles in it so
it cannot be renamed. This new logic ensures the
AV has enough time to scan all files, close the
handles, letting us successfully rename the
directory.
Fixes the occasional "install base directory
cannot be renamed in place" error messages on
Windows.
See https://github.com/bazelbuild/bazel/issues/2107
--
PiperOrigin-RevId: 146899919
MOS_MIGRATED_REVID=146899919
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Set $TMP to $TEST_TMPDIR, so that the
CaptureStderr can safely call SetTempPathA and not
get C:\Windows\ back as a result, which is
unfortunately read-only.
See https://github.com/bazelbuild/bazel/issues/2107
--
Change-Id: If63cb028f677d9a0d9597f83afc9e08f2e5d2529
Reviewed-on: https://cr.bazel.build/8494
PiperOrigin-RevId: 145961529
MOS_MIGRATED_REVID=145961529
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
*** Reason for rollback ***
Breaks Bazel-Install-Trigger on CI.
*** Original change description ***
Bazel client, Windows: impl. ForEachDirectoryEntry
Implement ForEachDirectoryEntry on Windows using
FindFirstFileW / FindNextFileW.
Supports long paths and traversing junctions.
See https://github.com/bazelbuild/bazel/issues/2107
See https://github.com/bazelbuild/bazel/issues/2181
--
PiperOrigin-RevId: 145282158
MOS_MIGRATED_REVID=145282158
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Implement ForEachDirectoryEntry on Windows using
FindFirstFileW / FindNextFileW.
Supports long paths and traversing junctions.
See https://github.com/bazelbuild/bazel/issues/2107
See https://github.com/bazelbuild/bazel/issues/2181
--
PiperOrigin-RevId: 145062749
MOS_MIGRATED_REVID=145062749
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Create an IFileMtime class and platform-specific
implementations to deal with mtime handling.
Since epochs and time granularity vary from
platform to platform, and we only care about
setting a file's/directory's mtime to the current
time or to a future time plus querying whether
something is in the future, we can easily create
an interface for these operations and that's
exactly what IFileMtime is.
Implement PosixFileMtime and WindowsFileMtime.
See https://github.com/bazelbuild/bazel/issues/2107
--
PiperOrigin-RevId: 144956966
MOS_MIGRATED_REVID=144956966
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use CreateFileW in blaze_util_windows.cc when
opening the "jvm.out" file. This allows supporting
long paths.
Also use AsWindowsPathWithUncPrefix instead of
just AsWindowsPath plus manually adding the UNC
prefix.
Also fix a compilation error in
file_windows_test.cc, I'm surprised the CI system
didn't catch this, maybe we aren't running this
test there.
See https://github.com/bazelbuild/bazel/issues/2107
See https://github.com/bazelbuild/bazel/issues/2181
--
PiperOrigin-RevId: 144813245
MOS_MIGRATED_REVID=144813245
|
|
|
|
|
|
|
|
| |
See https://github.com/bazelbuild/bazel/issues/2107
--
PiperOrigin-RevId: 144321891
MOS_MIGRATED_REVID=144321891
|
|
|
|
|
|
|
|
|
| |
See https://github.com/bazelbuild/bazel/issues/2107
See https://github.com/bazelbuild/bazel/issues/1744
--
PiperOrigin-RevId: 144313301
MOS_MIGRATED_REVID=144313301
|
|
|
|
|
|
|
|
| |
See https://github.com/bazelbuild/bazel/issues/2107
--
PiperOrigin-RevId: 144218095
MOS_MIGRATED_REVID=144218095
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Support passing /dev/null and NUL as flag values
for flags like --bazelrc.
In particular, special-case these paths in
methods like blaze_util::ReadFile,
blaze_util::IsDirectory, etc.
Fixes https://github.com/bazelbuild/bazel/issues/2354
RELNOTES[NEW]: Windows: "/dev/null" is now a supported path, e.g. --bazelrc=/dev/null now works
--
PiperOrigin-RevId: 144195994
MOS_MIGRATED_REVID=144195994
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This was committed and rolled back twice, once
because I forgot to update file_posix.cc, and
again because the roll-forward was somehow only
partial.
This is a clean attempt at submitting the same
thing again.
See https://github.com/bazelbuild/bazel/issues/2107
--
PiperOrigin-RevId: 144179954
MOS_MIGRATED_REVID=144179954
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The new methods (CanReadFile, CanExecuteFile,
CanAccessDirectory) are a lot easier to implement
on Windows than a generic CanAccess. On POSIX
these methods are just a wrapper around the now
static-visible CanAccess().
See https://github.com/bazelbuild/bazel/issues/2107
--
PiperOrigin-RevId: 144176710
MOS_MIGRATED_REVID=144176710
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
*** Reason for rollback ***
Bad rollback, was only partial.
*** Original change description ***
Automated [] rollback of commit 9a13899b1492738f8d1a9118cebc9ef9d90c6b34.
*** Reason for rollback ***
Fixed the problem with the CL.
*** Original change description ***
Bazel client, Windows: implement UnlinkPath
See https://github.com/bazelbuild/bazel/issues/2107
--
PiperOrigin-RevId: 144115263
MOS_MIGRATED_REVID=144115263
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
*** Reason for rollback ***
Fixed the problem with the CL.
*** Original change description ***
Bazel client, Windows: implement UnlinkPath
See https://github.com/bazelbuild/bazel/issues/2107
--
PiperOrigin-RevId: 144087552
MOS_MIGRATED_REVID=144087552
|
|
|
|
|
|
|
|
| |
See https://github.com/bazelbuild/bazel/issues/2107
--
PiperOrigin-RevId: 144084379
MOS_MIGRATED_REVID=144084379
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
*** Reason for rollback ***
Breaks windows:
bazel-out/local-fastbuild/bin/src/main/cpp/util/libfile.a(file_windows.o):file_windows.cc:(.text+0x11e2): multiple definition of `blaze_util::UnlinkPath(std::string const&)'
bazel-out/local-fastbuild/bin/src/main/cpp/util/libfile.a(file_posix.o):file_posix.cc:(.text+0x3ff): first defined here
*** Original change description ***
Bazel client, Windows: implement UnlinkPath
See https://github.com/bazelbuild/bazel/issues/2107
--
PiperOrigin-RevId: 144082937
MOS_MIGRATED_REVID=144082937
|
|
|
|
|
|
|
|
| |
See https://github.com/bazelbuild/bazel/issues/2107
--
PiperOrigin-RevId: 144073888
MOS_MIGRATED_REVID=144073888
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Because CreateProcessW doesn't support long paths,
not even with the "\\?\" prefix [1], we need to
convert long paths to short ones to spawn
processes. This change implements the
corresponding function and uses it in
blaze_util_windows.
[1] https://github.com/bazelbuild/bazel/issues/2181#issuecomment-270696173
See https://github.com/bazelbuild/bazel/issues/2107
See https://github.com/bazelbuild/bazel/issues/2181
--
PiperOrigin-RevId: 144062404
MOS_MIGRATED_REVID=144062404
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This method was only used by the Windows-specific
code so move it there and adapt it to Windows
paths.
Update AsWindowsPath to normalize its output: this
is necessary because AsWindowsPath's output is a
widechar path string which we often prefix with
the UNC prefix, but such paths must be normalized
(the kernel won't do it if the path has an UNC
prefix).
Finally, add an AsWindowsPathWithUncPrefix method
which does what the name suggests: converts the
path to Windows path, makes it absolute, and adds
the UNC prefix if necessary. (This is a very common
operation when calling WinAPI functions and we'll
use it a lot in subsequent changes.)
See https://github.com/bazelbuild/bazel/issues/2107
--
PiperOrigin-RevId: 144060297
MOS_MIGRATED_REVID=144060297
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Checking if a path exists is surprisingly hard on
Windows. The most convenient API functions are
PathFileExists and GetFileAttributes but neither
of them follows junctions. To check if a junction
is dangling, we have to resolve it all the way.
This change adds a JunctionResolver class to
file_windows, which can resolve junctions (if they
aren't dangling) and non-junctions (in this case
just checks their existence).
See https://github.com/bazelbuild/bazel/issues/2107
See https://github.com/bazelbuild/bazel/issues/2181
--
PiperOrigin-RevId: 143645274
MOS_MIGRATED_REVID=143645274
|
|
|
|
|
|
|
|
|
|
|
|
| |
Make the MSYS root retrieval case-insensitive.
While there, make the MSYS root resetable so we
can test it.
See https://github.com/bazelbuild/bazel/issues/2323
--
PiperOrigin-RevId: 143377137
MOS_MIGRATED_REVID=143377137
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The file_windows.cc:MsysRoot::Get() function was
incorrectly assuming that bash.exe is usually
under c:\tools\msys64\bin\bash.exe when in reality
it's c:\tools\msys64\usr\bin\bash.exe, so we need
to walk up one more directory.
Unfortunately the test was assuming the same so
the bug wasn't caught.
The new code is a bit more foolproof in that it
looks for an msys-looking final path segment and
assumes that to be the msys root.
Fixes https://github.com/bazelbuild/bazel/issues/2323
--
PiperOrigin-RevId: 143372193
MOS_MIGRATED_REVID=143372193
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Implement blaze_util::ReadFile on top of the
::ReadFile Windows API function.
Also implement blaze_util::AsWindowsPath so we can
convert MSYS paths to Windows widechar paths.
Add tests.
See https://github.com/bazelbuild/bazel/issues/2107
--
PiperOrigin-RevId: 142659955
MOS_MIGRATED_REVID=142659955
|
|
|
|
|
|
| |
--
PiperOrigin-RevId: 142654978
MOS_MIGRATED_REVID=142654978
|
|
|
|
|
|
|
|
|
| |
This is only used in blaze_util_linux so move the
method there.
--
PiperOrigin-RevId: 142652521
MOS_MIGRATED_REVID=142652521
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This method can normalize paths with "." and ".."
and multiple "/" characters.
E.g. normalize("../foo/./bar/../baz") = "foo/baz"
This method enables us implementing PathExists on
Windows. If the path to check is too long, we need
to prefix it with "\\?\" for the Windows API
functions to work, but then the path must be
fully normalized and in Windows format. We already
have functions to convert a path to Windows format
but that doesn't normalize; with this function we
can finally convert paths like "/c/foo/../bar" to
L"\\?\c:\foo" and check if it exists.
See https://github.com/bazelbuild/bazel/issues/2107
See https://github.com/bazelbuild/bazel/issues/2181
--
PiperOrigin-RevId: 142648194
MOS_MIGRATED_REVID=142648194
|