Home | History | Annotate | Download | only in test.expected
      1 [
      2   {
      3     "cmd": [
      4       "adb",
      5       "shell",
      6       "mkdir",
      7       "-p",
      8       "/sdcard/revenge_of_the_skiabot/resources"
      9     ],
     10     "cwd": "[START_DIR]/skia",
     11     "env": {
     12       "BUILDTYPE": "Debug",
     13       "CHROME_HEADLESS": "1",
     14       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
     15       "SKIA_OUT": "[START_DIR]/out"
     16     },
     17     "infra_step": true,
     18     "name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
     19   },
     20   {
     21     "cmd": [
     22       "python",
     23       "-u",
     24       "\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(['adb', 'push',\n                           os.path.realpath(os.path.join(host, p, f)),\n                           os.path.join(device, p, f)])\n",
     25       "[START_DIR]/skia/resources",
     26       "/sdcard/revenge_of_the_skiabot/resources"
     27     ],
     28     "env": {
     29       "BUILDTYPE": "Debug",
     30       "CHROME_HEADLESS": "1",
     31       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
     32       "SKIA_OUT": "[START_DIR]/out"
     33     },
     34     "infra_step": true,
     35     "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
     36     "~followup_annotations": [
     37       "@@@STEP_LOG_LINE (a] python.inline@@@@",
     38       "@@@STEP_LOG_LINE (a] python.inline@import os@@@",
     39       "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@",
     40       "@@@STEP_LOG_LINE (a] python.inline@import sys@@@",
     41       "@@@STEP_LOG_LINE (a] python.inline@host   = sys.argv[1]@@@",
     42       "@@@STEP_LOG_LINE (a] python.inline@device = sys.argv[2]@@@",
     43       "@@@STEP_LOG_LINE (a] python.inline@for d, _, fs in os.walk(host):@@@",
     44       "@@@STEP_LOG_LINE (a] python.inline@  p = os.path.relpath(d, host)@@@",
     45       "@@@STEP_LOG_LINE (a] python.inline@  if p != '.' and p.startswith('.'):@@@",
     46       "@@@STEP_LOG_LINE (a] python.inline@    continue@@@",
     47       "@@@STEP_LOG_LINE (a] python.inline@  for f in fs:@@@",
     48       "@@@STEP_LOG_LINE (a] python.inline@    print os.path.join(p,f)@@@",
     49       "@@@STEP_LOG_LINE (a] python.inline@    subprocess.check_call(['adb', 'push',@@@",
     50       "@@@STEP_LOG_LINE (a] python.inline@                           os.path.realpath(os.path.join(host, p, f)),@@@",
     51       "@@@STEP_LOG_LINE (a] python.inline@                           os.path.join(device, p, f)])@@@",
     52       "@@@STEP_LOG_END (a] python.inline@@@"
     53     ]
     54   },
     55   {
     56     "cmd": [
     57       "python",
     58       "-u",
     59       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
     60       "--json-output",
     61       "/path/to/tmp/json",
     62       "copy",
     63       "[START_DIR]/skia/infra/bots/assets/skp/VERSION",
     64       "/path/to/tmp/"
     65     ],
     66     "infra_step": true,
     67     "name": "Get downloaded SKP VERSION"
     68   },
     69   {
     70     "cmd": [
     71       "python",
     72       "-u",
     73       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
     74       "--json-output",
     75       "/path/to/tmp/json",
     76       "copy",
     77       "42",
     78       "[START_DIR]/tmp/SKP_VERSION"
     79     ],
     80     "infra_step": true,
     81     "name": "write SKP_VERSION"
     82   },
     83   {
     84     "cmd": [
     85       "adb",
     86       "shell",
     87       "cat",
     88       "/sdcard/revenge_of_the_skiabot/SKP_VERSION"
     89     ],
     90     "cwd": "[START_DIR]/skia",
     91     "env": {
     92       "BUILDTYPE": "Debug",
     93       "CHROME_HEADLESS": "1",
     94       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
     95       "SKIA_OUT": "[START_DIR]/out"
     96     },
     97     "infra_step": true,
     98     "name": "read /sdcard/revenge_of_the_skiabot/SKP_VERSION",
     99     "stdout": "/path/to/tmp/"
    100   },
    101   {
    102     "cmd": [
    103       "adb",
    104       "shell",
    105       "rm",
    106       "-f",
    107       "/sdcard/revenge_of_the_skiabot/SKP_VERSION"
    108     ],
    109     "cwd": "[START_DIR]/skia",
    110     "env": {
    111       "BUILDTYPE": "Debug",
    112       "CHROME_HEADLESS": "1",
    113       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    114       "SKIA_OUT": "[START_DIR]/out"
    115     },
    116     "infra_step": true,
    117     "name": "rm /sdcard/revenge_of_the_skiabot/SKP_VERSION"
    118   },
    119   {
    120     "cmd": [
    121       "adb",
    122       "shell",
    123       "rm",
    124       "-rf",
    125       "/sdcard/revenge_of_the_skiabot/skps"
    126     ],
    127     "cwd": "[START_DIR]/skia",
    128     "env": {
    129       "BUILDTYPE": "Debug",
    130       "CHROME_HEADLESS": "1",
    131       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    132       "SKIA_OUT": "[START_DIR]/out"
    133     },
    134     "infra_step": true,
    135     "name": "rm /sdcard/revenge_of_the_skiabot/skps"
    136   },
    137   {
    138     "cmd": [
    139       "adb",
    140       "shell",
    141       "mkdir",
    142       "-p",
    143       "/sdcard/revenge_of_the_skiabot/skps"
    144     ],
    145     "cwd": "[START_DIR]/skia",
    146     "env": {
    147       "BUILDTYPE": "Debug",
    148       "CHROME_HEADLESS": "1",
    149       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    150       "SKIA_OUT": "[START_DIR]/out"
    151     },
    152     "infra_step": true,
    153     "name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
    154   },
    155   {
    156     "cmd": [
    157       "python",
    158       "-u",
    159       "\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(['adb', 'push',\n                           os.path.realpath(os.path.join(host, p, f)),\n                           os.path.join(device, p, f)])\n",
    160       "[START_DIR]/skp",
    161       "/sdcard/revenge_of_the_skiabot/skps"
    162     ],
    163     "env": {
    164       "BUILDTYPE": "Debug",
    165       "CHROME_HEADLESS": "1",
    166       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    167       "SKIA_OUT": "[START_DIR]/out"
    168     },
    169     "infra_step": true,
    170     "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
    171     "~followup_annotations": [
    172       "@@@STEP_LOG_LINE (a] python.inline@@@@",
    173       "@@@STEP_LOG_LINE (a] python.inline@import os@@@",
    174       "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@",
    175       "@@@STEP_LOG_LINE (a] python.inline@import sys@@@",
    176       "@@@STEP_LOG_LINE (a] python.inline@host   = sys.argv[1]@@@",
    177       "@@@STEP_LOG_LINE (a] python.inline@device = sys.argv[2]@@@",
    178       "@@@STEP_LOG_LINE (a] python.inline@for d, _, fs in os.walk(host):@@@",
    179       "@@@STEP_LOG_LINE (a] python.inline@  p = os.path.relpath(d, host)@@@",
    180       "@@@STEP_LOG_LINE (a] python.inline@  if p != '.' and p.startswith('.'):@@@",
    181       "@@@STEP_LOG_LINE (a] python.inline@    continue@@@",
    182       "@@@STEP_LOG_LINE (a] python.inline@  for f in fs:@@@",
    183       "@@@STEP_LOG_LINE (a] python.inline@    print os.path.join(p,f)@@@",
    184       "@@@STEP_LOG_LINE (a] python.inline@    subprocess.check_call(['adb', 'push',@@@",
    185       "@@@STEP_LOG_LINE (a] python.inline@                           os.path.realpath(os.path.join(host, p, f)),@@@",
    186       "@@@STEP_LOG_LINE (a] python.inline@                           os.path.join(device, p, f)])@@@",
    187       "@@@STEP_LOG_END (a] python.inline@@@"
    188     ]
    189   },
    190   {
    191     "cmd": [
    192       "adb",
    193       "push",
    194       "[START_DIR]/tmp/SKP_VERSION",
    195       "/sdcard/revenge_of_the_skiabot/SKP_VERSION"
    196     ],
    197     "cwd": "[START_DIR]/skia",
    198     "env": {
    199       "BUILDTYPE": "Debug",
    200       "CHROME_HEADLESS": "1",
    201       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    202       "SKIA_OUT": "[START_DIR]/out"
    203     },
    204     "infra_step": true,
    205     "name": "push [START_DIR]/tmp/SKP_VERSION /sdcard/revenge_of_the_skiabot/SKP_VERSION"
    206   },
    207   {
    208     "cmd": [
    209       "python",
    210       "-u",
    211       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
    212       "--json-output",
    213       "/path/to/tmp/json",
    214       "copy",
    215       "[START_DIR]/skia/infra/bots/assets/skimage/VERSION",
    216       "/path/to/tmp/"
    217     ],
    218     "infra_step": true,
    219     "name": "Get downloaded skimage VERSION"
    220   },
    221   {
    222     "cmd": [
    223       "python",
    224       "-u",
    225       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
    226       "--json-output",
    227       "/path/to/tmp/json",
    228       "copy",
    229       "42",
    230       "[START_DIR]/tmp/SK_IMAGE_VERSION"
    231     ],
    232     "infra_step": true,
    233     "name": "write SK_IMAGE_VERSION"
    234   },
    235   {
    236     "cmd": [
    237       "adb",
    238       "shell",
    239       "cat",
    240       "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
    241     ],
    242     "cwd": "[START_DIR]/skia",
    243     "env": {
    244       "BUILDTYPE": "Debug",
    245       "CHROME_HEADLESS": "1",
    246       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    247       "SKIA_OUT": "[START_DIR]/out"
    248     },
    249     "infra_step": true,
    250     "name": "read /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION",
    251     "stdout": "/path/to/tmp/"
    252   },
    253   {
    254     "cmd": [
    255       "adb",
    256       "shell",
    257       "rm",
    258       "-f",
    259       "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
    260     ],
    261     "cwd": "[START_DIR]/skia",
    262     "env": {
    263       "BUILDTYPE": "Debug",
    264       "CHROME_HEADLESS": "1",
    265       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    266       "SKIA_OUT": "[START_DIR]/out"
    267     },
    268     "infra_step": true,
    269     "name": "rm /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
    270   },
    271   {
    272     "cmd": [
    273       "adb",
    274       "shell",
    275       "rm",
    276       "-rf",
    277       "/sdcard/revenge_of_the_skiabot/images"
    278     ],
    279     "cwd": "[START_DIR]/skia",
    280     "env": {
    281       "BUILDTYPE": "Debug",
    282       "CHROME_HEADLESS": "1",
    283       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    284       "SKIA_OUT": "[START_DIR]/out"
    285     },
    286     "infra_step": true,
    287     "name": "rm /sdcard/revenge_of_the_skiabot/images"
    288   },
    289   {
    290     "cmd": [
    291       "adb",
    292       "shell",
    293       "mkdir",
    294       "-p",
    295       "/sdcard/revenge_of_the_skiabot/images"
    296     ],
    297     "cwd": "[START_DIR]/skia",
    298     "env": {
    299       "BUILDTYPE": "Debug",
    300       "CHROME_HEADLESS": "1",
    301       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    302       "SKIA_OUT": "[START_DIR]/out"
    303     },
    304     "infra_step": true,
    305     "name": "mkdir /sdcard/revenge_of_the_skiabot/images"
    306   },
    307   {
    308     "cmd": [
    309       "python",
    310       "-u",
    311       "\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(['adb', 'push',\n                           os.path.realpath(os.path.join(host, p, f)),\n                           os.path.join(device, p, f)])\n",
    312       "[START_DIR]/skimage",
    313       "/sdcard/revenge_of_the_skiabot/images"
    314     ],
    315     "env": {
    316       "BUILDTYPE": "Debug",
    317       "CHROME_HEADLESS": "1",
    318       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    319       "SKIA_OUT": "[START_DIR]/out"
    320     },
    321     "infra_step": true,
    322     "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
    323     "~followup_annotations": [
    324       "@@@STEP_LOG_LINE (a] python.inline@@@@",
    325       "@@@STEP_LOG_LINE (a] python.inline@import os@@@",
    326       "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@",
    327       "@@@STEP_LOG_LINE (a] python.inline@import sys@@@",
    328       "@@@STEP_LOG_LINE (a] python.inline@host   = sys.argv[1]@@@",
    329       "@@@STEP_LOG_LINE (a] python.inline@device = sys.argv[2]@@@",
    330       "@@@STEP_LOG_LINE (a] python.inline@for d, _, fs in os.walk(host):@@@",
    331       "@@@STEP_LOG_LINE (a] python.inline@  p = os.path.relpath(d, host)@@@",
    332       "@@@STEP_LOG_LINE (a] python.inline@  if p != '.' and p.startswith('.'):@@@",
    333       "@@@STEP_LOG_LINE (a] python.inline@    continue@@@",
    334       "@@@STEP_LOG_LINE (a] python.inline@  for f in fs:@@@",
    335       "@@@STEP_LOG_LINE (a] python.inline@    print os.path.join(p,f)@@@",
    336       "@@@STEP_LOG_LINE (a] python.inline@    subprocess.check_call(['adb', 'push',@@@",
    337       "@@@STEP_LOG_LINE (a] python.inline@                           os.path.realpath(os.path.join(host, p, f)),@@@",
    338       "@@@STEP_LOG_LINE (a] python.inline@                           os.path.join(device, p, f)])@@@",
    339       "@@@STEP_LOG_END (a] python.inline@@@"
    340     ]
    341   },
    342   {
    343     "cmd": [
    344       "adb",
    345       "push",
    346       "[START_DIR]/tmp/SK_IMAGE_VERSION",
    347       "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
    348     ],
    349     "cwd": "[START_DIR]/skia",
    350     "env": {
    351       "BUILDTYPE": "Debug",
    352       "CHROME_HEADLESS": "1",
    353       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    354       "SKIA_OUT": "[START_DIR]/out"
    355     },
    356     "infra_step": true,
    357     "name": "push [START_DIR]/tmp/SK_IMAGE_VERSION /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
    358   },
    359   {
    360     "cmd": [
    361       "python",
    362       "-u",
    363       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
    364       "--json-output",
    365       "/path/to/tmp/json",
    366       "copy",
    367       "[START_DIR]/skia/infra/bots/assets/svg/VERSION",
    368       "/path/to/tmp/"
    369     ],
    370     "infra_step": true,
    371     "name": "Get downloaded SVG VERSION"
    372   },
    373   {
    374     "cmd": [
    375       "python",
    376       "-u",
    377       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
    378       "--json-output",
    379       "/path/to/tmp/json",
    380       "copy",
    381       "42",
    382       "[START_DIR]/tmp/SVG_VERSION"
    383     ],
    384     "infra_step": true,
    385     "name": "write SVG_VERSION"
    386   },
    387   {
    388     "cmd": [
    389       "adb",
    390       "shell",
    391       "cat",
    392       "/sdcard/revenge_of_the_skiabot/SVG_VERSION"
    393     ],
    394     "cwd": "[START_DIR]/skia",
    395     "env": {
    396       "BUILDTYPE": "Debug",
    397       "CHROME_HEADLESS": "1",
    398       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    399       "SKIA_OUT": "[START_DIR]/out"
    400     },
    401     "infra_step": true,
    402     "name": "read /sdcard/revenge_of_the_skiabot/SVG_VERSION",
    403     "stdout": "/path/to/tmp/"
    404   },
    405   {
    406     "cmd": [
    407       "adb",
    408       "shell",
    409       "rm",
    410       "-f",
    411       "/sdcard/revenge_of_the_skiabot/SVG_VERSION"
    412     ],
    413     "cwd": "[START_DIR]/skia",
    414     "env": {
    415       "BUILDTYPE": "Debug",
    416       "CHROME_HEADLESS": "1",
    417       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    418       "SKIA_OUT": "[START_DIR]/out"
    419     },
    420     "infra_step": true,
    421     "name": "rm /sdcard/revenge_of_the_skiabot/SVG_VERSION"
    422   },
    423   {
    424     "cmd": [
    425       "adb",
    426       "shell",
    427       "rm",
    428       "-rf",
    429       "/sdcard/revenge_of_the_skiabot/svgs"
    430     ],
    431     "cwd": "[START_DIR]/skia",
    432     "env": {
    433       "BUILDTYPE": "Debug",
    434       "CHROME_HEADLESS": "1",
    435       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    436       "SKIA_OUT": "[START_DIR]/out"
    437     },
    438     "infra_step": true,
    439     "name": "rm /sdcard/revenge_of_the_skiabot/svgs"
    440   },
    441   {
    442     "cmd": [
    443       "adb",
    444       "shell",
    445       "mkdir",
    446       "-p",
    447       "/sdcard/revenge_of_the_skiabot/svgs"
    448     ],
    449     "cwd": "[START_DIR]/skia",
    450     "env": {
    451       "BUILDTYPE": "Debug",
    452       "CHROME_HEADLESS": "1",
    453       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    454       "SKIA_OUT": "[START_DIR]/out"
    455     },
    456     "infra_step": true,
    457     "name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
    458   },
    459   {
    460     "cmd": [
    461       "python",
    462       "-u",
    463       "\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(['adb', 'push',\n                           os.path.realpath(os.path.join(host, p, f)),\n                           os.path.join(device, p, f)])\n",
    464       "[START_DIR]/svg",
    465       "/sdcard/revenge_of_the_skiabot/svgs"
    466     ],
    467     "env": {
    468       "BUILDTYPE": "Debug",
    469       "CHROME_HEADLESS": "1",
    470       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    471       "SKIA_OUT": "[START_DIR]/out"
    472     },
    473     "infra_step": true,
    474     "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
    475     "~followup_annotations": [
    476       "@@@STEP_LOG_LINE (a] python.inline@@@@",
    477       "@@@STEP_LOG_LINE (a] python.inline@import os@@@",
    478       "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@",
    479       "@@@STEP_LOG_LINE (a] python.inline@import sys@@@",
    480       "@@@STEP_LOG_LINE (a] python.inline@host   = sys.argv[1]@@@",
    481       "@@@STEP_LOG_LINE (a] python.inline@device = sys.argv[2]@@@",
    482       "@@@STEP_LOG_LINE (a] python.inline@for d, _, fs in os.walk(host):@@@",
    483       "@@@STEP_LOG_LINE (a] python.inline@  p = os.path.relpath(d, host)@@@",
    484       "@@@STEP_LOG_LINE (a] python.inline@  if p != '.' and p.startswith('.'):@@@",
    485       "@@@STEP_LOG_LINE (a] python.inline@    continue@@@",
    486       "@@@STEP_LOG_LINE (a] python.inline@  for f in fs:@@@",
    487       "@@@STEP_LOG_LINE (a] python.inline@    print os.path.join(p,f)@@@",
    488       "@@@STEP_LOG_LINE (a] python.inline@    subprocess.check_call(['adb', 'push',@@@",
    489       "@@@STEP_LOG_LINE (a] python.inline@                           os.path.realpath(os.path.join(host, p, f)),@@@",
    490       "@@@STEP_LOG_LINE (a] python.inline@                           os.path.join(device, p, f)])@@@",
    491       "@@@STEP_LOG_END (a] python.inline@@@"
    492     ]
    493   },
    494   {
    495     "cmd": [
    496       "adb",
    497       "push",
    498       "[START_DIR]/tmp/SVG_VERSION",
    499       "/sdcard/revenge_of_the_skiabot/SVG_VERSION"
    500     ],
    501     "cwd": "[START_DIR]/skia",
    502     "env": {
    503       "BUILDTYPE": "Debug",
    504       "CHROME_HEADLESS": "1",
    505       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    506       "SKIA_OUT": "[START_DIR]/out"
    507     },
    508     "infra_step": true,
    509     "name": "push [START_DIR]/tmp/SVG_VERSION /sdcard/revenge_of_the_skiabot/SVG_VERSION"
    510   },
    511   {
    512     "cmd": [
    513       "python",
    514       "-u",
    515       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
    516       "--json-output",
    517       "/path/to/tmp/json",
    518       "rmtree",
    519       "[CUSTOM_[SWARM_OUT_DIR]]/dm"
    520     ],
    521     "infra_step": true,
    522     "name": "rmtree dm"
    523   },
    524   {
    525     "cmd": [
    526       "python",
    527       "-u",
    528       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
    529       "--json-output",
    530       "/path/to/tmp/json",
    531       "ensure-directory",
    532       "--mode",
    533       "0777",
    534       "[CUSTOM_[SWARM_OUT_DIR]]/dm"
    535     ],
    536     "infra_step": true,
    537     "name": "makedirs dm"
    538   },
    539   {
    540     "cmd": [
    541       "adb",
    542       "shell",
    543       "rm",
    544       "-rf",
    545       "/sdcard/revenge_of_the_skiabot/dm_out"
    546     ],
    547     "cwd": "[START_DIR]/skia",
    548     "env": {
    549       "BUILDTYPE": "Debug",
    550       "CHROME_HEADLESS": "1",
    551       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    552       "SKIA_OUT": "[START_DIR]/out"
    553     },
    554     "infra_step": true,
    555     "name": "rm /sdcard/revenge_of_the_skiabot/dm_out"
    556   },
    557   {
    558     "cmd": [
    559       "adb",
    560       "shell",
    561       "mkdir",
    562       "-p",
    563       "/sdcard/revenge_of_the_skiabot/dm_out"
    564     ],
    565     "cwd": "[START_DIR]/skia",
    566     "env": {
    567       "BUILDTYPE": "Debug",
    568       "CHROME_HEADLESS": "1",
    569       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    570       "SKIA_OUT": "[START_DIR]/out"
    571     },
    572     "infra_step": true,
    573     "name": "mkdir /sdcard/revenge_of_the_skiabot/dm_out"
    574   },
    575   {
    576     "cmd": [
    577       "python",
    578       "-u",
    579       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
    580       "--json-output",
    581       "/path/to/tmp/json",
    582       "ensure-directory",
    583       "--mode",
    584       "0777",
    585       "[START_DIR]/tmp"
    586     ],
    587     "infra_step": true,
    588     "name": "makedirs tmp_dir"
    589   },
    590   {
    591     "cmd": [
    592       "python",
    593       "-u",
    594       "\nimport contextlib\nimport math\nimport socket\nimport sys\nimport time\nimport urllib2\n\nHASHES_URL = 'https://storage.googleapis.com/skia-infra-gm/hash_files/gold-prod-hashes.txt'\nRETRIES = 5\nTIMEOUT = 60\nWAIT_BASE = 15\n\nsocket.setdefaulttimeout(TIMEOUT)\nfor retry in range(RETRIES):\n  try:\n    with contextlib.closing(\n        urllib2.urlopen(HASHES_URL, timeout=TIMEOUT)) as w:\n      hashes = w.read()\n      with open(sys.argv[1], 'w') as f:\n        f.write(hashes)\n        break\n  except Exception as e:\n    print 'Failed to get uninteresting hashes from %s:' % HASHES_URL\n    print e\n    if retry == RETRIES:\n      raise\n    waittime = WAIT_BASE * math.pow(2, retry)\n    print 'Retry in %d seconds.' % waittime\n    time.sleep(waittime)\n",
    595       "[START_DIR]/tmp/uninteresting_hashes.txt"
    596     ],
    597     "env": {
    598       "BUILDTYPE": "Debug",
    599       "CHROME_HEADLESS": "1",
    600       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    601       "SKIA_OUT": "[START_DIR]/out"
    602     },
    603     "infra_step": true,
    604     "name": "get uninteresting hashes",
    605     "~followup_annotations": [
    606       "@@@STEP_LOG_LINE (a] python.inline@@@@",
    607       "@@@STEP_LOG_LINE (a] python.inline@import contextlib@@@",
    608       "@@@STEP_LOG_LINE (a] python.inline@import math@@@",
    609       "@@@STEP_LOG_LINE (a] python.inline@import socket@@@",
    610       "@@@STEP_LOG_LINE (a] python.inline@import sys@@@",
    611       "@@@STEP_LOG_LINE (a] python.inline@import time@@@",
    612       "@@@STEP_LOG_LINE (a] python.inline@import urllib2@@@",
    613       "@@@STEP_LOG_LINE (a] python.inline@@@@",
    614       "@@@STEP_LOG_LINE (a] python.inline@HASHES_URL = 'https://storage.googleapis.com/skia-infra-gm/hash_files/gold-prod-hashes.txt'@@@",
    615       "@@@STEP_LOG_LINE (a] python.inline@RETRIES = 5@@@",
    616       "@@@STEP_LOG_LINE (a] python.inline@TIMEOUT = 60@@@",
    617       "@@@STEP_LOG_LINE (a] python.inline@WAIT_BASE = 15@@@",
    618       "@@@STEP_LOG_LINE (a] python.inline@@@@",
    619       "@@@STEP_LOG_LINE (a] python.inline@socket.setdefaulttimeout(TIMEOUT)@@@",
    620       "@@@STEP_LOG_LINE (a] python.inline@for retry in range(RETRIES):@@@",
    621       "@@@STEP_LOG_LINE (a] python.inline@  try:@@@",
    622       "@@@STEP_LOG_LINE (a] python.inline@    with contextlib.closing(@@@",
    623       "@@@STEP_LOG_LINE (a] python.inline@        urllib2.urlopen(HASHES_URL, timeout=TIMEOUT)) as w:@@@",
    624       "@@@STEP_LOG_LINE (a] python.inline@      hashes = w.read()@@@",
    625       "@@@STEP_LOG_LINE (a] python.inline@      with open(sys.argv[1], 'w') as f:@@@",
    626       "@@@STEP_LOG_LINE (a] python.inline@        f.write(hashes)@@@",
    627       "@@@STEP_LOG_LINE (a] python.inline@        break@@@",
    628       "@@@STEP_LOG_LINE (a] python.inline@  except Exception as e:@@@",
    629       "@@@STEP_LOG_LINE (a] python.inline@    print 'Failed to get uninteresting hashes from %s:' % HASHES_URL@@@",
    630       "@@@STEP_LOG_LINE (a] python.inline@    print e@@@",
    631       "@@@STEP_LOG_LINE (a] python.inline@    if retry == RETRIES:@@@",
    632       "@@@STEP_LOG_LINE (a] python.inline@      raise@@@",
    633       "@@@STEP_LOG_LINE (a] python.inline@    waittime = WAIT_BASE * math.pow(2, retry)@@@",
    634       "@@@STEP_LOG_LINE (a] python.inline@    print 'Retry in %d seconds.' % waittime@@@",
    635       "@@@STEP_LOG_LINE (a] python.inline@    time.sleep(waittime)@@@",
    636       "@@@STEP_LOG_END (a] python.inline@@@"
    637     ]
    638   },
    639   {
    640     "cmd": [
    641       "adb",
    642       "push",
    643       "[START_DIR]/tmp/uninteresting_hashes.txt",
    644       "/sdcard/revenge_of_the_skiabot/uninteresting_hashes.txt"
    645     ],
    646     "cwd": "[START_DIR]/skia",
    647     "env": {
    648       "BUILDTYPE": "Debug",
    649       "CHROME_HEADLESS": "1",
    650       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    651       "SKIA_OUT": "[START_DIR]/out"
    652     },
    653     "infra_step": true,
    654     "name": "push [START_DIR]/tmp/uninteresting_hashes.txt /sdcard/revenge_of_the_skiabot/uninteresting_hashes.txt"
    655   },
    656   {
    657     "cmd": [
    658       "python",
    659       "-u",
    660       "import os\nprint os.environ.get('SWARMING_BOT_ID', '')\n"
    661     ],
    662     "name": "get swarming bot id",
    663     "stdout": "/path/to/tmp/",
    664     "~followup_annotations": [
    665       "@@@STEP_LOG_LINE (a] python.inline@import os@@@",
    666       "@@@STEP_LOG_LINE (a] python.inline@print os.environ.get('SWARMING_BOT_ID', '')@@@",
    667       "@@@STEP_LOG_END (a] python.inline@@@"
    668     ]
    669   },
    670   {
    671     "cmd": [
    672       "python",
    673       "-u",
    674       "import os\nprint os.environ.get('SWARMING_TASK_ID', '')\n"
    675     ],
    676     "name": "get swarming task id",
    677     "stdout": "/path/to/tmp/",
    678     "~followup_annotations": [
    679       "@@@STEP_LOG_LINE (a] python.inline@import os@@@",
    680       "@@@STEP_LOG_LINE (a] python.inline@print os.environ.get('SWARMING_TASK_ID', '')@@@",
    681       "@@@STEP_LOG_END (a] python.inline@@@"
    682     ]
    683   },
    684   {
    685     "cmd": [
    686       "adb",
    687       "push",
    688       "[START_DIR]/out/Debug/dm",
    689       "/data/local/tmp/"
    690     ],
    691     "cwd": "[START_DIR]/skia",
    692     "env": {
    693       "BUILDTYPE": "Debug",
    694       "CHROME_HEADLESS": "1",
    695       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    696       "SKIA_OUT": "[START_DIR]/out"
    697     },
    698     "infra_step": true,
    699     "name": "push dm"
    700   },
    701   {
    702     "cmd": [
    703       "python",
    704       "-u",
    705       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
    706       "--json-output",
    707       "/path/to/tmp/json",
    708       "copy",
    709       "set -x; /data/local/tmp/dm --undefok --resourcePath /sdcard/revenge_of_the_skiabot/resources --skps /sdcard/revenge_of_the_skiabot/skps --images /sdcard/revenge_of_the_skiabot/images/dm --colorImages /sdcard/revenge_of_the_skiabot/images/colorspace --nameByHash --properties gitHash abc123 builder Test-Android-Clang-GalaxyS6-GPU-MaliT760-arm64-Debug-Android swarming_bot_id skia-bot-123 swarming_task_id 123456 --svgs /sdcard/revenge_of_the_skiabot/svgs --key arch arm64 compiler Clang configuration Debug cpu_or_gpu GPU cpu_or_gpu_value MaliT760 extra_config Android model GalaxyS6 os Android --uninterestingHashesFile /sdcard/revenge_of_the_skiabot/uninteresting_hashes.txt --writePath /sdcard/revenge_of_the_skiabot/dm_out --nocpu --randomProcessorTest --config 8888 srgb gles glesdft glessrgb glesmsaa4 serialize-8888 tiles_rt-8888 pic-8888 --src tests gm image colorImage svg --blacklist glessrgb image _ _ _ test _ GrShape serialize-8888 gm _ bleed_image serialize-8888 gm _ c_gms serialize-8888 gm _ colortype serialize-8888 gm _ colortype_xfermodes serialize-8888 gm _ drawfilter serialize-8888 gm _ fontmgr_bounds_0.75_0 serialize-8888 gm _ fontmgr_bounds_1_-0.25 serialize-8888 gm _ fontmgr_bounds serialize-8888 gm _ fontmgr_match serialize-8888 gm _ fontmgr_iter serialize-8888 gm _ imagemasksubset serialize-8888 gm _ bitmapfilters serialize-8888 gm _ bitmapshaders serialize-8888 gm _ bleed serialize-8888 gm _ bleed_alpha_bmp serialize-8888 gm _ bleed_alpha_bmp_shader serialize-8888 gm _ convex_poly_clip serialize-8888 gm _ extractalpha serialize-8888 gm _ filterbitmap_checkerboard_32_32_g8 serialize-8888 gm _ filterbitmap_image_mandrill_64 serialize-8888 gm _ shadows serialize-8888 gm _ simpleaaclip_aaclip serialize-8888 gm _ composeshader_bitmap serialize-8888 gm _ scaled_tilemodes_npot serialize-8888 gm _ scaled_tilemodes serialize-8888 gm _ typefacerendering_pfaMac serialize-8888 gm _ parsedpaths serialize-8888 gm _ ImageGeneratorExternal_rect serialize-8888 gm _ ImageGeneratorExternal_shader serialize-8888 gm _ shadow_utils serialize-8888 gm _ makecolorspace serialize-8888 gm _ bleed_alpha_image serialize-8888 gm _ bleed_alpha_image_shader serialize-8888 gm _ verylargebitmap serialize-8888 gm _ verylarge_picture_image pic-8888 gm _ drawfilter pic-8888 gm _ image-cacherator-from-picture serialize-8888 gm _ image-cacherator-from-picture pic-8888 gm _ image-cacherator-from-raster serialize-8888 gm _ image-cacherator-from-raster pic-8888 gm _ image-cacherator-from-ctable serialize-8888 gm _ image-cacherator-from-ctable pic-8888 gm _ gamut serialize-8888 gm _ gamut pic-8888 gm _ complexclip4_bw serialize-8888 gm _ complexclip4_bw pic-8888 gm _ complexclip4_aa serialize-8888 gm _ complexclip4_aa tiles_rt-8888 gm _ complexclip4_bw tiles_rt-8888 gm _ complexclip4_aa _ image _ interlaced1.png _ image _ interlaced2.png _ image _ interlaced3.png _ image _ .arw _ image _ .cr2 _ image _ .dng _ image _ .nef _ image _ .nrw _ image _ .orf _ image _ .raf _ image _ .rw2 _ image _ .pef _ image _ .srw _ image _ .ARW _ image _ .CR2 _ image _ .DNG _ image _ .NEF _ image _ .NRW _ image _ .ORF _ image _ .RAF _ image _ .RW2 _ image _ .PEF _ image _ .SRW --match ~SpecialImage ~skbug6653; echo $? >/data/local/tmp/rc",
    710       "[START_DIR]/tmp/dm.sh"
    711     ],
    712     "env": {
    713       "BUILDTYPE": "Debug",
    714       "CHROME_HEADLESS": "1",
    715       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    716       "SKIA_OUT": "[START_DIR]/out"
    717     },
    718     "infra_step": true,
    719     "name": "write dm.sh"
    720   },
    721   {
    722     "cmd": [
    723       "adb",
    724       "push",
    725       "[START_DIR]/tmp/dm.sh",
    726       "/data/local/tmp/"
    727     ],
    728     "cwd": "[START_DIR]/skia",
    729     "env": {
    730       "BUILDTYPE": "Debug",
    731       "CHROME_HEADLESS": "1",
    732       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    733       "SKIA_OUT": "[START_DIR]/out"
    734     },
    735     "infra_step": true,
    736     "name": "push dm.sh"
    737   },
    738   {
    739     "cmd": [
    740       "adb",
    741       "logcat",
    742       "-c"
    743     ],
    744     "cwd": "[START_DIR]/skia",
    745     "env": {
    746       "BUILDTYPE": "Debug",
    747       "CHROME_HEADLESS": "1",
    748       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    749       "SKIA_OUT": "[START_DIR]/out"
    750     },
    751     "infra_step": true,
    752     "name": "clear log"
    753   },
    754   {
    755     "cmd": [
    756       "python",
    757       "-u",
    758       "\nimport subprocess\nimport sys\nbin_dir = sys.argv[1]\nsh      = sys.argv[2]\nsubprocess.check_call(['adb', 'shell', 'sh', bin_dir + sh])\ntry:\n  sys.exit(int(subprocess.check_output(['adb', 'shell', 'cat',\n                                        bin_dir + 'rc'])))\nexcept ValueError:\n  print \"Couldn't read the return code.  Probably killed for OOM.\"\n  sys.exit(1)\n",
    759       "/data/local/tmp/",
    760       "dm.sh"
    761     ],
    762     "env": {
    763       "BUILDTYPE": "Debug",
    764       "CHROME_HEADLESS": "1",
    765       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    766       "SKIA_OUT": "[START_DIR]/out"
    767     },
    768     "name": "dm",
    769     "~followup_annotations": [
    770       "@@@STEP_LOG_LINE (a] python.inline@@@@",
    771       "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@",
    772       "@@@STEP_LOG_LINE (a] python.inline@import sys@@@",
    773       "@@@STEP_LOG_LINE (a] python.inline@bin_dir = sys.argv[1]@@@",
    774       "@@@STEP_LOG_LINE (a] python.inline@sh      = sys.argv[2]@@@",
    775       "@@@STEP_LOG_LINE (a] python.inline@subprocess.check_call(['adb', 'shell', 'sh', bin_dir + sh])@@@",
    776       "@@@STEP_LOG_LINE (a] python.inline@try:@@@",
    777       "@@@STEP_LOG_LINE (a] python.inline@  sys.exit(int(subprocess.check_output(['adb', 'shell', 'cat',@@@",
    778       "@@@STEP_LOG_LINE (a] python.inline@                                        bin_dir + 'rc'])))@@@",
    779       "@@@STEP_LOG_LINE (a] python.inline@except ValueError:@@@",
    780       "@@@STEP_LOG_LINE (a] python.inline@  print \"Couldn't read the return code.  Probably killed for OOM.\"@@@",
    781       "@@@STEP_LOG_LINE (a] python.inline@  sys.exit(1)@@@",
    782       "@@@STEP_LOG_END (a] python.inline@@@"
    783     ]
    784   },
    785   {
    786     "cmd": [
    787       "adb",
    788       "pull",
    789       "/sdcard/revenge_of_the_skiabot/dm_out",
    790       "[CUSTOM_[SWARM_OUT_DIR]]/dm"
    791     ],
    792     "cwd": "[START_DIR]/skia",
    793     "env": {
    794       "BUILDTYPE": "Debug",
    795       "CHROME_HEADLESS": "1",
    796       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    797       "SKIA_OUT": "[START_DIR]/out"
    798     },
    799     "infra_step": true,
    800     "name": "pull /sdcard/revenge_of_the_skiabot/dm_out [CUSTOM_[SWARM_OUT_DIR]]/dm"
    801   },
    802   {
    803     "cmd": [
    804       "python",
    805       "-u",
    806       "\nimport os\nimport subprocess\nimport sys\nout = sys.argv[1]\nlog = subprocess.check_output(['adb', 'logcat', '-d'])\nfor line in log.split('\\n'):\n  tokens = line.split()\n  if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':\n    addr, path = tokens[-2:]\n    local = os.path.join(out, os.path.basename(path))\n    if os.path.exists(local):\n      sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])\n      line = line.replace(addr, addr + ' ' + sym.strip())\n  print line\n",
    807       "[START_DIR]/out/Debug"
    808     ],
    809     "env": {
    810       "BUILDTYPE": "Debug",
    811       "CHROME_HEADLESS": "1",
    812       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    813       "SKIA_OUT": "[START_DIR]/out"
    814     },
    815     "infra_step": true,
    816     "name": "dump log",
    817     "~followup_annotations": [
    818       "@@@STEP_LOG_LINE (a] python.inline@@@@",
    819       "@@@STEP_LOG_LINE (a] python.inline@import os@@@",
    820       "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@",
    821       "@@@STEP_LOG_LINE (a] python.inline@import sys@@@",
    822       "@@@STEP_LOG_LINE (a] python.inline@out = sys.argv[1]@@@",
    823       "@@@STEP_LOG_LINE (a] python.inline@log = subprocess.check_output(['adb', 'logcat', '-d'])@@@",
    824       "@@@STEP_LOG_LINE (a] python.inline@for line in log.split('\\n'):@@@",
    825       "@@@STEP_LOG_LINE (a] python.inline@  tokens = line.split()@@@",
    826       "@@@STEP_LOG_LINE (a] python.inline@  if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@",
    827       "@@@STEP_LOG_LINE (a] python.inline@    addr, path = tokens[-2:]@@@",
    828       "@@@STEP_LOG_LINE (a] python.inline@    local = os.path.join(out, os.path.basename(path))@@@",
    829       "@@@STEP_LOG_LINE (a] python.inline@    if os.path.exists(local):@@@",
    830       "@@@STEP_LOG_LINE (a] python.inline@      sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])@@@",
    831       "@@@STEP_LOG_LINE (a] python.inline@      line = line.replace(addr, addr + ' ' + sym.strip())@@@",
    832       "@@@STEP_LOG_LINE (a] python.inline@  print line@@@",
    833       "@@@STEP_LOG_END (a] python.inline@@@"
    834     ]
    835   },
    836   {
    837     "cmd": [
    838       "adb",
    839       "kill-server"
    840     ],
    841     "cwd": "[START_DIR]/skia",
    842     "env": {
    843       "BUILDTYPE": "Debug",
    844       "CHROME_HEADLESS": "1",
    845       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    846       "SKIA_OUT": "[START_DIR]/out"
    847     },
    848     "infra_step": true,
    849     "name": "kill adb server"
    850   },
    851   {
    852     "name": "$result",
    853     "recipe_result": null,
    854     "status_code": 0
    855   }
    856 ]