Bazel on Windows Roadmap

Last verified: 2018-07-19 (update history)

Point of contact: laszlocsomor


Our goal is to make Bazel fast, reliable, and easily usable on Windows.

Roadmap for Q3 2018

Break Bash dependency

  • Running tests should not require Bash and Perl (#5508, #4691).

Increase test coverage

  • Document runfiles libraries in Build Encyclopedia at *
  • Roll out Bash runfiles support to //src/test/shell/... (#4292).
  • Run 90% of //src/... on Windows.

Support TensorFlow

  • Build TFLite on Windows (#4148).

Future work (unscheduled)

Break Bash dependency (#4319)

  • Make shell-using rules use the shell toolchain.
  • Implement a tool to merge files and text, to break dependency on bintools when creating py_binary stub.
  • Create example project on GitHub showing how to write a custom shell toolchain for local and remote builds, and how to override the default toolchain. Link to this project from the Build Encyclopedia or the User Manual, and announce it on the Blog.
  • Break RunCommand’s dependency on Bash. It cannot select a toolchain without a RuleContext.
  • Design a way to express dependency on bintools (e.g. “perl”, “grep”) (#5265).

Improve runfiles experience for Java, C++, Python, and Bash programs

  • Implement rfind() for all runfiles libraries (#4334).

Improve test coverage

  • Fix $(location) expansion in *_test.args (#4171).
  • Speed up bootstrap test (#4503).

Fix Bazel client bugs

  • Fix corrupt install (#5091, #4378).
  • Improve code health: remove all MSYS path conversion logic (#2507).
  • Support Cyrillic characters (#3821, #2443).

Fix *_binary launcher

  • Remove ../ in classpath jars (#4420).

Implement sandboxing

  • Research sandboxing feasibility (#5136).

Improve Android support

  • Build the Android Hello World project on Windows on BuildKite (#3663).
  • Run Android desugar tests on Windows (#4797).
  • Run all Android tests on Windows.
  • Fix Android Python tools to use Bazel’s JNI library from embedded tools (#3832).
  • Fix Android Python tools to support long paths (#3963).
  • Support Android Studio on Windows (#3888).

Fix the following set of uncategorized issues

  • Write Skylark rule migration guide (#3889).
  • Fix glob.exclude_directories (#3674).
  • Break cmd.exe dependency (#2190).
  • Quote empty arguments (#4778).
  • Fix repository rule invalidation (#3143, #3374).
  • Fix NPE in maven_server (#1941).
  • Check new_local_repository arguments (#3192).
  • Fix that repository_ctx.execute ignores PATH (#3445).
  • Support --watchfs (#1931).