[roll] Roll fuchsia [components][dictionaries] Make cycle detection more correct and robust

There is a particular class of cml declarations that is less
straightforward to add to the dependency graph for cycle detection.
Which is the following:

- A component `use`s or `offer`s a capability from Self.
- The capability is a dictionary or storage capability.
- There is a dependency into the capability, which can happen in one of
  two ways:
    1. The capability directly depends on another source (backing_dir
       for storage, extends for dictionaries).
    2. Capabilities are routed into the capability (i.e., offering
       capabilities into a dictionary).

Right now, there is some special logic in `add_strong_dependency` to
handle case #1. But case #2 is not tracked correctly (illustrated by new
test in this change).

This change fixes the logic to handle #2 correctly. It also refactors
the code to be more readable and coherent. Instead of bolting special
logic into the low-level dependency tracking API, generate these
dependencies within the code that validates the manifest, like the
others.

Original-Bug: 327018873
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1011293
Original-Revision: 6ba2cdb5bc220534a16dc23ecb259e26c83d1f9a
GitOrigin-RevId: c6123eceee137448a8b76bc6a4f5a883a432dba3
Change-Id: I079fc97e1e9649603b7bc569852efdfd74c27f04
1 file changed
tree: 97cd0c96786c6036c5721f09cc21a01a777bb2b9
  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 via the IRC channel #fuchsia on Freenode.

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.