libv8 8.4.255.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (639) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +19 -0
  3. data/.gitmodules +3 -0
  4. data/.rspec +3 -0
  5. data/.travis.yml +45 -0
  6. data/CHANGELOG.md +111 -0
  7. data/Gemfile +4 -0
  8. data/README.md +152 -0
  9. data/Rakefile +125 -0
  10. data/appveyor.yml.disabled +36 -0
  11. data/ext/libv8/arch.rb +20 -0
  12. data/ext/libv8/builder.rb +106 -0
  13. data/ext/libv8/extconf.rb +7 -0
  14. data/ext/libv8/location.rb +89 -0
  15. data/ext/libv8/paths.rb +28 -0
  16. data/lib/libv8.rb +9 -0
  17. data/lib/libv8/version.rb +3 -0
  18. data/libv8.gemspec +30 -0
  19. data/scaleway.png +0 -0
  20. data/spec/location_spec.rb +69 -0
  21. data/spec/spec_helper.rb +4 -0
  22. data/thefrontside.png +0 -0
  23. data/vendor/depot_tools/.cipd_impl.ps1 +129 -0
  24. data/vendor/depot_tools/.gitattributes +55 -0
  25. data/vendor/depot_tools/.gitignore +92 -0
  26. data/vendor/depot_tools/.style.yapf +4 -0
  27. data/vendor/depot_tools/.vpython +55 -0
  28. data/vendor/depot_tools/.vpython3 +23 -0
  29. data/vendor/depot_tools/CROS_OWNERS +7 -0
  30. data/vendor/depot_tools/GOMA_OWNERS +9 -0
  31. data/vendor/depot_tools/LICENSE +27 -0
  32. data/vendor/depot_tools/LUCI_OWNERS +5 -0
  33. data/vendor/depot_tools/OWNERS +39 -0
  34. data/vendor/depot_tools/PRESUBMIT.py +150 -0
  35. data/vendor/depot_tools/README.gclient.md +67 -0
  36. data/vendor/depot_tools/README.git-cl.md +99 -0
  37. data/vendor/depot_tools/README.md +78 -0
  38. data/vendor/depot_tools/WATCHLISTS +26 -0
  39. data/vendor/depot_tools/auth.py +163 -0
  40. data/vendor/depot_tools/autoninja +36 -0
  41. data/vendor/depot_tools/autoninja.bat +33 -0
  42. data/vendor/depot_tools/autoninja.py +148 -0
  43. data/vendor/depot_tools/bb +12 -0
  44. data/vendor/depot_tools/bb.bat +7 -0
  45. data/vendor/depot_tools/bootstrap/README.md +155 -0
  46. data/vendor/depot_tools/bootstrap/bootstrap.py +356 -0
  47. data/vendor/depot_tools/bootstrap/git-bash.template.sh +12 -0
  48. data/vendor/depot_tools/bootstrap/git.template.bat +5 -0
  49. data/vendor/depot_tools/bootstrap/manifest.txt +27 -0
  50. data/vendor/depot_tools/bootstrap/manifest_bleeding_edge.txt +27 -0
  51. data/vendor/depot_tools/bootstrap/profile.d.python.sh +20 -0
  52. data/vendor/depot_tools/bootstrap/python27.bat +46 -0
  53. data/vendor/depot_tools/bootstrap/python3.bat +46 -0
  54. data/vendor/depot_tools/bootstrap/win_tools.bat +79 -0
  55. data/vendor/depot_tools/bootstrap_python3 +35 -0
  56. data/vendor/depot_tools/breakpad.py +12 -0
  57. data/vendor/depot_tools/cbuildbot +1 -0
  58. data/vendor/depot_tools/chrome_set_ver +1 -0
  59. data/vendor/depot_tools/cipd +247 -0
  60. data/vendor/depot_tools/cipd.bat +67 -0
  61. data/vendor/depot_tools/cipd_bin_setup.bat +6 -0
  62. data/vendor/depot_tools/cipd_bin_setup.sh +22 -0
  63. data/vendor/depot_tools/cipd_client_version +1 -0
  64. data/vendor/depot_tools/cipd_client_version.digests +22 -0
  65. data/vendor/depot_tools/cipd_manifest.txt +63 -0
  66. data/vendor/depot_tools/cipd_manifest.versions +438 -0
  67. data/vendor/depot_tools/cit +8 -0
  68. data/vendor/depot_tools/cit.bat +12 -0
  69. data/vendor/depot_tools/cit.py +167 -0
  70. data/vendor/depot_tools/clang-format +8 -0
  71. data/vendor/depot_tools/clang-format.bat +12 -0
  72. data/vendor/depot_tools/clang_format.py +79 -0
  73. data/vendor/depot_tools/clang_format_merge_driver +8 -0
  74. data/vendor/depot_tools/clang_format_merge_driver.bat +12 -0
  75. data/vendor/depot_tools/clang_format_merge_driver.py +69 -0
  76. data/vendor/depot_tools/codereview.settings +6 -0
  77. data/vendor/depot_tools/compile_single_file +8 -0
  78. data/vendor/depot_tools/compile_single_file.bat +11 -0
  79. data/vendor/depot_tools/compile_single_file.py +79 -0
  80. data/vendor/depot_tools/cpplint.bat +11 -0
  81. data/vendor/depot_tools/cpplint.py +6097 -0
  82. data/vendor/depot_tools/cpplint_chromium.py +50 -0
  83. data/vendor/depot_tools/cros +87 -0
  84. data/vendor/depot_tools/cros_sdk +1 -0
  85. data/vendor/depot_tools/crosjobs +13 -0
  86. data/vendor/depot_tools/detect_host_arch.py +55 -0
  87. data/vendor/depot_tools/dirmd +12 -0
  88. data/vendor/depot_tools/dirmd.bat +7 -0
  89. data/vendor/depot_tools/download_from_google_storage +8 -0
  90. data/vendor/depot_tools/download_from_google_storage.bat +12 -0
  91. data/vendor/depot_tools/download_from_google_storage.py +634 -0
  92. data/vendor/depot_tools/ensure_bootstrap +53 -0
  93. data/vendor/depot_tools/fetch +21 -0
  94. data/vendor/depot_tools/fetch.bat +28 -0
  95. data/vendor/depot_tools/fetch.py +319 -0
  96. data/vendor/depot_tools/fetch_configs/android.py +34 -0
  97. data/vendor/depot_tools/fetch_configs/android_internal.py +34 -0
  98. data/vendor/depot_tools/fetch_configs/breakpad.py +44 -0
  99. data/vendor/depot_tools/fetch_configs/chromium.py +66 -0
  100. data/vendor/depot_tools/fetch_configs/config_util.py +52 -0
  101. data/vendor/depot_tools/fetch_configs/crashpad.py +41 -0
  102. data/vendor/depot_tools/fetch_configs/dart.py +45 -0
  103. data/vendor/depot_tools/fetch_configs/depot_tools.py +44 -0
  104. data/vendor/depot_tools/fetch_configs/devtools-frontend.py +44 -0
  105. data/vendor/depot_tools/fetch_configs/goma_client.py +41 -0
  106. data/vendor/depot_tools/fetch_configs/gyp.py +41 -0
  107. data/vendor/depot_tools/fetch_configs/infra.py +40 -0
  108. data/vendor/depot_tools/fetch_configs/infra_internal.py +45 -0
  109. data/vendor/depot_tools/fetch_configs/inspector_protocol.py +40 -0
  110. data/vendor/depot_tools/fetch_configs/ios.py +34 -0
  111. data/vendor/depot_tools/fetch_configs/ios_internal.py +39 -0
  112. data/vendor/depot_tools/fetch_configs/nacl.py +48 -0
  113. data/vendor/depot_tools/fetch_configs/naclports.py +47 -0
  114. data/vendor/depot_tools/fetch_configs/node-ci.py +41 -0
  115. data/vendor/depot_tools/fetch_configs/pdfium.py +40 -0
  116. data/vendor/depot_tools/fetch_configs/skia.py +41 -0
  117. data/vendor/depot_tools/fetch_configs/skia_buildbot.py +41 -0
  118. data/vendor/depot_tools/fetch_configs/syzygy.py +41 -0
  119. data/vendor/depot_tools/fetch_configs/v8.py +44 -0
  120. data/vendor/depot_tools/fetch_configs/webrtc.py +52 -0
  121. data/vendor/depot_tools/fetch_configs/webrtc_android.py +34 -0
  122. data/vendor/depot_tools/fetch_configs/webrtc_ios.py +34 -0
  123. data/vendor/depot_tools/fix_encoding.py +385 -0
  124. data/vendor/depot_tools/gclient +38 -0
  125. data/vendor/depot_tools/gclient-new-workdir.py +124 -0
  126. data/vendor/depot_tools/gclient.bat +32 -0
  127. data/vendor/depot_tools/gclient.py +3198 -0
  128. data/vendor/depot_tools/gclient_completion.sh +76 -0
  129. data/vendor/depot_tools/gclient_eval.py +891 -0
  130. data/vendor/depot_tools/gclient_paths.py +152 -0
  131. data/vendor/depot_tools/gclient_scm.py +1615 -0
  132. data/vendor/depot_tools/gclient_utils.py +1280 -0
  133. data/vendor/depot_tools/gerrit_client.py +151 -0
  134. data/vendor/depot_tools/gerrit_util.py +996 -0
  135. data/vendor/depot_tools/git-cache +6 -0
  136. data/vendor/depot_tools/git-cl +6 -0
  137. data/vendor/depot_tools/git-crrev-parse +53 -0
  138. data/vendor/depot_tools/git-drover +6 -0
  139. data/vendor/depot_tools/git-find-releases +6 -0
  140. data/vendor/depot_tools/git-footers +6 -0
  141. data/vendor/depot_tools/git-freeze +8 -0
  142. data/vendor/depot_tools/git-gs +9 -0
  143. data/vendor/depot_tools/git-hyper-blame +6 -0
  144. data/vendor/depot_tools/git-map +6 -0
  145. data/vendor/depot_tools/git-map-branches +6 -0
  146. data/vendor/depot_tools/git-mark-merge-base +6 -0
  147. data/vendor/depot_tools/git-nav-downstream +6 -0
  148. data/vendor/depot_tools/git-nav-upstream +6 -0
  149. data/vendor/depot_tools/git-new-branch +6 -0
  150. data/vendor/depot_tools/git-number +6 -0
  151. data/vendor/depot_tools/git-rebase-update +6 -0
  152. data/vendor/depot_tools/git-rename-branch +6 -0
  153. data/vendor/depot_tools/git-reparent-branch +6 -0
  154. data/vendor/depot_tools/git-retry +8 -0
  155. data/vendor/depot_tools/git-runhooks +23 -0
  156. data/vendor/depot_tools/git-squash-branch +6 -0
  157. data/vendor/depot_tools/git-templates/description +3 -0
  158. data/vendor/depot_tools/git-templates/hooks/applypatch-msg +4 -0
  159. data/vendor/depot_tools/git-templates/hooks/post-applypatch +4 -0
  160. data/vendor/depot_tools/git-templates/hooks/post-checkout +4 -0
  161. data/vendor/depot_tools/git-templates/hooks/post-commit +4 -0
  162. data/vendor/depot_tools/git-templates/hooks/post-merge +4 -0
  163. data/vendor/depot_tools/git-templates/hooks/post-update +4 -0
  164. data/vendor/depot_tools/git-templates/hooks/pre-applypatch +4 -0
  165. data/vendor/depot_tools/git-templates/hooks/pre-auto-gc +4 -0
  166. data/vendor/depot_tools/git-templates/hooks/pre-commit +4 -0
  167. data/vendor/depot_tools/git-templates/hooks/pre-rebase +4 -0
  168. data/vendor/depot_tools/git-templates/hooks/prepare-commit-msg +4 -0
  169. data/vendor/depot_tools/git-templates/info/exclude +6 -0
  170. data/vendor/depot_tools/git-thaw +13 -0
  171. data/vendor/depot_tools/git-upstream-diff +9 -0
  172. data/vendor/depot_tools/git_cache.py +786 -0
  173. data/vendor/depot_tools/git_cl.py +5158 -0
  174. data/vendor/depot_tools/git_cl_completion.sh +48 -0
  175. data/vendor/depot_tools/git_common.py +1101 -0
  176. data/vendor/depot_tools/git_dates.py +62 -0
  177. data/vendor/depot_tools/git_drover.py +469 -0
  178. data/vendor/depot_tools/git_find_releases.py +67 -0
  179. data/vendor/depot_tools/git_footers.py +261 -0
  180. data/vendor/depot_tools/git_freezer.py +40 -0
  181. data/vendor/depot_tools/git_hyper_blame.py +391 -0
  182. data/vendor/depot_tools/git_map.py +166 -0
  183. data/vendor/depot_tools/git_map_branches.py +354 -0
  184. data/vendor/depot_tools/git_mark_merge_base.py +73 -0
  185. data/vendor/depot_tools/git_nav_downstream.py +69 -0
  186. data/vendor/depot_tools/git_new_branch.py +82 -0
  187. data/vendor/depot_tools/git_number.py +301 -0
  188. data/vendor/depot_tools/git_rebase_update.py +351 -0
  189. data/vendor/depot_tools/git_rename_branch.py +55 -0
  190. data/vendor/depot_tools/git_reparent_branch.py +101 -0
  191. data/vendor/depot_tools/git_retry.py +181 -0
  192. data/vendor/depot_tools/git_squash_branch.py +28 -0
  193. data/vendor/depot_tools/git_upstream_diff.py +64 -0
  194. data/vendor/depot_tools/gn +8 -0
  195. data/vendor/depot_tools/gn.bat +12 -0
  196. data/vendor/depot_tools/gn.py +78 -0
  197. data/vendor/depot_tools/goma_auth +12 -0
  198. data/vendor/depot_tools/goma_auth.bat +8 -0
  199. data/vendor/depot_tools/goma_ctl +12 -0
  200. data/vendor/depot_tools/goma_ctl.bat +8 -0
  201. data/vendor/depot_tools/gsutil.py +190 -0
  202. data/vendor/depot_tools/gsutil.py.bat +23 -0
  203. data/vendor/depot_tools/gsutil.vpython +120 -0
  204. data/vendor/depot_tools/infra/README.md +1 -0
  205. data/vendor/depot_tools/infra/config/OWNERS +7 -0
  206. data/vendor/depot_tools/infra/config/README.md +1 -0
  207. data/vendor/depot_tools/infra/config/recipes.cfg +26 -0
  208. data/vendor/depot_tools/led +12 -0
  209. data/vendor/depot_tools/led.bat +7 -0
  210. data/vendor/depot_tools/lockfile.py +116 -0
  211. data/vendor/depot_tools/luci-auth +13 -0
  212. data/vendor/depot_tools/luci-auth.bat +8 -0
  213. data/vendor/depot_tools/lucicfg +12 -0
  214. data/vendor/depot_tools/lucicfg.bat +7 -0
  215. data/vendor/depot_tools/mac_toolchain +12 -0
  216. data/vendor/depot_tools/man/html/depot_tools.html +934 -0
  217. data/vendor/depot_tools/man/html/depot_tools_tutorial.html +1593 -0
  218. data/vendor/depot_tools/man/html/git-cl.html +1033 -0
  219. data/vendor/depot_tools/man/html/git-drover.html +1048 -0
  220. data/vendor/depot_tools/man/html/git-footers.html +878 -0
  221. data/vendor/depot_tools/man/html/git-freeze.html +859 -0
  222. data/vendor/depot_tools/man/html/git-hyper-blame.html +878 -0
  223. data/vendor/depot_tools/man/html/git-map-branches.html +904 -0
  224. data/vendor/depot_tools/man/html/git-map.html +887 -0
  225. data/vendor/depot_tools/man/html/git-mark-merge-base.html +826 -0
  226. data/vendor/depot_tools/man/html/git-nav-downstream.html +844 -0
  227. data/vendor/depot_tools/man/html/git-nav-upstream.html +853 -0
  228. data/vendor/depot_tools/man/html/git-new-branch.html +932 -0
  229. data/vendor/depot_tools/man/html/git-rebase-update.html +961 -0
  230. data/vendor/depot_tools/man/html/git-rename-branch.html +794 -0
  231. data/vendor/depot_tools/man/html/git-reparent-branch.html +847 -0
  232. data/vendor/depot_tools/man/html/git-retry.html +858 -0
  233. data/vendor/depot_tools/man/html/git-squash-branch.html +881 -0
  234. data/vendor/depot_tools/man/html/git-thaw.html +794 -0
  235. data/vendor/depot_tools/man/html/git-upstream-diff.html +923 -0
  236. data/vendor/depot_tools/man/man1/git-cl.1 +198 -0
  237. data/vendor/depot_tools/man/man1/git-drover.1 +330 -0
  238. data/vendor/depot_tools/man/man1/git-footers.1 +144 -0
  239. data/vendor/depot_tools/man/man1/git-freeze.1 +113 -0
  240. data/vendor/depot_tools/man/man1/git-hyper-blame.1 +128 -0
  241. data/vendor/depot_tools/man/man1/git-map-branches.1 +210 -0
  242. data/vendor/depot_tools/man/man1/git-map.1 +179 -0
  243. data/vendor/depot_tools/man/man1/git-mark-merge-base.1 +69 -0
  244. data/vendor/depot_tools/man/man1/git-nav-downstream.1 +112 -0
  245. data/vendor/depot_tools/man/man1/git-nav-upstream.1 +122 -0
  246. data/vendor/depot_tools/man/man1/git-new-branch.1 +176 -0
  247. data/vendor/depot_tools/man/man1/git-rebase-update.1 +177 -0
  248. data/vendor/depot_tools/man/man1/git-rename-branch.1 +53 -0
  249. data/vendor/depot_tools/man/man1/git-reparent-branch.1 +93 -0
  250. data/vendor/depot_tools/man/man1/git-retry.1 +108 -0
  251. data/vendor/depot_tools/man/man1/git-squash-branch.1 +129 -0
  252. data/vendor/depot_tools/man/man1/git-thaw.1 +54 -0
  253. data/vendor/depot_tools/man/man1/git-upstream-diff.1 +153 -0
  254. data/vendor/depot_tools/man/man7/depot_tools.7 +139 -0
  255. data/vendor/depot_tools/man/man7/depot_tools_tutorial.7 +1061 -0
  256. data/vendor/depot_tools/man/push_to_gs.sh +4 -0
  257. data/vendor/depot_tools/man/src/.gitignore +5 -0
  258. data/vendor/depot_tools/man/src/_aliases.txt +5 -0
  259. data/vendor/depot_tools/man/src/_footer.txt +8 -0
  260. data/vendor/depot_tools/man/src/_git-cl_desc.helper.txt +1 -0
  261. data/vendor/depot_tools/man/src/_git-drover_desc.helper.txt +2 -0
  262. data/vendor/depot_tools/man/src/_git-footers_desc.helper.txt +1 -0
  263. data/vendor/depot_tools/man/src/_git-freeze_desc.helper.txt +1 -0
  264. data/vendor/depot_tools/man/src/_git-hyper-blame_desc.helper.txt +1 -0
  265. data/vendor/depot_tools/man/src/_git-map-branches_desc.helper.txt +4 -0
  266. data/vendor/depot_tools/man/src/_git-map_desc.helper.txt +3 -0
  267. data/vendor/depot_tools/man/src/_git-mark-merge-base_desc.helper.txt +1 -0
  268. data/vendor/depot_tools/man/src/_git-nav-downstream_desc.helper.txt +1 -0
  269. data/vendor/depot_tools/man/src/_git-nav-upstream_desc.helper.txt +1 -0
  270. data/vendor/depot_tools/man/src/_git-new-branch_desc.helper.txt +1 -0
  271. data/vendor/depot_tools/man/src/_git-rebase-update_desc.helper.txt +1 -0
  272. data/vendor/depot_tools/man/src/_git-rename-branch_desc.helper.txt +1 -0
  273. data/vendor/depot_tools/man/src/_git-reparent-branch_desc.helper.txt +1 -0
  274. data/vendor/depot_tools/man/src/_git-retry_desc.helper.txt +2 -0
  275. data/vendor/depot_tools/man/src/_git-squash-branch_desc.helper.txt +1 -0
  276. data/vendor/depot_tools/man/src/_git-thaw_desc.helper.txt +2 -0
  277. data/vendor/depot_tools/man/src/_git-upstream-diff_desc.helper.txt +1 -0
  278. data/vendor/depot_tools/man/src/_helper_prefix.txt +1 -0
  279. data/vendor/depot_tools/man/src/asciidoc-override.css +7 -0
  280. data/vendor/depot_tools/man/src/common_demo_functions.sh +84 -0
  281. data/vendor/depot_tools/man/src/demo_repo.sh +43 -0
  282. data/vendor/depot_tools/man/src/depot_tools.txt +28 -0
  283. data/vendor/depot_tools/man/src/depot_tools_tutorial.demo.walkthrough.sh +155 -0
  284. data/vendor/depot_tools/man/src/depot_tools_tutorial.txt +432 -0
  285. data/vendor/depot_tools/man/src/filter_demo_output.py +141 -0
  286. data/vendor/depot_tools/man/src/git-cl.txt +119 -0
  287. data/vendor/depot_tools/man/src/git-drover.demo.1.sh +22 -0
  288. data/vendor/depot_tools/man/src/git-drover.demo.2.sh +23 -0
  289. data/vendor/depot_tools/man/src/git-drover.demo.3.sh +27 -0
  290. data/vendor/depot_tools/man/src/git-drover.demo.4.sh +39 -0
  291. data/vendor/depot_tools/man/src/git-drover.demo.common.sh +19 -0
  292. data/vendor/depot_tools/man/src/git-drover.txt +102 -0
  293. data/vendor/depot_tools/man/src/git-footers.demo.1.sh +17 -0
  294. data/vendor/depot_tools/man/src/git-footers.txt +71 -0
  295. data/vendor/depot_tools/man/src/git-freeze.demo.1.sh +23 -0
  296. data/vendor/depot_tools/man/src/git-freeze.txt +54 -0
  297. data/vendor/depot_tools/man/src/git-hyper-blame.demo.1.sh +3 -0
  298. data/vendor/depot_tools/man/src/git-hyper-blame.demo.2.sh +4 -0
  299. data/vendor/depot_tools/man/src/git-hyper-blame.demo.common.sh +57 -0
  300. data/vendor/depot_tools/man/src/git-hyper-blame.txt +85 -0
  301. data/vendor/depot_tools/man/src/git-map-branches.demo.1.sh +8 -0
  302. data/vendor/depot_tools/man/src/git-map-branches.txt +64 -0
  303. data/vendor/depot_tools/man/src/git-map.demo.1.sh +3 -0
  304. data/vendor/depot_tools/man/src/git-map.txt +67 -0
  305. data/vendor/depot_tools/man/src/git-mark-merge-base.txt +46 -0
  306. data/vendor/depot_tools/man/src/git-nav-downstream.demo.1.sh +12 -0
  307. data/vendor/depot_tools/man/src/git-nav-downstream.txt +40 -0
  308. data/vendor/depot_tools/man/src/git-nav-upstream.demo.1.sh +12 -0
  309. data/vendor/depot_tools/man/src/git-nav-upstream.txt +39 -0
  310. data/vendor/depot_tools/man/src/git-new-branch.demo.1.sh +17 -0
  311. data/vendor/depot_tools/man/src/git-new-branch.txt +82 -0
  312. data/vendor/depot_tools/man/src/git-rebase-update.txt +141 -0
  313. data/vendor/depot_tools/man/src/git-rename-branch.txt +28 -0
  314. data/vendor/depot_tools/man/src/git-reparent-branch.txt +61 -0
  315. data/vendor/depot_tools/man/src/git-retry.txt +67 -0
  316. data/vendor/depot_tools/man/src/git-squash-branch.demo.1.sh +12 -0
  317. data/vendor/depot_tools/man/src/git-squash-branch.txt +59 -0
  318. data/vendor/depot_tools/man/src/git-thaw.txt +29 -0
  319. data/vendor/depot_tools/man/src/git-upstream-diff.txt +107 -0
  320. data/vendor/depot_tools/man/src/make_docs.sh +260 -0
  321. data/vendor/depot_tools/man/src/prep_demo_repo.sh +103 -0
  322. data/vendor/depot_tools/metrics.README.md +101 -0
  323. data/vendor/depot_tools/metrics.py +297 -0
  324. data/vendor/depot_tools/metrics_utils.py +293 -0
  325. data/vendor/depot_tools/my_activity.py +971 -0
  326. data/vendor/depot_tools/ninja +44 -0
  327. data/vendor/depot_tools/ninja-linux32 +0 -0
  328. data/vendor/depot_tools/ninja-linux64 +0 -0
  329. data/vendor/depot_tools/ninja-mac +0 -0
  330. data/vendor/depot_tools/ninja.exe +0 -0
  331. data/vendor/depot_tools/ninjalog.README.md +64 -0
  332. data/vendor/depot_tools/ninjalog_uploader.py +233 -0
  333. data/vendor/depot_tools/ninjalog_uploader_wrapper.py +125 -0
  334. data/vendor/depot_tools/owners.py +641 -0
  335. data/vendor/depot_tools/owners_finder.py +385 -0
  336. data/vendor/depot_tools/post_build_ninja_summary.py +350 -0
  337. data/vendor/depot_tools/presubmit_canned_checks.py +1655 -0
  338. data/vendor/depot_tools/presubmit_support.py +1923 -0
  339. data/vendor/depot_tools/profile.xml +8 -0
  340. data/vendor/depot_tools/prpc +13 -0
  341. data/vendor/depot_tools/prpc.bat +8 -0
  342. data/vendor/depot_tools/pylint +9 -0
  343. data/vendor/depot_tools/pylint-1.5 +78 -0
  344. data/vendor/depot_tools/pylint-1.6 +78 -0
  345. data/vendor/depot_tools/pylint-1.7 +78 -0
  346. data/vendor/depot_tools/pylint-1.8 +78 -0
  347. data/vendor/depot_tools/pylint-1.9 +78 -0
  348. data/vendor/depot_tools/pylint.bat +12 -0
  349. data/vendor/depot_tools/pylint_main.py +45 -0
  350. data/vendor/depot_tools/pylintrc +349 -0
  351. data/vendor/depot_tools/python-bin/python3 +7 -0
  352. data/vendor/depot_tools/python_runner.sh +60 -0
  353. data/vendor/depot_tools/rdb +12 -0
  354. data/vendor/depot_tools/rdb.bat +7 -0
  355. data/vendor/depot_tools/recipes/OWNERS +4 -0
  356. data/vendor/depot_tools/recipes/README.recipes.md +1079 -0
  357. data/vendor/depot_tools/recipes/recipe_modules/OWNERS +1 -0
  358. data/vendor/depot_tools/recipes/recipe_modules/bot_update/OWNERS +2 -0
  359. data/vendor/depot_tools/recipes/recipe_modules/bot_update/__init__.py +38 -0
  360. data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +516 -0
  361. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic.json +117 -0
  362. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_luci.json +117 -0
  363. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_with_branch_heads.json +118 -0
  364. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/clobber.json +211 -0
  365. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/deprecated_got_revision_mapping.json +194 -0
  366. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_rebase_patch_ref.json +211 -0
  367. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_reset.json +211 -0
  368. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/input_commit_with_id_without_repo.json +210 -0
  369. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/multiple_patch_refs.json +214 -0
  370. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_apply_patch_on_gclient.json +265 -0
  371. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_HEAD.json +65 -0
  372. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_a_branch_head.json +65 -0
  373. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_a_specific_commit.json +65 -0
  374. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_master.json +65 -0
  375. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/refs.json +212 -0
  376. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/reset_root_solution_revision.json +210 -0
  377. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/resolve_chromium_fixed_version.json +117 -0
  378. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail.json +95 -0
  379. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch.json +209 -0
  380. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch_download.json +193 -0
  381. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle.json +265 -0
  382. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_branch_heads.json +261 -0
  383. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_feature_branch.json +261 -0
  384. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8_feature_branch.json +265 -0
  385. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_webrtc.json +265 -0
  386. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8.json +265 -0
  387. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8_head_by_default.json +265 -0
  388. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/unrecognized_commit_repo.json +8 -0
  389. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_tags.json +211 -0
  390. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +308 -0
  391. data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/__init__.py +0 -0
  392. data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/bot_update.py +1258 -0
  393. data/vendor/depot_tools/recipes/recipe_modules/bot_update/test_api.py +93 -0
  394. data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/do_not_retry_patch_failures_in_cq.py +42 -0
  395. data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/ensure_checkout.py +35 -0
  396. data/vendor/depot_tools/recipes/recipe_modules/cipd/__init__.py +9 -0
  397. data/vendor/depot_tools/recipes/recipe_modules/cipd/api.py +455 -0
  398. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic.json +403 -0
  399. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic_pkg.json +403 -0
  400. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-failed.json +82 -0
  401. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-many-instances.json +411 -0
  402. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/mac64.json +403 -0
  403. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_file.json +315 -0
  404. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_mode.json +313 -0
  405. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_verfile.json +313 -0
  406. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/win64.json +403 -0
  407. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.py +187 -0
  408. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk arch.json +5 -0
  409. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk bits.json +5 -0
  410. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_32.json +12 -0
  411. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_64.json +12 -0
  412. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_32.json +12 -0
  413. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_64.json +12 -0
  414. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_mips_64.json +12 -0
  415. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/mac_intel_64.json +12 -0
  416. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_32.json +12 -0
  417. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_64.json +12 -0
  418. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.py +59 -0
  419. data/vendor/depot_tools/recipes/recipe_modules/cipd/test_api.py +93 -0
  420. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/__init__.py +9 -0
  421. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/api.py +75 -0
  422. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic.json +83 -0
  423. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic_luci.json +83 -0
  424. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/win.json +83 -0
  425. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.py +55 -0
  426. data/vendor/depot_tools/recipes/recipe_modules/gclient/__init__.py +13 -0
  427. data/vendor/depot_tools/recipes/recipe_modules/gclient/api.py +428 -0
  428. data/vendor/depot_tools/recipes/recipe_modules/gclient/config.py +462 -0
  429. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/basic.json +238 -0
  430. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/revision.json +240 -0
  431. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json +238 -0
  432. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.py +95 -0
  433. data/vendor/depot_tools/recipes/recipe_modules/gclient/resources/diff_deps.py +16 -0
  434. data/vendor/depot_tools/recipes/recipe_modules/gclient/test_api.py +36 -0
  435. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/basic.json +55 -0
  436. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/dont have revision yet.json +84 -0
  437. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/no change, exception.json +83 -0
  438. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/windows.json +55 -0
  439. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.py +88 -0
  440. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/patch_project.py +92 -0
  441. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/sync_failure.py +24 -0
  442. data/vendor/depot_tools/recipes/recipe_modules/gerrit/__init__.py +8 -0
  443. data/vendor/depot_tools/recipes/recipe_modules/gerrit/api.py +178 -0
  444. data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.expected/basic.json +284 -0
  445. data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.py +73 -0
  446. data/vendor/depot_tools/recipes/recipe_modules/gerrit/test_api.py +53 -0
  447. data/vendor/depot_tools/recipes/recipe_modules/git/__init__.py +11 -0
  448. data/vendor/depot_tools/recipes/recipe_modules/git/api.py +405 -0
  449. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic.json +217 -0
  450. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_branch.json +217 -0
  451. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_file_name.json +219 -0
  452. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_hash.json +216 -0
  453. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_ref.json +217 -0
  454. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_submodule_update_force.json +218 -0
  455. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_tags.json +218 -0
  456. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/can_fail_build.json +164 -0
  457. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cannot_fail_build.json +220 -0
  458. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cat-file_test.json +239 -0
  459. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_delta.json +290 -0
  460. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_failed.json +220 -0
  461. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output.json +222 -0
  462. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output_fails_build.json +111 -0
  463. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/curl_trace_file.json +218 -0
  464. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/git-cache-checkout.json +265 -0
  465. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/platform_win.json +217 -0
  466. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/rebase_failed.json +221 -0
  467. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/remote_not_origin.json +219 -0
  468. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/set_got_revision.json +218 -0
  469. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.py +170 -0
  470. data/vendor/depot_tools/recipes/recipe_modules/git/resources/git_setup.py +52 -0
  471. data/vendor/depot_tools/recipes/recipe_modules/git/test_api.py +18 -0
  472. data/vendor/depot_tools/recipes/recipe_modules/git_cl/__init__.py +5 -0
  473. data/vendor/depot_tools/recipes/recipe_modules/git_cl/api.py +50 -0
  474. data/vendor/depot_tools/recipes/recipe_modules/git_cl/config.py +22 -0
  475. data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.expected/basic.json +105 -0
  476. data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.py +47 -0
  477. data/vendor/depot_tools/recipes/recipe_modules/gitiles/OWNERS +2 -0
  478. data/vendor/depot_tools/recipes/recipe_modules/gitiles/__init__.py +12 -0
  479. data/vendor/depot_tools/recipes/recipe_modules/gitiles/api.py +257 -0
  480. data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.expected/basic.json +596 -0
  481. data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.py +93 -0
  482. data/vendor/depot_tools/recipes/recipe_modules/gitiles/resources/gerrit_client.py +251 -0
  483. data/vendor/depot_tools/recipes/recipe_modules/gitiles/test_api.py +95 -0
  484. data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.expected/basic.json +5 -0
  485. data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.py +49 -0
  486. data/vendor/depot_tools/recipes/recipe_modules/gsutil/__init__.py +4 -0
  487. data/vendor/depot_tools/recipes/recipe_modules/gsutil/api.py +222 -0
  488. data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.expected/basic.json +247 -0
  489. data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.py +92 -0
  490. data/vendor/depot_tools/recipes/recipe_modules/gsutil/resources/gsutil_smart_retry.py +69 -0
  491. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/__init__.py +36 -0
  492. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/api.py +140 -0
  493. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/ancient_version.json +83 -0
  494. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/automatic_version.json +83 -0
  495. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/explicit_version.json +83 -0
  496. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/linux.json +21 -0
  497. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/mac.json +83 -0
  498. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/win.json +21 -0
  499. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.py +42 -0
  500. data/vendor/depot_tools/recipes/recipe_modules/presubmit/__init__.py +27 -0
  501. data/vendor/depot_tools/recipes/recipe_modules/presubmit/api.py +251 -0
  502. data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.expected/basic.json +27 -0
  503. data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.py +19 -0
  504. data/vendor/depot_tools/recipes/recipe_modules/presubmit/properties.proto +14 -0
  505. data/vendor/depot_tools/recipes/recipe_modules/presubmit/test_api.py +19 -0
  506. data/vendor/depot_tools/recipes/recipe_modules/presubmit/tests/execute.py +247 -0
  507. data/vendor/depot_tools/recipes/recipe_modules/presubmit/tests/prepare.py +49 -0
  508. data/vendor/depot_tools/recipes/recipe_modules/tryserver/__init__.py +18 -0
  509. data/vendor/depot_tools/recipes/recipe_modules/tryserver/api.py +264 -0
  510. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/basic_tags.json +57 -0
  511. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch.json +190 -0
  512. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch_and_target_ref.json +190 -0
  513. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch.json +21 -0
  514. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch_new.json +22 -0
  515. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.py +95 -0
  516. data/vendor/depot_tools/recipes/recipe_modules/tryserver/test_api.py +14 -0
  517. data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_fetch_ref_timeout.py +29 -0
  518. data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_owner.expected/basic.json +5 -0
  519. data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_owner.py +22 -0
  520. data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_target_ref.py +32 -0
  521. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/__init__.py +25 -0
  522. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/api.py +137 -0
  523. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/linux.json +21 -0
  524. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/mac.json +21 -0
  525. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/win.json +108 -0
  526. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.py +21 -0
  527. data/vendor/depot_tools/recipes/recipes.py +249 -0
  528. data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json +175 -0
  529. data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.py +56 -0
  530. data/vendor/depot_tools/recipes/trigger_recipe_roller.txt +13 -0
  531. data/vendor/depot_tools/repo +1194 -0
  532. data/vendor/depot_tools/roll-dep +21 -0
  533. data/vendor/depot_tools/roll-dep.bat +21 -0
  534. data/vendor/depot_tools/roll_dep.py +282 -0
  535. data/vendor/depot_tools/scm.py +415 -0
  536. data/vendor/depot_tools/setup_color.py +130 -0
  537. data/vendor/depot_tools/split_cl.py +263 -0
  538. data/vendor/depot_tools/subcommand.py +261 -0
  539. data/vendor/depot_tools/subprocess2.py +258 -0
  540. data/vendor/depot_tools/third_party/__init__.py +5 -0
  541. data/vendor/depot_tools/third_party/colorama/LICENSE.txt +27 -0
  542. data/vendor/depot_tools/third_party/colorama/README.chromium +12 -0
  543. data/vendor/depot_tools/third_party/colorama/README.rst +346 -0
  544. data/vendor/depot_tools/third_party/colorama/__init__.py +6 -0
  545. data/vendor/depot_tools/third_party/colorama/ansi.py +102 -0
  546. data/vendor/depot_tools/third_party/colorama/ansitowin32.py +257 -0
  547. data/vendor/depot_tools/third_party/colorama/initialise.py +80 -0
  548. data/vendor/depot_tools/third_party/colorama/win32.py +152 -0
  549. data/vendor/depot_tools/third_party/colorama/winterm.py +169 -0
  550. data/vendor/depot_tools/third_party/coverage/AUTHORS.txt +43 -0
  551. data/vendor/depot_tools/third_party/coverage/PKG-INFO +41 -0
  552. data/vendor/depot_tools/third_party/coverage/README.chromium +13 -0
  553. data/vendor/depot_tools/third_party/coverage/__init__.py +120 -0
  554. data/vendor/depot_tools/third_party/coverage/__main__.py +4 -0
  555. data/vendor/depot_tools/third_party/coverage/annotate.py +101 -0
  556. data/vendor/depot_tools/third_party/coverage/backward.py +184 -0
  557. data/vendor/depot_tools/third_party/coverage/bytecode.py +75 -0
  558. data/vendor/depot_tools/third_party/coverage/cmdline.py +740 -0
  559. data/vendor/depot_tools/third_party/coverage/codeunit.py +145 -0
  560. data/vendor/depot_tools/third_party/coverage/collector.py +353 -0
  561. data/vendor/depot_tools/third_party/coverage/config.py +213 -0
  562. data/vendor/depot_tools/third_party/coverage/control.py +776 -0
  563. data/vendor/depot_tools/third_party/coverage/data.py +278 -0
  564. data/vendor/depot_tools/third_party/coverage/debug.py +54 -0
  565. data/vendor/depot_tools/third_party/coverage/execfile.py +171 -0
  566. data/vendor/depot_tools/third_party/coverage/files.py +309 -0
  567. data/vendor/depot_tools/third_party/coverage/fullcoverage/encodings.py +57 -0
  568. data/vendor/depot_tools/third_party/coverage/html.py +387 -0
  569. data/vendor/depot_tools/third_party/coverage/htmlfiles/coverage_html.js +376 -0
  570. data/vendor/depot_tools/third_party/coverage/htmlfiles/index.html +104 -0
  571. data/vendor/depot_tools/third_party/coverage/htmlfiles/jquery-1.4.3.min.js +166 -0
  572. data/vendor/depot_tools/third_party/coverage/htmlfiles/jquery.hotkeys.js +99 -0
  573. data/vendor/depot_tools/third_party/coverage/htmlfiles/jquery.isonscreen.js +53 -0
  574. data/vendor/depot_tools/third_party/coverage/htmlfiles/jquery.min.js +166 -0
  575. data/vendor/depot_tools/third_party/coverage/htmlfiles/jquery.tablesorter.min.js +2 -0
  576. data/vendor/depot_tools/third_party/coverage/htmlfiles/keybd_closed.png +0 -0
  577. data/vendor/depot_tools/third_party/coverage/htmlfiles/keybd_open.png +0 -0
  578. data/vendor/depot_tools/third_party/coverage/htmlfiles/pyfile.html +90 -0
  579. data/vendor/depot_tools/third_party/coverage/htmlfiles/style.css +300 -0
  580. data/vendor/depot_tools/third_party/coverage/misc.py +163 -0
  581. data/vendor/depot_tools/third_party/coverage/parser.py +666 -0
  582. data/vendor/depot_tools/third_party/coverage/phystokens.py +208 -0
  583. data/vendor/depot_tools/third_party/coverage/report.py +92 -0
  584. data/vendor/depot_tools/third_party/coverage/results.py +286 -0
  585. data/vendor/depot_tools/third_party/coverage/summary.py +86 -0
  586. data/vendor/depot_tools/third_party/coverage/templite.py +166 -0
  587. data/vendor/depot_tools/third_party/coverage/version.py +9 -0
  588. data/vendor/depot_tools/third_party/coverage/xmlreport.py +155 -0
  589. data/vendor/depot_tools/third_party/httplib2/LICENSE +1339 -0
  590. data/vendor/depot_tools/third_party/httplib2/README.chromium +15 -0
  591. data/vendor/depot_tools/third_party/httplib2/__init__.py +1780 -0
  592. data/vendor/depot_tools/third_party/httplib2/cacerts.txt +2196 -0
  593. data/vendor/depot_tools/third_party/httplib2/iri2uri.py +110 -0
  594. data/vendor/depot_tools/third_party/httplib2/socks.py +448 -0
  595. data/vendor/depot_tools/third_party/repo/COPYING +202 -0
  596. data/vendor/depot_tools/third_party/repo/README.chromium +4 -0
  597. data/vendor/depot_tools/third_party/repo/__init__.py +0 -0
  598. data/vendor/depot_tools/third_party/repo/progress.py +117 -0
  599. data/vendor/depot_tools/third_party/retry_decorator/LICENSE.google +30 -0
  600. data/vendor/depot_tools/third_party/retry_decorator/__init__.py +0 -0
  601. data/vendor/depot_tools/third_party/retry_decorator/decorators.py +45 -0
  602. data/vendor/depot_tools/third_party/schema/.editorconfig +15 -0
  603. data/vendor/depot_tools/third_party/schema/.gitignore +174 -0
  604. data/vendor/depot_tools/third_party/schema/.travis.yml +37 -0
  605. data/vendor/depot_tools/third_party/schema/LICENSE-MIT +19 -0
  606. data/vendor/depot_tools/third_party/schema/MANIFEST.in +1 -0
  607. data/vendor/depot_tools/third_party/schema/README.chromium +12 -0
  608. data/vendor/depot_tools/third_party/schema/README.rst +382 -0
  609. data/vendor/depot_tools/third_party/schema/__init__.py +1 -0
  610. data/vendor/depot_tools/third_party/schema/schema.py +338 -0
  611. data/vendor/depot_tools/third_party/schema/setup.cfg +5 -0
  612. data/vendor/depot_tools/third_party/schema/setup.py +30 -0
  613. data/vendor/depot_tools/third_party/schema/test_schema.py +556 -0
  614. data/vendor/depot_tools/third_party/schema/tox.ini +33 -0
  615. data/vendor/depot_tools/third_party/six/LICENSE.txt +18 -0
  616. data/vendor/depot_tools/third_party/six/README.chromium +10 -0
  617. data/vendor/depot_tools/third_party/six/__init__.py +762 -0
  618. data/vendor/depot_tools/update_depot_tools +138 -0
  619. data/vendor/depot_tools/update_depot_tools.bat +65 -0
  620. data/vendor/depot_tools/update_depot_tools_toggle.py +38 -0
  621. data/vendor/depot_tools/upload_metrics.py +26 -0
  622. data/vendor/depot_tools/upload_to_google_storage.py +306 -0
  623. data/vendor/depot_tools/vpython +42 -0
  624. data/vendor/depot_tools/vpython.bat +7 -0
  625. data/vendor/depot_tools/vpython3 +55 -0
  626. data/vendor/depot_tools/vpython3.bat +12 -0
  627. data/vendor/depot_tools/watchlists.py +141 -0
  628. data/vendor/depot_tools/weekly +54 -0
  629. data/vendor/depot_tools/win32imports.py +61 -0
  630. data/vendor/depot_tools/win_toolchain/OWNERS +2 -0
  631. data/vendor/depot_tools/win_toolchain/README.md +74 -0
  632. data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +599 -0
  633. data/vendor/depot_tools/win_toolchain/package_from_installed.py +524 -0
  634. data/vendor/depot_tools/wtf +81 -0
  635. data/vendor/depot_tools/yapf +21 -0
  636. data/vendor/depot_tools/yapf.bat +12 -0
  637. data/vendor/depot_tools/zsh-goodies/README +6 -0
  638. data/vendor/depot_tools/zsh-goodies/_gclient +14 -0
  639. metadata +729 -0
