Home | History | Annotate | Download | only in full.expected
      1 [
      2   {
      3     "cmd": [
      4       "python",
      5       "-u",
      6       "[START_DIR]/skia/bin/fetch-gn"
      7     ],
      8     "cwd": "[START_DIR]/skia",
      9     "env": {
     10       "BUILDTYPE": "Debug",
     11       "CHROME_HEADLESS": "1",
     12       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
     13       "SKIA_OUT": "[START_DIR]/out"
     14     },
     15     "infra_step": true,
     16     "name": "fetch-gn"
     17   },
     18   {
     19     "cmd": [
     20       "[START_DIR]/skia/bin/gn",
     21       "gen",
     22       "[START_DIR]/out/Debug",
     23       "--args=extra_cflags=[\"-O1\"] ndk=\"[START_DIR]/android_ndk_linux\" target_cpu=\"None\""
     24     ],
     25     "cwd": "[START_DIR]/skia",
     26     "env": {
     27       "BUILDTYPE": "Debug",
     28       "CHROME_HEADLESS": "1",
     29       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
     30       "SKIA_OUT": "[START_DIR]/out"
     31     },
     32     "name": "gn gen"
     33   },
     34   {
     35     "cmd": [
     36       "ninja",
     37       "-C",
     38       "[START_DIR]/out/Debug"
     39     ],
     40     "cwd": "[START_DIR]/skia",
     41     "env": {
     42       "BUILDTYPE": "Debug",
     43       "CHROME_HEADLESS": "1",
     44       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
     45       "SKIA_OUT": "[START_DIR]/out"
     46     },
     47     "name": "ninja"
     48   },
     49   {
     50     "cmd": [
     51       "adb",
     52       "push",
     53       "file.txt",
     54       "file.txt"
     55     ],
     56     "cwd": "[START_DIR]/skia",
     57     "env": {
     58       "BUILDTYPE": "Debug",
     59       "CHROME_HEADLESS": "1",
     60       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
     61       "SKIA_OUT": "[START_DIR]/out"
     62     },
     63     "infra_step": true,
     64     "name": "push file.txt file.txt"
     65   },
     66   {
     67     "cmd": [
     68       "python",
     69       "-u",
     70       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
     71       "--json-output",
     72       "/path/to/tmp/json",
     73       "rmtree",
     74       "results_dir"
     75     ],
     76     "infra_step": true,
     77     "name": "rmtree results_dir"
     78   },
     79   {
     80     "cmd": [
     81       "python",
     82       "-u",
     83       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
     84       "--json-output",
     85       "/path/to/tmp/json",
     86       "ensure-directory",
     87       "--mode",
     88       "0777",
     89       "results_dir"
     90     ],
     91     "infra_step": true,
     92     "name": "makedirs results_dir"
     93   },
     94   {
     95     "cmd": [
     96       "adb",
     97       "shell",
     98       "rm",
     99       "-rf",
    100       "device_results_dir"
    101     ],
    102     "cwd": "[START_DIR]/skia",
    103     "env": {
    104       "BUILDTYPE": "Debug",
    105       "CHROME_HEADLESS": "1",
    106       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    107       "SKIA_OUT": "[START_DIR]/out"
    108     },
    109     "infra_step": true,
    110     "name": "rm device_results_dir"
    111   },
    112   {
    113     "cmd": [
    114       "adb",
    115       "shell",
    116       "mkdir",
    117       "-p",
    118       "device_results_dir"
    119     ],
    120     "cwd": "[START_DIR]/skia",
    121     "env": {
    122       "BUILDTYPE": "Debug",
    123       "CHROME_HEADLESS": "1",
    124       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    125       "SKIA_OUT": "[START_DIR]/out"
    126     },
    127     "infra_step": true,
    128     "name": "mkdir device_results_dir"
    129   },
    130   {
    131     "cmd": [
    132       "adb",
    133       "shell",
    134       "mkdir",
    135       "-p",
    136       "/sdcard/revenge_of_the_skiabot/resources"
    137     ],
    138     "cwd": "[START_DIR]/skia",
    139     "env": {
    140       "BUILDTYPE": "Debug",
    141       "CHROME_HEADLESS": "1",
    142       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    143       "SKIA_OUT": "[START_DIR]/out"
    144     },
    145     "infra_step": true,
    146     "name": "mkdir /sdcard/revenge_of_the_skiabot/resources"
    147   },
    148   {
    149     "cmd": [
    150       "python",
    151       "-u",
    152       "\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",
    153       "[START_DIR]/skia/resources",
    154       "/sdcard/revenge_of_the_skiabot/resources"
    155     ],
    156     "env": {
    157       "BUILDTYPE": "Debug",
    158       "CHROME_HEADLESS": "1",
    159       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    160       "SKIA_OUT": "[START_DIR]/out"
    161     },
    162     "infra_step": true,
    163     "name": "push [START_DIR]/skia/resources/* /sdcard/revenge_of_the_skiabot/resources",
    164     "~followup_annotations": [
    165       "@@@STEP_LOG_LINE (a] python.inline@@@@",
    166       "@@@STEP_LOG_LINE (a] python.inline@import os@@@",
    167       "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@",
    168       "@@@STEP_LOG_LINE (a] python.inline@import sys@@@",
    169       "@@@STEP_LOG_LINE (a] python.inline@host   = sys.argv[1]@@@",
    170       "@@@STEP_LOG_LINE (a] python.inline@device = sys.argv[2]@@@",
    171       "@@@STEP_LOG_LINE (a] python.inline@for d, _, fs in os.walk(host):@@@",
    172       "@@@STEP_LOG_LINE (a] python.inline@  p = os.path.relpath(d, host)@@@",
    173       "@@@STEP_LOG_LINE (a] python.inline@  if p != '.' and p.startswith('.'):@@@",
    174       "@@@STEP_LOG_LINE (a] python.inline@    continue@@@",
    175       "@@@STEP_LOG_LINE (a] python.inline@  for f in fs:@@@",
    176       "@@@STEP_LOG_LINE (a] python.inline@    print os.path.join(p,f)@@@",
    177       "@@@STEP_LOG_LINE (a] python.inline@    subprocess.check_call(['adb', 'push',@@@",
    178       "@@@STEP_LOG_LINE (a] python.inline@                           os.path.realpath(os.path.join(host, p, f)),@@@",
    179       "@@@STEP_LOG_LINE (a] python.inline@                           os.path.join(device, p, f)])@@@",
    180       "@@@STEP_LOG_END (a] python.inline@@@"
    181     ]
    182   },
    183   {
    184     "cmd": [
    185       "python",
    186       "-u",
    187       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
    188       "--json-output",
    189       "/path/to/tmp/json",
    190       "copy",
    191       "[START_DIR]/skia/infra/bots/assets/skp/VERSION",
    192       "/path/to/tmp/"
    193     ],
    194     "infra_step": true,
    195     "name": "Get downloaded SKP VERSION"
    196   },
    197   {
    198     "cmd": [
    199       "python",
    200       "-u",
    201       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
    202       "--json-output",
    203       "/path/to/tmp/json",
    204       "copy",
    205       "42",
    206       "[START_DIR]/tmp/SKP_VERSION"
    207     ],
    208     "infra_step": true,
    209     "name": "write SKP_VERSION"
    210   },
    211   {
    212     "cmd": [
    213       "adb",
    214       "shell",
    215       "cat",
    216       "/sdcard/revenge_of_the_skiabot/SKP_VERSION"
    217     ],
    218     "cwd": "[START_DIR]/skia",
    219     "env": {
    220       "BUILDTYPE": "Debug",
    221       "CHROME_HEADLESS": "1",
    222       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    223       "SKIA_OUT": "[START_DIR]/out"
    224     },
    225     "infra_step": true,
    226     "name": "read /sdcard/revenge_of_the_skiabot/SKP_VERSION",
    227     "stdout": "/path/to/tmp/"
    228   },
    229   {
    230     "cmd": [
    231       "adb",
    232       "shell",
    233       "rm",
    234       "-f",
    235       "/sdcard/revenge_of_the_skiabot/SKP_VERSION"
    236     ],
    237     "cwd": "[START_DIR]/skia",
    238     "env": {
    239       "BUILDTYPE": "Debug",
    240       "CHROME_HEADLESS": "1",
    241       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    242       "SKIA_OUT": "[START_DIR]/out"
    243     },
    244     "infra_step": true,
    245     "name": "rm /sdcard/revenge_of_the_skiabot/SKP_VERSION"
    246   },
    247   {
    248     "cmd": [
    249       "adb",
    250       "shell",
    251       "rm",
    252       "-rf",
    253       "/sdcard/revenge_of_the_skiabot/skps"
    254     ],
    255     "cwd": "[START_DIR]/skia",
    256     "env": {
    257       "BUILDTYPE": "Debug",
    258       "CHROME_HEADLESS": "1",
    259       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    260       "SKIA_OUT": "[START_DIR]/out"
    261     },
    262     "infra_step": true,
    263     "name": "rm /sdcard/revenge_of_the_skiabot/skps"
    264   },
    265   {
    266     "cmd": [
    267       "adb",
    268       "shell",
    269       "mkdir",
    270       "-p",
    271       "/sdcard/revenge_of_the_skiabot/skps"
    272     ],
    273     "cwd": "[START_DIR]/skia",
    274     "env": {
    275       "BUILDTYPE": "Debug",
    276       "CHROME_HEADLESS": "1",
    277       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    278       "SKIA_OUT": "[START_DIR]/out"
    279     },
    280     "infra_step": true,
    281     "name": "mkdir /sdcard/revenge_of_the_skiabot/skps"
    282   },
    283   {
    284     "cmd": [
    285       "python",
    286       "-u",
    287       "\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",
    288       "[START_DIR]/skp",
    289       "/sdcard/revenge_of_the_skiabot/skps"
    290     ],
    291     "env": {
    292       "BUILDTYPE": "Debug",
    293       "CHROME_HEADLESS": "1",
    294       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    295       "SKIA_OUT": "[START_DIR]/out"
    296     },
    297     "infra_step": true,
    298     "name": "push [START_DIR]/skp/* /sdcard/revenge_of_the_skiabot/skps",
    299     "~followup_annotations": [
    300       "@@@STEP_LOG_LINE (a] python.inline@@@@",
    301       "@@@STEP_LOG_LINE (a] python.inline@import os@@@",
    302       "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@",
    303       "@@@STEP_LOG_LINE (a] python.inline@import sys@@@",
    304       "@@@STEP_LOG_LINE (a] python.inline@host   = sys.argv[1]@@@",
    305       "@@@STEP_LOG_LINE (a] python.inline@device = sys.argv[2]@@@",
    306       "@@@STEP_LOG_LINE (a] python.inline@for d, _, fs in os.walk(host):@@@",
    307       "@@@STEP_LOG_LINE (a] python.inline@  p = os.path.relpath(d, host)@@@",
    308       "@@@STEP_LOG_LINE (a] python.inline@  if p != '.' and p.startswith('.'):@@@",
    309       "@@@STEP_LOG_LINE (a] python.inline@    continue@@@",
    310       "@@@STEP_LOG_LINE (a] python.inline@  for f in fs:@@@",
    311       "@@@STEP_LOG_LINE (a] python.inline@    print os.path.join(p,f)@@@",
    312       "@@@STEP_LOG_LINE (a] python.inline@    subprocess.check_call(['adb', 'push',@@@",
    313       "@@@STEP_LOG_LINE (a] python.inline@                           os.path.realpath(os.path.join(host, p, f)),@@@",
    314       "@@@STEP_LOG_LINE (a] python.inline@                           os.path.join(device, p, f)])@@@",
    315       "@@@STEP_LOG_END (a] python.inline@@@"
    316     ]
    317   },
    318   {
    319     "cmd": [
    320       "adb",
    321       "push",
    322       "[START_DIR]/tmp/SKP_VERSION",
    323       "/sdcard/revenge_of_the_skiabot/SKP_VERSION"
    324     ],
    325     "cwd": "[START_DIR]/skia",
    326     "env": {
    327       "BUILDTYPE": "Debug",
    328       "CHROME_HEADLESS": "1",
    329       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    330       "SKIA_OUT": "[START_DIR]/out"
    331     },
    332     "infra_step": true,
    333     "name": "push [START_DIR]/tmp/SKP_VERSION /sdcard/revenge_of_the_skiabot/SKP_VERSION"
    334   },
    335   {
    336     "cmd": [
    337       "python",
    338       "-u",
    339       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
    340       "--json-output",
    341       "/path/to/tmp/json",
    342       "copy",
    343       "[START_DIR]/skia/infra/bots/assets/skimage/VERSION",
    344       "/path/to/tmp/"
    345     ],
    346     "infra_step": true,
    347     "name": "Get downloaded skimage VERSION"
    348   },
    349   {
    350     "cmd": [
    351       "python",
    352       "-u",
    353       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
    354       "--json-output",
    355       "/path/to/tmp/json",
    356       "copy",
    357       "42",
    358       "[START_DIR]/tmp/SK_IMAGE_VERSION"
    359     ],
    360     "infra_step": true,
    361     "name": "write SK_IMAGE_VERSION"
    362   },
    363   {
    364     "cmd": [
    365       "adb",
    366       "shell",
    367       "cat",
    368       "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
    369     ],
    370     "cwd": "[START_DIR]/skia",
    371     "env": {
    372       "BUILDTYPE": "Debug",
    373       "CHROME_HEADLESS": "1",
    374       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    375       "SKIA_OUT": "[START_DIR]/out"
    376     },
    377     "infra_step": true,
    378     "name": "read /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION",
    379     "stdout": "/path/to/tmp/"
    380   },
    381   {
    382     "cmd": [
    383       "adb",
    384       "shell",
    385       "rm",
    386       "-f",
    387       "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
    388     ],
    389     "cwd": "[START_DIR]/skia",
    390     "env": {
    391       "BUILDTYPE": "Debug",
    392       "CHROME_HEADLESS": "1",
    393       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    394       "SKIA_OUT": "[START_DIR]/out"
    395     },
    396     "infra_step": true,
    397     "name": "rm /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
    398   },
    399   {
    400     "cmd": [
    401       "adb",
    402       "shell",
    403       "rm",
    404       "-rf",
    405       "/sdcard/revenge_of_the_skiabot/images"
    406     ],
    407     "cwd": "[START_DIR]/skia",
    408     "env": {
    409       "BUILDTYPE": "Debug",
    410       "CHROME_HEADLESS": "1",
    411       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    412       "SKIA_OUT": "[START_DIR]/out"
    413     },
    414     "infra_step": true,
    415     "name": "rm /sdcard/revenge_of_the_skiabot/images"
    416   },
    417   {
    418     "cmd": [
    419       "adb",
    420       "shell",
    421       "mkdir",
    422       "-p",
    423       "/sdcard/revenge_of_the_skiabot/images"
    424     ],
    425     "cwd": "[START_DIR]/skia",
    426     "env": {
    427       "BUILDTYPE": "Debug",
    428       "CHROME_HEADLESS": "1",
    429       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    430       "SKIA_OUT": "[START_DIR]/out"
    431     },
    432     "infra_step": true,
    433     "name": "mkdir /sdcard/revenge_of_the_skiabot/images"
    434   },
    435   {
    436     "cmd": [
    437       "python",
    438       "-u",
    439       "\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",
    440       "[START_DIR]/skimage",
    441       "/sdcard/revenge_of_the_skiabot/images"
    442     ],
    443     "env": {
    444       "BUILDTYPE": "Debug",
    445       "CHROME_HEADLESS": "1",
    446       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    447       "SKIA_OUT": "[START_DIR]/out"
    448     },
    449     "infra_step": true,
    450     "name": "push [START_DIR]/skimage/* /sdcard/revenge_of_the_skiabot/images",
    451     "~followup_annotations": [
    452       "@@@STEP_LOG_LINE (a] python.inline@@@@",
    453       "@@@STEP_LOG_LINE (a] python.inline@import os@@@",
    454       "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@",
    455       "@@@STEP_LOG_LINE (a] python.inline@import sys@@@",
    456       "@@@STEP_LOG_LINE (a] python.inline@host   = sys.argv[1]@@@",
    457       "@@@STEP_LOG_LINE (a] python.inline@device = sys.argv[2]@@@",
    458       "@@@STEP_LOG_LINE (a] python.inline@for d, _, fs in os.walk(host):@@@",
    459       "@@@STEP_LOG_LINE (a] python.inline@  p = os.path.relpath(d, host)@@@",
    460       "@@@STEP_LOG_LINE (a] python.inline@  if p != '.' and p.startswith('.'):@@@",
    461       "@@@STEP_LOG_LINE (a] python.inline@    continue@@@",
    462       "@@@STEP_LOG_LINE (a] python.inline@  for f in fs:@@@",
    463       "@@@STEP_LOG_LINE (a] python.inline@    print os.path.join(p,f)@@@",
    464       "@@@STEP_LOG_LINE (a] python.inline@    subprocess.check_call(['adb', 'push',@@@",
    465       "@@@STEP_LOG_LINE (a] python.inline@                           os.path.realpath(os.path.join(host, p, f)),@@@",
    466       "@@@STEP_LOG_LINE (a] python.inline@                           os.path.join(device, p, f)])@@@",
    467       "@@@STEP_LOG_END (a] python.inline@@@"
    468     ]
    469   },
    470   {
    471     "cmd": [
    472       "adb",
    473       "push",
    474       "[START_DIR]/tmp/SK_IMAGE_VERSION",
    475       "/sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
    476     ],
    477     "cwd": "[START_DIR]/skia",
    478     "env": {
    479       "BUILDTYPE": "Debug",
    480       "CHROME_HEADLESS": "1",
    481       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    482       "SKIA_OUT": "[START_DIR]/out"
    483     },
    484     "infra_step": true,
    485     "name": "push [START_DIR]/tmp/SK_IMAGE_VERSION /sdcard/revenge_of_the_skiabot/SK_IMAGE_VERSION"
    486   },
    487   {
    488     "cmd": [
    489       "python",
    490       "-u",
    491       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
    492       "--json-output",
    493       "/path/to/tmp/json",
    494       "copy",
    495       "[START_DIR]/skia/infra/bots/assets/svg/VERSION",
    496       "/path/to/tmp/"
    497     ],
    498     "infra_step": true,
    499     "name": "Get downloaded SVG VERSION"
    500   },
    501   {
    502     "cmd": [
    503       "python",
    504       "-u",
    505       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
    506       "--json-output",
    507       "/path/to/tmp/json",
    508       "copy",
    509       "42",
    510       "[START_DIR]/tmp/SVG_VERSION"
    511     ],
    512     "infra_step": true,
    513     "name": "write SVG_VERSION"
    514   },
    515   {
    516     "cmd": [
    517       "adb",
    518       "shell",
    519       "cat",
    520       "/sdcard/revenge_of_the_skiabot/SVG_VERSION"
    521     ],
    522     "cwd": "[START_DIR]/skia",
    523     "env": {
    524       "BUILDTYPE": "Debug",
    525       "CHROME_HEADLESS": "1",
    526       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    527       "SKIA_OUT": "[START_DIR]/out"
    528     },
    529     "infra_step": true,
    530     "name": "read /sdcard/revenge_of_the_skiabot/SVG_VERSION",
    531     "stdout": "/path/to/tmp/"
    532   },
    533   {
    534     "cmd": [
    535       "adb",
    536       "shell",
    537       "rm",
    538       "-f",
    539       "/sdcard/revenge_of_the_skiabot/SVG_VERSION"
    540     ],
    541     "cwd": "[START_DIR]/skia",
    542     "env": {
    543       "BUILDTYPE": "Debug",
    544       "CHROME_HEADLESS": "1",
    545       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    546       "SKIA_OUT": "[START_DIR]/out"
    547     },
    548     "infra_step": true,
    549     "name": "rm /sdcard/revenge_of_the_skiabot/SVG_VERSION"
    550   },
    551   {
    552     "cmd": [
    553       "adb",
    554       "shell",
    555       "rm",
    556       "-rf",
    557       "/sdcard/revenge_of_the_skiabot/svgs"
    558     ],
    559     "cwd": "[START_DIR]/skia",
    560     "env": {
    561       "BUILDTYPE": "Debug",
    562       "CHROME_HEADLESS": "1",
    563       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    564       "SKIA_OUT": "[START_DIR]/out"
    565     },
    566     "infra_step": true,
    567     "name": "rm /sdcard/revenge_of_the_skiabot/svgs"
    568   },
    569   {
    570     "cmd": [
    571       "adb",
    572       "shell",
    573       "mkdir",
    574       "-p",
    575       "/sdcard/revenge_of_the_skiabot/svgs"
    576     ],
    577     "cwd": "[START_DIR]/skia",
    578     "env": {
    579       "BUILDTYPE": "Debug",
    580       "CHROME_HEADLESS": "1",
    581       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    582       "SKIA_OUT": "[START_DIR]/out"
    583     },
    584     "infra_step": true,
    585     "name": "mkdir /sdcard/revenge_of_the_skiabot/svgs"
    586   },
    587   {
    588     "cmd": [
    589       "python",
    590       "-u",
    591       "\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",
    592       "[START_DIR]/svg",
    593       "/sdcard/revenge_of_the_skiabot/svgs"
    594     ],
    595     "env": {
    596       "BUILDTYPE": "Debug",
    597       "CHROME_HEADLESS": "1",
    598       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    599       "SKIA_OUT": "[START_DIR]/out"
    600     },
    601     "infra_step": true,
    602     "name": "push [START_DIR]/svg/* /sdcard/revenge_of_the_skiabot/svgs",
    603     "~followup_annotations": [
    604       "@@@STEP_LOG_LINE (a] python.inline@@@@",
    605       "@@@STEP_LOG_LINE (a] python.inline@import os@@@",
    606       "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@",
    607       "@@@STEP_LOG_LINE (a] python.inline@import sys@@@",
    608       "@@@STEP_LOG_LINE (a] python.inline@host   = sys.argv[1]@@@",
    609       "@@@STEP_LOG_LINE (a] python.inline@device = sys.argv[2]@@@",
    610       "@@@STEP_LOG_LINE (a] python.inline@for d, _, fs in os.walk(host):@@@",
    611       "@@@STEP_LOG_LINE (a] python.inline@  p = os.path.relpath(d, host)@@@",
    612       "@@@STEP_LOG_LINE (a] python.inline@  if p != '.' and p.startswith('.'):@@@",
    613       "@@@STEP_LOG_LINE (a] python.inline@    continue@@@",
    614       "@@@STEP_LOG_LINE (a] python.inline@  for f in fs:@@@",
    615       "@@@STEP_LOG_LINE (a] python.inline@    print os.path.join(p,f)@@@",
    616       "@@@STEP_LOG_LINE (a] python.inline@    subprocess.check_call(['adb', 'push',@@@",
    617       "@@@STEP_LOG_LINE (a] python.inline@                           os.path.realpath(os.path.join(host, p, f)),@@@",
    618       "@@@STEP_LOG_LINE (a] python.inline@                           os.path.join(device, p, f)])@@@",
    619       "@@@STEP_LOG_END (a] python.inline@@@"
    620     ]
    621   },
    622   {
    623     "cmd": [
    624       "adb",
    625       "push",
    626       "[START_DIR]/tmp/SVG_VERSION",
    627       "/sdcard/revenge_of_the_skiabot/SVG_VERSION"
    628     ],
    629     "cwd": "[START_DIR]/skia",
    630     "env": {
    631       "BUILDTYPE": "Debug",
    632       "CHROME_HEADLESS": "1",
    633       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    634       "SKIA_OUT": "[START_DIR]/out"
    635     },
    636     "infra_step": true,
    637     "name": "push [START_DIR]/tmp/SVG_VERSION /sdcard/revenge_of_the_skiabot/SVG_VERSION"
    638   },
    639   {
    640     "cmd": [
    641       "adb",
    642       "push",
    643       "[START_DIR]/out/Debug/dm",
    644       "/data/local/tmp/"
    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 dm"
    655   },
    656   {
    657     "cmd": [
    658       "python",
    659       "-u",
    660       "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
    661       "--json-output",
    662       "/path/to/tmp/json",
    663       "copy",
    664       "set -x; /data/local/tmp/dm --some-flag; echo $? >/data/local/tmp/rc",
    665       "[START_DIR]/tmp/dm.sh"
    666     ],
    667     "infra_step": true,
    668     "name": "write dm.sh"
    669   },
    670   {
    671     "cmd": [
    672       "adb",
    673       "push",
    674       "[START_DIR]/tmp/dm.sh",
    675       "/data/local/tmp/"
    676     ],
    677     "cwd": "[START_DIR]/skia",
    678     "env": {
    679       "BUILDTYPE": "Debug",
    680       "CHROME_HEADLESS": "1",
    681       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    682       "SKIA_OUT": "[START_DIR]/out"
    683     },
    684     "infra_step": true,
    685     "name": "push dm.sh"
    686   },
    687   {
    688     "cmd": [
    689       "adb",
    690       "logcat",
    691       "-c"
    692     ],
    693     "cwd": "[START_DIR]/skia",
    694     "env": {
    695       "BUILDTYPE": "Debug",
    696       "CHROME_HEADLESS": "1",
    697       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    698       "SKIA_OUT": "[START_DIR]/out"
    699     },
    700     "infra_step": true,
    701     "name": "clear log"
    702   },
    703   {
    704     "cmd": [
    705       "python",
    706       "-u",
    707       "\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",
    708       "/data/local/tmp/",
    709       "dm.sh"
    710     ],
    711     "name": "dm",
    712     "~followup_annotations": [
    713       "@@@STEP_LOG_LINE (a] python.inline@@@@",
    714       "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@",
    715       "@@@STEP_LOG_LINE (a] python.inline@import sys@@@",
    716       "@@@STEP_LOG_LINE (a] python.inline@bin_dir = sys.argv[1]@@@",
    717       "@@@STEP_LOG_LINE (a] python.inline@sh      = sys.argv[2]@@@",
    718       "@@@STEP_LOG_LINE (a] python.inline@subprocess.check_call(['adb', 'shell', 'sh', bin_dir + sh])@@@",
    719       "@@@STEP_LOG_LINE (a] python.inline@try:@@@",
    720       "@@@STEP_LOG_LINE (a] python.inline@  sys.exit(int(subprocess.check_output(['adb', 'shell', 'cat',@@@",
    721       "@@@STEP_LOG_LINE (a] python.inline@                                        bin_dir + 'rc'])))@@@",
    722       "@@@STEP_LOG_LINE (a] python.inline@except ValueError:@@@",
    723       "@@@STEP_LOG_LINE (a] python.inline@  print \"Couldn't read the return code.  Probably killed for OOM.\"@@@",
    724       "@@@STEP_LOG_LINE (a] python.inline@  sys.exit(1)@@@",
    725       "@@@STEP_LOG_END (a] python.inline@@@"
    726     ]
    727   },
    728   {
    729     "cmd": [
    730       "adb",
    731       "pull",
    732       "/sdcard/revenge_of_the_skiabot/dm_out",
    733       "[CUSTOM_[SWARM_OUT_DIR]]/dm"
    734     ],
    735     "cwd": "[START_DIR]/skia",
    736     "env": {
    737       "BUILDTYPE": "Debug",
    738       "CHROME_HEADLESS": "1",
    739       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    740       "SKIA_OUT": "[START_DIR]/out"
    741     },
    742     "infra_step": true,
    743     "name": "pull /sdcard/revenge_of_the_skiabot/dm_out [CUSTOM_[SWARM_OUT_DIR]]/dm"
    744   },
    745   {
    746     "cmd": [
    747       "adb",
    748       "pull",
    749       "/sdcard/revenge_of_the_skiabot/perf",
    750       "[CUSTOM_[SWARM_OUT_DIR]]/perfdata/Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Debug-Android/data"
    751     ],
    752     "cwd": "[START_DIR]/skia",
    753     "env": {
    754       "BUILDTYPE": "Debug",
    755       "CHROME_HEADLESS": "1",
    756       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    757       "SKIA_OUT": "[START_DIR]/out"
    758     },
    759     "infra_step": true,
    760     "name": "pull /sdcard/revenge_of_the_skiabot/perf [CUSTOM_[SWARM_OUT_DIR]]/perfdata/Perf-Android-Clang-NexusPlayer-GPU-PowerVR-x86-Debug-Android/data"
    761   },
    762   {
    763     "cmd": [
    764       "python",
    765       "-u",
    766       "\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",
    767       "[START_DIR]/out/Debug"
    768     ],
    769     "env": {
    770       "BUILDTYPE": "Debug",
    771       "CHROME_HEADLESS": "1",
    772       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    773       "SKIA_OUT": "[START_DIR]/out"
    774     },
    775     "infra_step": true,
    776     "name": "dump log",
    777     "~followup_annotations": [
    778       "@@@STEP_LOG_LINE (a] python.inline@@@@",
    779       "@@@STEP_LOG_LINE (a] python.inline@import os@@@",
    780       "@@@STEP_LOG_LINE (a] python.inline@import subprocess@@@",
    781       "@@@STEP_LOG_LINE (a] python.inline@import sys@@@",
    782       "@@@STEP_LOG_LINE (a] python.inline@out = sys.argv[1]@@@",
    783       "@@@STEP_LOG_LINE (a] python.inline@log = subprocess.check_output(['adb', 'logcat', '-d'])@@@",
    784       "@@@STEP_LOG_LINE (a] python.inline@for line in log.split('\\n'):@@@",
    785       "@@@STEP_LOG_LINE (a] python.inline@  tokens = line.split()@@@",
    786       "@@@STEP_LOG_LINE (a] python.inline@  if len(tokens) == 11 and tokens[-7] == 'F' and tokens[-3] == 'pc':@@@",
    787       "@@@STEP_LOG_LINE (a] python.inline@    addr, path = tokens[-2:]@@@",
    788       "@@@STEP_LOG_LINE (a] python.inline@    local = os.path.join(out, os.path.basename(path))@@@",
    789       "@@@STEP_LOG_LINE (a] python.inline@    if os.path.exists(local):@@@",
    790       "@@@STEP_LOG_LINE (a] python.inline@      sym = subprocess.check_output(['addr2line', '-Cfpe', local, addr])@@@",
    791       "@@@STEP_LOG_LINE (a] python.inline@      line = line.replace(addr, addr + ' ' + sym.strip())@@@",
    792       "@@@STEP_LOG_LINE (a] python.inline@  print line@@@",
    793       "@@@STEP_LOG_END (a] python.inline@@@"
    794     ]
    795   },
    796   {
    797     "cmd": [
    798       "adb",
    799       "kill-server"
    800     ],
    801     "cwd": "[START_DIR]/skia",
    802     "env": {
    803       "BUILDTYPE": "Debug",
    804       "CHROME_HEADLESS": "1",
    805       "PATH": "<PATH>:RECIPE_PACKAGE_REPO[depot_tools]",
    806       "SKIA_OUT": "[START_DIR]/out"
    807     },
    808     "infra_step": true,
    809     "name": "kill adb server"
    810   },
    811   {
    812     "name": "$result",
    813     "recipe_result": null,
    814     "status_code": 0
    815   }
    816 ]