blob: 72066f05a39cc89a718561697e02176be07c2e60 [file] [log] [blame]
[
{
"cmd": [],
"name": "ensure goma"
},
{
"cmd": [
"cipd",
"ensure",
"-root",
"[CACHE]/goma/client",
"-ensure-file",
"fuchsia/third_party/goma/client/mac-amd64 integration",
"-max-threads",
"0",
"-json-output",
"/path/to/tmp/json"
],
"infra_step": true,
"name": "ensure goma.ensure_installed",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@",
"@@@STEP_LOG_LINE@json.output@{@@@",
"@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
"@@@STEP_LOG_LINE@json.output@ {@@@",
"@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-integration-----\",@@@",
"@@@STEP_LOG_LINE@json.output@ \"package\": \"fuchsia/third_party/goma/client/mac-amd64\"@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@ ]@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@}@@@",
"@@@STEP_LOG_END@json.output@@@"
]
},
{
"cmd": [],
"name": "setup goma"
},
{
"cmd": [],
"name": "setup goma.ensure infra/3pp/tools/cpython3/${platform}",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@"
]
},
{
"cmd": [],
"name": "setup goma.ensure infra/3pp/tools/cpython3/${platform}.get packages",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@2@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"RECIPE_MODULE[fuchsia::python3]/resources/cipd.ensure",
"/path/to/tmp/"
],
"env": {
"GLOG_log_dir": "[CLEANUP]",
"GOMA_CACHE_DIR": "[CACHE]/goma",
"GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
"GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
"GOMA_LOCAL_OUTPUT_CACHE_DIR": "[CACHE]/goma/localoutputcache",
"GOMA_MAX_SUM_OUTPUT_SIZE_IN_MB": "256",
"GOMA_SERVER_HOST": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog",
"GOMA_STORE_LOCAL_RUN_OUTPUT": "True",
"GOMA_TMP_DIR": "[CLEANUP]/goma",
"GOMA_USE_LOCAL": "False"
},
"infra_step": true,
"name": "setup goma.ensure infra/3pp/tools/cpython3/${platform}.get packages.read ensure file",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@3@@@",
"@@@STEP_LOG_LINE@cipd.ensure@infra/3pp/tools/cpython3/${platform} version:pinned-version@@@",
"@@@STEP_LOG_END@cipd.ensure@@@"
]
},
{
"cmd": [],
"name": "setup goma.ensure infra/3pp/tools/cpython3/${platform}.install infra/3pp/tools/cpython3",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@2@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"ensure-directory",
"--mode",
"0o777",
"[START_DIR]/cipd_tool/infra/3pp/tools/cpython3/0e548aa33f8113a45a5b3b62201e114e98e63d00f97296912380138f44597b07"
],
"env": {
"GLOG_log_dir": "[CLEANUP]",
"GOMA_CACHE_DIR": "[CACHE]/goma",
"GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
"GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
"GOMA_LOCAL_OUTPUT_CACHE_DIR": "[CACHE]/goma/localoutputcache",
"GOMA_MAX_SUM_OUTPUT_SIZE_IN_MB": "256",
"GOMA_SERVER_HOST": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog",
"GOMA_STORE_LOCAL_RUN_OUTPUT": "True",
"GOMA_TMP_DIR": "[CLEANUP]/goma",
"GOMA_USE_LOCAL": "False"
},
"infra_step": true,
"name": "setup goma.ensure infra/3pp/tools/cpython3/${platform}.install infra/3pp/tools/cpython3.ensure package directory",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@3@@@"
]
},
{
"cmd": [
"cipd",
"ensure",
"-root",
"[START_DIR]/cipd_tool/infra/3pp/tools/cpython3/0e548aa33f8113a45a5b3b62201e114e98e63d00f97296912380138f44597b07",
"-ensure-file",
"infra/3pp/tools/cpython3/${platform} version:pinned-version",
"-max-threads",
"0",
"-json-output",
"/path/to/tmp/json"
],
"env": {
"GLOG_log_dir": "[CLEANUP]",
"GOMA_CACHE_DIR": "[CACHE]/goma",
"GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
"GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
"GOMA_LOCAL_OUTPUT_CACHE_DIR": "[CACHE]/goma/localoutputcache",
"GOMA_MAX_SUM_OUTPUT_SIZE_IN_MB": "256",
"GOMA_SERVER_HOST": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog",
"GOMA_STORE_LOCAL_RUN_OUTPUT": "True",
"GOMA_TMP_DIR": "[CLEANUP]/goma",
"GOMA_USE_LOCAL": "False"
},
"infra_step": true,
"name": "setup goma.ensure infra/3pp/tools/cpython3/${platform}.install infra/3pp/tools/cpython3.ensure_installed",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@3@@@",
"@@@STEP_LOG_LINE@json.output@{@@@",
"@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
"@@@STEP_LOG_LINE@json.output@ {@@@",
"@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-version:pinned-v\",@@@",
"@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/3pp/tools/cpython3/resolved-platform\"@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@ ]@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@}@@@",
"@@@STEP_LOG_END@json.output@@@"
]
},
{
"cmd": [
"[START_DIR]/cipd_tool/infra/3pp/tools/cpython3/0e548aa33f8113a45a5b3b62201e114e98e63d00f97296912380138f44597b07/bin/python3",
"[CACHE]/goma/client/goma_ctl.py",
"restart"
],
"env": {
"GLOG_log_dir": "[CLEANUP]",
"GOMA_CACHE_DIR": "[CACHE]/goma",
"GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
"GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
"GOMA_LOCAL_OUTPUT_CACHE_DIR": "[CACHE]/goma/localoutputcache",
"GOMA_MAX_SUM_OUTPUT_SIZE_IN_MB": "256",
"GOMA_SERVER_HOST": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog",
"GOMA_STORE_LOCAL_RUN_OUTPUT": "True",
"GOMA_TMP_DIR": "[CLEANUP]/goma",
"GOMA_USE_LOCAL": "False"
},
"infra_step": true,
"name": "setup goma.start goma",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@"
]
},
{
"cmd": [
"python3",
"[START_DIR]/flutter/tools/gn",
"--no-lto"
],
"env": {
"GOMA_DIR": "[CACHE]/goma/client",
"GOMA_TMP_DIR": "[CLEANUP]/goma",
"GOMA_USE_LOCAL": "False"
},
"env_suffixes": {
"DEPOT_TOOLS_UPDATE": [
"0"
],
"PATH": [
"RECIPE_REPO[depot_tools]"
]
},
"name": "gn --no-lto"
},
{
"cmd": [],
"name": "teardown goma"
},
{
"cmd": [
"[START_DIR]/cipd_tool/infra/3pp/tools/cpython3/0e548aa33f8113a45a5b3b62201e114e98e63d00f97296912380138f44597b07/bin/python3",
"[CACHE]/goma/client/goma_ctl.py",
"jsonstatus",
"/path/to/tmp/json"
],
"env": {
"GLOG_log_dir": "[CLEANUP]",
"GOMA_CACHE_DIR": "[CACHE]/goma",
"GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
"GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
"GOMA_LOCAL_OUTPUT_CACHE_DIR": "[CACHE]/goma/localoutputcache",
"GOMA_MAX_SUM_OUTPUT_SIZE_IN_MB": "256",
"GOMA_SERVER_HOST": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog",
"GOMA_STORE_LOCAL_RUN_OUTPUT": "True",
"GOMA_TMP_DIR": "[CLEANUP]/goma",
"GOMA_USE_LOCAL": "False"
},
"infra_step": true,
"name": "teardown goma.goma jsonstatus",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@",
"@@@STEP_LOG_LINE@json.output@{@@@",
"@@@STEP_LOG_LINE@json.output@ \"foo\": \"bar\"@@@",
"@@@STEP_LOG_LINE@json.output@}@@@",
"@@@STEP_LOG_END@json.output@@@"
]
},
{
"cmd": [
"[START_DIR]/cipd_tool/infra/3pp/tools/cpython3/0e548aa33f8113a45a5b3b62201e114e98e63d00f97296912380138f44597b07/bin/python3",
"[CACHE]/goma/client/goma_ctl.py",
"stat"
],
"env": {
"GLOG_log_dir": "[CLEANUP]",
"GOMA_CACHE_DIR": "[CACHE]/goma",
"GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
"GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
"GOMA_LOCAL_OUTPUT_CACHE_DIR": "[CACHE]/goma/localoutputcache",
"GOMA_MAX_SUM_OUTPUT_SIZE_IN_MB": "256",
"GOMA_SERVER_HOST": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog",
"GOMA_STORE_LOCAL_RUN_OUTPUT": "True",
"GOMA_TMP_DIR": "[CLEANUP]/goma",
"GOMA_USE_LOCAL": "False"
},
"infra_step": true,
"name": "teardown goma.goma stats",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@"
]
},
{
"cmd": [
"[START_DIR]/cipd_tool/infra/3pp/tools/cpython3/0e548aa33f8113a45a5b3b62201e114e98e63d00f97296912380138f44597b07/bin/python3",
"[CACHE]/goma/client/goma_ctl.py",
"stop"
],
"env": {
"GLOG_log_dir": "[CLEANUP]",
"GOMA_CACHE_DIR": "[CACHE]/goma",
"GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
"GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
"GOMA_LOCAL_OUTPUT_CACHE_DIR": "[CACHE]/goma/localoutputcache",
"GOMA_MAX_SUM_OUTPUT_SIZE_IN_MB": "256",
"GOMA_SERVER_HOST": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog",
"GOMA_STORE_LOCAL_RUN_OUTPUT": "True",
"GOMA_TMP_DIR": "[CLEANUP]/goma",
"GOMA_USE_LOCAL": "False"
},
"infra_step": true,
"name": "teardown goma.stop goma",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[CLEANUP]/compiler_proxy.WARNING",
"/path/to/tmp/"
],
"env": {
"GOMA_TMP_DIR": "[CLEANUP]/goma",
"GOMA_USE_LOCAL": "False"
},
"infra_step": true,
"name": "teardown goma.read goma_client warning log",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@",
"@@@STEP_LOG_LINE@compiler_proxy.WARNING@test log@@@",
"@@@STEP_LOG_END@compiler_proxy.WARNING@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[CACHE]/goma/client/goma_stats.json",
"/path/to/tmp/"
],
"env": {
"GOMA_TMP_DIR": "[CLEANUP]/goma",
"GOMA_USE_LOCAL": "False"
},
"infra_step": true,
"name": "teardown goma.read goma_stats.json",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@"
]
},
{
"cmd": [],
"name": "setup goma (2)"
},
{
"cmd": [
"[START_DIR]/cipd_tool/infra/3pp/tools/cpython3/0e548aa33f8113a45a5b3b62201e114e98e63d00f97296912380138f44597b07/bin/python3",
"[CACHE]/goma/client/goma_ctl.py",
"restart"
],
"env": {
"GLOG_log_dir": "[CLEANUP]",
"GOMA_CACHE_DIR": "[CACHE]/goma",
"GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
"GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
"GOMA_LOCAL_OUTPUT_CACHE_DIR": "[CACHE]/goma/localoutputcache",
"GOMA_MAX_SUM_OUTPUT_SIZE_IN_MB": "256",
"GOMA_SERVER_HOST": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog",
"GOMA_STORE_LOCAL_RUN_OUTPUT": "True",
"GOMA_TMP_DIR": "[CLEANUP]/goma",
"GOMA_USE_LOCAL": "False"
},
"infra_step": true,
"name": "setup goma (2).start goma",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@"
]
},
{
"cmd": [
"[START_DIR]/flutter/third_party/ninja/ninja",
"-j",
"200",
"-C",
"[START_DIR]/out/profile",
"mytarget"
],
"env": {
"GOMA_TMP_DIR": "[CLEANUP]/goma",
"GOMA_USE_LOCAL": "False"
},
"env_suffixes": {
"DEPOT_TOOLS_UPDATE": [
"0"
],
"PATH": [
"RECIPE_REPO[depot_tools]"
]
},
"name": "build profile mytarget"
},
{
"cmd": [],
"name": "teardown goma (2)"
},
{
"cmd": [
"[START_DIR]/cipd_tool/infra/3pp/tools/cpython3/0e548aa33f8113a45a5b3b62201e114e98e63d00f97296912380138f44597b07/bin/python3",
"[CACHE]/goma/client/goma_ctl.py",
"jsonstatus",
"/path/to/tmp/json"
],
"env": {
"GLOG_log_dir": "[CLEANUP]",
"GOMA_CACHE_DIR": "[CACHE]/goma",
"GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
"GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
"GOMA_LOCAL_OUTPUT_CACHE_DIR": "[CACHE]/goma/localoutputcache",
"GOMA_MAX_SUM_OUTPUT_SIZE_IN_MB": "256",
"GOMA_SERVER_HOST": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog",
"GOMA_STORE_LOCAL_RUN_OUTPUT": "True",
"GOMA_TMP_DIR": "[CLEANUP]/goma",
"GOMA_USE_LOCAL": "False"
},
"infra_step": true,
"name": "teardown goma (2).goma jsonstatus",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@",
"@@@STEP_LOG_LINE@json.output@{@@@",
"@@@STEP_LOG_LINE@json.output@ \"foo\": \"bar\"@@@",
"@@@STEP_LOG_LINE@json.output@}@@@",
"@@@STEP_LOG_END@json.output@@@"
]
},
{
"cmd": [
"[START_DIR]/cipd_tool/infra/3pp/tools/cpython3/0e548aa33f8113a45a5b3b62201e114e98e63d00f97296912380138f44597b07/bin/python3",
"[CACHE]/goma/client/goma_ctl.py",
"stat"
],
"env": {
"GLOG_log_dir": "[CLEANUP]",
"GOMA_CACHE_DIR": "[CACHE]/goma",
"GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
"GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
"GOMA_LOCAL_OUTPUT_CACHE_DIR": "[CACHE]/goma/localoutputcache",
"GOMA_MAX_SUM_OUTPUT_SIZE_IN_MB": "256",
"GOMA_SERVER_HOST": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog",
"GOMA_STORE_LOCAL_RUN_OUTPUT": "True",
"GOMA_TMP_DIR": "[CLEANUP]/goma",
"GOMA_USE_LOCAL": "False"
},
"infra_step": true,
"name": "teardown goma (2).goma stats",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@"
]
},
{
"cmd": [
"[START_DIR]/cipd_tool/infra/3pp/tools/cpython3/0e548aa33f8113a45a5b3b62201e114e98e63d00f97296912380138f44597b07/bin/python3",
"[CACHE]/goma/client/goma_ctl.py",
"stop"
],
"env": {
"GLOG_log_dir": "[CLEANUP]",
"GOMA_CACHE_DIR": "[CACHE]/goma",
"GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
"GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
"GOMA_LOCAL_OUTPUT_CACHE_DIR": "[CACHE]/goma/localoutputcache",
"GOMA_MAX_SUM_OUTPUT_SIZE_IN_MB": "256",
"GOMA_SERVER_HOST": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog",
"GOMA_STORE_LOCAL_RUN_OUTPUT": "True",
"GOMA_TMP_DIR": "[CLEANUP]/goma",
"GOMA_USE_LOCAL": "False"
},
"infra_step": true,
"name": "teardown goma (2).stop goma",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[CLEANUP]/compiler_proxy.WARNING",
"/path/to/tmp/"
],
"env": {
"GOMA_TMP_DIR": "[CLEANUP]/goma",
"GOMA_USE_LOCAL": "False"
},
"infra_step": true,
"name": "teardown goma (2).read goma_client warning log",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@",
"@@@STEP_LOG_LINE@compiler_proxy.WARNING@test log@@@",
"@@@STEP_LOG_END@compiler_proxy.WARNING@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[CACHE]/goma/client/goma_stats.json",
"/path/to/tmp/"
],
"env": {
"GOMA_TMP_DIR": "[CLEANUP]/goma",
"GOMA_USE_LOCAL": "False"
},
"infra_step": true,
"name": "teardown goma (2).read goma_stats.json",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@"
]
},
{
"cmd": [
"python3",
"[START_DIR]/flutter/tools/gn",
"--no-goma",
"--no-rbe",
"--no-lto"
],
"env_suffixes": {
"DEPOT_TOOLS_UPDATE": [
"0"
],
"PATH": [
"RECIPE_REPO[depot_tools]"
]
},
"name": "gn --no-goma --no-rbe --no-lto"
},
{
"cmd": [
"[START_DIR]/flutter/third_party/ninja/ninja",
"-C",
"[START_DIR]/out/release",
"-j",
"5",
"mytarget"
],
"env_suffixes": {
"DEPOT_TOOLS_UPDATE": [
"0"
],
"PATH": [
"RECIPE_REPO[depot_tools]"
]
},
"name": "build release mytarget"
},
{
"cmd": [
"python3",
"[START_DIR]/flutter/tools/gn",
"--no-goma",
"--rbe",
"--no-lto"
],
"env_suffixes": {
"DEPOT_TOOLS_UPDATE": [
"0"
],
"PATH": [
"RECIPE_REPO[depot_tools]"
]
},
"name": "gn --no-goma --rbe --no-lto"
},
{
"cmd": [],
"name": "collect rbe logs"
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[CLEANUP]/rbe/bootstrap.WARNING",
"/path/to/tmp/"
],
"infra_step": true,
"name": "collect rbe logs.read bootstrap.WARNING",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@",
"@@@STEP_LOG_END@bootstrap.WARNING@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[CLEANUP]/rbe/rbe_metrics.txt",
"/path/to/tmp/"
],
"infra_step": true,
"name": "collect rbe logs.read rbe_metrics.txt",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@",
"@@@STEP_LOG_END@rbe_metrics.txt@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[CLEANUP]/rbe/reproxy.WARNING",
"/path/to/tmp/"
],
"infra_step": true,
"name": "collect rbe logs.read reproxy.WARNING",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@",
"@@@STEP_LOG_END@reproxy.WARNING@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[CLEANUP]/rbe/reproxy-gomaip.WARNING",
"/path/to/tmp/"
],
"infra_step": true,
"name": "collect rbe logs.read reproxy-gomaip.WARNING",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@",
"@@@STEP_LOG_END@reproxy-gomaip.WARNING@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[CLEANUP]/rbe/reproxy_outerr.log",
"/path/to/tmp/"
],
"infra_step": true,
"name": "collect rbe logs.read reproxy_outerr.log",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@",
"@@@STEP_LOG_END@reproxy_outerr.log@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[CLEANUP]/rbe/rewrapper.WARNING",
"/path/to/tmp/"
],
"infra_step": true,
"name": "collect rbe logs.read rewrapper.WARNING",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@",
"@@@STEP_LOG_END@rewrapper.WARNING@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"glob",
"[CLEANUP]/rbe",
"*.rrpl"
],
"infra_step": true,
"name": "collect rbe logs.find rrpl files",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@",
"@@@STEP_LOG_LINE@glob@[CLEANUP]/rbe/reproxy_2021-10-16_22_52_23.rrpl@@@",
"@@@STEP_LOG_END@glob@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[CLEANUP]/rbe/reproxy_2021-10-16_22_52_23.rrpl",
"/path/to/tmp/"
],
"infra_step": true,
"name": "collect rbe logs.read reproxy_2021-10-16_22_52_23.rrpl",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@",
"@@@STEP_LOG_END@reproxy_2021-10-16_22_52_23.rrpl@@@"
]
},
{
"cmd": [],
"name": "install infra/rbe/client"
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"ensure-directory",
"--mode",
"0o777",
"[START_DIR]/cipd_tool/infra/rbe/client/b81cce70892afbba54fe5a59b9f11369108e2ad2b39eec8a2d938caf7087875a"
],
"infra_step": true,
"name": "install infra/rbe/client.ensure package directory",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@"
]
},
{
"cmd": [
"cipd",
"ensure",
"-root",
"[START_DIR]/cipd_tool/infra/rbe/client/b81cce70892afbba54fe5a59b9f11369108e2ad2b39eec8a2d938caf7087875a",
"-ensure-file",
"infra/rbe/client/${platform} re_client_version:0.131.1.784ddbb-gomaip",
"-max-threads",
"0",
"-json-output",
"/path/to/tmp/json"
],
"infra_step": true,
"name": "install infra/rbe/client.ensure_installed",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@",
"@@@STEP_LOG_LINE@json.output@{@@@",
"@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
"@@@STEP_LOG_LINE@json.output@ {@@@",
"@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"re_client_version:0.131.1.784ddbb-gomaip\",@@@",
"@@@STEP_LOG_LINE@json.output@ \"package\": \"infra/rbe/client/resolved-platform\"@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@ ]@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@}@@@",
"@@@STEP_LOG_END@json.output@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"ensure-directory",
"--mode",
"0o777",
"[CACHE]/rbe/deps"
],
"infra_step": true,
"name": "create rbe cache dir"
},
{
"cmd": [],
"name": "setup remote execution"
},
{
"cmd": [
"[START_DIR]/cipd_tool/infra/rbe/client/b81cce70892afbba54fe5a59b9f11369108e2ad2b39eec8a2d938caf7087875a/bootstrap",
"--re_proxy=[START_DIR]/cipd_tool/infra/rbe/client/b81cce70892afbba54fe5a59b9f11369108e2ad2b39eec8a2d938caf7087875a/reproxy"
],
"env": {
"RBE_cache_dir": "[CACHE]/rbe/deps",
"RBE_deps_cache_max_mb": "512",
"RBE_enable_deps_cache": "true",
"RBE_instance": "fake_rbe_instance",
"RBE_log_dir": "[CLEANUP]/rbe",
"RBE_log_format": "reducedtext",
"RBE_output_dir": "[CLEANUP]/rbe",
"RBE_proxy_log_dir": "[CLEANUP]/rbe",
"RBE_server_address": "unix://[CLEANUP]/rbe/reproxy.sock",
"RBE_service": "remotebuildexecution.googleapis.com:443",
"RBE_socket_path": "[CLEANUP]/rbe/reproxy.sock",
"RBE_use_application_default_credentials": "false",
"RBE_use_gce_credentials": "true"
},
"infra_step": true,
"name": "setup remote execution.start reproxy",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@"
]
},
{
"cmd": [
"[START_DIR]/flutter/third_party/ninja/ninja",
"-j",
"5",
"-C",
"[START_DIR]/out/release",
"rbe_target"
],
"env": {
"RBE_cache_dir": "[CACHE]/rbe/deps",
"RBE_deps_cache_max_mb": "512",
"RBE_enable_deps_cache": "true",
"RBE_instance": "fake_rbe_instance",
"RBE_log_dir": "[CLEANUP]/rbe",
"RBE_log_format": "reducedtext",
"RBE_output_dir": "[CLEANUP]/rbe",
"RBE_proxy_log_dir": "[CLEANUP]/rbe",
"RBE_server_address": "unix://[CLEANUP]/rbe/reproxy.sock",
"RBE_service": "remotebuildexecution.googleapis.com:443",
"RBE_socket_path": "[CLEANUP]/rbe/reproxy.sock",
"RBE_use_application_default_credentials": "false",
"RBE_use_gce_credentials": "true"
},
"env_suffixes": {
"DEPOT_TOOLS_UPDATE": [
"0"
],
"PATH": [
"RECIPE_REPO[depot_tools]"
]
},
"name": "build release rbe_target",
"~followup_annotations": [
"@@@STEP_FAILURE@@@"
]
},
{
"cmd": [],
"name": "upload crash reproducer"
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"glob",
"[START_DIR]",
"*.sh"
],
"env": {
"RBE_cache_dir": "[CACHE]/rbe/deps",
"RBE_deps_cache_max_mb": "512",
"RBE_enable_deps_cache": "true",
"RBE_instance": "fake_rbe_instance",
"RBE_log_dir": "[CLEANUP]/rbe",
"RBE_log_format": "reducedtext",
"RBE_output_dir": "[CLEANUP]/rbe",
"RBE_proxy_log_dir": "[CLEANUP]/rbe",
"RBE_server_address": "unix://[CLEANUP]/rbe/reproxy.sock",
"RBE_service": "remotebuildexecution.googleapis.com:443",
"RBE_socket_path": "[CLEANUP]/rbe/reproxy.sock",
"RBE_use_application_default_credentials": "false",
"RBE_use_gce_credentials": "true"
},
"env_suffixes": {
"DEPOT_TOOLS_UPDATE": [
"0"
],
"PATH": [
"RECIPE_REPO[depot_tools]"
]
},
"infra_step": true,
"name": "upload crash reproducer.find reproducers",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@",
"@@@STEP_LOG_LINE@glob@[START_DIR]/[START_DIR]/foo.sh@@@",
"@@@STEP_LOG_END@glob@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"glob",
"[START_DIR]",
"foo.*"
],
"env": {
"RBE_cache_dir": "[CACHE]/rbe/deps",
"RBE_deps_cache_max_mb": "512",
"RBE_enable_deps_cache": "true",
"RBE_instance": "fake_rbe_instance",
"RBE_log_dir": "[CLEANUP]/rbe",
"RBE_log_format": "reducedtext",
"RBE_output_dir": "[CLEANUP]/rbe",
"RBE_proxy_log_dir": "[CLEANUP]/rbe",
"RBE_server_address": "unix://[CLEANUP]/rbe/reproxy.sock",
"RBE_service": "remotebuildexecution.googleapis.com:443",
"RBE_socket_path": "[CLEANUP]/rbe/reproxy.sock",
"RBE_use_application_default_credentials": "false",
"RBE_use_gce_credentials": "true"
},
"env_suffixes": {
"DEPOT_TOOLS_UPDATE": [
"0"
],
"PATH": [
"RECIPE_REPO[depot_tools]"
]
},
"infra_step": true,
"name": "upload crash reproducer.find foo files",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@",
"@@@STEP_LOG_LINE@glob@[START_DIR]/[START_DIR]/foo.sh@@@",
"@@@STEP_LOG_END@glob@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[START_DIR]/[START_DIR]/foo.sh",
"[START_DIR]"
],
"env": {
"RBE_cache_dir": "[CACHE]/rbe/deps",
"RBE_deps_cache_max_mb": "512",
"RBE_enable_deps_cache": "true",
"RBE_instance": "fake_rbe_instance",
"RBE_log_dir": "[CLEANUP]/rbe",
"RBE_log_format": "reducedtext",
"RBE_output_dir": "[CLEANUP]/rbe",
"RBE_proxy_log_dir": "[CLEANUP]/rbe",
"RBE_server_address": "unix://[CLEANUP]/rbe/reproxy.sock",
"RBE_service": "remotebuildexecution.googleapis.com:443",
"RBE_socket_path": "[CLEANUP]/rbe/reproxy.sock",
"RBE_use_application_default_credentials": "false",
"RBE_use_gce_credentials": "true"
},
"env_suffixes": {
"DEPOT_TOOLS_UPDATE": [
"0"
],
"PATH": [
"RECIPE_REPO[depot_tools]"
]
},
"infra_step": true,
"name": "upload crash reproducer.Copy crash reproduce file [START_DIR]/[START_DIR]/foo.sh",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@"
]
},
{
"cmd": [],
"name": "teardown remote execution"
},
{
"cmd": [
"[START_DIR]/cipd_tool/infra/rbe/client/b81cce70892afbba54fe5a59b9f11369108e2ad2b39eec8a2d938caf7087875a/bootstrap",
"--shutdown"
],
"env": {
"RBE_cache_dir": "[CACHE]/rbe/deps",
"RBE_deps_cache_max_mb": "512",
"RBE_enable_deps_cache": "true",
"RBE_instance": "fake_rbe_instance",
"RBE_log_dir": "[CLEANUP]/rbe",
"RBE_log_format": "reducedtext",
"RBE_output_dir": "[CLEANUP]/rbe",
"RBE_proxy_log_dir": "[CLEANUP]/rbe",
"RBE_server_address": "unix://[CLEANUP]/rbe/reproxy.sock",
"RBE_service": "remotebuildexecution.googleapis.com:443",
"RBE_socket_path": "[CLEANUP]/rbe/reproxy.sock",
"RBE_use_application_default_credentials": "false",
"RBE_use_gce_credentials": "true"
},
"infra_step": true,
"name": "teardown remote execution.stop reproxy",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@"
]
},
{
"cmd": [],
"name": "teardown remote execution.collect rbe logs",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[CLEANUP]/rbe/bootstrap.WARNING",
"/path/to/tmp/"
],
"env": {
"RBE_cache_dir": "[CACHE]/rbe/deps",
"RBE_deps_cache_max_mb": "512",
"RBE_enable_deps_cache": "true",
"RBE_instance": "fake_rbe_instance",
"RBE_log_dir": "[CLEANUP]/rbe",
"RBE_log_format": "reducedtext",
"RBE_output_dir": "[CLEANUP]/rbe",
"RBE_proxy_log_dir": "[CLEANUP]/rbe",
"RBE_server_address": "unix://[CLEANUP]/rbe/reproxy.sock",
"RBE_service": "remotebuildexecution.googleapis.com:443",
"RBE_socket_path": "[CLEANUP]/rbe/reproxy.sock",
"RBE_use_application_default_credentials": "false",
"RBE_use_gce_credentials": "true"
},
"infra_step": true,
"name": "teardown remote execution.collect rbe logs.read bootstrap.WARNING",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@2@@@",
"@@@STEP_LOG_END@bootstrap.WARNING@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[CLEANUP]/rbe/rbe_metrics.txt",
"/path/to/tmp/"
],
"env": {
"RBE_cache_dir": "[CACHE]/rbe/deps",
"RBE_deps_cache_max_mb": "512",
"RBE_enable_deps_cache": "true",
"RBE_instance": "fake_rbe_instance",
"RBE_log_dir": "[CLEANUP]/rbe",
"RBE_log_format": "reducedtext",
"RBE_output_dir": "[CLEANUP]/rbe",
"RBE_proxy_log_dir": "[CLEANUP]/rbe",
"RBE_server_address": "unix://[CLEANUP]/rbe/reproxy.sock",
"RBE_service": "remotebuildexecution.googleapis.com:443",
"RBE_socket_path": "[CLEANUP]/rbe/reproxy.sock",
"RBE_use_application_default_credentials": "false",
"RBE_use_gce_credentials": "true"
},
"infra_step": true,
"name": "teardown remote execution.collect rbe logs.read rbe_metrics.txt",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@2@@@",
"@@@STEP_LOG_END@rbe_metrics.txt@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[CLEANUP]/rbe/reproxy.WARNING",
"/path/to/tmp/"
],
"env": {
"RBE_cache_dir": "[CACHE]/rbe/deps",
"RBE_deps_cache_max_mb": "512",
"RBE_enable_deps_cache": "true",
"RBE_instance": "fake_rbe_instance",
"RBE_log_dir": "[CLEANUP]/rbe",
"RBE_log_format": "reducedtext",
"RBE_output_dir": "[CLEANUP]/rbe",
"RBE_proxy_log_dir": "[CLEANUP]/rbe",
"RBE_server_address": "unix://[CLEANUP]/rbe/reproxy.sock",
"RBE_service": "remotebuildexecution.googleapis.com:443",
"RBE_socket_path": "[CLEANUP]/rbe/reproxy.sock",
"RBE_use_application_default_credentials": "false",
"RBE_use_gce_credentials": "true"
},
"infra_step": true,
"name": "teardown remote execution.collect rbe logs.read reproxy.WARNING",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@2@@@",
"@@@STEP_LOG_END@reproxy.WARNING@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[CLEANUP]/rbe/reproxy-gomaip.WARNING",
"/path/to/tmp/"
],
"env": {
"RBE_cache_dir": "[CACHE]/rbe/deps",
"RBE_deps_cache_max_mb": "512",
"RBE_enable_deps_cache": "true",
"RBE_instance": "fake_rbe_instance",
"RBE_log_dir": "[CLEANUP]/rbe",
"RBE_log_format": "reducedtext",
"RBE_output_dir": "[CLEANUP]/rbe",
"RBE_proxy_log_dir": "[CLEANUP]/rbe",
"RBE_server_address": "unix://[CLEANUP]/rbe/reproxy.sock",
"RBE_service": "remotebuildexecution.googleapis.com:443",
"RBE_socket_path": "[CLEANUP]/rbe/reproxy.sock",
"RBE_use_application_default_credentials": "false",
"RBE_use_gce_credentials": "true"
},
"infra_step": true,
"name": "teardown remote execution.collect rbe logs.read reproxy-gomaip.WARNING",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@2@@@",
"@@@STEP_LOG_END@reproxy-gomaip.WARNING@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[CLEANUP]/rbe/reproxy_outerr.log",
"/path/to/tmp/"
],
"env": {
"RBE_cache_dir": "[CACHE]/rbe/deps",
"RBE_deps_cache_max_mb": "512",
"RBE_enable_deps_cache": "true",
"RBE_instance": "fake_rbe_instance",
"RBE_log_dir": "[CLEANUP]/rbe",
"RBE_log_format": "reducedtext",
"RBE_output_dir": "[CLEANUP]/rbe",
"RBE_proxy_log_dir": "[CLEANUP]/rbe",
"RBE_server_address": "unix://[CLEANUP]/rbe/reproxy.sock",
"RBE_service": "remotebuildexecution.googleapis.com:443",
"RBE_socket_path": "[CLEANUP]/rbe/reproxy.sock",
"RBE_use_application_default_credentials": "false",
"RBE_use_gce_credentials": "true"
},
"infra_step": true,
"name": "teardown remote execution.collect rbe logs.read reproxy_outerr.log",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@2@@@",
"@@@STEP_LOG_END@reproxy_outerr.log@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[CLEANUP]/rbe/rewrapper.WARNING",
"/path/to/tmp/"
],
"env": {
"RBE_cache_dir": "[CACHE]/rbe/deps",
"RBE_deps_cache_max_mb": "512",
"RBE_enable_deps_cache": "true",
"RBE_instance": "fake_rbe_instance",
"RBE_log_dir": "[CLEANUP]/rbe",
"RBE_log_format": "reducedtext",
"RBE_output_dir": "[CLEANUP]/rbe",
"RBE_proxy_log_dir": "[CLEANUP]/rbe",
"RBE_server_address": "unix://[CLEANUP]/rbe/reproxy.sock",
"RBE_service": "remotebuildexecution.googleapis.com:443",
"RBE_socket_path": "[CLEANUP]/rbe/reproxy.sock",
"RBE_use_application_default_credentials": "false",
"RBE_use_gce_credentials": "true"
},
"infra_step": true,
"name": "teardown remote execution.collect rbe logs.read rewrapper.WARNING",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@2@@@",
"@@@STEP_LOG_END@rewrapper.WARNING@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"glob",
"[CLEANUP]/rbe",
"*.rrpl"
],
"env": {
"RBE_cache_dir": "[CACHE]/rbe/deps",
"RBE_deps_cache_max_mb": "512",
"RBE_enable_deps_cache": "true",
"RBE_instance": "fake_rbe_instance",
"RBE_log_dir": "[CLEANUP]/rbe",
"RBE_log_format": "reducedtext",
"RBE_output_dir": "[CLEANUP]/rbe",
"RBE_proxy_log_dir": "[CLEANUP]/rbe",
"RBE_server_address": "unix://[CLEANUP]/rbe/reproxy.sock",
"RBE_service": "remotebuildexecution.googleapis.com:443",
"RBE_socket_path": "[CLEANUP]/rbe/reproxy.sock",
"RBE_use_application_default_credentials": "false",
"RBE_use_gce_credentials": "true"
},
"infra_step": true,
"name": "teardown remote execution.collect rbe logs.find rrpl files",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@2@@@",
"@@@STEP_LOG_LINE@glob@[CLEANUP]/rbe/reproxy_2021-10-16_22_52_23.rrpl@@@",
"@@@STEP_LOG_END@glob@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[CLEANUP]/rbe/reproxy_2021-10-16_22_52_23.rrpl",
"/path/to/tmp/"
],
"env": {
"RBE_cache_dir": "[CACHE]/rbe/deps",
"RBE_deps_cache_max_mb": "512",
"RBE_enable_deps_cache": "true",
"RBE_instance": "fake_rbe_instance",
"RBE_log_dir": "[CLEANUP]/rbe",
"RBE_log_format": "reducedtext",
"RBE_output_dir": "[CLEANUP]/rbe",
"RBE_proxy_log_dir": "[CLEANUP]/rbe",
"RBE_server_address": "unix://[CLEANUP]/rbe/reproxy.sock",
"RBE_service": "remotebuildexecution.googleapis.com:443",
"RBE_socket_path": "[CLEANUP]/rbe/reproxy.sock",
"RBE_use_application_default_credentials": "false",
"RBE_use_gce_credentials": "true"
},
"infra_step": true,
"name": "teardown remote execution.collect rbe logs.read reproxy_2021-10-16_22_52_23.rrpl",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@2@@@",
"@@@STEP_LOG_END@reproxy_2021-10-16_22_52_23.rrpl@@@"
]
},
{
"failure": {
"failure": {},
"humanReason": "Step('build release rbe_target') (retcode: 1)"
},
"name": "$result"
}
]