bazel: Bazel CI: Android Testing is failing on Windows with Bazel@HEAD

https://buildkite.com/bazel/bazel-at-head-plus-downstream/builds/649#8425be19-6d12-4ec4-934b-228d76be474c

ERROR: D:/b/ny24af4c/external/bazel_tools/src/main/native/windows/BUILD:42:1: Couldn't build file external/bazel_tools/src/main/native/windows/_objs/windows_jni.dll/file-jni.obj: undeclared inclusion(s) in rule '@bazel_tools//src/main/native/windows:windows_jni.dll':
--
  | this rule is missing dependency declarations for the following files included by 'external/bazel_tools/src/main/native/windows/file-jni.cc':
  | 'D:/b/hh7flgnl/execroot/__main__/bazel-out/host/genfiles/external/bazel_tools/src/main/native/jni_md.h'

<del>Culprit Finder says d235a06ede2247479dd8e5c315d55df4d657a618 is the culprt </del>

@laszlocsomor

About this issue

  • Original URL
  • State: closed
  • Created 6 years ago
  • Comments: 22 (22 by maintainers)

Commits related to this issue

Most upvoted comments

I believe I have understand the underlying problem. cbacbb9 actually revealed a header checking bug when using remote execution. Before cbacbb9, we filter the original output during the actual execution of the compiling action, which means the store action output is already filtered. In later builds, when we reply the output from the stored file due to remote cache hit, the output is already filtered, thus we capture no header file dependencies anymore.

After cbacbb9, we store the output to file first, so no matter remote cache is hit or not, we always parse the original output. Because the output could contain absolute path (execroot) from a different machine, we got this problem.

I’m working on a fix to remote the execroot prefilx from include file paths in the output. We’ll see if that works.

Let me take a look!

@laszlocsomor Thanks for looking into this! Your conclusion is very plausible, I suspect it’s caused by https://github.com/bazelbuild/bazel/commit/cbacbb9083efab215c1c8015f7488cf8b2747889.

@ulfjack confirmed we do cache the action’s outErr in remote cache. But we haven’t understand why it’s not happening before.

I see, but it’s better we use --output_user_root flag also for bazel info. I’ll send a change.