[roll] Roll fuchsia [build][clang] Consolidate multiple exec_script() calls into one.

Speed-up `gn gen` time drastically by removing `exec_script()`
statements calling into Clang, replacing them with lookups into the
GN scope generated by invoking a new script (generate_config_json.py)
that is only invoked once.

The script implements the same set of clang probing commands, but
launches them in parallel to speed-up the process significantly
(see CommandPool class implementation).

Note that the script is executed and parsed by GN only once in the
default toolchain, then its content passed to other GN toolchains
using `toolchain_args`.

As verified manually, this *does* not change the generated Ninja
build plan for the following variants: none, asan, ubsan, hwasan,
tsan & profile.

Benchmarking results for different build configurations with
buildbot bundles for products and e2e tests, running on a
powerful workstation:

```
                    before (s)     after (s)   diff (s)

bringup.arm64          8.76           5.07      -3.69
bringup.arm64-asan    14.62           7.23      -7.39
core.arm64            23.07          14.48      -8.59
core.arm64-asan       35.29          18.14     -17.15

Exact fx set commands:
  fx set bringup.arm64 --with //bundles/buildbot/bringup:bringup --with //bundles/buildbot/bringup:e2e_tests
  fx set bringup.arm64 --with //bundles/buildbot/bringup:bringup --with //bundles/buildbot/bringup:e2e_tests --variant asan
  fx set core.arm64 --with //bundles/buildbot/core:core --with //bundles/buildbot/core:e2e_tests
  fx set core.arm64 --with //bundles/buildbot/core:core --with //bundles/buildbot/core:e2e_tests --variant asan
```

Original-Bug: 377663596
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1177814
Original-Revision: cea5d43fc9228d3a8838229bee050dbf0f631594
GitOrigin-RevId: 09fd436f8da0a45856174a42b4375a6fe1198771
Change-Id: I3411704c7ad0d2dac14bdd83105fdd6034924138
1 file changed
tree: 3335385c39474826adc1fd6cb0ce5746b4d7cf69
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. cts
  6. firmware
  7. flower
  8. jiri.lock
  9. MILESTONE
  10. minimal
  11. prebuilts
  12. README.md
  13. stem
  14. test_durations
  15. toolchain
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.