[go] Enable declaration of recursive package in GN

This change is effectively a no-op from a build perspective. It adds a
'/...' suffix to some package definitions in GN and change build/go/build.py to
tolerate these.

The '/...' Go package suffix is a well known and documented format in Go to
declare recursivity.

The end goal is to change the go package naming convention:
- A GN Go package ending with '/...' means that the package includes all
  children packages.
- A GN Go package without this suffix means that no children packages is
  included.

The status quo at the moment is that all children Go packages are included.

This causes all sorts of issues and surprises. This caused the proliferation of
"lib" pseudo-packages under //tools and the anti-pattern of the relative
directory not matching the relative Go package name.

Switching the logic requires updating a lot of packages so this will be
done over the course for several CLs.

All third_parties are effectively used as recursive dependencies so
update third_party/golibs/BUILD.gn right away, to show how it'll look
like in the end state for recursive packages.

Bug: 55387
Change-Id: Ib25e65230594d5c0469642a2e36f266499a9c85a
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/404216
Commit-Queue: Marc-Antoine Ruel <maruel@google.com>
Reviewed-by: Shai Barack <shayba@google.com>
Reviewed-by: Petr Hosek <phosek@google.com>
Testability-Review: Shai Barack <shayba@google.com>
3 files changed
tree: 33d81501ab56953a143ce6b5d65d1c63fe9d3acc
  1. boards/
  2. build/
  3. bundles/
  4. cts/
  5. docs/
  6. examples/
  7. garnet/
  8. products/
  9. scripts/
  10. sdk/
  11. src/
  12. third_party/
  13. tools/
  14. zircon/
  15. .clang-format
  16. .clang-tidy
  17. .gitattributes
  18. .gitignore
  19. .gn
  20. .style.yapf
  21. AUTHORS
  22. BUILD.gn
  23. CODE_OF_CONDUCT.md
  24. CONTRIBUTING.md
  25. LICENSE
  26. OWNERS
  27. PATENTS
  28. README.md
  29. rustfmt.toml
README.md

Fuchsia

Pink + Purple == Fuchsia (a new operating system)

What is Fuchsia?

Fuchsia is a modular, capability-based operating system. Fuchsia runs on modern 64-bit Intel and ARM processors.

Fuchsia is an open source project with a code of conduct that we expect everyone who interacts with the project to respect.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See fuchsia.dev.