1[
2  {
3    "cmd": [
4      "python",
5      "-u",
6      "\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",
7      "[CUSTOM_/_B_WORK]/flutter",
8      "511"
9    ],
10    "infra_step": true,
11    "name": "makedirs checkout_path",
12    "~followup_annotations": [
13      "@@@STEP_LOG_LINE@python.inline@@@@",
14      "@@@STEP_LOG_LINE@python.inline@import sys, os@@@",
15      "@@@STEP_LOG_LINE@python.inline@path = sys.argv[1]@@@",
16      "@@@STEP_LOG_LINE@python.inline@mode = int(sys.argv[2])@@@",
17      "@@@STEP_LOG_LINE@python.inline@if not os.path.isdir(path):@@@",
18      "@@@STEP_LOG_LINE@python.inline@  if os.path.exists(path):@@@",
19      "@@@STEP_LOG_LINE@python.inline@    print \"%s exists but is not a dir\" % path@@@",
20      "@@@STEP_LOG_LINE@python.inline@    sys.exit(1)@@@",
21      "@@@STEP_LOG_LINE@python.inline@  os.makedirs(path, mode)@@@",
22      "@@@STEP_LOG_END@python.inline@@@"
23    ]
24  },
25  {
26    "cmd": [
27      "python",
28      "-u",
29      "RECIPE_MODULE[depot_tools::bot_update]/resources/bot_update.py",
30      "--spec",
31      "cache_dir = '[CUSTOM_/_B_CACHE]'\nsolutions = [{'deps_file': '.DEPS.git', 'managed': True, 'name': 'src/flutter', 'url': 'https://github.com/flutter/engine.git'}]\ntarget_os = ['android']",
32      "--patch_root",
33      "src/third_party/skia",
34      "--revision_mapping_file",
35      "{\"src/flutter\": \"got_flutter_revision\", \"src/third_party/skia\": \"got_revision\"}",
36      "--git-cache-dir",
37      "[CUSTOM_/_B_CACHE]",
38      "--output_json",
39      "/path/to/tmp/json",
40      "--revision",
41      "src/flutter@origin/master",
42      "--revision",
43      "src/third_party/skia@abc123",
44      "--output_manifest"
45    ],
46    "cwd": "[CUSTOM_/_B_WORK]/flutter",
47    "env": {
48      "GIT_HTTP_LOW_SPEED_LIMIT": "1000",
49      "GIT_HTTP_LOW_SPEED_TIME": "300",
50      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]"
51    },
52    "infra_step": true,
53    "name": "bot_update",
54    "~followup_annotations": [
55      "@@@STEP_TEXT@Some step text@@@",
56      "@@@STEP_LOG_LINE@json.output@{@@@",
57      "@@@STEP_LOG_LINE@json.output@  \"did_run\": true, @@@",
58      "@@@STEP_LOG_LINE@json.output@  \"fixed_revisions\": {@@@",
59      "@@@STEP_LOG_LINE@json.output@    \"src/flutter\": \"origin/master\", @@@",
60      "@@@STEP_LOG_LINE@json.output@    \"src/third_party/skia\": \"abc123\"@@@",
61      "@@@STEP_LOG_LINE@json.output@  }, @@@",
62      "@@@STEP_LOG_LINE@json.output@  \"manifest\": {@@@",
63      "@@@STEP_LOG_LINE@json.output@    \"src/flutter\": {@@@",
64      "@@@STEP_LOG_LINE@json.output@      \"repository\": \"https://fake.org/src/flutter.git\", @@@",
65      "@@@STEP_LOG_LINE@json.output@      \"revision\": \"9221bca00ddbd888260084def81f09543281b952\"@@@",
66      "@@@STEP_LOG_LINE@json.output@    }, @@@",
67      "@@@STEP_LOG_LINE@json.output@    \"src/third_party/skia\": {@@@",
68      "@@@STEP_LOG_LINE@json.output@      \"repository\": \"https://fake.org/src/third_party/skia.git\", @@@",
69      "@@@STEP_LOG_LINE@json.output@      \"revision\": \"d9c4a4d173a97ef2832b65636b4200bb93ea8ee1\"@@@",
70      "@@@STEP_LOG_LINE@json.output@    }@@@",
71      "@@@STEP_LOG_LINE@json.output@  }, @@@",
72      "@@@STEP_LOG_LINE@json.output@  \"patch_failure\": false, @@@",
73      "@@@STEP_LOG_LINE@json.output@  \"patch_root\": \"src/third_party/skia\", @@@",
74      "@@@STEP_LOG_LINE@json.output@  \"properties\": {@@@",
75      "@@@STEP_LOG_LINE@json.output@    \"got_flutter_revision\": \"9221bca00ddbd888260084def81f09543281b952\", @@@",
76      "@@@STEP_LOG_LINE@json.output@    \"got_flutter_revision_cp\": \"refs/heads/master@{#84512}\", @@@",
77      "@@@STEP_LOG_LINE@json.output@    \"got_revision\": \"d9c4a4d173a97ef2832b65636b4200bb93ea8ee1\", @@@",
78      "@@@STEP_LOG_LINE@json.output@    \"got_revision_cp\": \"refs/heads/master@{#143121}\"@@@",
79      "@@@STEP_LOG_LINE@json.output@  }, @@@",
80      "@@@STEP_LOG_LINE@json.output@  \"root\": \"src/flutter\", @@@",
81      "@@@STEP_LOG_LINE@json.output@  \"step_text\": \"Some step text\"@@@",
82      "@@@STEP_LOG_LINE@json.output@}@@@",
83      "@@@STEP_LOG_END@json.output@@@",
84      "@@@SET_BUILD_PROPERTY@got_revision@\"d9c4a4d173a97ef2832b65636b4200bb93ea8ee1\"@@@",
85      "@@@SET_BUILD_PROPERTY@got_revision_cp@\"refs/heads/master@{#143121}\"@@@",
86      "@@@SET_BUILD_PROPERTY@got_flutter_revision_cp@\"refs/heads/master@{#84512}\"@@@",
87      "@@@SET_BUILD_PROPERTY@got_flutter_revision@\"9221bca00ddbd888260084def81f09543281b952\"@@@"
88    ]
89  },
90  {
91    "cmd": [
92      "gclient",
93      "runhooks"
94    ],
95    "cwd": "[CUSTOM_/_B_WORK]/flutter/src",
96    "env": {
97      "BUILDTYPE": "Release",
98      "CHROME_HEADLESS": "1",
99      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
100      "SKIA_OUT": "[CUSTOM_/_B_WORK]/flutter/src/third_party/skia/out/Build-Ubuntu-GCC-x86_64-Release-Flutter_Android"
101    },
102    "name": "runhook"
103  },
104  {
105    "cmd": [
106      "python",
107      "-u",
108      "RECIPE_MODULE[build::file]/resources/fileutil.py",
109      "rmtree",
110      "[CUSTOM_/_B_WORK]/flutter/src/out/android_release"
111    ],
112    "cwd": "[CUSTOM_/_B_WORK]/flutter/src",
113    "env": {
114      "PYTHONPATH": "[START_DIR]/skia/infra/bots/.recipe_deps/build/scripts"
115    },
116    "infra_step": true,
117    "name": "rmtree android_release"
118  },
119  {
120    "cmd": [
121      "flutter/tools/gn",
122      "--runtime-mode=release",
123      "--android"
124    ],
125    "cwd": "[CUSTOM_/_B_WORK]/flutter/src",
126    "env": {
127      "BUILDTYPE": "Release",
128      "CHROME_HEADLESS": "1",
129      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
130      "SKIA_OUT": "[CUSTOM_/_B_WORK]/flutter/src/third_party/skia/out/Build-Ubuntu-GCC-x86_64-Release-Flutter_Android"
131    },
132    "name": "gn_gen"
133  },
134  {
135    "cmd": [
136      "ninja",
137      "-C",
138      "out/android_release",
139      "-j100"
140    ],
141    "cwd": "[CUSTOM_/_B_WORK]/flutter/src",
142    "env": {
143      "BUILDTYPE": "Release",
144      "CHROME_HEADLESS": "1",
145      "PATH": "%(PATH)s:RECIPE_PACKAGE_REPO[depot_tools]",
146      "SKIA_OUT": "[CUSTOM_/_B_WORK]/flutter/src/third_party/skia/out/Build-Ubuntu-GCC-x86_64-Release-Flutter_Android"
147    },
148    "name": "build_flutter"
149  },
150  {
151    "cmd": [
152      "python",
153      "-u",
154      "import errno\nimport glob\nimport os\nimport shutil\nimport sys\n\nsrc = sys.argv[1]\ndst = sys.argv[2]\nbuild_products_whitelist = ['dm', 'dm.exe', 'get_images_from_skps', 'get_images_from_skps.exe', 'nanobench', 'nanobench.exe', 'skpbench', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'lib/*.so', 'iOSShell.app', 'iOSShell.ipa', 'visualbench', 'visualbench.exe', 'vulkan-1.dll']\n\ntry:\n  os.makedirs(dst)\nexcept OSError as e:\n  if e.errno != errno.EEXIST:\n    raise\n\nfor pattern in build_products_whitelist:\n  path = os.path.join(src, pattern)\n  for f in glob.glob(path):\n    dst_path = os.path.join(dst, os.path.relpath(f, src))\n    if not os.path.isdir(os.path.dirname(dst_path)):\n      os.makedirs(os.path.dirname(dst_path))\n    print 'Copying build product %s to %s' % (f, dst_path)\n    shutil.move(f, dst_path)\n",
155      "[CUSTOM_/_B_WORK]/flutter/src/third_party/skia/out/Build-Ubuntu-GCC-x86_64-Release-Flutter_Android/Release",
156      "[CUSTOM_[SWARM_OUT_DIR]]/out/Release"
157    ],
158    "infra_step": true,
159    "name": "copy build products",
160    "~followup_annotations": [
161      "@@@STEP_LOG_LINE@python.inline@import errno@@@",
162      "@@@STEP_LOG_LINE@python.inline@import glob@@@",
163      "@@@STEP_LOG_LINE@python.inline@import os@@@",
164      "@@@STEP_LOG_LINE@python.inline@import shutil@@@",
165      "@@@STEP_LOG_LINE@python.inline@import sys@@@",
166      "@@@STEP_LOG_LINE@python.inline@@@@",
167      "@@@STEP_LOG_LINE@python.inline@src = sys.argv[1]@@@",
168      "@@@STEP_LOG_LINE@python.inline@dst = sys.argv[2]@@@",
169      "@@@STEP_LOG_LINE@python.inline@build_products_whitelist = ['dm', 'dm.exe', 'get_images_from_skps', 'get_images_from_skps.exe', 'nanobench', 'nanobench.exe', 'skpbench', '*.so', '*.dll', '*.dylib', 'skia_launcher', 'lib/*.so', 'iOSShell.app', 'iOSShell.ipa', 'visualbench', 'visualbench.exe', 'vulkan-1.dll']@@@",
170      "@@@STEP_LOG_LINE@python.inline@@@@",
171      "@@@STEP_LOG_LINE@python.inline@try:@@@",
172      "@@@STEP_LOG_LINE@python.inline@  os.makedirs(dst)@@@",
173      "@@@STEP_LOG_LINE@python.inline@except OSError as e:@@@",
174      "@@@STEP_LOG_LINE@python.inline@  if e.errno != errno.EEXIST:@@@",
175      "@@@STEP_LOG_LINE@python.inline@    raise@@@",
176      "@@@STEP_LOG_LINE@python.inline@@@@",
177      "@@@STEP_LOG_LINE@python.inline@for pattern in build_products_whitelist:@@@",
178      "@@@STEP_LOG_LINE@python.inline@  path = os.path.join(src, pattern)@@@",
179      "@@@STEP_LOG_LINE@python.inline@  for f in glob.glob(path):@@@",
180      "@@@STEP_LOG_LINE@python.inline@    dst_path = os.path.join(dst, os.path.relpath(f, src))@@@",
181      "@@@STEP_LOG_LINE@python.inline@    if not os.path.isdir(os.path.dirname(dst_path)):@@@",
182      "@@@STEP_LOG_LINE@python.inline@      os.makedirs(os.path.dirname(dst_path))@@@",
183      "@@@STEP_LOG_LINE@python.inline@    print 'Copying build product %s to %s' % (f, dst_path)@@@",
184      "@@@STEP_LOG_LINE@python.inline@    shutil.move(f, dst_path)@@@",
185      "@@@STEP_LOG_END@python.inline@@@"
186    ]
187  },
188  {
189    "name": "$result",
190    "recipe_result": null,
191    "status_code": 0
192  }
193]