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