@@ -0,0 +1,76 @@
1
+ # gclient_completion.sh
2
+ #
3
+ # This adds completion to bash shells for gclient commands. It is
4
+ # meant for developers and not needed for inclusion by any automated
5
+ # processes that will, of course, specify the full command, not rely
6
+ # on or benefit from tab-completion.
7
+ #
8
+ # Requires:
9
+ # bash-completion package for _get_comp_words_by_ref.
10
+ # newer versions of sed for the improved regular expression handling.
11
+ #
12
+ # On Mac, this is accomplished by installing fink (www.finkproject.org)
13
+ # then doing sudo apt-get update ; sudo apt-get install sed
14
+ #
15
+ # Usage:
16
+ # Put something like the following in your .bashrc:
17
+ # . $PATH_TO_DEPOT_TOOLS/gclient_completion.sh
18
+ #
19
+
20
+
21
+ # Parses commands from gclient -h.
22
+ __gclient_commands () {
23
+ gclient -h 2> /dev/null | sed -n 's/^\s*\x1b\[32m\(.*\)\x1b\[39m.*$/\1/p'
24
+ }
25
+
26
+ # Caches variables in __gclient_all_commands.
27
+ # Adds "update" command, which is not listed.
28
+ __gclient_compute_all_commands () {
29
+ test -n "$__gclient_all_commands" ||
30
+ __gclient_all_commands="$(__gclient_commands) update"
31
+ }
32
+
33
+ # Since gclient fetch is a passthrough to git, let the completions
34
+ # come from git's completion if it's defined.
35
+ if [[ -n _git_fetch ]]; then
36
+ _gclient_fetch=_git_fetch
37
+ fi
38
+
39
+ # Completion callback for gclient cmdlines.
40
+ _gclient () {
41
+ local cur prev words cword
42
+ _get_comp_words_by_ref -n =: cur prev words cword
43
+
44
+ # Find the command by ignoring flags.
45
+ local i c=1 cword_adjust=0 command
46
+ while [ $c -lt $cword ]; do
47
+ i="${words[$c]}"
48
+ case "$i" in
49
+ -*)
50
+ ((cword_adjust++))
51
+ : ignore options ;;
52
+ *) command="$i"; break ;;
53
+ esac
54
+ ((c++))
55
+ done
56
+
57
+ # If there is a completion function for the command, use it and
58
+ # return.
59
+ local completion_func="_gclient_${command//-/_}"
60
+ local -f $completion_func >/dev/null && $completion_func && return
61
+
62
+ # If the command or hasn't been given, provide completions for all
63
+ # commands. Also provide all commands as completion for the help
64
+ # command.
65
+ # echo "command=$command" >> /tmp/comp.log
66
+ case "$command" in
67
+ ""|help)
68
+ if [[ "$command" != help || $((cword - cword_adjust)) -le 2 ]]; then
69
+ __gclient_compute_all_commands
70
+ COMPREPLY=($(compgen -W "$__gclient_all_commands" $cur))
71
+ fi
72
+ ;;
73
+ *) : just use the default ;;
74
+ esac
75
+ } &&
76
+ complete -F _gclient -o default gclient
@@ -0,0 +1,891 @@
1
+ # Copyright 2017 The Chromium Authors. All rights reserved.
2
+ # Use of this source code is governed by a BSD-style license that can be
3
+ # found in the LICENSE file.
4
+
5
+ import ast
6
+ import collections
7
+ import logging
8
+ import sys
9
+ import tokenize
10
+
11
+ import gclient_utils
12
+
13
+ from third_party import schema
14
+ from third_party import six
15
+
16
+ if six.PY2:
17
+ # We use cStringIO.StringIO because it is equivalent to Py3's io.StringIO.
18
+ from cStringIO import StringIO
19
+ import collections as collections_abc
20
+ else:
21
+ from collections import abc as collections_abc
22
+ from io import StringIO
23
+ # pylint: disable=redefined-builtin
24
+ basestring = str
25
+
26
+
27
+ class ConstantString(object):
28
+ def __init__(self, value):
29
+ self.value = value
30
+
31
+ def __format__(self, format_spec):
32
+ del format_spec
33
+ return self.value
34
+
35
+ def __repr__(self):
36
+ return "Str('" + self.value + "')"
37
+
38
+ def __eq__(self, other):
39
+ if isinstance(other, ConstantString):
40
+ return self.value == other.value
41
+ else:
42
+ return self.value == other
43
+
44
+ def __hash__(self):
45
+ return self.value.__hash__()
46
+
47
+
48
+ class _NodeDict(collections_abc.MutableMapping):
49
+ """Dict-like type that also stores information on AST nodes and tokens."""
50
+ def __init__(self, data=None, tokens=None):
51
+ self.data = collections.OrderedDict(data or [])
52
+ self.tokens = tokens
53
+
54
+ def __str__(self):
55
+ return str({k: v[0] for k, v in self.data.items()})
56
+
57
+ def __repr__(self):
58
+ return self.__str__()
59
+
60
+ def __getitem__(self, key):
61
+ return self.data[key][0]
62
+
63
+ def __setitem__(self, key, value):
64
+ self.data[key] = (value, None)
65
+
66
+ def __delitem__(self, key):
67
+ del self.data[key]
68
+
69
+ def __iter__(self):
70
+ return iter(self.data)
71
+
72
+ def __len__(self):
73
+ return len(self.data)
74
+
75
+ def MoveTokens(self, origin, delta):
76
+ if self.tokens:
77
+ new_tokens = {}
78
+ for pos, token in self.tokens.items():
79
+ if pos[0] >= origin:
80
+ pos = (pos[0] + delta, pos[1])
81
+ token = token[:2] + (pos,) + token[3:]
82
+ new_tokens[pos] = token
83
+
84
+ for value, node in self.data.values():
85
+ if node.lineno >= origin:
86
+ node.lineno += delta
87
+ if isinstance(value, _NodeDict):
88
+ value.MoveTokens(origin, delta)
89
+
90
+ def GetNode(self, key):
91
+ return self.data[key][1]
92
+
93
+ def SetNode(self, key, value, node):
94
+ self.data[key] = (value, node)
95
+
96
+
97
+ def _NodeDictSchema(dict_schema):
98
+ """Validate dict_schema after converting _NodeDict to a regular dict."""
99
+ def validate(d):
100
+ schema.Schema(dict_schema).validate(dict(d))
101
+ return True
102
+ return validate
103
+
104
+
105
+ # See https://github.com/keleshev/schema for docs how to configure schema.
106
+ _GCLIENT_DEPS_SCHEMA = _NodeDictSchema({
107
+ schema.Optional(basestring):
108
+ schema.Or(
109
+ None,
110
+ basestring,
111
+ _NodeDictSchema({
112
+ # Repo and revision to check out under the path
113
+ # (same as if no dict was used).
114
+ 'url': schema.Or(None, basestring),
115
+
116
+ # Optional condition string. The dep will only be processed
117
+ # if the condition evaluates to True.
118
+ schema.Optional('condition'): basestring,
119
+ schema.Optional('dep_type', default='git'): basestring,
120
+ }),
121
+ # CIPD package.
122
+ _NodeDictSchema({
123
+ 'packages': [
124
+ _NodeDictSchema({
125
+ 'package': basestring,
126
+ 'version': basestring,
127
+ })
128
+ ],
129
+ schema.Optional('condition'): basestring,
130
+ schema.Optional('dep_type', default='cipd'): basestring,
131
+ }),
132
+ ),
133
+ })
134
+
135
+ _GCLIENT_HOOKS_SCHEMA = [
136
+ _NodeDictSchema({
137
+ # Hook action: list of command-line arguments to invoke.
138
+ 'action': [schema.Or(basestring)],
139
+
140
+ # Name of the hook. Doesn't affect operation.
141
+ schema.Optional('name'): basestring,
142
+
143
+ # Hook pattern (regex). Originally intended to limit some hooks to run
144
+ # only when files matching the pattern have changed. In practice, with
145
+ # git, gclient runs all the hooks regardless of this field.
146
+ schema.Optional('pattern'): basestring,
147
+
148
+ # Working directory where to execute the hook.
149
+ schema.Optional('cwd'): basestring,
150
+
151
+ # Optional condition string. The hook will only be run
152
+ # if the condition evaluates to True.
153
+ schema.Optional('condition'): basestring,
154
+ })
155
+ ]
156
+
157
+ _GCLIENT_SCHEMA = schema.Schema(
158
+ _NodeDictSchema({
159
+ # List of host names from which dependencies are allowed (allowlist).
160
+ # NOTE: when not present, all hosts are allowed.
161
+ # NOTE: scoped to current DEPS file, not recursive.
162
+ schema.Optional('allowed_hosts'): [schema.Optional(basestring)],
163
+
164
+ # Mapping from paths to repo and revision to check out under that path.
165
+ # Applying this mapping to the on-disk checkout is the main purpose
166
+ # of gclient, and also why the config file is called DEPS.
167
+ #
168
+ # The following functions are allowed:
169
+ #
170
+ # Var(): allows variable substitution (either from 'vars' dict below,
171
+ # or command-line override)
172
+ schema.Optional('deps'): _GCLIENT_DEPS_SCHEMA,
173
+
174
+ # Similar to 'deps' (see above) - also keyed by OS (e.g. 'linux').
175
+ # Also see 'target_os'.
176
+ schema.Optional('deps_os'): _NodeDictSchema({
177
+ schema.Optional(basestring): _GCLIENT_DEPS_SCHEMA,
178
+ }),
179
+
180
+ # Dependency to get gclient_gn_args* settings from. This allows these
181
+ # values to be set in a recursedeps file, rather than requiring that
182
+ # they exist in the top-level solution.
183
+ schema.Optional('gclient_gn_args_from'): basestring,
184
+
185
+ # Path to GN args file to write selected variables.
186
+ schema.Optional('gclient_gn_args_file'): basestring,
187
+
188
+ # Subset of variables to write to the GN args file (see above).
189
+ schema.Optional('gclient_gn_args'): [schema.Optional(basestring)],
190
+
191
+ # Hooks executed after gclient sync (unless suppressed), or explicitly
192
+ # on gclient hooks. See _GCLIENT_HOOKS_SCHEMA for details.
193
+ # Also see 'pre_deps_hooks'.
194
+ schema.Optional('hooks'): _GCLIENT_HOOKS_SCHEMA,
195
+
196
+ # Similar to 'hooks', also keyed by OS.
197
+ schema.Optional('hooks_os'): _NodeDictSchema({
198
+ schema.Optional(basestring): _GCLIENT_HOOKS_SCHEMA
199
+ }),
200
+
201
+ # Rules which #includes are allowed in the directory.
202
+ # Also see 'skip_child_includes' and 'specific_include_rules'.
203
+ schema.Optional('include_rules'): [schema.Optional(basestring)],
204
+
205
+ # Hooks executed before processing DEPS. See 'hooks' for more details.
206
+ schema.Optional('pre_deps_hooks'): _GCLIENT_HOOKS_SCHEMA,
207
+
208
+ # Recursion limit for nested DEPS.
209
+ schema.Optional('recursion'): int,
210
+
211
+ # Allowlists deps for which recursion should be enabled.
212
+ schema.Optional('recursedeps'): [
213
+ schema.Optional(schema.Or(
214
+ basestring,
215
+ (basestring, basestring),
216
+ [basestring, basestring]
217
+ )),
218
+ ],
219
+
220
+ # Blocklists directories for checking 'include_rules'.
221
+ schema.Optional('skip_child_includes'): [schema.Optional(basestring)],
222
+
223
+ # Mapping from paths to include rules specific for that path.
224
+ # See 'include_rules' for more details.
225
+ schema.Optional('specific_include_rules'): _NodeDictSchema({
226
+ schema.Optional(basestring): [basestring]
227
+ }),
228
+
229
+ # List of additional OS names to consider when selecting dependencies
230
+ # from deps_os.
231
+ schema.Optional('target_os'): [schema.Optional(basestring)],
232
+
233
+ # For recursed-upon sub-dependencies, check out their own dependencies
234
+ # relative to the parent's path, rather than relative to the .gclient
235
+ # file.
236
+ schema.Optional('use_relative_paths'): bool,
237
+
238
+ # For recursed-upon sub-dependencies, run their hooks relative to the
239
+ # parent's path instead of relative to the .gclient file.
240
+ schema.Optional('use_relative_hooks'): bool,
241
+
242
+ # Variables that can be referenced using Var() - see 'deps'.
243
+ schema.Optional('vars'): _NodeDictSchema({
244
+ schema.Optional(basestring): schema.Or(ConstantString,
245
+ basestring,
246
+ bool),
247
+ }),
248
+ }))
249
+
250
+
251
+ def _gclient_eval(node_or_string, filename='<unknown>', vars_dict=None):
252
+ """Safely evaluates a single expression. Returns the result."""
253
+ _allowed_names = {'None': None, 'True': True, 'False': False}
254
+ if isinstance(node_or_string, ConstantString):
255
+ return node_or_string.value
256
+ if isinstance(node_or_string, basestring):
257
+ node_or_string = ast.parse(node_or_string, filename=filename, mode='eval')
258
+ if isinstance(node_or_string, ast.Expression):
259
+ node_or_string = node_or_string.body
260
+ def _convert(node):
261
+ if isinstance(node, ast.Str):
262
+ if vars_dict is None:
263
+ return node.s
264
+ try:
265
+ return node.s.format(**vars_dict)
266
+ except KeyError as e:
267
+ raise KeyError(
268
+ '%s was used as a variable, but was not declared in the vars dict '
269
+ '(file %r, line %s)' % (
270
+ e.args[0], filename, getattr(node, 'lineno', '<unknown>')))
271
+ elif isinstance(node, ast.Num):
272
+ return node.n
273
+ elif isinstance(node, ast.Tuple):
274
+ return tuple(map(_convert, node.elts))
275
+ elif isinstance(node, ast.List):
276
+ return list(map(_convert, node.elts))
277
+ elif isinstance(node, ast.Dict):
278
+ node_dict = _NodeDict()
279
+ for key_node, value_node in zip(node.keys, node.values):
280
+ key = _convert(key_node)
281
+ if key in node_dict:
282
+ raise ValueError(
283
+ 'duplicate key in dictionary: %s (file %r, line %s)' % (
284
+ key, filename, getattr(key_node, 'lineno', '<unknown>')))
285
+ node_dict.SetNode(key, _convert(value_node), value_node)
286
+ return node_dict
287
+ elif isinstance(node, ast.Name):
288
+ if node.id not in _allowed_names:
289
+ raise ValueError(
290
+ 'invalid name %r (file %r, line %s)' % (
291
+ node.id, filename, getattr(node, 'lineno', '<unknown>')))
292
+ return _allowed_names[node.id]
293
+ elif not sys.version_info[:2] < (3, 4) and isinstance(
294
+ node, ast.NameConstant): # Since Python 3.4
295
+ return node.value
296
+ elif isinstance(node, ast.Call):
297
+ if (not isinstance(node.func, ast.Name) or
298
+ (node.func.id not in ('Str', 'Var'))):
299
+ raise ValueError(
300
+ 'Str and Var are the only allowed functions (file %r, line %s)' % (
301
+ filename, getattr(node, 'lineno', '<unknown>')))
302
+ if node.keywords or getattr(node, 'starargs', None) or getattr(
303
+ node, 'kwargs', None) or len(node.args) != 1:
304
+ raise ValueError(
305
+ '%s takes exactly one argument (file %r, line %s)' % (
306
+ node.func.id, filename, getattr(node, 'lineno', '<unknown>')))
307
+ if node.func.id == 'Str':
308
+ if isinstance(node.args[0], ast.Str):
309
+ return ConstantString(node.args[0].s)
310
+ raise ValueError('Passed a non-string to Str() (file %r, line%s)' % (
311
+ filename, getattr(node, 'lineno', '<unknown>')))
312
+ else:
313
+ arg = _convert(node.args[0])
314
+ if not isinstance(arg, basestring):
315
+ raise ValueError(
316
+ 'Var\'s argument must be a variable name (file %r, line %s)' % (
317
+ filename, getattr(node, 'lineno', '<unknown>')))
318
+ if vars_dict is None:
319
+ return '{' + arg + '}'
320
+ if arg not in vars_dict:
321
+ raise KeyError(
322
+ '%s was used as a variable, but was not declared in the vars dict '
323
+ '(file %r, line %s)' % (
324
+ arg, filename, getattr(node, 'lineno', '<unknown>')))
325
+ val = vars_dict[arg]
326
+ if isinstance(val, ConstantString):
327
+ val = val.value
328
+ return val
329
+ elif isinstance(node, ast.BinOp) and isinstance(node.op, ast.Add):
330
+ return _convert(node.left) + _convert(node.right)
331
+ elif isinstance(node, ast.BinOp) and isinstance(node.op, ast.Mod):
332
+ return _convert(node.left) % _convert(node.right)
333
+ else:
334
+ raise ValueError(
335
+ 'unexpected AST node: %s %s (file %r, line %s)' % (
336
+ node, ast.dump(node), filename,
337
+ getattr(node, 'lineno', '<unknown>')))
338
+ return _convert(node_or_string)
339
+
340
+
341
+ def Exec(content, filename='<unknown>', vars_override=None, builtin_vars=None):
342
+ """Safely execs a set of assignments."""
343
+ def _validate_statement(node, local_scope):
344
+ if not isinstance(node, ast.Assign):
345
+ raise ValueError(
346
+ 'unexpected AST node: %s %s (file %r, line %s)' % (
347
+ node, ast.dump(node), filename,
348
+ getattr(node, 'lineno', '<unknown>')))
349
+
350
+ if len(node.targets) != 1:
351
+ raise ValueError(
352
+ 'invalid assignment: use exactly one target (file %r, line %s)' % (
353
+ filename, getattr(node, 'lineno', '<unknown>')))
354
+
355
+ target = node.targets[0]
356
+ if not isinstance(target, ast.Name):
357
+ raise ValueError(
358
+ 'invalid assignment: target should be a name (file %r, line %s)' % (
359
+ filename, getattr(node, 'lineno', '<unknown>')))
360
+ if target.id in local_scope:
361
+ raise ValueError(
362
+ 'invalid assignment: overrides var %r (file %r, line %s)' % (
363
+ target.id, filename, getattr(node, 'lineno', '<unknown>')))
364
+
365
+ node_or_string = ast.parse(content, filename=filename, mode='exec')
366
+ if isinstance(node_or_string, ast.Expression):
367
+ node_or_string = node_or_string.body
368
+
369
+ if not isinstance(node_or_string, ast.Module):
370
+ raise ValueError(
371
+ 'unexpected AST node: %s %s (file %r, line %s)' % (
372
+ node_or_string,
373
+ ast.dump(node_or_string),
374
+ filename,
375
+ getattr(node_or_string, 'lineno', '<unknown>')))
376
+
377
+ statements = {}
378
+ for statement in node_or_string.body:
379
+ _validate_statement(statement, statements)
380
+ statements[statement.targets[0].id] = statement.value
381
+
382
+ # The tokenized representation needs to end with a newline token, otherwise
383
+ # untokenization will trigger an assert later on.
384
+ # In Python 2.7 on Windows we need to ensure the input ends with a newline
385
+ # for a newline token to be generated.
386
+ # In other cases a newline token is always generated during tokenization so
387
+ # this has no effect.
388
+ # TODO: Remove this workaround after migrating to Python 3.
389
+ content += '\n'
390
+ tokens = {
391
+ token[2]: list(token) for token in tokenize.generate_tokens(
392
+ StringIO(content).readline)
393
+ }
394
+
395
+ local_scope = _NodeDict({}, tokens)
396
+
397
+ # Process vars first, so we can expand variables in the rest of the DEPS file.
398
+ vars_dict = {}
399
+ if 'vars' in statements:
400
+ vars_statement = statements['vars']
401
+ value = _gclient_eval(vars_statement, filename)
402
+ local_scope.SetNode('vars', value, vars_statement)
403
+ # Update the parsed vars with the overrides, but only if they are already
404
+ # present (overrides do not introduce new variables).
405
+ vars_dict.update(value)
406
+
407
+ if builtin_vars:
408
+ vars_dict.update(builtin_vars)
409
+
410
+ if vars_override:
411
+ vars_dict.update({k: v for k, v in vars_override.items() if k in vars_dict})
412
+
413
+ for name, node in statements.items():
414
+ value = _gclient_eval(node, filename, vars_dict)
415
+ local_scope.SetNode(name, value, node)
416
+
417
+ try:
418
+ return _GCLIENT_SCHEMA.validate(local_scope)
419
+ except schema.SchemaError as e:
420
+ raise gclient_utils.Error(str(e))
421
+
422
+
423
+ def _StandardizeDeps(deps_dict, vars_dict):
424
+ """"Standardizes the deps_dict.
425
+
426
+ For each dependency:
427
+ - Expands the variable in the dependency name.
428
+ - Ensures the dependency is a dictionary.
429
+ - Set's the 'dep_type' to be 'git' by default.
430
+ """
431
+ new_deps_dict = {}
432
+ for dep_name, dep_info in deps_dict.items():
433
+ dep_name = dep_name.format(**vars_dict)
434
+ if not isinstance(dep_info, collections_abc.Mapping):
435
+ dep_info = {'url': dep_info}
436
+ dep_info.setdefault('dep_type', 'git')
437
+ new_deps_dict[dep_name] = dep_info
438
+ return new_deps_dict
439
+
440
+
441
+ def _MergeDepsOs(deps_dict, os_deps_dict, os_name):
442
+ """Merges the deps in os_deps_dict into conditional dependencies in deps_dict.
443
+
444
+ The dependencies in os_deps_dict are transformed into conditional dependencies
445
+ using |'checkout_' + os_name|.
446
+ If the dependency is already present, the URL and revision must coincide.
447
+ """
448
+ for dep_name, dep_info in os_deps_dict.items():
449
+ # Make this condition very visible, so it's not a silent failure.
450
+ # It's unclear how to support None override in deps_os.
451
+ if dep_info['url'] is None:
452
+ logging.error('Ignoring %r:%r in %r deps_os', dep_name, dep_info, os_name)
453
+ continue
454
+
455
+ os_condition = 'checkout_' + (os_name if os_name != 'unix' else 'linux')
456
+ UpdateCondition(dep_info, 'and', os_condition)
457
+
458
+ if dep_name in deps_dict:
459
+ if deps_dict[dep_name]['url'] != dep_info['url']:
460
+ raise gclient_utils.Error(
461
+ 'Value from deps_os (%r; %r: %r) conflicts with existing deps '
462
+ 'entry (%r).' % (
463
+ os_name, dep_name, dep_info, deps_dict[dep_name]))
464
+
465
+ UpdateCondition(dep_info, 'or', deps_dict[dep_name].get('condition'))
466
+
467
+ deps_dict[dep_name] = dep_info
468
+
469
+
470
+ def UpdateCondition(info_dict, op, new_condition):
471
+ """Updates info_dict's condition with |new_condition|.
472
+
473
+ An absent value is treated as implicitly True.
474
+ """
475
+ curr_condition = info_dict.get('condition')
476
+ # Easy case: Both are present.
477
+ if curr_condition and new_condition:
478
+ info_dict['condition'] = '(%s) %s (%s)' % (
479
+ curr_condition, op, new_condition)
480
+ # If |op| == 'and', and at least one condition is present, then use it.
481
+ elif op == 'and' and (curr_condition or new_condition):
482
+ info_dict['condition'] = curr_condition or new_condition
483
+ # Otherwise, no condition should be set
484
+ elif curr_condition:
485
+ del info_dict['condition']
486
+
487
+
488
+ def Parse(content, filename, vars_override=None, builtin_vars=None):
489
+ """Parses DEPS strings.
490
+
491
+ Executes the Python-like string stored in content, resulting in a Python
492
+ dictionary specified by the schema above. Supports syntax validation and
493
+ variable expansion.
494
+
495
+ Args:
496
+ content: str. DEPS file stored as a string.
497
+ filename: str. The name of the DEPS file, or a string describing the source
498
+ of the content, e.g. '<string>', '<unknown>'.
499
+ vars_override: dict, optional. A dictionary with overrides for the variables
500
+ defined by the DEPS file.
501
+ builtin_vars: dict, optional. A dictionary with variables that are provided
502
+ by default.
503
+
504
+ Returns:
505
+ A Python dict with the parsed contents of the DEPS file, as specified by the
506
+ schema above.
507
+ """
508
+ result = Exec(content, filename, vars_override, builtin_vars)
509
+
510
+ vars_dict = result.get('vars', {})
511
+ if 'deps' in result:
512
+ result['deps'] = _StandardizeDeps(result['deps'], vars_dict)
513
+
514
+ if 'deps_os' in result:
515
+ deps = result.setdefault('deps', {})
516
+ for os_name, os_deps in result['deps_os'].items():
517
+ os_deps = _StandardizeDeps(os_deps, vars_dict)
518
+ _MergeDepsOs(deps, os_deps, os_name)
519
+ del result['deps_os']
520
+
521
+ if 'hooks_os' in result:
522
+ hooks = result.setdefault('hooks', [])
523
+ for os_name, os_hooks in result['hooks_os'].items():
524
+ for hook in os_hooks:
525
+ UpdateCondition(hook, 'and', 'checkout_' + os_name)
526
+ hooks.extend(os_hooks)
527
+ del result['hooks_os']
528
+
529
+ return result
530
+
531
+
532
+ def EvaluateCondition(condition, variables, referenced_variables=None):
533
+ """Safely evaluates a boolean condition. Returns the result."""
534
+ if not referenced_variables:
535
+ referenced_variables = set()
536
+ _allowed_names = {'None': None, 'True': True, 'False': False}
537
+ main_node = ast.parse(condition, mode='eval')
538
+ if isinstance(main_node, ast.Expression):
539
+ main_node = main_node.body
540
+ def _convert(node, allow_tuple=False):
541
+ if isinstance(node, ast.Str):
542
+ return node.s
543
+ elif isinstance(node, ast.Tuple) and allow_tuple:
544
+ return tuple(map(_convert, node.elts))
545
+ elif isinstance(node, ast.Name):
546
+ if node.id in referenced_variables:
547
+ raise ValueError(
548
+ 'invalid cyclic reference to %r (inside %r)' % (
549
+ node.id, condition))
550
+ elif node.id in _allowed_names:
551
+ return _allowed_names[node.id]
552
+ elif node.id in variables:
553
+ value = variables[node.id]
554
+
555
+ # Allow using "native" types, without wrapping everything in strings.
556
+ # Note that schema constraints still apply to variables.
557
+ if not isinstance(value, basestring):
558
+ return value
559
+
560
+ # Recursively evaluate the variable reference.
561
+ return EvaluateCondition(
562
+ variables[node.id],
563
+ variables,
564
+ referenced_variables.union([node.id]))
565
+ else:
566
+ # Implicitly convert unrecognized names to strings.
567
+ # If we want to change this, we'll need to explicitly distinguish
568
+ # between arguments for GN to be passed verbatim, and ones to
569
+ # be evaluated.
570
+ return node.id
571
+ elif not sys.version_info[:2] < (3, 4) and isinstance(
572
+ node, ast.NameConstant): # Since Python 3.4
573
+ return node.value
574
+ elif isinstance(node, ast.BoolOp) and isinstance(node.op, ast.Or):
575
+ bool_values = []
576
+ for value in node.values:
577
+ bool_values.append(_convert(value))
578
+ if not isinstance(bool_values[-1], bool):
579
+ raise ValueError(
580
+ 'invalid "or" operand %r (inside %r)' % (
581
+ bool_values[-1], condition))
582
+ return any(bool_values)
583
+ elif isinstance(node, ast.BoolOp) and isinstance(node.op, ast.And):
584
+ bool_values = []
585
+ for value in node.values:
586
+ bool_values.append(_convert(value))
587
+ if not isinstance(bool_values[-1], bool):
588
+ raise ValueError(
589
+ 'invalid "and" operand %r (inside %r)' % (
590
+ bool_values[-1], condition))
591
+ return all(bool_values)
592
+ elif isinstance(node, ast.UnaryOp) and isinstance(node.op, ast.Not):
593
+ value = _convert(node.operand)
594
+ if not isinstance(value, bool):
595
+ raise ValueError(
596
+ 'invalid "not" operand %r (inside %r)' % (value, condition))
597
+ return not value
598
+ elif isinstance(node, ast.Compare):
599
+ if len(node.ops) != 1:
600
+ raise ValueError(
601
+ 'invalid compare: exactly 1 operator required (inside %r)' % (
602
+ condition))
603
+ if len(node.comparators) != 1:
604
+ raise ValueError(
605
+ 'invalid compare: exactly 1 comparator required (inside %r)' % (
606
+ condition))
607
+
608
+ left = _convert(node.left)
609
+ right = _convert(
610
+ node.comparators[0], allow_tuple=isinstance(node.ops[0], ast.In))
611
+
612
+ if isinstance(node.ops[0], ast.Eq):
613
+ return left == right
614
+ if isinstance(node.ops[0], ast.NotEq):
615
+ return left != right
616
+ if isinstance(node.ops[0], ast.In):
617
+ return left in right
618
+
619
+ raise ValueError(
620
+ 'unexpected operator: %s %s (inside %r)' % (
621
+ node.ops[0], ast.dump(node), condition))
622
+ else:
623
+ raise ValueError(
624
+ 'unexpected AST node: %s %s (inside %r)' % (
625
+ node, ast.dump(node), condition))
626
+ return _convert(main_node)
627
+
628
+
629
+ def RenderDEPSFile(gclient_dict):
630
+ contents = sorted(gclient_dict.tokens.values(), key=lambda token: token[2])
631
+ # The last token is a newline, which we ensure in Exec() for compatibility.
632
+ # However tests pass in inputs not ending with a newline and expect the same
633
+ # back, so for backwards compatibility need to remove that newline character.
634
+ # TODO: Fix tests to expect the newline
635
+ return tokenize.untokenize(contents)[:-1]
636
+
637
+
638
+ def _UpdateAstString(tokens, node, value):
639
+ if isinstance(node, ast.Call):
640
+ node = node.args[0]
641
+ position = node.lineno, node.col_offset
642
+ quote_char = ''
643
+ if isinstance(node, ast.Str):
644
+ quote_char = tokens[position][1][0]
645
+ value = value.encode('unicode_escape').decode('utf-8')
646
+ tokens[position][1] = quote_char + value + quote_char
647
+ node.s = value
648
+
649
+
650
+ def _ShiftLinesInTokens(tokens, delta, start):
651
+ new_tokens = {}
652
+ for token in tokens.values():
653
+ if token[2][0] >= start:
654
+ token[2] = token[2][0] + delta, token[2][1]
655
+ token[3] = token[3][0] + delta, token[3][1]
656
+ new_tokens[token[2]] = token
657
+ return new_tokens
658
+
659
+
660
+ def AddVar(gclient_dict, var_name, value):
661
+ if not isinstance(gclient_dict, _NodeDict) or gclient_dict.tokens is None:
662
+ raise ValueError(
663
+ "Can't use SetVar for the given gclient dict. It contains no "
664
+ "formatting information.")
665
+
666
+ if 'vars' not in gclient_dict:
667
+ raise KeyError("vars dict is not defined.")
668
+
669
+ if var_name in gclient_dict['vars']:
670
+ raise ValueError(
671
+ "%s has already been declared in the vars dict. Consider using SetVar "
672
+ "instead." % var_name)
673
+
674
+ if not gclient_dict['vars']:
675
+ raise ValueError('vars dict is empty. This is not yet supported.')
676
+
677
+ # We will attempt to add the var right after 'vars = {'.
678
+ node = gclient_dict.GetNode('vars')
679
+ if node is None:
680
+ raise ValueError(
681
+ "The vars dict has no formatting information." % var_name)
682
+ line = node.lineno + 1
683
+
684
+ # We will try to match the new var's indentation to the next variable.
685
+ col = node.keys[0].col_offset
686
+
687
+ # We use a minimal Python dictionary, so that ast can parse it.
688
+ var_content = '{\n%s"%s": "%s",\n}\n' % (' ' * col, var_name, value)
689
+ var_ast = ast.parse(var_content).body[0].value
690
+
691
+ # Set the ast nodes for the key and value.
692
+ vars_node = gclient_dict.GetNode('vars')
693
+
694
+ var_name_node = var_ast.keys[0]
695
+ var_name_node.lineno += line - 2
696
+ vars_node.keys.insert(0, var_name_node)
697
+
698
+ value_node = var_ast.values[0]
699
+ value_node.lineno += line - 2
700
+ vars_node.values.insert(0, value_node)
701
+
702
+ # Update the tokens.
703
+ var_tokens = list(tokenize.generate_tokens(StringIO(var_content).readline))
704
+ var_tokens = {
705
+ token[2]: list(token)
706
+ # Ignore the tokens corresponding to braces and new lines.
707
+ for token in var_tokens[2:-3]
708
+ }
709
+
710
+ gclient_dict.tokens = _ShiftLinesInTokens(gclient_dict.tokens, 1, line)
711
+ gclient_dict.tokens.update(_ShiftLinesInTokens(var_tokens, line - 2, 0))
712
+
713
+
714
+ def SetVar(gclient_dict, var_name, value):
715
+ if not isinstance(gclient_dict, _NodeDict) or gclient_dict.tokens is None:
716
+ raise ValueError(
717
+ "Can't use SetVar for the given gclient dict. It contains no "
718
+ "formatting information.")
719
+ tokens = gclient_dict.tokens
720
+
721
+ if 'vars' not in gclient_dict:
722
+ raise KeyError("vars dict is not defined.")
723
+
724
+ if var_name not in gclient_dict['vars']:
725
+ raise ValueError(
726
+ "%s has not been declared in the vars dict. Consider using AddVar "
727
+ "instead." % var_name)
728
+
729
+ node = gclient_dict['vars'].GetNode(var_name)
730
+ if node is None:
731
+ raise ValueError(
732
+ "The vars entry for %s has no formatting information." % var_name)
733
+
734
+ _UpdateAstString(tokens, node, value)
735
+ gclient_dict['vars'].SetNode(var_name, value, node)
736
+
737
+
738
+ def _GetVarName(node):
739
+ if isinstance(node, ast.Call):
740
+ return node.args[0].s
741
+ elif node.s.endswith('}'):
742
+ last_brace = node.s.rfind('{')
743
+ return node.s[last_brace+1:-1]
744
+ return None
745
+
746
+
747
+ def SetCIPD(gclient_dict, dep_name, package_name, new_version):
748
+ if not isinstance(gclient_dict, _NodeDict) or gclient_dict.tokens is None:
749
+ raise ValueError(
750
+ "Can't use SetCIPD for the given gclient dict. It contains no "
751
+ "formatting information.")
752
+ tokens = gclient_dict.tokens
753
+
754
+ if 'deps' not in gclient_dict or dep_name not in gclient_dict['deps']:
755
+ raise KeyError(
756
+ "Could not find any dependency called %s." % dep_name)
757
+
758
+ # Find the package with the given name
759
+ packages = [
760
+ package
761
+ for package in gclient_dict['deps'][dep_name]['packages']
762
+ if package['package'] == package_name
763
+ ]
764
+ if len(packages) != 1:
765
+ raise ValueError(
766
+ "There must be exactly one package with the given name (%s), "
767
+ "%s were found." % (package_name, len(packages)))
768
+
769
+ # TODO(ehmaldonado): Support Var in package's version.
770
+ node = packages[0].GetNode('version')
771
+ if node is None:
772
+ raise ValueError(
773
+ "The deps entry for %s:%s has no formatting information." %
774
+ (dep_name, package_name))
775
+
776
+ if not isinstance(node, ast.Call) and not isinstance(node, ast.Str):
777
+ raise ValueError(
778
+ "Unsupported dependency revision format. Please file a bug to the "
779
+ "Infra>SDK component in crbug.com")
780
+
781
+ var_name = _GetVarName(node)
782
+ if var_name is not None:
783
+ SetVar(gclient_dict, var_name, new_version)
784
+ else:
785
+ _UpdateAstString(tokens, node, new_version)
786
+ packages[0].SetNode('version', new_version, node)
787
+
788
+
789
+ def SetRevision(gclient_dict, dep_name, new_revision):
790
+ def _UpdateRevision(dep_dict, dep_key, new_revision):
791
+ dep_node = dep_dict.GetNode(dep_key)
792
+ if dep_node is None:
793
+ raise ValueError(
794
+ "The deps entry for %s has no formatting information." % dep_name)
795
+
796
+ node = dep_node
797
+ if isinstance(node, ast.BinOp):
798
+ node = node.right
799
+
800
+ if isinstance(node, ast.Str):
801
+ token = _gclient_eval(tokens[node.lineno, node.col_offset][1])
802
+ if token != node.s:
803
+ raise ValueError(
804
+ 'Can\'t update value for %s. Multiline strings and implicitly '
805
+ 'concatenated strings are not supported.\n'
806
+ 'Consider reformatting the DEPS file.' % dep_key)
807
+
808
+
809
+ if not isinstance(node, ast.Call) and not isinstance(node, ast.Str):
810
+ raise ValueError(
811
+ "Unsupported dependency revision format. Please file a bug to the "
812
+ "Infra>SDK component in crbug.com")
813
+
814
+ var_name = _GetVarName(node)
815
+ if var_name is not None:
816
+ SetVar(gclient_dict, var_name, new_revision)
817
+ else:
818
+ if '@' in node.s:
819
+ # '@' is part of the last string, which we want to modify. Discard
820
+ # whatever was after the '@' and put the new revision in its place.
821
+ new_revision = node.s.split('@')[0] + '@' + new_revision
822
+ elif '@' not in dep_dict[dep_key]:
823
+ # '@' is not part of the URL at all. This mean the dependency is
824
+ # unpinned and we should pin it.
825
+ new_revision = node.s + '@' + new_revision
826
+ _UpdateAstString(tokens, node, new_revision)
827
+ dep_dict.SetNode(dep_key, new_revision, node)
828
+
829
+ if not isinstance(gclient_dict, _NodeDict) or gclient_dict.tokens is None:
830
+ raise ValueError(
831
+ "Can't use SetRevision for the given gclient dict. It contains no "
832
+ "formatting information.")
833
+ tokens = gclient_dict.tokens
834
+
835
+ if 'deps' not in gclient_dict or dep_name not in gclient_dict['deps']:
836
+ raise KeyError(
837
+ "Could not find any dependency called %s." % dep_name)
838
+
839
+ if isinstance(gclient_dict['deps'][dep_name], _NodeDict):
840
+ _UpdateRevision(gclient_dict['deps'][dep_name], 'url', new_revision)
841
+ else:
842
+ _UpdateRevision(gclient_dict['deps'], dep_name, new_revision)
843
+
844
+
845
+ def GetVar(gclient_dict, var_name):
846
+ if 'vars' not in gclient_dict or var_name not in gclient_dict['vars']:
847
+ raise KeyError(
848
+ "Could not find any variable called %s." % var_name)
849
+
850
+ val = gclient_dict['vars'][var_name]
851
+ if isinstance(val, ConstantString):
852
+ return val.value
853
+ return val
854
+
855
+
856
+ def GetCIPD(gclient_dict, dep_name, package_name):
857
+ if 'deps' not in gclient_dict or dep_name not in gclient_dict['deps']:
858
+ raise KeyError(
859
+ "Could not find any dependency called %s." % dep_name)
860
+
861
+ # Find the package with the given name
862
+ packages = [
863
+ package
864
+ for package in gclient_dict['deps'][dep_name]['packages']
865
+ if package['package'] == package_name
866
+ ]
867
+ if len(packages) != 1:
868
+ raise ValueError(
869
+ "There must be exactly one package with the given name (%s), "
870
+ "%s were found." % (package_name, len(packages)))
871
+
872
+ return packages[0]['version']
873
+
874
+
875
+ def GetRevision(gclient_dict, dep_name):
876
+ if 'deps' not in gclient_dict or dep_name not in gclient_dict['deps']:
877
+ raise KeyError(
878
+ "Could not find any dependency called %s." % dep_name)
879
+
880
+ dep = gclient_dict['deps'][dep_name]
881
+ if dep is None:
882
+ return None
883
+ elif isinstance(dep, basestring):
884
+ _, _, revision = dep.partition('@')
885
+ return revision or None
886
+ elif isinstance(dep, collections_abc.Mapping) and 'url' in dep:
887
+ _, _, revision = dep['url'].partition('@')
888
+ return revision or None
889
+ else:
890
+ raise ValueError(
891
+ '%s is not a valid git dependency.' % dep_name)