[buildidtool] Introduce tool to manage .build-id

This tool uses stamp files and dep files to make .build-id entries a
first class citizen of the build system. Each stamp file acts as a
place holder fot the associated .build-id entry. The tool is carefully
designed to be atomic and work and many bizzare rebuild senerios. There
are some invalid states that you can get into but they involve leaving
additional files on the disk and do not invalidate your build. When the
tool functions normally, when it overwrites the stamp file it also
overwrites the .build-id entry that it was previouslly associated with
to mimic the .build-id entry being overwriten. A dep file is also emited
which means that if a .build-id file is altered or deleted it will be
rebuilt (this is somewhat counterintuitive)

Test: I implemented the GN changes for this and built Fuchsia under many senerios + CQ
Change-Id: Ia761952761c1d299b41fbc72022b44b8b6e3bedf
1 file changed
tree: 0dd369c465d4a83606225c2fbd03443da6c2be61
  1. artifacts/
  2. bloaty/
  3. botanist/
  4. build/
  5. buildbucket/
  6. cache/
  7. cmd/
  8. color/
  9. command/
  10. digest/
  11. elflib/
  12. fastboot/
  13. gcs/
  14. gndoc/
  15. isatty/
  16. logger/
  17. mdns/
  18. netboot/
  19. netutil/
  20. ninjalog/
  21. qemu/
  22. resultstore/
  23. retry/
  24. runner/
  25. runtests/
  26. secrets/
  27. serial/
  28. sshutil/
  29. symbolize/
  30. tap/
  31. telnet/
  32. testrunner/
  33. testsharder/
  34. tftp/
  35. .gitignore
  36. go.mod
  37. go.sum
  38. LICENSE
  39. manifest
  40. PATENTS
  41. README.md
README.md

tools

This repo contains tools used in Fuchsia build and development.

Go packages from here are automatically built and uploaded to CIPD and Google Storage by bots using the tools recipe. To add a tool to the build:

  • Edit the bot config.
  • Find the builder_mixins section with name: "tools".
  • Edit the JSON in properties_j to add a string to the packages list:
"fuchsia.googlesource.com/tools/cmd/your-new-tool"