Stop writing depfiles from Glob singleton

This makes a minimal difference on my AOSP tree (which is on a fast NVME
drive), but it saves ~10-15% of the time in our primary builder
(soong_build) on larger trees on slower drives.

We're always going to run the glob tool at least once outside of the
primary builder, and ninja only loads depfiles created after running the
tool, so this should be a no-op change.

We still need to write the list file (if it has changed), since that's
the file we're adding as a dependency of the primary builder, so the
effective timestamp must be earlier than the build.ninja timestamp.

Change-Id: I872b7581da50e7f2089daa7e248ca05b6703f019
1 file changed
tree: 31c5d23fd6954b0b1b56b734066bb7571eec3907
  1. .github/
  2. bootstrap/
  3. bpfmt/
  4. bpmodify/
  5. deptools/
  6. gotestmain/
  7. gotestrunner/
  8. loadplugins/
  9. microfactory/
  10. parser/
  11. pathtools/
  12. proptools/
  13. tests/
  14. .gitignore
  15. .gofmt.sh
  16. blueprint.bash
  17. blueprint_impl.bash
  18. Blueprints
  19. bootstrap.bash
  20. context.go
  21. context_test.go
  22. CONTRIBUTING.md
  23. doc.go
  24. glob.go
  25. glob_test.go
  26. go.mod
  27. LICENSE
  28. live_tracker.go
  29. mangle.go
  30. module_ctx.go
  31. module_ctx_test.go
  32. name_interface.go
  33. ninja_defs.go
  34. ninja_strings.go
  35. ninja_strings_test.go
  36. ninja_writer.go
  37. ninja_writer_test.go
  38. package_ctx.go
  39. README.md
  40. scope.go
  41. singleton_ctx.go
  42. splice_modules_test.go
  43. visit_test.go
README.md

Blueprint Build System

build

Blueprint is a meta-build system that reads in Blueprints files that describe modules that need to be built, and produces a Ninja manifest describing the commands that need to be run and their dependencies. Where most build systems use built-in rules or a domain-specific language to describe the logic for converting module descriptions to build rules, Blueprint delegates this to per-project build logic written in Go. For large, heterogenous projects this allows the inherent complexity of the build logic to be maintained in a high-level language, while still allowing simple changes to individual modules by modifying easy to understand Blueprints files.