John "codefu" McDole cc3110c590
feat: Tag Fuchsia artifacts by content hash (#172132)
After the fuchsia build process, be sure to tag uploaded artifacts with
`content_aware_hash:` if configured.

fixes #171985

This was a bit of a rabbit hole, with some "magic parameters" that
control uploading / tagging. I'm not sure cipd supports two tags with
the say keys; but I wouldn't want the content hash having the key
"git_revision".

Pre-submits: Not affected since --engine-version is always '' which is
read as "do not upload"
Post-submits: Reads the `linux_fuchsia.json` builder to look for flags.

> Note: This needs to land before the tool can be updated to download
the content_aware_hash tag.

Tested: locally, on linux, after building all the x64 targets. With and
without engine-version, with and without linux_fuchsia.json flags.

```shell
$ src/flutter/tools/fuchsia/merge_and_upload_debug_symbols.py --target-arch x64 --engine 'abcd' --upload --out-dir tmp  --symbol-dirs out/ci/fuchsia_debug_x64/.build-id out/ci/fuchsia_release_x64/.build-id out/ci/fuchsia_profile_x64/.build-id

Using content hash 2201006225127f112f6576fcf73dd00671b2012e for engine version
['cipd', 'create', '-pkg-def', '/usr/local/google/home/codefu/src/flutter/engine/tmp/debug_symbols.cipd.yaml', '-ref', 'latest', '-tag', 'git_revision:abcd', '-verification-timeout', '10m0s', '-tag', 'content_aware_hash:2201006225127f112f6576fcf73dd00671b2012e']
```

```
$ python3 src/flutter/tools/fuchsia/build_fuchsia_artifacts.py --archs x64 --engine 'abc' --cipd-dry-run --upload

Using content hash 2201006225127f112f6576fcf73dd00671b2012e for engine version
codefu: ['cipd', 'create', '-pkg-def', 'fuchsia.cipd.yaml', '-ref', 'latest', '-tag', 'git_revision:abc', '-tag', 'content_aware_hash:2201006225127f112f6576fcf73dd00671b2012e']
```
2025-07-15 16:55:02 +00:00
..

Flutter Engine

Setting up the Engine development environment

See here

gclient bootstrap

Flutter engine uses gclient to manage dependencies.

If you've already cloned the flutter repository:

  1. Copy one of the engine/scripts/*.gclient to the root folder as .gclient:
    1. Googlers: copy rbe.gclient to enable faster builds with RBE
    2. Everyone else: copy standard.gclient
  2. run gclient sync from the root folder