Skip to content

Commit

Permalink
Force the Bazel server Java runtime to use the root locale
Browse files Browse the repository at this point in the history
This ensures consistent behavior of string operations even if the
individual operations do not set a locale.

Without this change, Bazel can't operate in e.g. a Turkish locale, where
it fails with error messages such as:

In rule 'test', size 'medium' is not a valid size.

This is because Turkish case mapping rules make it so that a capital
ASCII 'I' lowercases to a non-ASCII variant of 'i'.
  • Loading branch information
fmeum committed Mar 9, 2023
1 parent 830afc1 commit 6a2e26e
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions src/main/cpp/blaze.cc
Original file line number Diff line number Diff line change
Expand Up @@ -402,6 +402,12 @@ static vector<string> GetServerExeArgs(const blaze_util::Path &jvm_path,

// Force use of latin1 for file names.
result.push_back("-Dfile.encoding=ISO-8859-1");
// Force into the root locale to ensure consistent behavior of string
// operations across machines (e.g. in the tr_TR locale, capital ASCII 'I'
// turns into a special Unicode 'i' when converted to lower case).
result.push_back("-Duser.country=");
result.push_back("-Duser.language=");
result.push_back("-Duser.variant=");

if (startup_options.host_jvm_debug) {
BAZEL_LOG(USER)
Expand Down

0 comments on commit 6a2e26e

Please sign in to comment.