1*c8dee2aaSAndroid Build Coastguard Worker<!--- AUTOGENERATED BY `./recipes.py test train` --> 2*c8dee2aaSAndroid Build Coastguard Worker# Repo documentation for [skia]() 3*c8dee2aaSAndroid Build Coastguard Worker## Table of Contents 4*c8dee2aaSAndroid Build Coastguard Worker 5*c8dee2aaSAndroid Build Coastguard Worker**[Recipe Modules](#Recipe-Modules)** 6*c8dee2aaSAndroid Build Coastguard Worker * [build](#recipe_modules-build) — Build Skia for various platforms. 7*c8dee2aaSAndroid Build Coastguard Worker * [builder_name_schema](#recipe_modules-builder_name_schema) 8*c8dee2aaSAndroid Build Coastguard Worker * [checkout](#recipe_modules-checkout) 9*c8dee2aaSAndroid Build Coastguard Worker * [docker](#recipe_modules-docker) 10*c8dee2aaSAndroid Build Coastguard Worker * [doxygen](#recipe_modules-doxygen) 11*c8dee2aaSAndroid Build Coastguard Worker * [env](#recipe_modules-env) 12*c8dee2aaSAndroid Build Coastguard Worker * [flavor](#recipe_modules-flavor) 13*c8dee2aaSAndroid Build Coastguard Worker * [git](#recipe_modules-git) 14*c8dee2aaSAndroid Build Coastguard Worker * [gold_upload](#recipe_modules-gold_upload) 15*c8dee2aaSAndroid Build Coastguard Worker * [gsutil](#recipe_modules-gsutil) 16*c8dee2aaSAndroid Build Coastguard Worker * [infra](#recipe_modules-infra) 17*c8dee2aaSAndroid Build Coastguard Worker * [run](#recipe_modules-run) 18*c8dee2aaSAndroid Build Coastguard Worker * [vars](#recipe_modules-vars) 19*c8dee2aaSAndroid Build Coastguard Worker 20*c8dee2aaSAndroid Build Coastguard Worker**[Recipes](#Recipes)** 21*c8dee2aaSAndroid Build Coastguard Worker * [build:examples/full](#recipes-build_examples_full) 22*c8dee2aaSAndroid Build Coastguard Worker * [builder_name_schema:examples/full](#recipes-builder_name_schema_examples_full) 23*c8dee2aaSAndroid Build Coastguard Worker * [checkout:examples/full](#recipes-checkout_examples_full) 24*c8dee2aaSAndroid Build Coastguard Worker * [compile](#recipes-compile) 25*c8dee2aaSAndroid Build Coastguard Worker * [compute_buildstats](#recipes-compute_buildstats) 26*c8dee2aaSAndroid Build Coastguard Worker * [docker:examples/full](#recipes-docker_examples_full) 27*c8dee2aaSAndroid Build Coastguard Worker * [doxygen:examples/full](#recipes-doxygen_examples_full) 28*c8dee2aaSAndroid Build Coastguard Worker * [env:examples/full](#recipes-env_examples_full) 29*c8dee2aaSAndroid Build Coastguard Worker * [flavor:examples/full](#recipes-flavor_examples_full) 30*c8dee2aaSAndroid Build Coastguard Worker * [git:examples/full](#recipes-git_examples_full) 31*c8dee2aaSAndroid Build Coastguard Worker * [gold_upload:examples/full](#recipes-gold_upload_examples_full) 32*c8dee2aaSAndroid Build Coastguard Worker * [gsutil:examples/full](#recipes-gsutil_examples_full) 33*c8dee2aaSAndroid Build Coastguard Worker * [housekeeper](#recipes-housekeeper) 34*c8dee2aaSAndroid Build Coastguard Worker * [infra](#recipes-infra) 35*c8dee2aaSAndroid Build Coastguard Worker * [infra:examples/full](#recipes-infra_examples_full) 36*c8dee2aaSAndroid Build Coastguard Worker * [perf](#recipes-perf) 37*c8dee2aaSAndroid Build Coastguard Worker * [perf_pathkit](#recipes-perf_pathkit) 38*c8dee2aaSAndroid Build Coastguard Worker * [perf_skottietrace](#recipes-perf_skottietrace) 39*c8dee2aaSAndroid Build Coastguard Worker * [perf_skottiewasm_lottieweb](#recipes-perf_skottiewasm_lottieweb) 40*c8dee2aaSAndroid Build Coastguard Worker * [run:examples/full](#recipes-run_examples_full) 41*c8dee2aaSAndroid Build Coastguard Worker * [sync_and_compile](#recipes-sync_and_compile) 42*c8dee2aaSAndroid Build Coastguard Worker * [test](#recipes-test) 43*c8dee2aaSAndroid Build Coastguard Worker * [test_canvaskit](#recipes-test_canvaskit) 44*c8dee2aaSAndroid Build Coastguard Worker * [test_lottie_web](#recipes-test_lottie_web) 45*c8dee2aaSAndroid Build Coastguard Worker * [test_pathkit](#recipes-test_pathkit) 46*c8dee2aaSAndroid Build Coastguard Worker * [upload_buildstats_results](#recipes-upload_buildstats_results) 47*c8dee2aaSAndroid Build Coastguard Worker * [upload_dm_results](#recipes-upload_dm_results) 48*c8dee2aaSAndroid Build Coastguard Worker * [upload_nano_results](#recipes-upload_nano_results) 49*c8dee2aaSAndroid Build Coastguard Worker * [vars:examples/full](#recipes-vars_examples_full) 50*c8dee2aaSAndroid Build Coastguard Worker## Recipe Modules 51*c8dee2aaSAndroid Build Coastguard Worker 52*c8dee2aaSAndroid Build Coastguard Worker### *recipe_modules* / [build](/infra/bots/recipe_modules/build) 53*c8dee2aaSAndroid Build Coastguard Worker 54*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipe_modules/build/__init__.py#7): [depot\_tools/gclient][depot_tools/recipe_modules/gclient], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/step][recipe_engine/recipe_modules/step], [docker](#recipe_modules-docker), [env](#recipe_modules-env), [infra](#recipe_modules-infra), [run](#recipe_modules-run), [vars](#recipe_modules-vars) 55*c8dee2aaSAndroid Build Coastguard Worker 56*c8dee2aaSAndroid Build Coastguard Worker 57*c8dee2aaSAndroid Build Coastguard WorkerBuild Skia for various platforms. 58*c8dee2aaSAndroid Build Coastguard Worker 59*c8dee2aaSAndroid Build Coastguard Worker#### **class [BuildApi](/infra/bots/recipe_modules/build/api.py#20)([RecipeApi][recipe_engine/wkt/RecipeApi]):** 60*c8dee2aaSAndroid Build Coastguard Worker 61*c8dee2aaSAndroid Build Coastguard Worker— **def [\_\_call\_\_](/infra/bots/recipe_modules/build/api.py#47)(self, checkout_root, out_dir):** 62*c8dee2aaSAndroid Build Coastguard Worker 63*c8dee2aaSAndroid Build Coastguard WorkerCompile the code. 64*c8dee2aaSAndroid Build Coastguard Worker 65*c8dee2aaSAndroid Build Coastguard Worker— **def [copy\_build\_products](/infra/bots/recipe_modules/build/api.py#51)(self, out_dir, dst):** 66*c8dee2aaSAndroid Build Coastguard Worker 67*c8dee2aaSAndroid Build Coastguard WorkerCopy selected build products to dst. 68*c8dee2aaSAndroid Build Coastguard Worker### *recipe_modules* / [builder\_name\_schema](/infra/bots/recipe_modules/builder_name_schema) 69*c8dee2aaSAndroid Build Coastguard Worker 70*c8dee2aaSAndroid Build Coastguard Worker 71*c8dee2aaSAndroid Build Coastguard Worker#### **class [BuilderNameSchemaApi](/infra/bots/recipe_modules/builder_name_schema/api.py#14)([RecipeApi][recipe_engine/wkt/RecipeApi]):** 72*c8dee2aaSAndroid Build Coastguard Worker 73*c8dee2aaSAndroid Build Coastguard Worker— **def [DictForBuilderName](/infra/bots/recipe_modules/builder_name_schema/api.py#32)(self, \*args, \*\*kwargs):** 74*c8dee2aaSAndroid Build Coastguard Worker 75*c8dee2aaSAndroid Build Coastguard Worker— **def [MakeBuilderName](/infra/bots/recipe_modules/builder_name_schema/api.py#29)(self, \*\*kwargs):** 76*c8dee2aaSAndroid Build Coastguard Worker### *recipe_modules* / [checkout](/infra/bots/recipe_modules/checkout) 77*c8dee2aaSAndroid Build Coastguard Worker 78*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipe_modules/checkout/__init__.py#7): [depot\_tools/bot\_update][depot_tools/recipe_modules/bot_update], [depot\_tools/gclient][depot_tools/recipe_modules/gclient], [depot\_tools/git][depot_tools/recipe_modules/git], [depot\_tools/tryserver][depot_tools/recipe_modules/tryserver], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [run](#recipe_modules-run), [vars](#recipe_modules-vars) 79*c8dee2aaSAndroid Build Coastguard Worker 80*c8dee2aaSAndroid Build Coastguard Worker 81*c8dee2aaSAndroid Build Coastguard Worker#### **class [CheckoutApi](/infra/bots/recipe_modules/checkout/api.py#13)([RecipeApi][recipe_engine/wkt/RecipeApi]):** 82*c8dee2aaSAndroid Build Coastguard Worker 83*c8dee2aaSAndroid Build Coastguard Worker— **def [assert\_git\_is\_from\_cipd](/infra/bots/recipe_modules/checkout/api.py#20)(self):** 84*c8dee2aaSAndroid Build Coastguard Worker 85*c8dee2aaSAndroid Build Coastguard WorkerFail if git is not obtained from CIPD. 86*c8dee2aaSAndroid Build Coastguard Worker 87*c8dee2aaSAndroid Build Coastguard Worker— **def [bot\_update](/infra/bots/recipe_modules/checkout/api.py#39)(self, checkout_root, gclient_cache=None, skip_patch=False, override_revision=None):** 88*c8dee2aaSAndroid Build Coastguard Worker 89*c8dee2aaSAndroid Build Coastguard WorkerRun the steps to obtain a checkout using bot_update. 90*c8dee2aaSAndroid Build Coastguard Worker 91*c8dee2aaSAndroid Build Coastguard WorkerArgs: 92*c8dee2aaSAndroid Build Coastguard Worker checkout_root: Root directory where the code will be synced. 93*c8dee2aaSAndroid Build Coastguard Worker gclient_cache: Optional, directory of the gclient cache. 94*c8dee2aaSAndroid Build Coastguard Worker skip_patch: Ignore changelist/patchset when syncing the Skia repo. 95*c8dee2aaSAndroid Build Coastguard Worker 96*c8dee2aaSAndroid Build Coastguard Worker  **@property**<br>— **def [default\_checkout\_root](/infra/bots/recipe_modules/checkout/api.py#15)(self):** 97*c8dee2aaSAndroid Build Coastguard Worker 98*c8dee2aaSAndroid Build Coastguard WorkerThe default location for cached persistent checkouts. 99*c8dee2aaSAndroid Build Coastguard Worker 100*c8dee2aaSAndroid Build Coastguard Worker— **def [git](/infra/bots/recipe_modules/checkout/api.py#26)(self, checkout_root):** 101*c8dee2aaSAndroid Build Coastguard Worker 102*c8dee2aaSAndroid Build Coastguard WorkerRun the steps to perform a pure-git checkout without DEPS. 103*c8dee2aaSAndroid Build Coastguard Worker### *recipe_modules* / [docker](/infra/bots/recipe_modules/docker) 104*c8dee2aaSAndroid Build Coastguard Worker 105*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipe_modules/docker/__init__.py#8): [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step], [env](#recipe_modules-env), [run](#recipe_modules-run) 106*c8dee2aaSAndroid Build Coastguard Worker 107*c8dee2aaSAndroid Build Coastguard Worker 108*c8dee2aaSAndroid Build Coastguard Worker#### **class [DockerApi](/infra/bots/recipe_modules/docker/api.py#15)([RecipeApi][recipe_engine/wkt/RecipeApi]):** 109*c8dee2aaSAndroid Build Coastguard Worker 110*c8dee2aaSAndroid Build Coastguard Worker— **def [mount\_out](/infra/bots/recipe_modules/docker/api.py#27)(self):** 111*c8dee2aaSAndroid Build Coastguard Worker 112*c8dee2aaSAndroid Build Coastguard Worker— **def [mount\_src](/infra/bots/recipe_modules/docker/api.py#24)(self):** 113*c8dee2aaSAndroid Build Coastguard Worker 114*c8dee2aaSAndroid Build Coastguard Worker— **def [run](/infra/bots/recipe_modules/docker/api.py#32)(self, name, docker_image, src_dir, out_dir, script, args=None, docker_args=None, copies=None, recursive_read=None, attempts=1, match_directory_structure=False):** 115*c8dee2aaSAndroid Build Coastguard Worker### *recipe_modules* / [doxygen](/infra/bots/recipe_modules/doxygen) 116*c8dee2aaSAndroid Build Coastguard Worker 117*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipe_modules/doxygen/__init__.py#7): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/step][recipe_engine/recipe_modules/step], [run](#recipe_modules-run) 118*c8dee2aaSAndroid Build Coastguard Worker 119*c8dee2aaSAndroid Build Coastguard Worker 120*c8dee2aaSAndroid Build Coastguard Worker#### **class [DoxygenApi](/infra/bots/recipe_modules/doxygen/api.py#9)([RecipeApi][recipe_engine/wkt/RecipeApi]):** 121*c8dee2aaSAndroid Build Coastguard Worker 122*c8dee2aaSAndroid Build Coastguard Worker— **def [generate\_and\_upload](/infra/bots/recipe_modules/doxygen/api.py#10)(self, skia_dir):** 123*c8dee2aaSAndroid Build Coastguard Worker### *recipe_modules* / [env](/infra/bots/recipe_modules/env) 124*c8dee2aaSAndroid Build Coastguard Worker 125*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipe_modules/env/__init__.py#7): [recipe\_engine/context][recipe_engine/recipe_modules/context] 126*c8dee2aaSAndroid Build Coastguard Worker 127*c8dee2aaSAndroid Build Coastguard Worker 128*c8dee2aaSAndroid Build Coastguard Worker#### **class [EnvApi](/infra/bots/recipe_modules/env/api.py#9)([RecipeApi][recipe_engine/wkt/RecipeApi]):** 129*c8dee2aaSAndroid Build Coastguard Worker### *recipe_modules* / [flavor](/infra/bots/recipe_modules/flavor) 130*c8dee2aaSAndroid Build Coastguard Worker 131*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipe_modules/flavor/__init__.py#7): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step], [env](#recipe_modules-env), [run](#recipe_modules-run), [vars](#recipe_modules-vars) 132*c8dee2aaSAndroid Build Coastguard Worker 133*c8dee2aaSAndroid Build Coastguard Worker 134*c8dee2aaSAndroid Build Coastguard Worker#### **class [SkiaFlavorApi](/infra/bots/recipe_modules/flavor/api.py#54)([RecipeApi][recipe_engine/wkt/RecipeApi]):** 135*c8dee2aaSAndroid Build Coastguard Worker 136*c8dee2aaSAndroid Build Coastguard Worker— **def [cleanup\_steps](/infra/bots/recipe_modules/flavor/api.py#122)(self):** 137*c8dee2aaSAndroid Build Coastguard Worker 138*c8dee2aaSAndroid Build Coastguard Worker— **def [copy\_directory\_contents\_to\_device](/infra/bots/recipe_modules/flavor/api.py#80)(self, host_dir, device_dir):** 139*c8dee2aaSAndroid Build Coastguard Worker 140*c8dee2aaSAndroid Build Coastguard Worker— **def [copy\_directory\_contents\_to\_host](/infra/bots/recipe_modules/flavor/api.py#83)(self, device_dir, host_dir):** 141*c8dee2aaSAndroid Build Coastguard Worker 142*c8dee2aaSAndroid Build Coastguard Worker— **def [copy\_file\_to\_device](/infra/bots/recipe_modules/flavor/api.py#86)(self, host_path, device_path):** 143*c8dee2aaSAndroid Build Coastguard Worker 144*c8dee2aaSAndroid Build Coastguard Worker— **def [create\_clean\_device\_dir](/infra/bots/recipe_modules/flavor/api.py#92)(self, path):** 145*c8dee2aaSAndroid Build Coastguard Worker 146*c8dee2aaSAndroid Build Coastguard Worker— **def [create\_clean\_host\_dir](/infra/bots/recipe_modules/flavor/api.py#89)(self, path):** 147*c8dee2aaSAndroid Build Coastguard Worker 148*c8dee2aaSAndroid Build Coastguard Worker— **def [device\_path\_join](/infra/bots/recipe_modules/flavor/api.py#77)(self, \*args):** 149*c8dee2aaSAndroid Build Coastguard Worker 150*c8dee2aaSAndroid Build Coastguard Worker— **def [get\_flavor](/infra/bots/recipe_modules/flavor/api.py#55)(self, vars_api, app_name):** 151*c8dee2aaSAndroid Build Coastguard Worker 152*c8dee2aaSAndroid Build Coastguard WorkerReturn a flavor utils object specific to the given builder. 153*c8dee2aaSAndroid Build Coastguard Worker 154*c8dee2aaSAndroid Build Coastguard Worker— **def [install](/infra/bots/recipe_modules/flavor/api.py#101)(self, skps=False, images=False, lotties=False, svgs=False, resources=False, texttraces=False):** 155*c8dee2aaSAndroid Build Coastguard Worker 156*c8dee2aaSAndroid Build Coastguard Worker— **def [read\_file\_on\_device](/infra/bots/recipe_modules/flavor/api.py#95)(self, path, \*\*kwargs):** 157*c8dee2aaSAndroid Build Coastguard Worker 158*c8dee2aaSAndroid Build Coastguard Worker— **def [remove\_file\_on\_device](/infra/bots/recipe_modules/flavor/api.py#98)(self, path):** 159*c8dee2aaSAndroid Build Coastguard Worker 160*c8dee2aaSAndroid Build Coastguard Worker— **def [setup](/infra/bots/recipe_modules/flavor/api.py#68)(self, app_name):** 161*c8dee2aaSAndroid Build Coastguard Worker 162*c8dee2aaSAndroid Build Coastguard Worker— **def [step](/infra/bots/recipe_modules/flavor/api.py#74)(self, name, cmd, \*\*kwargs):** 163*c8dee2aaSAndroid Build Coastguard Worker### *recipe_modules* / [git](/infra/bots/recipe_modules/git) 164*c8dee2aaSAndroid Build Coastguard Worker 165*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipe_modules/git/__init__.py#7): [recipe\_engine/path][recipe_engine/recipe_modules/path], [env](#recipe_modules-env) 166*c8dee2aaSAndroid Build Coastguard Worker 167*c8dee2aaSAndroid Build Coastguard Worker 168*c8dee2aaSAndroid Build Coastguard Worker#### **class [GitApi](/infra/bots/recipe_modules/git/api.py#9)([RecipeApi][recipe_engine/wkt/RecipeApi]):** 169*c8dee2aaSAndroid Build Coastguard Worker 170*c8dee2aaSAndroid Build Coastguard Worker— **def [env](/infra/bots/recipe_modules/git/api.py#10)(self):** 171*c8dee2aaSAndroid Build Coastguard Worker 172*c8dee2aaSAndroid Build Coastguard WorkerAdd Git to PATH 173*c8dee2aaSAndroid Build Coastguard Worker 174*c8dee2aaSAndroid Build Coastguard WorkerRequires the infra/git and infra/tools/git CIPD packages to be installed 175*c8dee2aaSAndroid Build Coastguard Workerin the 'git' relative path. 176*c8dee2aaSAndroid Build Coastguard Worker### *recipe_modules* / [gold\_upload](/infra/bots/recipe_modules/gold_upload) 177*c8dee2aaSAndroid Build Coastguard Worker 178*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipe_modules/gold_upload/__init__.py#7): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [recipe\_engine/time][recipe_engine/recipe_modules/time], [flavor](#recipe_modules-flavor), [gsutil](#recipe_modules-gsutil), [run](#recipe_modules-run), [vars](#recipe_modules-vars) 179*c8dee2aaSAndroid Build Coastguard Worker 180*c8dee2aaSAndroid Build Coastguard Worker 181*c8dee2aaSAndroid Build Coastguard Worker#### **class [GoldUploadApi](/infra/bots/recipe_modules/gold_upload/api.py#11)([RecipeApi][recipe_engine/wkt/RecipeApi]):** 182*c8dee2aaSAndroid Build Coastguard Worker 183*c8dee2aaSAndroid Build Coastguard Worker— **def [upload](/infra/bots/recipe_modules/gold_upload/api.py#12)(self):** 184*c8dee2aaSAndroid Build Coastguard Worker 185*c8dee2aaSAndroid Build Coastguard WorkerAttempt to upload files to Gold. 186*c8dee2aaSAndroid Build Coastguard WorkerThis module assumes setup has occurred for the vars and flavor modules. 187*c8dee2aaSAndroid Build Coastguard Worker### *recipe_modules* / [gsutil](/infra/bots/recipe_modules/gsutil) 188*c8dee2aaSAndroid Build Coastguard Worker 189*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipe_modules/gsutil/__init__.py#7): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/step][recipe_engine/recipe_modules/step], [run](#recipe_modules-run), [vars](#recipe_modules-vars) 190*c8dee2aaSAndroid Build Coastguard Worker 191*c8dee2aaSAndroid Build Coastguard Worker 192*c8dee2aaSAndroid Build Coastguard Worker#### **class [GSUtilApi](/infra/bots/recipe_modules/gsutil/api.py#10)([RecipeApi][recipe_engine/wkt/RecipeApi]):** 193*c8dee2aaSAndroid Build Coastguard Worker 194*c8dee2aaSAndroid Build Coastguard Worker— **def [\_\_call\_\_](/infra/bots/recipe_modules/gsutil/api.py#11)(self, step_name, \*args):** 195*c8dee2aaSAndroid Build Coastguard Worker 196*c8dee2aaSAndroid Build Coastguard WorkerRun gsutil with the given args. 197*c8dee2aaSAndroid Build Coastguard Worker 198*c8dee2aaSAndroid Build Coastguard WorkerThis assumes there exists an executable called gsutil on the PATH. 199*c8dee2aaSAndroid Build Coastguard WorkerThis probably only works for Linux/Mac, but those are the only 200*c8dee2aaSAndroid Build Coastguard Workerhosts that we try to upload to GCS from anyway. 201*c8dee2aaSAndroid Build Coastguard Worker 202*c8dee2aaSAndroid Build Coastguard Worker— **def [cp](/infra/bots/recipe_modules/gsutil/api.py#20)(self, name, src, dst, extra_gsutil_args=None, extra_args=None, multithread=False):** 203*c8dee2aaSAndroid Build Coastguard Worker 204*c8dee2aaSAndroid Build Coastguard WorkerAttempt to upload or download files to/from Google Cloud Storage (GCS). 205*c8dee2aaSAndroid Build Coastguard Worker 206*c8dee2aaSAndroid Build Coastguard WorkerArgs: 207*c8dee2aaSAndroid Build Coastguard Worker name: string. Will be used to fill out the step name. 208*c8dee2aaSAndroid Build Coastguard Worker src: string. Absolute path for a local file or gcs file (e.g. gs://...) 209*c8dee2aaSAndroid Build Coastguard Worker dst: string. Same as src. 210*c8dee2aaSAndroid Build Coastguard Worker extra_gsutil_args: optional list of args to be passed to gsutil before the 211*c8dee2aaSAndroid Build Coastguard Worker cp command. 212*c8dee2aaSAndroid Build Coastguard Worker extra_args: optional list of args to be passed to gsutil cp. e.g. [-Z] 213*c8dee2aaSAndroid Build Coastguard Worker asks all files be compressed with gzip after upload and before download. 214*c8dee2aaSAndroid Build Coastguard Worker multi_thread: if the -m argument should be used to copy multiple items 215*c8dee2aaSAndroid Build Coastguard Worker at once (e.g. gsutil -m cp foo* gs://bar/dir) 216*c8dee2aaSAndroid Build Coastguard Worker 217*c8dee2aaSAndroid Build Coastguard WorkerIf the operation fails, it will be retried multiple times. 218*c8dee2aaSAndroid Build Coastguard Worker### *recipe_modules* / [infra](/infra/bots/recipe_modules/infra) 219*c8dee2aaSAndroid Build Coastguard Worker 220*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipe_modules/infra/__init__.py#7): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step], [run](#recipe_modules-run), [vars](#recipe_modules-vars) 221*c8dee2aaSAndroid Build Coastguard Worker 222*c8dee2aaSAndroid Build Coastguard Worker 223*c8dee2aaSAndroid Build Coastguard Worker#### **class [InfraApi](/infra/bots/recipe_modules/infra/api.py#14)([RecipeApi][recipe_engine/wkt/RecipeApi]):** 224*c8dee2aaSAndroid Build Coastguard Worker 225*c8dee2aaSAndroid Build Coastguard Worker  **@property**<br>— **def [go\_bin](/infra/bots/recipe_modules/infra/api.py#46)(self):** 226*c8dee2aaSAndroid Build Coastguard Worker 227*c8dee2aaSAndroid Build Coastguard Worker  **@property**<br>— **def [go\_env](/infra/bots/recipe_modules/infra/api.py#50)(self):** 228*c8dee2aaSAndroid Build Coastguard Worker 229*c8dee2aaSAndroid Build Coastguard Worker  **@property**<br>— **def [gopath](/infra/bots/recipe_modules/infra/api.py#60)(self):** 230*c8dee2aaSAndroid Build Coastguard Worker 231*c8dee2aaSAndroid Build Coastguard Worker  **@property**<br>— **def [goroot](/infra/bots/recipe_modules/infra/api.py#15)(self):** 232*c8dee2aaSAndroid Build Coastguard Worker### *recipe_modules* / [run](/infra/bots/recipe_modules/run) 233*c8dee2aaSAndroid Build Coastguard Worker 234*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipe_modules/run/__init__.py#7): [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [env](#recipe_modules-env), [vars](#recipe_modules-vars) 235*c8dee2aaSAndroid Build Coastguard Worker 236*c8dee2aaSAndroid Build Coastguard Worker 237*c8dee2aaSAndroid Build Coastguard Worker#### **class [SkiaStepApi](/infra/bots/recipe_modules/run/api.py#14)([RecipeApi][recipe_engine/wkt/RecipeApi]):** 238*c8dee2aaSAndroid Build Coastguard Worker 239*c8dee2aaSAndroid Build Coastguard Worker— **def [\_\_call\_\_](/infra/bots/recipe_modules/run/api.py#69)(self, steptype, name, abort_on_failure=True, fail_build_on_failure=True, \*\*kwargs):** 240*c8dee2aaSAndroid Build Coastguard Worker 241*c8dee2aaSAndroid Build Coastguard WorkerRun a step. If it fails, keep going but mark the build status failed. 242*c8dee2aaSAndroid Build Coastguard Worker 243*c8dee2aaSAndroid Build Coastguard Worker— **def [\_\_init\_\_](/infra/bots/recipe_modules/run/api.py#16)(self, \*args, \*\*kwargs):** 244*c8dee2aaSAndroid Build Coastguard Worker 245*c8dee2aaSAndroid Build Coastguard WorkerInitialize the recipe module. 246*c8dee2aaSAndroid Build Coastguard Worker 247*c8dee2aaSAndroid Build Coastguard Worker— **def [asset\_version](/infra/bots/recipe_modules/run/api.py#54)(self, asset_name, skia_dir, test_data=None):** 248*c8dee2aaSAndroid Build Coastguard Worker 249*c8dee2aaSAndroid Build Coastguard WorkerReturn the contents of VERSION for the given asset as a string. 250*c8dee2aaSAndroid Build Coastguard Worker 251*c8dee2aaSAndroid Build Coastguard WorkerIf test_data is not specified, reads the property 252*c8dee2aaSAndroid Build Coastguard Worker'test_<asset_name>_version' or if not present, uses 253*c8dee2aaSAndroid Build Coastguard WorkerTEST_DEFAULT_ASSET_VERSION. 254*c8dee2aaSAndroid Build Coastguard Worker 255*c8dee2aaSAndroid Build Coastguard Worker— **def [check\_failure](/infra/bots/recipe_modules/run/api.py#25)(self):** 256*c8dee2aaSAndroid Build Coastguard Worker 257*c8dee2aaSAndroid Build Coastguard WorkerRaise an exception if any step failed. 258*c8dee2aaSAndroid Build Coastguard Worker 259*c8dee2aaSAndroid Build Coastguard Worker  **@property**<br>— **def [failed\_steps](/infra/bots/recipe_modules/run/api.py#31)(self):** 260*c8dee2aaSAndroid Build Coastguard Worker 261*c8dee2aaSAndroid Build Coastguard Worker— **def [readfile](/infra/bots/recipe_modules/run/api.py#40)(self, filename, \*args, \*\*kwargs):** 262*c8dee2aaSAndroid Build Coastguard Worker 263*c8dee2aaSAndroid Build Coastguard WorkerConvenience function for reading files. 264*c8dee2aaSAndroid Build Coastguard Worker 265*c8dee2aaSAndroid Build Coastguard Worker— **def [rmtree](/infra/bots/recipe_modules/run/api.py#50)(self, path):** 266*c8dee2aaSAndroid Build Coastguard Worker 267*c8dee2aaSAndroid Build Coastguard WorkerWrapper around api.file.rmtree. 268*c8dee2aaSAndroid Build Coastguard Worker 269*c8dee2aaSAndroid Build Coastguard Worker— **def [run\_once](/infra/bots/recipe_modules/run/api.py#35)(self, fn, \*args, \*\*kwargs):** 270*c8dee2aaSAndroid Build Coastguard Worker 271*c8dee2aaSAndroid Build Coastguard Worker— **def [with\_retry](/infra/bots/recipe_modules/run/api.py#81)(self, steptype, name, attempts, between_attempts_fn=None, abort_on_failure=True, fail_build_on_failure=True, \*\*kwargs):** 272*c8dee2aaSAndroid Build Coastguard Worker 273*c8dee2aaSAndroid Build Coastguard Worker— **def [writefile](/infra/bots/recipe_modules/run/api.py#45)(self, filename, contents):** 274*c8dee2aaSAndroid Build Coastguard Worker 275*c8dee2aaSAndroid Build Coastguard WorkerConvenience function for writing files. 276*c8dee2aaSAndroid Build Coastguard Worker### *recipe_modules* / [vars](/infra/bots/recipe_modules/vars) 277*c8dee2aaSAndroid Build Coastguard Worker 278*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipe_modules/vars/__init__.py#7): [depot\_tools/bot\_update][depot_tools/recipe_modules/bot_update], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step], [builder\_name\_schema](#recipe_modules-builder_name_schema) 279*c8dee2aaSAndroid Build Coastguard Worker 280*c8dee2aaSAndroid Build Coastguard Worker 281*c8dee2aaSAndroid Build Coastguard Worker#### **class [SkiaVarsApi](/infra/bots/recipe_modules/vars/api.py#16)([RecipeApi][recipe_engine/wkt/RecipeApi]):** 282*c8dee2aaSAndroid Build Coastguard Worker 283*c8dee2aaSAndroid Build Coastguard Worker  **@property**<br>— **def [is\_linux](/infra/bots/recipe_modules/vars/api.py#87)(self):** 284*c8dee2aaSAndroid Build Coastguard Worker 285*c8dee2aaSAndroid Build Coastguard Worker— **def [setup](/infra/bots/recipe_modules/vars/api.py#18)(self):** 286*c8dee2aaSAndroid Build Coastguard Worker 287*c8dee2aaSAndroid Build Coastguard WorkerPrepare the variables. 288*c8dee2aaSAndroid Build Coastguard Worker 289*c8dee2aaSAndroid Build Coastguard Worker  **@property**<br>— **def [swarming\_bot\_id](/infra/bots/recipe_modules/vars/api.py#95)(self):** 290*c8dee2aaSAndroid Build Coastguard Worker 291*c8dee2aaSAndroid Build Coastguard Worker  **@property**<br>— **def [swarming\_task\_id](/infra/bots/recipe_modules/vars/api.py#106)(self):** 292*c8dee2aaSAndroid Build Coastguard Worker## Recipes 293*c8dee2aaSAndroid Build Coastguard Worker 294*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [build:examples/full](/infra/bots/recipe_modules/build/examples/full.py) 295*c8dee2aaSAndroid Build Coastguard Worker 296*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipe_modules/build/examples/full.py#7): [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [build](#recipe_modules-build), [run](#recipe_modules-run), [vars](#recipe_modules-vars) 297*c8dee2aaSAndroid Build Coastguard Worker 298*c8dee2aaSAndroid Build Coastguard Worker 299*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipe_modules/build/examples/full.py#18)(api):** 300*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [builder\_name\_schema:examples/full](/infra/bots/recipe_modules/builder_name_schema/examples/full.py) 301*c8dee2aaSAndroid Build Coastguard Worker 302*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipe_modules/builder_name_schema/examples/full.py#7): [builder\_name\_schema](#recipe_modules-builder_name_schema) 303*c8dee2aaSAndroid Build Coastguard Worker 304*c8dee2aaSAndroid Build Coastguard Worker 305*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipe_modules/builder_name_schema/examples/full.py#12)(api):** 306*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [checkout:examples/full](/infra/bots/recipe_modules/checkout/examples/full.py) 307*c8dee2aaSAndroid Build Coastguard Worker 308*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipe_modules/checkout/examples/full.py#7): [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [checkout](#recipe_modules-checkout), [run](#recipe_modules-run), [vars](#recipe_modules-vars) 309*c8dee2aaSAndroid Build Coastguard Worker 310*c8dee2aaSAndroid Build Coastguard Worker 311*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipe_modules/checkout/examples/full.py#18)(api):** 312*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [compile](/infra/bots/recipes/compile.py) 313*c8dee2aaSAndroid Build Coastguard Worker 314*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipes/compile.py#11): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [build](#recipe_modules-build), [checkout](#recipe_modules-checkout), [run](#recipe_modules-run), [vars](#recipe_modules-vars) 315*c8dee2aaSAndroid Build Coastguard Worker 316*c8dee2aaSAndroid Build Coastguard Worker 317*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipes/compile.py#26)(api):** 318*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [compute\_buildstats](/infra/bots/recipes/compute_buildstats.py) 319*c8dee2aaSAndroid Build Coastguard Worker 320*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipes/compute_buildstats.py#12): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step], [checkout](#recipe_modules-checkout), [env](#recipe_modules-env), [run](#recipe_modules-run), [vars](#recipe_modules-vars) 321*c8dee2aaSAndroid Build Coastguard Worker 322*c8dee2aaSAndroid Build Coastguard Worker 323*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipes/compute_buildstats.py#34)(api):** 324*c8dee2aaSAndroid Build Coastguard Worker 325*c8dee2aaSAndroid Build Coastguard Worker— **def [add\_binary\_size\_output\_property](/infra/bots/recipes/compute_buildstats.py#30)(result, source, binary_size):** 326*c8dee2aaSAndroid Build Coastguard Worker 327*c8dee2aaSAndroid Build Coastguard Worker— **def [analyze\_cpp\_lib](/infra/bots/recipes/compute_buildstats.py#166)(api, checkout_root, out_dir, files):** 328*c8dee2aaSAndroid Build Coastguard Worker 329*c8dee2aaSAndroid Build Coastguard Worker— **def [analyze\_flutter\_lib](/infra/bots/recipes/compute_buildstats.py#194)(api, checkout_root, out_dir, files):** 330*c8dee2aaSAndroid Build Coastguard Worker 331*c8dee2aaSAndroid Build Coastguard Worker— **def [analyze\_wasm\_file](/infra/bots/recipes/compute_buildstats.py#233)(api, checkout_root, out_dir, files):** 332*c8dee2aaSAndroid Build Coastguard Worker 333*c8dee2aaSAndroid Build Coastguard Worker— **def [analyze\_web\_file](/infra/bots/recipes/compute_buildstats.py#139)(api, checkout_root, out_dir, files):** 334*c8dee2aaSAndroid Build Coastguard Worker 335*c8dee2aaSAndroid Build Coastguard Worker— **def [keys\_and\_props](/infra/bots/recipes/compute_buildstats.py#115)(api):** 336*c8dee2aaSAndroid Build Coastguard Worker 337*c8dee2aaSAndroid Build Coastguard Worker— **def [make\_treemap](/infra/bots/recipes/compute_buildstats.py#265)(api, checkout_root, out_dir, files):** 338*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [docker:examples/full](/infra/bots/recipe_modules/docker/examples/full.py) 339*c8dee2aaSAndroid Build Coastguard Worker 340*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipe_modules/docker/examples/full.py#7): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [docker](#recipe_modules-docker), [vars](#recipe_modules-vars) 341*c8dee2aaSAndroid Build Coastguard Worker 342*c8dee2aaSAndroid Build Coastguard Worker 343*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipe_modules/docker/examples/full.py#16)(api):** 344*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [doxygen:examples/full](/infra/bots/recipe_modules/doxygen/examples/full.py) 345*c8dee2aaSAndroid Build Coastguard Worker 346*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipe_modules/doxygen/examples/full.py#7): [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [doxygen](#recipe_modules-doxygen), [vars](#recipe_modules-vars) 347*c8dee2aaSAndroid Build Coastguard Worker 348*c8dee2aaSAndroid Build Coastguard Worker 349*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipe_modules/doxygen/examples/full.py#15)(api):** 350*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [env:examples/full](/infra/bots/recipe_modules/env/examples/full.py) 351*c8dee2aaSAndroid Build Coastguard Worker 352*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipe_modules/env/examples/full.py#7): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/step][recipe_engine/recipe_modules/step], [env](#recipe_modules-env) 353*c8dee2aaSAndroid Build Coastguard Worker 354*c8dee2aaSAndroid Build Coastguard Worker 355*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipe_modules/env/examples/full.py#14)(api):** 356*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [flavor:examples/full](/infra/bots/recipe_modules/flavor/examples/full.py) 357*c8dee2aaSAndroid Build Coastguard Worker 358*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipe_modules/flavor/examples/full.py#7): [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [flavor](#recipe_modules-flavor), [run](#recipe_modules-run), [vars](#recipe_modules-vars) 359*c8dee2aaSAndroid Build Coastguard Worker 360*c8dee2aaSAndroid Build Coastguard Worker 361*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipe_modules/flavor/examples/full.py#32)(api):** 362*c8dee2aaSAndroid Build Coastguard Worker 363*c8dee2aaSAndroid Build Coastguard Worker— **def [test\_exceptions](/infra/bots/recipe_modules/flavor/examples/full.py#17)(api):** 364*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [git:examples/full](/infra/bots/recipe_modules/git/examples/full.py) 365*c8dee2aaSAndroid Build Coastguard Worker 366*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipe_modules/git/examples/full.py#7): [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/step][recipe_engine/recipe_modules/step], [git](#recipe_modules-git) 367*c8dee2aaSAndroid Build Coastguard Worker 368*c8dee2aaSAndroid Build Coastguard Worker 369*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipe_modules/git/examples/full.py#14)(api):** 370*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [gold\_upload:examples/full](/infra/bots/recipe_modules/gold_upload/examples/full.py) 371*c8dee2aaSAndroid Build Coastguard Worker 372*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipe_modules/gold_upload/examples/full.py#10): [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [flavor](#recipe_modules-flavor), [gold\_upload](#recipe_modules-gold_upload), [run](#recipe_modules-run), [vars](#recipe_modules-vars) 373*c8dee2aaSAndroid Build Coastguard Worker 374*c8dee2aaSAndroid Build Coastguard Worker 375*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipe_modules/gold_upload/examples/full.py#22)(api):** 376*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [gsutil:examples/full](/infra/bots/recipe_modules/gsutil/examples/full.py) 377*c8dee2aaSAndroid Build Coastguard Worker 378*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipe_modules/gsutil/examples/full.py#10): [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [gsutil](#recipe_modules-gsutil), [run](#recipe_modules-run), [vars](#recipe_modules-vars) 379*c8dee2aaSAndroid Build Coastguard Worker 380*c8dee2aaSAndroid Build Coastguard Worker 381*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipe_modules/gsutil/examples/full.py#20)(api):** 382*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [housekeeper](/infra/bots/recipes/housekeeper.py) 383*c8dee2aaSAndroid Build Coastguard Worker 384*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipes/housekeeper.py#13): [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [checkout](#recipe_modules-checkout), [doxygen](#recipe_modules-doxygen), [run](#recipe_modules-run), [vars](#recipe_modules-vars) 385*c8dee2aaSAndroid Build Coastguard Worker 386*c8dee2aaSAndroid Build Coastguard Worker 387*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipes/housekeeper.py#24)(api):** 388*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [infra](/infra/bots/recipes/infra.py) 389*c8dee2aaSAndroid Build Coastguard Worker 390*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipes/infra.py#10): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [infra](#recipe_modules-infra), [vars](#recipe_modules-vars) 391*c8dee2aaSAndroid Build Coastguard Worker 392*c8dee2aaSAndroid Build Coastguard Worker 393*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipes/infra.py#28)(api):** 394*c8dee2aaSAndroid Build Coastguard Worker 395*c8dee2aaSAndroid Build Coastguard Worker— **def [git\_init](/infra/bots/recipes/infra.py#20)(api, repo_root, env):** 396*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [infra:examples/full](/infra/bots/recipe_modules/infra/examples/full.py) 397*c8dee2aaSAndroid Build Coastguard Worker 398*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipe_modules/infra/examples/full.py#10): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [infra](#recipe_modules-infra), [run](#recipe_modules-run), [vars](#recipe_modules-vars) 399*c8dee2aaSAndroid Build Coastguard Worker 400*c8dee2aaSAndroid Build Coastguard Worker 401*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipe_modules/infra/examples/full.py#22)(api):** 402*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [perf](/infra/bots/recipes/perf.py) 403*c8dee2aaSAndroid Build Coastguard Worker 404*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipes/perf.py#15): [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step], [recipe\_engine/time][recipe_engine/recipe_modules/time], [env](#recipe_modules-env), [flavor](#recipe_modules-flavor), [run](#recipe_modules-run), [vars](#recipe_modules-vars) 405*c8dee2aaSAndroid Build Coastguard Worker 406*c8dee2aaSAndroid Build Coastguard Worker 407*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipes/perf.py#104)(api):** 408*c8dee2aaSAndroid Build Coastguard Worker 409*c8dee2aaSAndroid Build Coastguard Worker— **def [perf\_steps](/infra/bots/recipes/perf.py#31)(api):** 410*c8dee2aaSAndroid Build Coastguard Worker 411*c8dee2aaSAndroid Build Coastguard WorkerRun Skia benchmarks. 412*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [perf\_pathkit](/infra/bots/recipes/perf_pathkit.py) 413*c8dee2aaSAndroid Build Coastguard Worker 414*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipes/perf_pathkit.py#9): [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [checkout](#recipe_modules-checkout), [docker](#recipe_modules-docker), [env](#recipe_modules-env), [infra](#recipe_modules-infra), [run](#recipe_modules-run), [vars](#recipe_modules-vars) 415*c8dee2aaSAndroid Build Coastguard Worker 416*c8dee2aaSAndroid Build Coastguard Worker 417*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipes/perf_pathkit.py#27)(api):** 418*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [perf\_skottietrace](/infra/bots/recipes/perf_skottietrace.py) 419*c8dee2aaSAndroid Build Coastguard Worker 420*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipes/perf_skottietrace.py#17): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step], [recipe\_engine/time][recipe_engine/recipe_modules/time], [flavor](#recipe_modules-flavor), [infra](#recipe_modules-infra), [run](#recipe_modules-run), [vars](#recipe_modules-vars) 421*c8dee2aaSAndroid Build Coastguard Worker 422*c8dee2aaSAndroid Build Coastguard Worker 423*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipes/perf_skottietrace.py#191)(api):** 424*c8dee2aaSAndroid Build Coastguard Worker 425*c8dee2aaSAndroid Build Coastguard Worker— **def [get\_trace\_match](/infra/bots/recipes/perf_skottietrace.py#147)(lottie_filename, is_android):** 426*c8dee2aaSAndroid Build Coastguard Worker 427*c8dee2aaSAndroid Build Coastguard WorkerReturns the DM regex to match the specified lottie file name. 428*c8dee2aaSAndroid Build Coastguard Worker 429*c8dee2aaSAndroid Build Coastguard Worker— **def [parse\_trace](/infra/bots/recipes/perf_skottietrace.py#162)(trace_json, lottie_filename, api):** 430*c8dee2aaSAndroid Build Coastguard Worker 431*c8dee2aaSAndroid Build Coastguard Workerparse_trace parses the specified trace JSON. 432*c8dee2aaSAndroid Build Coastguard Worker 433*c8dee2aaSAndroid Build Coastguard WorkerParses the trace JSON and calculates the time of a single frame. Frame time is 434*c8dee2aaSAndroid Build Coastguard Workerconsidered the same as seek time + render time. 435*c8dee2aaSAndroid Build Coastguard WorkerNote: The first seek is ignored because it is a constructor call. 436*c8dee2aaSAndroid Build Coastguard Worker 437*c8dee2aaSAndroid Build Coastguard WorkerA dictionary is returned that has the following structure: 438*c8dee2aaSAndroid Build Coastguard Worker{ 439*c8dee2aaSAndroid Build Coastguard Worker 'frame_max_us': 100, 440*c8dee2aaSAndroid Build Coastguard Worker 'frame_min_us': 90, 441*c8dee2aaSAndroid Build Coastguard Worker 'frame_avg_us': 95, 442*c8dee2aaSAndroid Build Coastguard Worker} 443*c8dee2aaSAndroid Build Coastguard Worker 444*c8dee2aaSAndroid Build Coastguard Worker— **def [perf\_steps](/infra/bots/recipes/perf_skottietrace.py#37)(api):** 445*c8dee2aaSAndroid Build Coastguard Worker 446*c8dee2aaSAndroid Build Coastguard WorkerRun DM on lottie files with tracing turned on and then parse the output. 447*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [perf\_skottiewasm\_lottieweb](/infra/bots/recipes/perf_skottiewasm_lottieweb.py) 448*c8dee2aaSAndroid Build Coastguard Worker 449*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipes/perf_skottiewasm_lottieweb.py#14): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [recipe\_engine/time][recipe_engine/recipe_modules/time], [checkout](#recipe_modules-checkout), [env](#recipe_modules-env), [flavor](#recipe_modules-flavor), [infra](#recipe_modules-infra), [run](#recipe_modules-run), [vars](#recipe_modules-vars) 450*c8dee2aaSAndroid Build Coastguard Worker 451*c8dee2aaSAndroid Build Coastguard Worker 452*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipes/perf_skottiewasm_lottieweb.py#85)(api):** 453*c8dee2aaSAndroid Build Coastguard Worker 454*c8dee2aaSAndroid Build Coastguard Worker— **def [parse\_trace](/infra/bots/recipes/perf_skottiewasm_lottieweb.py#206)(trace_json, lottie_filename, api, renderer):** 455*c8dee2aaSAndroid Build Coastguard Worker 456*c8dee2aaSAndroid Build Coastguard Workerparse_trace parses the specified trace JSON. 457*c8dee2aaSAndroid Build Coastguard Worker 458*c8dee2aaSAndroid Build Coastguard WorkerParses the trace JSON and calculates the time of a single frame. 459*c8dee2aaSAndroid Build Coastguard WorkerA dictionary is returned that has the following structure: 460*c8dee2aaSAndroid Build Coastguard Worker{ 461*c8dee2aaSAndroid Build Coastguard Worker 'frame_max_us': 100, 462*c8dee2aaSAndroid Build Coastguard Worker 'frame_min_us': 90, 463*c8dee2aaSAndroid Build Coastguard Worker 'frame_avg_us': 95, 464*c8dee2aaSAndroid Build Coastguard Worker} 465*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [run:examples/full](/infra/bots/recipe_modules/run/examples/full.py) 466*c8dee2aaSAndroid Build Coastguard Worker 467*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipe_modules/run/examples/full.py#7): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [run](#recipe_modules-run), [vars](#recipe_modules-vars) 468*c8dee2aaSAndroid Build Coastguard Worker 469*c8dee2aaSAndroid Build Coastguard Worker 470*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipe_modules/run/examples/full.py#22)(api):** 471*c8dee2aaSAndroid Build Coastguard Worker 472*c8dee2aaSAndroid Build Coastguard Worker— **def [myfunc](/infra/bots/recipe_modules/run/examples/full.py#18)(api, i):** 473*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [sync\_and\_compile](/infra/bots/recipes/sync_and_compile.py) 474*c8dee2aaSAndroid Build Coastguard Worker 475*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipes/sync_and_compile.py#10): [depot\_tools/gitiles][depot_tools/recipe_modules/gitiles], [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [build](#recipe_modules-build), [checkout](#recipe_modules-checkout), [infra](#recipe_modules-infra), [run](#recipe_modules-run), [vars](#recipe_modules-vars) 476*c8dee2aaSAndroid Build Coastguard Worker 477*c8dee2aaSAndroid Build Coastguard Worker 478*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipes/sync_and_compile.py#27)(api):** 479*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [test](/infra/bots/recipes/test.py) 480*c8dee2aaSAndroid Build Coastguard Worker 481*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipes/test.py#13): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step], [env](#recipe_modules-env), [flavor](#recipe_modules-flavor), [gold\_upload](#recipe_modules-gold_upload), [run](#recipe_modules-run), [vars](#recipe_modules-vars) 482*c8dee2aaSAndroid Build Coastguard Worker 483*c8dee2aaSAndroid Build Coastguard Worker 484*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipes/test.py#136)(api):** 485*c8dee2aaSAndroid Build Coastguard Worker 486*c8dee2aaSAndroid Build Coastguard Worker— **def [test\_steps](/infra/bots/recipes/test.py#30)(api):** 487*c8dee2aaSAndroid Build Coastguard Worker 488*c8dee2aaSAndroid Build Coastguard WorkerRun the DM test. 489*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [test\_canvaskit](/infra/bots/recipes/test_canvaskit.py) 490*c8dee2aaSAndroid Build Coastguard Worker 491*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipes/test_canvaskit.py#9): [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [checkout](#recipe_modules-checkout), [docker](#recipe_modules-docker), [env](#recipe_modules-env), [flavor](#recipe_modules-flavor), [gold\_upload](#recipe_modules-gold_upload), [infra](#recipe_modules-infra), [run](#recipe_modules-run), [vars](#recipe_modules-vars) 492*c8dee2aaSAndroid Build Coastguard Worker 493*c8dee2aaSAndroid Build Coastguard Worker 494*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipes/test_canvaskit.py#28)(api):** 495*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [test\_lottie\_web](/infra/bots/recipes/test_lottie_web.py) 496*c8dee2aaSAndroid Build Coastguard Worker 497*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipes/test_lottie_web.py#9): [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [checkout](#recipe_modules-checkout), [docker](#recipe_modules-docker), [env](#recipe_modules-env), [flavor](#recipe_modules-flavor), [gold\_upload](#recipe_modules-gold_upload), [infra](#recipe_modules-infra), [run](#recipe_modules-run), [vars](#recipe_modules-vars) 498*c8dee2aaSAndroid Build Coastguard Worker 499*c8dee2aaSAndroid Build Coastguard Worker 500*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipes/test_lottie_web.py#29)(api):** 501*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [test\_pathkit](/infra/bots/recipes/test_pathkit.py) 502*c8dee2aaSAndroid Build Coastguard Worker 503*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipes/test_pathkit.py#9): [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [checkout](#recipe_modules-checkout), [docker](#recipe_modules-docker), [env](#recipe_modules-env), [flavor](#recipe_modules-flavor), [gold\_upload](#recipe_modules-gold_upload), [infra](#recipe_modules-infra), [run](#recipe_modules-run), [vars](#recipe_modules-vars) 504*c8dee2aaSAndroid Build Coastguard Worker 505*c8dee2aaSAndroid Build Coastguard Worker 506*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipes/test_pathkit.py#29)(api):** 507*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [upload\_buildstats\_results](/infra/bots/recipes/upload_buildstats_results.py) 508*c8dee2aaSAndroid Build Coastguard Worker 509*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipes/upload_buildstats_results.py#10): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [recipe\_engine/time][recipe_engine/recipe_modules/time], [vars](#recipe_modules-vars) 510*c8dee2aaSAndroid Build Coastguard Worker 511*c8dee2aaSAndroid Build Coastguard Worker 512*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipes/upload_buildstats_results.py#21)(api):** 513*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [upload\_dm\_results](/infra/bots/recipes/upload_dm_results.py) 514*c8dee2aaSAndroid Build Coastguard Worker 515*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipes/upload_dm_results.py#13): [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [recipe\_engine/time][recipe_engine/recipe_modules/time], [gsutil](#recipe_modules-gsutil), [vars](#recipe_modules-vars) 516*c8dee2aaSAndroid Build Coastguard Worker 517*c8dee2aaSAndroid Build Coastguard Worker 518*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipes/upload_dm_results.py#29)(api):** 519*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [upload\_nano\_results](/infra/bots/recipes/upload_nano_results.py) 520*c8dee2aaSAndroid Build Coastguard Worker 521*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipes/upload_nano_results.py#10): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/file][recipe_engine/recipe_modules/file], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [recipe\_engine/time][recipe_engine/recipe_modules/time], [vars](#recipe_modules-vars) 522*c8dee2aaSAndroid Build Coastguard Worker 523*c8dee2aaSAndroid Build Coastguard Worker 524*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipes/upload_nano_results.py#21)(api):** 525*c8dee2aaSAndroid Build Coastguard Worker### *recipes* / [vars:examples/full](/infra/bots/recipe_modules/vars/examples/full.py) 526*c8dee2aaSAndroid Build Coastguard Worker 527*c8dee2aaSAndroid Build Coastguard Worker[DEPS](/infra/bots/recipe_modules/vars/examples/full.py#7): [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/platform][recipe_engine/recipe_modules/platform], [recipe\_engine/properties][recipe_engine/recipe_modules/properties], [recipe\_engine/step][recipe_engine/recipe_modules/step], [vars](#recipe_modules-vars) 528*c8dee2aaSAndroid Build Coastguard Worker 529*c8dee2aaSAndroid Build Coastguard Worker 530*c8dee2aaSAndroid Build Coastguard Worker— **def [RunSteps](/infra/bots/recipe_modules/vars/examples/full.py#16)(api):** 531*c8dee2aaSAndroid Build Coastguard Worker 532*c8dee2aaSAndroid Build Coastguard Worker[depot_tools/recipe_modules/bot_update]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/858263702e7d753140c34b47b0625374e36fe535/recipes/README.recipes.md#recipe_modules-bot_update 533*c8dee2aaSAndroid Build Coastguard Worker[depot_tools/recipe_modules/gclient]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/858263702e7d753140c34b47b0625374e36fe535/recipes/README.recipes.md#recipe_modules-gclient 534*c8dee2aaSAndroid Build Coastguard Worker[depot_tools/recipe_modules/git]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/858263702e7d753140c34b47b0625374e36fe535/recipes/README.recipes.md#recipe_modules-git 535*c8dee2aaSAndroid Build Coastguard Worker[depot_tools/recipe_modules/gitiles]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/858263702e7d753140c34b47b0625374e36fe535/recipes/README.recipes.md#recipe_modules-gitiles 536*c8dee2aaSAndroid Build Coastguard Worker[depot_tools/recipe_modules/tryserver]: https://chromium.googlesource.com/chromium/tools/depot_tools.git/+/858263702e7d753140c34b47b0625374e36fe535/recipes/README.recipes.md#recipe_modules-tryserver 537*c8dee2aaSAndroid Build Coastguard Worker[recipe_engine/recipe_modules/context]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/42e0c97c4954dfedc6ab26b64646cfd742ac340f/README.recipes.md#recipe_modules-context 538*c8dee2aaSAndroid Build Coastguard Worker[recipe_engine/recipe_modules/file]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/42e0c97c4954dfedc6ab26b64646cfd742ac340f/README.recipes.md#recipe_modules-file 539*c8dee2aaSAndroid Build Coastguard Worker[recipe_engine/recipe_modules/json]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/42e0c97c4954dfedc6ab26b64646cfd742ac340f/README.recipes.md#recipe_modules-json 540*c8dee2aaSAndroid Build Coastguard Worker[recipe_engine/recipe_modules/path]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/42e0c97c4954dfedc6ab26b64646cfd742ac340f/README.recipes.md#recipe_modules-path 541*c8dee2aaSAndroid Build Coastguard Worker[recipe_engine/recipe_modules/platform]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/42e0c97c4954dfedc6ab26b64646cfd742ac340f/README.recipes.md#recipe_modules-platform 542*c8dee2aaSAndroid Build Coastguard Worker[recipe_engine/recipe_modules/properties]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/42e0c97c4954dfedc6ab26b64646cfd742ac340f/README.recipes.md#recipe_modules-properties 543*c8dee2aaSAndroid Build Coastguard Worker[recipe_engine/recipe_modules/raw_io]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/42e0c97c4954dfedc6ab26b64646cfd742ac340f/README.recipes.md#recipe_modules-raw_io 544*c8dee2aaSAndroid Build Coastguard Worker[recipe_engine/recipe_modules/step]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/42e0c97c4954dfedc6ab26b64646cfd742ac340f/README.recipes.md#recipe_modules-step 545*c8dee2aaSAndroid Build Coastguard Worker[recipe_engine/recipe_modules/time]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/42e0c97c4954dfedc6ab26b64646cfd742ac340f/README.recipes.md#recipe_modules-time 546*c8dee2aaSAndroid Build Coastguard Worker[recipe_engine/wkt/RecipeApi]: https://chromium.googlesource.com/infra/luci/recipes-py.git/+/42e0c97c4954dfedc6ab26b64646cfd742ac340f/recipe_engine/recipe_api.py#433 547