[roll] Roll fuchsia [bazel2gn] Implement batch mode in bazel2gn

Adds support for syncing multiple directories in parallel using a worker
pool in Go. Directories to sync can be specified via the
`--directory_list` flag or as positional arguments.

Updates tools/devshell/contrib/bazel2gn to use the new batch mode.

This significantly improves the runtime of `fx bazel2gn`, and it will
scale much better as we add more files to sync.

Benchmarking out/default/bazel2gn_dir_list with 626 directories to sync,
runtime of the bazel2gn binary in `fx bazel2gn` went from 6.5s to 0.3s.
Overall runtime of `fx bazel2gn`, including `fx gen` and
`bazel build bazel2gn` went from 27s to 20s.

NOTE: Batch mode is not enabled for //build:bazel2gn_verifications yet,
which runs all bazel2gn verifications during the build. Ninja will
parallelize the execution of the large number of bazel2gn anyways.

Original-Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1623676
Original-Original-Revision: 74652f248e6204e0c0c6bd84778d0c47927b4296
GitOrigin-RevId: 2dee9c67cd71badbd62b77292bdab665abbc8598
Change-Id: Ib32c0c24db956e5102833c95017d76895b9fede3
Reviewed-on: https://fuchsia-review.googlesource.com/c/integration/+/1638814
Cr-Commit-Position: refs/heads/main@{#194058}
1 file changed
tree: f446c08a6b06b9d0f15b7ea38ad82e9574039802
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. cobalt
  6. flower
  7. jiri.lock
  8. MILESTONE
  9. minimal
  10. prebuilts
  11. README.md
  12. stem
  13. test_durations
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance in one of the communication channels documented at get involved.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.