-
Type: Task
-
Resolution: Fixed
-
Priority: Minor - P4
-
Affects Version/s: None
-
Component/s: None
-
None
-
Fully Compatible
Ninja is the primary tool developers use to build the server. Our ninja tool generates SCons->ninja syntax.
We will (similar to scons calling bazel), have ninja call bazel to build certain targets which have already been transcribed to the bazel build.
This will prove a little difficult to divulge the correct information to call bazel with. Ninja is a binary which we can not easily modified. It would require making a custom pip repo, fork and modify the ninja source code, and create release binaries on various platforms.
The proposed solution will be to use the same method that was used in the developer workflow metrics project, where the ninja binary is intercepted via a hook and then finally called after the command line has been processed. Additionally to that we will need a way to discover the desired dependencies of any given target passed on the command line. The ninja file contains a explicit graph of all dependencies, ninja traverses this graph in a fraction of a second. We may be able to ask ninja directly for the dependencies of a given target or traverse the ninja files ourselves.