Bazel External Deps Roadmap
Last verified: 2018-07-17 (Update history)
Point of contact: dslomov
Roadmap for improving external dependencies support and integration with package managers and other build systems in Bazel.
Goal
External dependencies work fall into three broad categories:
-
General improvements for WORKSPACE support in Bazel (see External Repositories: The Future for general background and discussion).
- Allowing Bazel project to depend on other projects built with a different build tool and/or
available through a package manager.
- bazel-deps is one tool that provide that support.
- A good analysis of challenges with C++ dependencies has been done by Envoy project.
- Allowing other build systems to depend on Bazel project.
- Generally this includes features such as
- plugins for other build systems invoking Bazel
- publishing Bazel-built artifacts so that they can be used by other build systems
- generating project files for other build systems
- The full set of features needed for this is currently forming. (We welcome your input on bazel-discuss@)
- Generally this includes features such as
2018 Q2
- General improvements for WORKSPACE support in Bazel
- Implement diamond splitting for external dependencies. DONE
- Prototype support for WORKSPACE.resolved
- Bazel depends on 3rd-party
- Exeperiments in rules_foreign_cc
2018 Q3
- General improvements for WORKSPACE support in Bazel
- Document curent state and best practices for BUILD files that can be used both as main and external repository, decide on whether the change to exec root layout is needed
- Implement WORKSPACE/WORKSPACE.resolved split, so that users can easily upgrade and share their dependencies in a controlled and well-defined way
- Technical plan for recursive workspaces: convenient way for users to manage transitive dependencies
- Bazel depends on 3rd-party
- Provide rules for cmake and other C++ build systems
- Validation: Envoy is able to switch to these rules for their cmake dependecies.
- Integrate bazel-deps into WORKSPACE.resolved so that users don’t have to run it as a separate tool
- Technical plan for PIP support
- Provide rules for cmake and other C++ build systems
2018 Q4
- Technical plan for better support of WORKSPACE.configured (tentative)
- Technical plan for improvements of repository rule APIs and semantics (no restarts? action graphs?)