blob: 48b95c8de7cf628f9b3b13dd42200ae87a9280ef [file] [log] [blame]
[
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[depot_tools::gitiles]/resources/gerrit_client.py",
"--json-file",
"/path/to/tmp/json",
"--url",
"https://skia.googlesource.com/skia.git/+log/b44572fbfeb669998053b023f473b9c274f2f2cf",
"--format",
"json",
"--log-limit",
"1"
],
"name": "gitiles log: b44572fbfeb669998053b023f473b9c274f2f2cf",
"~followup_annotations": [
"@@@STEP_TEXT@<br />3 commits fetched@@@",
"@@@STEP_LOG_LINE@json.output@{@@@",
"@@@STEP_LOG_LINE@json.output@ \"log\": [@@@",
"@@@STEP_LOG_LINE@json.output@ {@@@",
"@@@STEP_LOG_LINE@json.output@ \"author\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"email\": \"fake_6e0e0a9f6cbf09078aa4730d1a0dc0aa722ddc11@fake_0.email.com\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"name\": \"fake_6e0e0a9f6cbf09078aa4730d1a0dc0aa722ddc11\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"time\": \"Mon Jan 01 00:00:00 2015\"@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ \"commit\": \"188e23c7abc4b205f0f80fb345ff63ec5b716be8\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"committer\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"email\": \"fake_6e0e0a9f6cbf09078aa4730d1a0dc0aa722ddc11@fake_0.email.com\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"name\": \"fake_6e0e0a9f6cbf09078aa4730d1a0dc0aa722ddc11\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"time\": \"Mon Jan 01 00:00:00 2015\"@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ \"message\": \"fake 6e0e0a9f6cbf09078aa4730d1a0dc0aa722ddc11 msg 0\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"parents\": [@@@",
"@@@STEP_LOG_LINE@json.output@ \"d2231a340fd47b47d61d0f99a188e46e6aabba0a\"@@@",
"@@@STEP_LOG_LINE@json.output@ ], @@@",
"@@@STEP_LOG_LINE@json.output@ \"tree\": \"ab06b3cc93af02b35e9f7ce12a14502f198223bc\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"tree_diff\": [@@@",
"@@@STEP_LOG_LINE@json.output@ {@@@",
"@@@STEP_LOG_LINE@json.output@ \"new_id\": \"21e542e7f47d56d0bb1c0bd816388954371f2763\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"new_mode\": 33188, @@@",
"@@@STEP_LOG_LINE@json.output@ \"new_path\": \"a.py\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"old_id\": \"0000000000000000000000000000000000000000\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"old_mode\": 0, @@@",
"@@@STEP_LOG_LINE@json.output@ \"type\": \"add\"@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@ ]@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ {@@@",
"@@@STEP_LOG_LINE@json.output@ \"author\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"email\": \"fake_6e0e0a9f6cbf09078aa4730d1a0dc0aa722ddc11@fake_1.email.com\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"name\": \"fake_6e0e0a9f6cbf09078aa4730d1a0dc0aa722ddc11\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"time\": \"Mon Jan 01 00:00:00 2015\"@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ \"commit\": \"1c7ef2f145e83b96c44638b6d5f729c956557be2\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"committer\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"email\": \"fake_6e0e0a9f6cbf09078aa4730d1a0dc0aa722ddc11@fake_1.email.com\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"name\": \"fake_6e0e0a9f6cbf09078aa4730d1a0dc0aa722ddc11\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"time\": \"Mon Jan 01 00:00:00 2015\"@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ \"message\": \"fake 6e0e0a9f6cbf09078aa4730d1a0dc0aa722ddc11 msg 1\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"parents\": [@@@",
"@@@STEP_LOG_LINE@json.output@ \"19a62f1fb22de68d871c76dcd6bfbe26e4972d51\"@@@",
"@@@STEP_LOG_LINE@json.output@ ], @@@",
"@@@STEP_LOG_LINE@json.output@ \"tree\": \"d78fb880f555fef9e997b65eadf4875afa6e675f\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"tree_diff\": [@@@",
"@@@STEP_LOG_LINE@json.output@ {@@@",
"@@@STEP_LOG_LINE@json.output@ \"new_id\": \"b70df02b23e56bd3a66d91b46db8957253d49cb2\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"new_mode\": 33188, @@@",
"@@@STEP_LOG_LINE@json.output@ \"new_path\": \"b.py\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"old_id\": \"0000000000000000000000000000000000000000\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"old_mode\": 0, @@@",
"@@@STEP_LOG_LINE@json.output@ \"type\": \"add\"@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@ ]@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ {@@@",
"@@@STEP_LOG_LINE@json.output@ \"author\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"email\": \"fake_6e0e0a9f6cbf09078aa4730d1a0dc0aa722ddc11@fake_2.email.com\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"name\": \"fake_6e0e0a9f6cbf09078aa4730d1a0dc0aa722ddc11\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"time\": \"Mon Jan 01 00:00:00 2015\"@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ \"commit\": \"ba8ae7c559f6fd6db024db684ed1deb081c742ff\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"committer\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"email\": \"fake_6e0e0a9f6cbf09078aa4730d1a0dc0aa722ddc11@fake_2.email.com\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"name\": \"fake_6e0e0a9f6cbf09078aa4730d1a0dc0aa722ddc11\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"time\": \"Mon Jan 01 00:00:00 2015\"@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ \"message\": \"fake 6e0e0a9f6cbf09078aa4730d1a0dc0aa722ddc11 msg 2\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"parents\": [@@@",
"@@@STEP_LOG_LINE@json.output@ \"cca2d4c0f81e4e88b687f61cb3b15689b483306c\"@@@",
"@@@STEP_LOG_LINE@json.output@ ], @@@",
"@@@STEP_LOG_LINE@json.output@ \"tree\": \"49714cca448641cb04fb450e08bef1f2ffd7dd5f\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"tree_diff\": [@@@",
"@@@STEP_LOG_LINE@json.output@ {@@@",
"@@@STEP_LOG_LINE@json.output@ \"new_id\": \"e4d5f96dcea6f8b25ad48a6e640f3fdfa0845287\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"new_mode\": 33188, @@@",
"@@@STEP_LOG_LINE@json.output@ \"new_path\": \"c.py\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"old_id\": \"0000000000000000000000000000000000000000\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"old_mode\": 0, @@@",
"@@@STEP_LOG_LINE@json.output@ \"type\": \"add\"@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@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": [
"python",
"\nfrom __future__ import print_function\nimport subprocess\nimport sys\n\nwhich = 'where' if sys.platform == 'win32' else 'which'\ngit = subprocess.check_output([which, 'git']).decode('utf-8')\nprint('git was found at %s' % git)\nif 'cipd_bin_packages' not in git:\n print('Git must be obtained through CIPD.', file=sys.stderr)\n sys.exit(1)\n"
],
"env": {
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"name": "Assert that Git is from CIPD",
"~followup_annotations": [
"@@@STEP_LOG_LINE@python.inline@@@@",
"@@@STEP_LOG_LINE@python.inline@from __future__ import print_function@@@",
"@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
"@@@STEP_LOG_LINE@python.inline@import sys@@@",
"@@@STEP_LOG_LINE@python.inline@@@@",
"@@@STEP_LOG_LINE@python.inline@which = 'where' if sys.platform == 'win32' else 'which'@@@",
"@@@STEP_LOG_LINE@python.inline@git = subprocess.check_output([which, 'git']).decode('utf-8')@@@",
"@@@STEP_LOG_LINE@python.inline@print('git was found at %s' % git)@@@",
"@@@STEP_LOG_LINE@python.inline@if 'cipd_bin_packages' not in git:@@@",
"@@@STEP_LOG_LINE@python.inline@ print('Git must be obtained through CIPD.', file=sys.stderr)@@@",
"@@@STEP_LOG_LINE@python.inline@ sys.exit(1)@@@",
"@@@STEP_LOG_END@python.inline@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"ensure-directory",
"--mode",
"0777",
"[START_DIR]"
],
"infra_step": true,
"name": "makedirs checkout_path"
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"remove",
"[START_DIR]/.gclient_entries"
],
"infra_step": true,
"name": "remove [START_DIR]/.gclient_entries"
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
"--spec-path",
"cache_dir = '[START_DIR]/cache/git'\nsolutions = [{'deps_file': '.DEPS.git', 'managed': False, 'name': 'skia', 'url': 'https://skia.googlesource.com/skia.git'}]",
"--patch_root",
"skia",
"--revision_mapping_file",
"{\"got_revision\": \"skia\"}",
"--git-cache-dir",
"[START_DIR]/cache/git",
"--cleanup-dir",
"[CLEANUP]/bot_update",
"--output_json",
"/path/to/tmp/json",
"--revision",
"skia@d2231a340fd47b47d61d0f99a188e46e6aabba0a",
"--download_topics"
],
"env": {
"DEPOT_TOOLS_COLLECT_METRICS": "0",
"GIT_HTTP_LOW_SPEED_LIMIT": "102400",
"GIT_HTTP_LOW_SPEED_TIME": "1800"
},
"env_suffixes": {
"DEPOT_TOOLS_UPDATE": [
"0"
],
"PATH": [
"RECIPE_REPO[depot_tools]"
]
},
"infra_step": true,
"name": "bot_update",
"~followup_annotations": [
"@@@STEP_TEXT@Some step text@@@",
"@@@STEP_LOG_LINE@json.output@{@@@",
"@@@STEP_LOG_LINE@json.output@ \"did_run\": true, @@@",
"@@@STEP_LOG_LINE@json.output@ \"fixed_revisions\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"skia\": \"d2231a340fd47b47d61d0f99a188e46e6aabba0a\"@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ \"manifest\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"skia\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"repository\": \"https://fake.org/skia.git\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"revision\": \"d2231a340fd47b47d61d0f99a188e46e6aabba0a\"@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ \"patch_failure\": false, @@@",
"@@@STEP_LOG_LINE@json.output@ \"patch_root\": \"skia\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"properties\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"got_revision\": \"d2231a340fd47b47d61d0f99a188e46e6aabba0a\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"got_revision_cp\": \"refs/heads/main@{#164710}\"@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ \"root\": \"skia\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"source_manifest\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"directories\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"skia\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"git_checkout\": {@@@",
"@@@STEP_LOG_LINE@json.output@ \"repo_url\": \"https://fake.org/skia.git\", @@@",
"@@@STEP_LOG_LINE@json.output@ \"revision\": \"d2231a340fd47b47d61d0f99a188e46e6aabba0a\"@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@ }@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ \"version\": 0@@@",
"@@@STEP_LOG_LINE@json.output@ }, @@@",
"@@@STEP_LOG_LINE@json.output@ \"step_text\": \"Some step text\"@@@",
"@@@STEP_LOG_LINE@json.output@}@@@",
"@@@STEP_LOG_END@json.output@@@",
"@@@SET_BUILD_PROPERTY@got_revision@\"d2231a340fd47b47d61d0f99a188e46e6aabba0a\"@@@",
"@@@SET_BUILD_PROPERTY@got_revision_cp@\"refs/heads/main@{#164710}\"@@@"
]
},
{
"cmd": [
"python",
"\nimport shutil\nimport sys\nshutil.copytree(sys.argv[1], sys.argv[2], dirs_exist_ok=True)\n",
"[START_DIR]/k/skia",
"[START_DIR]/skia"
],
"name": "copy Skia repository checkout from [START_DIR]/k/skia to [START_DIR]/skia",
"~followup_annotations": [
"@@@STEP_LOG_LINE@python.inline@@@@",
"@@@STEP_LOG_LINE@python.inline@import shutil@@@",
"@@@STEP_LOG_LINE@python.inline@import sys@@@",
"@@@STEP_LOG_LINE@python.inline@shutil.copytree(sys.argv[1], sys.argv[2], dirs_exist_ok=True)@@@",
"@@@STEP_LOG_END@python.inline@@@"
]
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"rmtree",
"[START_DIR]/k/skia"
],
"infra_step": true,
"name": "remove [START_DIR]/k/skia"
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"ensure-directory",
"--mode",
"0777",
"[START_DIR]/tmp"
],
"infra_step": true,
"name": "makedirs tmp_dir"
},
{
"cmd": [
"vpython3",
"-u",
"RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
"--json-output",
"/path/to/tmp/json",
"copy",
"[START_DIR]/skia/infra/bots/assets/clang_linux/VERSION",
"/path/to/tmp/"
],
"infra_step": true,
"name": "Get clang_linux VERSION",
"~followup_annotations": [
"@@@STEP_LOG_LINE@VERSION@42@@@",
"@@@STEP_LOG_END@VERSION@@@"
]
},
{
"cmd": [
"python",
"[START_DIR]/skia/bin/fetch-gn"
],
"cwd": "[START_DIR]/skia",
"env": {
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
"name": "fetch-gn"
},
{
"cmd": [
"[START_DIR]/ccache_linux/bin/ccache",
"-s"
],
"cwd": "[START_DIR]/skia",
"env": {
"CCACHE_COMPILERCHECK": "content",
"CCACHE_DIR": "[START_DIR]/cache/ccache",
"CCACHE_MAXFILES": "0",
"CCACHE_MAXSIZE": "75G",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"name": "ccache stats-start"
},
{
"cmd": [
"[START_DIR]/skia/bin/gn",
"gen",
"[START_DIR]/cache/work/skia/out/Build-Debian10-Clang-arm-Release-NoPatch/Release",
"--args=cc=\"[START_DIR]/clang_linux/bin/clang\" cc_wrapper=\"[START_DIR]/ccache_linux/bin/ccache\" cxx=\"[START_DIR]/clang_linux/bin/clang++\" extra_cflags=[\"-B[START_DIR]/clang_linux/bin\", \"-DPLACEHOLDER_clang_linux_version=42\"] extra_ldflags=[\"-B[START_DIR]/clang_linux/bin\", \"-fuse-ld=lld\", \"-L[START_DIR]/clang_linux/lib\"] is_debug=false target_cpu=\"arm\" werror=true"
],
"cwd": "[START_DIR]/skia",
"env": {
"CCACHE_COMPILERCHECK": "content",
"CCACHE_DIR": "[START_DIR]/cache/ccache",
"CCACHE_MAXFILES": "0",
"CCACHE_MAXSIZE": "75G",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"name": "gn gen"
},
{
"cmd": [
"ninja",
"-C",
"[START_DIR]/cache/work/skia/out/Build-Debian10-Clang-arm-Release-NoPatch/Release"
],
"cwd": "[START_DIR]/skia",
"env": {
"CCACHE_COMPILERCHECK": "content",
"CCACHE_DIR": "[START_DIR]/cache/ccache",
"CCACHE_MAXFILES": "0",
"CCACHE_MAXSIZE": "75G",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"name": "ninja"
},
{
"cmd": [
"[START_DIR]/ccache_linux/bin/ccache",
"-s"
],
"cwd": "[START_DIR]/skia",
"env": {
"CCACHE_COMPILERCHECK": "content",
"CCACHE_DIR": "[START_DIR]/cache/ccache",
"CCACHE_MAXFILES": "0",
"CCACHE_MAXSIZE": "75G",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"name": "ccache stats-end"
},
{
"cmd": [
"python",
"import errno\nimport glob\nimport os\nimport shutil\nimport sys\n\nsrc = sys.argv[1]\ndst = sys.argv[2]\nbuild_products = ['dm', 'dm.exe', 'dm.app', 'fm', 'fm.exe', 'nanobench.app', 'get_images_from_skps', 'get_images_from_skps.exe', 'nanobench', 'nanobench.exe', 'skpbench', 'skpbench.exe', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'skottie_tool', 'lib/*.so', 'run_testlab']\n\ntry:\n os.makedirs(dst)\nexcept OSError as e:\n if e.errno != errno.EEXIST:\n raise\n\nfor pattern in build_products:\n path = os.path.join(src, pattern)\n for f in glob.glob(path):\n dst_path = os.path.join(dst, os.path.relpath(f, src))\n if not os.path.isdir(os.path.dirname(dst_path)):\n os.makedirs(os.path.dirname(dst_path))\n print('Copying build product %s to %s' % (f, dst_path))\n shutil.move(f, dst_path)\n",
"[START_DIR]/cache/work/skia/out/Build-Debian10-Clang-arm-Release-NoPatch/Release",
"[START_DIR]/[SWARM_OUT_DIR]"
],
"infra_step": true,
"name": "copy build products",
"~followup_annotations": [
"@@@STEP_LOG_LINE@python.inline@import errno@@@",
"@@@STEP_LOG_LINE@python.inline@import glob@@@",
"@@@STEP_LOG_LINE@python.inline@import os@@@",
"@@@STEP_LOG_LINE@python.inline@import shutil@@@",
"@@@STEP_LOG_LINE@python.inline@import sys@@@",
"@@@STEP_LOG_LINE@python.inline@@@@",
"@@@STEP_LOG_LINE@python.inline@src = sys.argv[1]@@@",
"@@@STEP_LOG_LINE@python.inline@dst = sys.argv[2]@@@",
"@@@STEP_LOG_LINE@python.inline@build_products = ['dm', 'dm.exe', 'dm.app', 'fm', 'fm.exe', 'nanobench.app', 'get_images_from_skps', 'get_images_from_skps.exe', 'nanobench', 'nanobench.exe', 'skpbench', 'skpbench.exe', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'skottie_tool', 'lib/*.so', 'run_testlab']@@@",
"@@@STEP_LOG_LINE@python.inline@@@@",
"@@@STEP_LOG_LINE@python.inline@try:@@@",
"@@@STEP_LOG_LINE@python.inline@ os.makedirs(dst)@@@",
"@@@STEP_LOG_LINE@python.inline@except OSError as e:@@@",
"@@@STEP_LOG_LINE@python.inline@ if e.errno != errno.EEXIST:@@@",
"@@@STEP_LOG_LINE@python.inline@ raise@@@",
"@@@STEP_LOG_LINE@python.inline@@@@",
"@@@STEP_LOG_LINE@python.inline@for pattern in build_products:@@@",
"@@@STEP_LOG_LINE@python.inline@ path = os.path.join(src, pattern)@@@",
"@@@STEP_LOG_LINE@python.inline@ for f in glob.glob(path):@@@",
"@@@STEP_LOG_LINE@python.inline@ dst_path = os.path.join(dst, os.path.relpath(f, src))@@@",
"@@@STEP_LOG_LINE@python.inline@ if not os.path.isdir(os.path.dirname(dst_path)):@@@",
"@@@STEP_LOG_LINE@python.inline@ os.makedirs(os.path.dirname(dst_path))@@@",
"@@@STEP_LOG_LINE@python.inline@ print('Copying build product %s to %s' % (f, dst_path))@@@",
"@@@STEP_LOG_LINE@python.inline@ shutil.move(f, dst_path)@@@",
"@@@STEP_LOG_END@python.inline@@@"
]
},
{
"name": "$result"
}
]