bazelbuild / bazelbuild/bazel

Value of SYSTEM_ROOT in windows varies in capitalization leading to cache misses between build servers and developers machines

Open
#13,187 1 comment 1 reaction 0 assignees View on GitHub
area-Windows help wanted P2 team-OSS type: feature request
Dominant language
Java
Stars
25.8k
Forks
4.6k
Avg merge
2d 20h
Merged PRs (30d)
72

Description

### Description of the problem / feature request:

When you run bazel with --incompatible_strict_action_env enabled, differences in the SYSTEM_ROOT environmental variable cause cache misses. On my Windows 10 machine the generated path environmental variable is C:\WINDOWS, however on our 2019 server build machines, this either doesn't exist or is "C:\Windows"

### Feature requests: what underlying problem are you trying to solve with this feature?

Would like to have a normalized version of "C:\Windows" such that we get cache hits.

### Bugs: what's the simplest, easiest way to reproduce this bug? Please provide a minimal example if possible.

On an existing project run using --imcompatible_strict_action_env:
set SYSTEM_ROOT=C:\WINDOWS
bazel build //...
set SYSTEM_ROOT=C:\Windows
bazel build //...
I expect to see 0 tasks run, and everything to be a local cache hit, however instead I get rebuilt tasks.

### What operating system are you running Bazel on?

Windows 2019 server + Windows 10.

### What's the output of `bazel info release`?

> Replace this line with your answer.

### If `bazel info release` returns "development version" or "(@non-git)", tell us how you built Bazel.

release 3.7.0

### What's the output of `git remote get-url origin ; git rev-parse master ; git rev-parse HEAD` ?

> NA its a release version

### Have you found anything relevant by searching the web?

Not much apart from original discussions on the feature.

### Any other information, logs, or outputs that you want to share?
Snippets from decoded--execution_log_binary_file

Build server
> environment_variables {
> name: "PATH"
> value: "C:\\Program Files\\Git\\bin;C:\\Program Files\\Git\\usr\\bin;C:\\Windows;C:\\Windows\\System32;C:\\Windows\\System32\\WindowsPowerShell\\v1.0"
>}

Developer machine:
>environment_variables {
> name: "PATH"
> value: "C:\\Program Files\\Git\\bin;C:\\Program Files\\Git\\usr\\bin;C:\\WINDOWS;C:\\WINDOWS\\System32;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0"
>}

Contributor guide

Open the contributing guide

Research direction

Reproduce the issue on Windows with Bazel 3.7.0 using --incompatible_strict_action_env and the two SYSTEM_ROOT values shown, then compare the decoded execution_log_binary_file environment entries. Done means equivalent capitalization no longer causes rebuilds and the second bazel build reports local cache hits.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.