[roll] Roll fuchsia [build] Fix build archive dependencies. This CL fixes flaky incremental issues that randomly happen on CI bots, where pack-images.py is passed an archive-images-manifest.json input file that lists image files that were not generated by the build, and thus fails with an error like: ``` no such file: gen/vendor/acme/products/foo/product_bundle.qemu-x64/product_bundle/system_a/fvm.blk ``` The root cause of the problem is that the action() target that generates build-archive.tgz (and its variants) used the `archive-images-manifest.json` file as input, but did not depend on the target that generates it. In certain rare cases, this would mean that the file would list image entries that were not built (yet) when the action is invoked. Unfortunately, just adding the missing dependency introduces a dependency cycle, i.e.: //build/images/archive:archive-images-manifest -> //build/images:images -> //build/images:default-images -> //build/images/archive:paver-script [extra dep] -> //build/images/archive:archive-images-manifest And this was due to: - //build/images/archive:paver-script being an action() that uses archive-images-manifest.json as an input. - //build/images:default-images depending on //build/images/archive:paver-script when `recovery_is_zedboot` is set in the current build configuration. The first point is not necessary, since generating a paver script only needs the list of image files that come from the target's transitive dependencies only, and not all images generated in the current build configuration. To solve this problem, the following is done in this CL: - For each action() generating a script or archive in //build/images/archive/BUILD.gn, generate an archive image manifest that only contains entries matching its own set of transitive dependencies. - Ensure that the archive-generating targets depend on //build/images and //build/images/tools:bootserver, which where dependencies of archive-images-manifest.json. Manual inspection shows that for the target that generates build-archive.tgz, its content is the same as archive-images-manifest.json (except for trivial ordering differences). For targets that generate paving/flashing scripts, their content only includes the dependencies required to run the script, which is sufficient and breaks the dependency cycle. - Remove archive-images-manifest.json entirely. + Add documentation and better command-line parsing to the pack-images.py script. + Add missing documentation for the "archive" field in images.json entries. Bug=b/291923285 Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/887351 Original-Revision: d6997152782241bdc10c53f26828e4630fce62d8 GitOrigin-RevId: 9508a4c05b66de3ea3c4552df962c9dc586c0745 Change-Id: I0f3a9603d30aa35ed715fb70f3383232e6de9319
This repository contains Fuchsia's Global Integration manifest files.
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.
First install Jiri.
Next run:
$ jiri init $ jiri import minimal https://fuchsia.googlesource.com/integration $ jiri update
Third party projects should have their own subdirectory in ./third_party.