Create Bazel symlink forest in a separate process.
This helps with incrementality a lot: the symlink forest must depend on almost every directory in the source tree so that if a new file is added or removed from *anywhere*, it is regenerated. Previously, we couldn't do this without invoking bp2build, which is quite wasteful because bp2build takes way more time than the symlink forest creation, even though we do the latter in a very suboptimal way at the moment. This means that if a source file is added or removed (which does not affect globs), we don't pay the cost of bp2build anymore. Also refactored symlink_forest.go on the side. Too much state was being passed around in arguments. This change reimplements aosp/2263423 ; the semantics of not touching an output file is the exact same as order-only inputs and the latter is a bit fewer lines of code. Test: Presubmits. Change-Id: I565c580df8a01bacf175d56747c3f50743d4a4d4
This commit is contained in:
@@ -75,6 +75,9 @@ const (
|
||||
// Don't use bazel at all during module analysis.
|
||||
AnalysisNoBazel SoongBuildMode = iota
|
||||
|
||||
// Symlink fores mode: merge two directory trees into a symlink forest
|
||||
SymlinkForest
|
||||
|
||||
// Bp2build mode: Generate BUILD files from blueprint files and exit.
|
||||
Bp2build
|
||||
|
||||
|
Reference in New Issue
Block a user