[infra] Retry failed pushes in Android flavor
It seems like we see quite a few "force quarantined" bots when pushing
resources to the device fails. Rewrite copy_directory_contents_to_device
to use the _adb method, which automatically retries.
Change-Id: Iae36f8e42e85a58fdddc8c9dc80e693a371fab8b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248560
Commit-Queue: Eric Boren <borenet@google.com>
Auto-Submit: Ben Wagner aka dogben <benjaminwagner@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
diff --git a/infra/bots/recipe_modules/flavor/android.py b/infra/bots/recipe_modules/flavor/android.py
index 39c75a6..e4944a6 100644
--- a/infra/bots/recipe_modules/flavor/android.py
+++ b/infra/bots/recipe_modules/flavor/android.py
@@ -532,23 +532,29 @@
def copy_directory_contents_to_device(self, host, device):
# Copy the tree, avoiding hidden directories and resolving symlinks.
- self.m.run(self.m.python.inline, 'push %s/* %s' % (host, device),
- program="""
- import os
- import subprocess
- import sys
- host = sys.argv[1]
- device = sys.argv[2]
- for d, _, fs in os.walk(host):
- p = os.path.relpath(d, host)
- if p != '.' and p.startswith('.'):
- continue
- for f in fs:
- print os.path.join(p,f)
- subprocess.check_call(['%s', 'push',
- os.path.realpath(os.path.join(host, p, f)),
- os.path.join(device, p, f)])
- """ % self.ADB_BINARY, args=[host, device], infra_step=True)
+ sep = self.m.path.sep
+ host_str = str(host).rstrip(sep) + sep
+ device = device.rstrip('/')
+ with self.m.step.nest('push %s* %s' % (host_str, device)):
+ contents = self.m.file.listdir('list %s' % host, host, recursive=True,
+ test_data=['file1',
+ 'subdir' + sep + 'file2',
+ '.file3',
+ '.ignore' + sep + 'file4'])
+ for path in contents:
+ path_str = str(path)
+ assert path_str.startswith(host_str), (
+ 'expected %s to have %s as a prefix' % (path_str, host_str))
+ relpath = path_str[len(host_str):]
+ # NOTE(dogben): Previous logic used os.walk and skipped directories
+ # starting with '.', but not files starting with '.'. It's not clear
+ # what the reason was (maybe skipping .git?), but I'm keeping that
+ # behavior here.
+ if self.m.path.dirname(relpath).startswith('.'):
+ continue
+ device_path = device + '/' + relpath # Android paths use /
+ self._adb('push %s' % path, 'push',
+ self.m.path.realpath(path), device_path)
def copy_directory_contents_to_host(self, device, host):
# TODO(borenet): When all of our devices are on Android 6.0 and up, we can
diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android_SkottieTracing.json b/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android_SkottieTracing.json
index c890f58..372cb4e 100644
--- a/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android_SkottieTracing.json
+++ b/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android_SkottieTracing.json
@@ -141,36 +141,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -273,36 +323,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -421,36 +521,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -569,36 +719,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android.json b/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android.json
index 6b91e08..bd7c834 100644
--- a/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android.json
+++ b/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android.json
@@ -141,36 +141,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -273,36 +323,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -421,36 +521,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -569,36 +719,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android.json b/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android.json
index 66f24e5..378e2fd 100644
--- a/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android.json
+++ b/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android.json
@@ -141,36 +141,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -273,36 +323,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -421,36 +521,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -569,36 +719,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-Pixel-GPU-Adreno530-arm64-Release-All-Android_Skpbench_Mskp.json b/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-Pixel-GPU-Adreno530-arm64-Release-All-Android_Skpbench_Mskp.json
index 4becdab..7c768d7 100644
--- a/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-Pixel-GPU-Adreno530-arm64-Release-All-Android_Skpbench_Mskp.json
+++ b/infra/bots/recipe_modules/flavor/examples/full.expected/Perf-Android-Clang-Pixel-GPU-Adreno530-arm64-Release-All-Android_Skpbench_Mskp.json
@@ -240,36 +240,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/mskp"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/mskp/* /sdcard/revenge_of_the_skiabot/mskp"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/mskp",
- "/sdcard/revenge_of_the_skiabot/mskp"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/mskp/* /sdcard/revenge_of_the_skiabot/mskp.list [START_DIR]/mskp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/mskp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/mskp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/mskp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/mskp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/mskp/.file3",
+ "/sdcard/revenge_of_the_skiabot/mskp/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/mskp/* /sdcard/revenge_of_the_skiabot/mskp",
+ "name": "push [START_DIR]/mskp/* /sdcard/revenge_of_the_skiabot/mskp.push [START_DIR]/mskp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/mskp/file1",
+ "/sdcard/revenge_of_the_skiabot/mskp/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/mskp/* /sdcard/revenge_of_the_skiabot/mskp.push [START_DIR]/mskp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/mskp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/mskp/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/mskp/* /sdcard/revenge_of_the_skiabot/mskp.push [START_DIR]/mskp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android.json b/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android.json
index 363d834..6398009 100644
--- a/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android.json
+++ b/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android.json
@@ -141,36 +141,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -273,36 +323,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -421,36 +521,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -569,36 +719,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android.json b/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android.json
index 45e0eb0..a7da2e5 100644
--- a/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android.json
+++ b/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Debug-All-Android.json
@@ -141,36 +141,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -273,36 +323,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -421,36 +521,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -569,36 +719,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android.json b/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android.json
index 036bd18..06609f7 100644
--- a/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android.json
+++ b/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Debug-All-Android.json
@@ -141,36 +141,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -273,36 +323,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -421,36 +521,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -569,36 +719,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Release-All-Android_ASAN.json b/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Release-All-Android_ASAN.json
index d7e9f47..a2dbb24 100644
--- a/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Release-All-Android_ASAN.json
+++ b/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Release-All-Android_ASAN.json
@@ -231,36 +231,86 @@
]
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -363,36 +413,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -511,36 +611,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -659,36 +809,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Debug-All-Android_Vulkan.json b/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Debug-All-Android_Vulkan.json
index 93567bd..860d9f1 100644
--- a/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Debug-All-Android_Vulkan.json
+++ b/infra/bots/recipe_modules/flavor/examples/full.expected/Test-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Debug-All-Android_Vulkan.json
@@ -141,36 +141,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -273,36 +323,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -421,36 +521,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -569,36 +719,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/cpu_scale_failed.json b/infra/bots/recipe_modules/flavor/examples/full.expected/cpu_scale_failed.json
index 45667b1..7e90002 100644
--- a/infra/bots/recipe_modules/flavor/examples/full.expected/cpu_scale_failed.json
+++ b/infra/bots/recipe_modules/flavor/examples/full.expected/cpu_scale_failed.json
@@ -141,36 +141,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -273,36 +323,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -421,36 +521,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -569,36 +719,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/cpu_scale_failed_golo.json b/infra/bots/recipe_modules/flavor/examples/full.expected/cpu_scale_failed_golo.json
index 83ccbf2..794c19d 100644
--- a/infra/bots/recipe_modules/flavor/examples/full.expected/cpu_scale_failed_golo.json
+++ b/infra/bots/recipe_modules/flavor/examples/full.expected/cpu_scale_failed_golo.json
@@ -141,36 +141,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -273,36 +323,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -421,36 +521,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -569,36 +719,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/cpu_scale_failed_once.json b/infra/bots/recipe_modules/flavor/examples/full.expected/cpu_scale_failed_once.json
index baf8179..c427fa9 100644
--- a/infra/bots/recipe_modules/flavor/examples/full.expected/cpu_scale_failed_once.json
+++ b/infra/bots/recipe_modules/flavor/examples/full.expected/cpu_scale_failed_once.json
@@ -141,36 +141,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -273,36 +323,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -421,36 +521,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -569,36 +719,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/failed_infra_step.json b/infra/bots/recipe_modules/flavor/examples/full.expected/failed_infra_step.json
index 6de31b4..042bbeb 100644
--- a/infra/bots/recipe_modules/flavor/examples/full.expected/failed_infra_step.json
+++ b/infra/bots/recipe_modules/flavor/examples/full.expected/failed_infra_step.json
@@ -141,36 +141,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -273,36 +323,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -421,36 +521,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -569,36 +719,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/failed_read_version.json b/infra/bots/recipe_modules/flavor/examples/full.expected/failed_read_version.json
index 2d73c6e..57fd360 100644
--- a/infra/bots/recipe_modules/flavor/examples/full.expected/failed_read_version.json
+++ b/infra/bots/recipe_modules/flavor/examples/full.expected/failed_read_version.json
@@ -141,36 +141,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -273,36 +323,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -470,36 +570,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -618,36 +768,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipe_modules/flavor/examples/full.expected/retry_adb_command.json b/infra/bots/recipe_modules/flavor/examples/full.expected/retry_adb_command.json
index 02b3b44..5bca9a19 100644
--- a/infra/bots/recipe_modules/flavor/examples/full.expected/retry_adb_command.json
+++ b/infra/bots/recipe_modules/flavor/examples/full.expected/retry_adb_command.json
@@ -191,36 +191,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources (attempt 2)"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -323,36 +373,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -471,36 +571,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -619,36 +769,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/perf.expected/Perf-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Release-All-Android.json b/infra/bots/recipes/perf.expected/Perf-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Release-All-Android.json
index 9713734..4ad1b56 100644
--- a/infra/bots/recipes/perf.expected/Perf-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Release-All-Android.json
+++ b/infra/bots/recipes/perf.expected/Perf-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Release-All-Android.json
@@ -45,36 +45,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -177,36 +227,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -325,36 +425,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -473,36 +623,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/perf.expected/Perf-Android-Clang-Nexus5-GPU-Adreno330-arm-Debug-All-Android.json b/infra/bots/recipes/perf.expected/Perf-Android-Clang-Nexus5-GPU-Adreno330-arm-Debug-All-Android.json
index 1716cee..1d9e20e 100644
--- a/infra/bots/recipes/perf.expected/Perf-Android-Clang-Nexus5-GPU-Adreno330-arm-Debug-All-Android.json
+++ b/infra/bots/recipes/perf.expected/Perf-Android-Clang-Nexus5-GPU-Adreno330-arm-Debug-All-Android.json
@@ -45,36 +45,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -177,36 +227,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -325,36 +425,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -473,36 +623,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/perf.expected/Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Release-All-Android_NoGPUThreads.json b/infra/bots/recipes/perf.expected/Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Release-All-Android_NoGPUThreads.json
index b2508ed..a325df3 100644
--- a/infra/bots/recipes/perf.expected/Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Release-All-Android_NoGPUThreads.json
+++ b/infra/bots/recipes/perf.expected/Perf-Android-Clang-Nexus5x-GPU-Adreno418-arm64-Release-All-Android_NoGPUThreads.json
@@ -45,36 +45,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -177,36 +227,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -325,36 +425,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -473,36 +623,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/perf.expected/Perf-Android-Clang-Nexus7-CPU-Tegra3-arm-Debug-All-Android.json b/infra/bots/recipes/perf.expected/Perf-Android-Clang-Nexus7-CPU-Tegra3-arm-Debug-All-Android.json
index ce4588f..989cef7 100644
--- a/infra/bots/recipes/perf.expected/Perf-Android-Clang-Nexus7-CPU-Tegra3-arm-Debug-All-Android.json
+++ b/infra/bots/recipes/perf.expected/Perf-Android-Clang-Nexus7-CPU-Tegra3-arm-Debug-All-Android.json
@@ -45,36 +45,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -177,36 +227,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -325,36 +425,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -473,36 +623,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/perf.expected/Perf-Android-Clang-P30-GPU-MaliG76-arm64-Release-All-Android_Vulkan.json b/infra/bots/recipes/perf.expected/Perf-Android-Clang-P30-GPU-MaliG76-arm64-Release-All-Android_Vulkan.json
index f121785..6e6d3b0 100644
--- a/infra/bots/recipes/perf.expected/Perf-Android-Clang-P30-GPU-MaliG76-arm64-Release-All-Android_Vulkan.json
+++ b/infra/bots/recipes/perf.expected/Perf-Android-Clang-P30-GPU-MaliG76-arm64-Release-All-Android_Vulkan.json
@@ -45,36 +45,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -177,36 +227,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -325,36 +425,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -473,36 +623,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/perf.expected/Perf-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Release-All-Android.json b/infra/bots/recipes/perf.expected/Perf-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Release-All-Android.json
index 9ff3089..ae87cc6 100644
--- a/infra/bots/recipes/perf.expected/Perf-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Release-All-Android.json
+++ b/infra/bots/recipes/perf.expected/Perf-Android-Clang-Pixel3a-GPU-Adreno615-arm64-Release-All-Android.json
@@ -45,36 +45,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -177,36 +227,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -325,36 +425,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -473,36 +623,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/perf_skottietrace.expected/Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android_SkottieTracing.json b/infra/bots/recipes/perf_skottietrace.expected/Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android_SkottieTracing.json
index 2b5d844..a5675f6 100644
--- a/infra/bots/recipes/perf_skottietrace.expected/Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android_SkottieTracing.json
+++ b/infra/bots/recipes/perf_skottietrace.expected/Perf-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android_SkottieTracing.json
@@ -45,36 +45,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -177,36 +227,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/lotties"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/lottie-samples/* /sdcard/revenge_of_the_skiabot/lotties"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/lottie-samples",
- "/sdcard/revenge_of_the_skiabot/lotties"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/lottie-samples/* /sdcard/revenge_of_the_skiabot/lotties.list [START_DIR]/lottie-samples",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/lottie-samples/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/lottie-samples/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/lottie-samples/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/lottie-samples/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/lottie-samples/.file3",
+ "/sdcard/revenge_of_the_skiabot/lotties/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/lottie-samples/* /sdcard/revenge_of_the_skiabot/lotties",
+ "name": "push [START_DIR]/lottie-samples/* /sdcard/revenge_of_the_skiabot/lotties.push [START_DIR]/lottie-samples/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/lottie-samples/file1",
+ "/sdcard/revenge_of_the_skiabot/lotties/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/lottie-samples/* /sdcard/revenge_of_the_skiabot/lotties.push [START_DIR]/lottie-samples/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/lottie-samples/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/lotties/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/lottie-samples/* /sdcard/revenge_of_the_skiabot/lotties.push [START_DIR]/lottie-samples/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/perf_skottietrace.expected/skottietracing_parse_trace_error.json b/infra/bots/recipes/perf_skottietrace.expected/skottietracing_parse_trace_error.json
index 445502b..98d6685 100644
--- a/infra/bots/recipes/perf_skottietrace.expected/skottietracing_parse_trace_error.json
+++ b/infra/bots/recipes/perf_skottietrace.expected/skottietracing_parse_trace_error.json
@@ -45,36 +45,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -177,36 +227,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/lotties"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/lottie-samples/* /sdcard/revenge_of_the_skiabot/lotties"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/lottie-samples",
- "/sdcard/revenge_of_the_skiabot/lotties"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/lottie-samples/* /sdcard/revenge_of_the_skiabot/lotties.list [START_DIR]/lottie-samples",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/lottie-samples/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/lottie-samples/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/lottie-samples/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/lottie-samples/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/lottie-samples/.file3",
+ "/sdcard/revenge_of_the_skiabot/lotties/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/lottie-samples/* /sdcard/revenge_of_the_skiabot/lotties",
+ "name": "push [START_DIR]/lottie-samples/* /sdcard/revenge_of_the_skiabot/lotties.push [START_DIR]/lottie-samples/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/lottie-samples/file1",
+ "/sdcard/revenge_of_the_skiabot/lotties/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/lottie-samples/* /sdcard/revenge_of_the_skiabot/lotties.push [START_DIR]/lottie-samples/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/lottie-samples/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/lotties/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/lottie-samples/* /sdcard/revenge_of_the_skiabot/lotties.push [START_DIR]/lottie-samples/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/perf_skottietrace.expected/skottietracing_trybot.json b/infra/bots/recipes/perf_skottietrace.expected/skottietracing_trybot.json
index 4573365..65d49e5 100644
--- a/infra/bots/recipes/perf_skottietrace.expected/skottietracing_trybot.json
+++ b/infra/bots/recipes/perf_skottietrace.expected/skottietracing_trybot.json
@@ -45,36 +45,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -177,36 +227,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/lotties"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/lottie-samples/* /sdcard/revenge_of_the_skiabot/lotties"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/lottie-samples",
- "/sdcard/revenge_of_the_skiabot/lotties"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/lottie-samples/* /sdcard/revenge_of_the_skiabot/lotties.list [START_DIR]/lottie-samples",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/lottie-samples/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/lottie-samples/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/lottie-samples/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/lottie-samples/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/lottie-samples/.file3",
+ "/sdcard/revenge_of_the_skiabot/lotties/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/lottie-samples/* /sdcard/revenge_of_the_skiabot/lotties",
+ "name": "push [START_DIR]/lottie-samples/* /sdcard/revenge_of_the_skiabot/lotties.push [START_DIR]/lottie-samples/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/lottie-samples/file1",
+ "/sdcard/revenge_of_the_skiabot/lotties/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/lottie-samples/* /sdcard/revenge_of_the_skiabot/lotties.push [START_DIR]/lottie-samples/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/lottie-samples/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/lotties/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/lottie-samples/* /sdcard/revenge_of_the_skiabot/lotties.push [START_DIR]/lottie-samples/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-Pixel-GPU-Adreno530-arm64-Release-All-Android_CCPR_Skpbench.json b/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-Pixel-GPU-Adreno530-arm64-Release-All-Android_CCPR_Skpbench.json
index 253d330..c409049 100644
--- a/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-Pixel-GPU-Adreno530-arm64-Release-All-Android_CCPR_Skpbench.json
+++ b/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-Pixel-GPU-Adreno530-arm64-Release-All-Android_CCPR_Skpbench.json
@@ -144,36 +144,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-Pixel-GPU-Adreno530-arm64-Release-All-Android_Skpbench_Mskp.json b/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-Pixel-GPU-Adreno530-arm64-Release-All-Android_Skpbench_Mskp.json
index 34db4bc..09ed82f 100644
--- a/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-Pixel-GPU-Adreno530-arm64-Release-All-Android_Skpbench_Mskp.json
+++ b/infra/bots/recipes/skpbench.expected/Perf-Android-Clang-Pixel-GPU-Adreno530-arm64-Release-All-Android_Skpbench_Mskp.json
@@ -144,36 +144,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/mskp"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/mskp/* /sdcard/revenge_of_the_skiabot/mskp"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/mskp",
- "/sdcard/revenge_of_the_skiabot/mskp"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/mskp/* /sdcard/revenge_of_the_skiabot/mskp.list [START_DIR]/mskp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/mskp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/mskp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/mskp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/mskp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/mskp/.file3",
+ "/sdcard/revenge_of_the_skiabot/mskp/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/mskp/* /sdcard/revenge_of_the_skiabot/mskp",
+ "name": "push [START_DIR]/mskp/* /sdcard/revenge_of_the_skiabot/mskp.push [START_DIR]/mskp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/mskp/file1",
+ "/sdcard/revenge_of_the_skiabot/mskp/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/mskp/* /sdcard/revenge_of_the_skiabot/mskp.push [START_DIR]/mskp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/mskp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/mskp/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/mskp/* /sdcard/revenge_of_the_skiabot/mskp.push [START_DIR]/mskp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/skpbench.expected/trybot.json b/infra/bots/recipes/skpbench.expected/trybot.json
index 0a67264..8f74c6f 100644
--- a/infra/bots/recipes/skpbench.expected/trybot.json
+++ b/infra/bots/recipes/skpbench.expected/trybot.json
@@ -144,36 +144,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/test.expected/Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android.json b/infra/bots/recipes/test.expected/Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android.json
index d613caf..eb67ee4 100644
--- a/infra/bots/recipes/test.expected/Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android.json
+++ b/infra/bots/recipes/test.expected/Test-Android-Clang-AndroidOne-GPU-Mali400MP2-arm-Release-All-Android.json
@@ -45,36 +45,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -177,36 +227,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -325,36 +425,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -473,36 +623,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/test.expected/Test-Android-Clang-GalaxyS6-GPU-MaliT760-arm64-Debug-All-Android.json b/infra/bots/recipes/test.expected/Test-Android-Clang-GalaxyS6-GPU-MaliT760-arm64-Debug-All-Android.json
index 4fc65db..71636e2 100644
--- a/infra/bots/recipes/test.expected/Test-Android-Clang-GalaxyS6-GPU-MaliT760-arm64-Debug-All-Android.json
+++ b/infra/bots/recipes/test.expected/Test-Android-Clang-GalaxyS6-GPU-MaliT760-arm64-Debug-All-Android.json
@@ -45,36 +45,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -177,36 +227,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -325,36 +425,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -473,36 +623,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/test.expected/Test-Android-Clang-GalaxyS6-GPU-MaliT760-arm64-Debug-All-Android_NoGPUThreads.json b/infra/bots/recipes/test.expected/Test-Android-Clang-GalaxyS6-GPU-MaliT760-arm64-Debug-All-Android_NoGPUThreads.json
index 9d5ef8d..caa8cb6 100644
--- a/infra/bots/recipes/test.expected/Test-Android-Clang-GalaxyS6-GPU-MaliT760-arm64-Debug-All-Android_NoGPUThreads.json
+++ b/infra/bots/recipes/test.expected/Test-Android-Clang-GalaxyS6-GPU-MaliT760-arm64-Debug-All-Android_NoGPUThreads.json
@@ -45,36 +45,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -177,36 +227,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -325,36 +425,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -473,36 +623,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/test.expected/Test-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Release-All-Android_Vulkan.json b/infra/bots/recipes/test.expected/Test-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Release-All-Android_Vulkan.json
index 9f42916..7ba31b2 100644
--- a/infra/bots/recipes/test.expected/Test-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Release-All-Android_Vulkan.json
+++ b/infra/bots/recipes/test.expected/Test-Android-Clang-GalaxyS7_G930FD-GPU-MaliT880-arm64-Release-All-Android_Vulkan.json
@@ -45,36 +45,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -177,36 +227,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -325,36 +425,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -473,36 +623,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/test.expected/Test-Android-Clang-MotoG4-CPU-Snapdragon617-arm-Release-All-Android.json b/infra/bots/recipes/test.expected/Test-Android-Clang-MotoG4-CPU-Snapdragon617-arm-Release-All-Android.json
index 0d395da..342dfc0 100644
--- a/infra/bots/recipes/test.expected/Test-Android-Clang-MotoG4-CPU-Snapdragon617-arm-Release-All-Android.json
+++ b/infra/bots/recipes/test.expected/Test-Android-Clang-MotoG4-CPU-Snapdragon617-arm-Release-All-Android.json
@@ -45,36 +45,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -177,36 +227,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -325,36 +425,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -473,36 +623,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/test.expected/Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-All-Android_CCPR.json b/infra/bots/recipes/test.expected/Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-All-Android_CCPR.json
index d1a3aaa..7afc1fb 100644
--- a/infra/bots/recipes/test.expected/Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-All-Android_CCPR.json
+++ b/infra/bots/recipes/test.expected/Test-Android-Clang-NVIDIA_Shield-GPU-TegraX1-arm64-Debug-All-Android_CCPR.json
@@ -45,36 +45,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -177,36 +227,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -325,36 +425,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -473,36 +623,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/test.expected/Test-Android-Clang-Nexus5-GPU-Adreno330-arm-Release-All-Android.json b/infra/bots/recipes/test.expected/Test-Android-Clang-Nexus5-GPU-Adreno330-arm-Release-All-Android.json
index 0ab41d5..6d4942a 100644
--- a/infra/bots/recipes/test.expected/Test-Android-Clang-Nexus5-GPU-Adreno330-arm-Release-All-Android.json
+++ b/infra/bots/recipes/test.expected/Test-Android-Clang-Nexus5-GPU-Adreno330-arm-Release-All-Android.json
@@ -45,36 +45,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -177,36 +227,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -325,36 +425,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -473,36 +623,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/test.expected/Test-Android-Clang-Nexus7-CPU-Tegra3-arm-Release-All-Android.json b/infra/bots/recipes/test.expected/Test-Android-Clang-Nexus7-CPU-Tegra3-arm-Release-All-Android.json
index 4948d91..5b358ad 100644
--- a/infra/bots/recipes/test.expected/Test-Android-Clang-Nexus7-CPU-Tegra3-arm-Release-All-Android.json
+++ b/infra/bots/recipes/test.expected/Test-Android-Clang-Nexus7-CPU-Tegra3-arm-Release-All-Android.json
@@ -45,36 +45,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -177,36 +227,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -325,36 +425,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -473,36 +623,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel-GPU-Adreno530-arm-Debug-All-Android_ASAN.json b/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel-GPU-Adreno530-arm-Debug-All-Android_ASAN.json
index 8fa0761..a34f3ef 100644
--- a/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel-GPU-Adreno530-arm-Debug-All-Android_ASAN.json
+++ b/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel-GPU-Adreno530-arm-Debug-All-Android_ASAN.json
@@ -135,36 +135,86 @@
]
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -267,36 +317,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -415,36 +515,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -563,36 +713,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel-GPU-Adreno530-arm64-Debug-All-Android_Vulkan.json b/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel-GPU-Adreno530-arm64-Debug-All-Android_Vulkan.json
index b43e0a0..1bcac91 100644
--- a/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel-GPU-Adreno530-arm64-Debug-All-Android_Vulkan.json
+++ b/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel-GPU-Adreno530-arm64-Debug-All-Android_Vulkan.json
@@ -45,36 +45,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -177,36 +227,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -325,36 +425,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -473,36 +623,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Debug-All-Android.json b/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Debug-All-Android.json
index 19ebc9a..b620390 100644
--- a/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Debug-All-Android.json
+++ b/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel2XL-GPU-Adreno540-arm64-Debug-All-Android.json
@@ -45,36 +45,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -177,36 +227,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -325,36 +425,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -473,36 +623,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel3-GPU-Adreno630-arm64-Debug-All-Android_Vulkan.json b/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel3-GPU-Adreno630-arm64-Debug-All-Android_Vulkan.json
index 89b6ac5..04caf49 100644
--- a/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel3-GPU-Adreno630-arm64-Debug-All-Android_Vulkan.json
+++ b/infra/bots/recipes/test.expected/Test-Android-Clang-Pixel3-GPU-Adreno630-arm64-Debug-All-Android_Vulkan.json
@@ -45,36 +45,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -177,36 +227,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -325,36 +425,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -473,36 +623,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/test.expected/Test-Android-Clang-TecnoSpark3Pro-GPU-PowerVRGE8320-arm-Debug-All-Android.json b/infra/bots/recipes/test.expected/Test-Android-Clang-TecnoSpark3Pro-GPU-PowerVRGE8320-arm-Debug-All-Android.json
index 834f3b0..918d097 100644
--- a/infra/bots/recipes/test.expected/Test-Android-Clang-TecnoSpark3Pro-GPU-PowerVRGE8320-arm-Debug-All-Android.json
+++ b/infra/bots/recipes/test.expected/Test-Android-Clang-TecnoSpark3Pro-GPU-PowerVRGE8320-arm-Debug-All-Android.json
@@ -45,36 +45,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -177,36 +227,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -325,36 +425,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -473,36 +623,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/usr/bin/adb.1.0.35', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/usr/bin/adb.1.0.35",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/test.expected/failed_get_hashes.json b/infra/bots/recipes/test.expected/failed_get_hashes.json
index 94f9b46..e3a3841 100644
--- a/infra/bots/recipes/test.expected/failed_get_hashes.json
+++ b/infra/bots/recipes/test.expected/failed_get_hashes.json
@@ -45,36 +45,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -177,36 +227,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -325,36 +425,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -473,36 +623,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/test.expected/failed_pull.json b/infra/bots/recipes/test.expected/failed_pull.json
index 45c8442..96e5a9b 100644
--- a/infra/bots/recipes/test.expected/failed_pull.json
+++ b/infra/bots/recipes/test.expected/failed_pull.json
@@ -45,36 +45,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -177,36 +227,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -325,36 +425,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -473,36 +623,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/test.expected/failed_push.json b/infra/bots/recipes/test.expected/failed_push.json
index c2a9292..e57c991 100644
--- a/infra/bots/recipes/test.expected/failed_push.json
+++ b/infra/bots/recipes/test.expected/failed_push.json
@@ -45,36 +45,182 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "~followup_annotations": [
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@",
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "kill-server"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.kill adb server after failure of 'push [START_DIR]/skia/resources/file1' (attempt 1)",
+ "timeout": 30,
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "wait-for-device"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.wait for device after failure of 'push [START_DIR]/skia/resources/file1' (attempt 1)",
+ "timeout": 180,
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1 (attempt 2)",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_EXCEPTION@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "kill-server"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.kill adb server after failure of 'push [START_DIR]/skia/resources/file1' (attempt 2)",
+ "timeout": 30,
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "wait-for-device"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.wait for device after failure of 'push [START_DIR]/skia/resources/file1' (attempt 2)",
+ "timeout": 180,
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1 (attempt 3)",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
"@@@STEP_EXCEPTION@@@"
]
},
@@ -145,7 +291,7 @@
},
{
"failure": {
- "humanReason": "Infra Failure: Step('push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources') (retcode: 1)"
+ "humanReason": "Infra Failure: Step('push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1 (attempt 3)') (retcode: 1)"
},
"name": "$result"
}
diff --git a/infra/bots/recipes/test.expected/internal_bot_2.json b/infra/bots/recipes/test.expected/internal_bot_2.json
index b104684..ed5f897 100644
--- a/infra/bots/recipes/test.expected/internal_bot_2.json
+++ b/infra/bots/recipes/test.expected/internal_bot_2.json
@@ -45,36 +45,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -177,36 +227,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -325,36 +425,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -473,36 +623,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/test.expected/internal_bot_5.json b/infra/bots/recipes/test.expected/internal_bot_5.json
index 8aec8ab..a30335e 100644
--- a/infra/bots/recipes/test.expected/internal_bot_5.json
+++ b/infra/bots/recipes/test.expected/internal_bot_5.json
@@ -45,36 +45,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skia/resources",
- "/sdcard/revenge_of_the_skiabot/resources"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.list [START_DIR]/skia/resources",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skia/resources/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/.file3",
+ "/sdcard/revenge_of_the_skiabot/resources/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/file1",
+ "/sdcard/revenge_of_the_skiabot/resources/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skia/resources/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/resources/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources.push [START_DIR]/skia/resources/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -177,36 +227,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skp",
- "/sdcard/revenge_of_the_skiabot/skps"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.list [START_DIR]/skp",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skp/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/.file3",
+ "/sdcard/revenge_of_the_skiabot/skps/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/file1",
+ "/sdcard/revenge_of_the_skiabot/skps/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skp/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/skps/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps.push [START_DIR]/skp/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -325,36 +425,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/images"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/skimage",
- "/sdcard/revenge_of_the_skiabot/images"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.list [START_DIR]/skimage",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/skimage/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/.file3",
+ "/sdcard/revenge_of_the_skiabot/images/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/file1",
+ "/sdcard/revenge_of_the_skiabot/images/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/skimage/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/images/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images.push [START_DIR]/skimage/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
@@ -473,36 +623,86 @@
"name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
},
{
+ "cmd": [],
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs"
+ },
+ {
"cmd": [
- "python",
+ "vpython",
"-u",
- "\nimport os\nimport subprocess\nimport sys\nhost = sys.argv[1]\ndevice = sys.argv[2]\nfor d, _, fs in os.walk(host):\n p = os.path.relpath(d, host)\n if p != '.' and p.startswith('.'):\n continue\n for f in fs:\n print os.path.join(p,f)\n subprocess.check_call(['/opt/infra-android/tools/adb', 'push',\n os.path.realpath(os.path.join(host, p, f)),\n os.path.join(device, p, f)])\n",
+ "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+ "--json-output",
+ "/path/to/tmp/json",
+ "listdir",
"[START_DIR]/svg",
- "/sdcard/revenge_of_the_skiabot/svgs"
+ "--recursive"
],
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.list [START_DIR]/svg",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.file3@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/.ignore/file4@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/file1@@@",
+ "@@@STEP_LOG_LINE@listdir@[START_DIR]/svg/subdir/file2@@@",
+ "@@@STEP_LOG_END@listdir@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/.file3",
+ "/sdcard/revenge_of_the_skiabot/svgs/.file3"
+ ],
+ "cwd": "[START_DIR]/skia",
"env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
"CHROME_HEADLESS": "1",
"PATH": "<PATH>:RECIPE_REPO[depot_tools]"
},
"infra_step": true,
- "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/.file3",
"~followup_annotations": [
- "@@@STEP_LOG_LINE@python.inline@@@@",
- "@@@STEP_LOG_LINE@python.inline@import os@@@",
- "@@@STEP_LOG_LINE@python.inline@import subprocess@@@",
- "@@@STEP_LOG_LINE@python.inline@import sys@@@",
- "@@@STEP_LOG_LINE@python.inline@host = sys.argv[1]@@@",
- "@@@STEP_LOG_LINE@python.inline@device = sys.argv[2]@@@",
- "@@@STEP_LOG_LINE@python.inline@for d, _, fs in os.walk(host):@@@",
- "@@@STEP_LOG_LINE@python.inline@ p = os.path.relpath(d, host)@@@",
- "@@@STEP_LOG_LINE@python.inline@ if p != '.' and p.startswith('.'):@@@",
- "@@@STEP_LOG_LINE@python.inline@ continue@@@",
- "@@@STEP_LOG_LINE@python.inline@ for f in fs:@@@",
- "@@@STEP_LOG_LINE@python.inline@ print os.path.join(p,f)@@@",
- "@@@STEP_LOG_LINE@python.inline@ subprocess.check_call(['/opt/infra-android/tools/adb', 'push',@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.realpath(os.path.join(host, p, f)),@@@",
- "@@@STEP_LOG_LINE@python.inline@ os.path.join(device, p, f)])@@@",
- "@@@STEP_LOG_END@python.inline@@@"
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/file1",
+ "/sdcard/revenge_of_the_skiabot/svgs/file1"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/file1",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "/opt/infra-android/tools/adb",
+ "push",
+ "[START_DIR]/svg/subdir/file2",
+ "/sdcard/revenge_of_the_skiabot/svgs/subdir/file2"
+ ],
+ "cwd": "[START_DIR]/skia",
+ "env": {
+ "ADB_VENDOR_KEYS": "/home/chrome-bot/.android/chrome_infrastructure_adbkey",
+ "CHROME_HEADLESS": "1",
+ "PATH": "<PATH>:RECIPE_REPO[depot_tools]"
+ },
+ "infra_step": true,
+ "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs.push [START_DIR]/svg/subdir/file2",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@"
]
},
{
diff --git a/infra/bots/recipes/test.py b/infra/bots/recipes/test.py
index fd22355..1b70e22 100644
--- a/infra/bots/recipes/test.py
+++ b/infra/bots/recipes/test.py
@@ -1183,6 +1183,9 @@
)
builder = 'Test-Android-Clang-Nexus7-GPU-Tegra3-arm-Debug-All-Android'
+ retry_step_name = ('push [START_DIR]/skia/resources/* '
+ '/sdcard/revenge_of_the_skiabot/resources.push '
+ '[START_DIR]/skia/resources/file1')
yield (
api.test('failed_push') +
api.properties(buildername=builder,
@@ -1204,8 +1207,9 @@
) +
api.step_data('get swarming bot id',
stdout=api.raw_io.output('build123-m2--device5')) +
- api.step_data('push [START_DIR]/skia/resources/* '+
- '/sdcard/revenge_of_the_skiabot/resources', retcode=1)
+ api.step_data(retry_step_name, retcode=1) +
+ api.step_data(retry_step_name + ' (attempt 2)', retcode=1) +
+ api.step_data(retry_step_name + ' (attempt 3)', retcode=1)
)
retry_step_name = 'adb pull.pull /sdcard/revenge_of_the_skiabot/dm_out'