For (incremental) loading performance I want to split a huge (believe me), generated BUILD.bazel
into smaller .bzl
files.
In each .bzl
I then plan to have a Macro foo
, which contains the actual rule calls:
def foo():
foorule("a")
foorule("b")
...
In the BUILD.bazel
I then would have (a lot of) loads like:
load("foo.bzl", foo_0 = "foo")
load("other/foo.bzl", foo_1 = "foo")
...
and then trigger the rules in BUILD.bazel
via:
foo_0()
foo_1()
Is this supposed to be faster than evaluating all rules inside of a symbol in .bzl
?
foo = [
foorule("a"),
foorule("b"),
]
Or is there even a better way to load all the info in parallel?
If I am not mistaken this should be slightly faster but the best approach would be to split the rules into several packages so the package loading itself can be parallelized.
Here just the Skylark loading would be parallelized.