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