libv8 8.4.255.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,599 @@
1
+ #!/usr/bin/env python
2
+ # Copyright 2013 The Chromium Authors. All rights reserved.
3
+ # Use of this source code is governed by a BSD-style license that can be
4
+ # found in the LICENSE file.
5
+
6
+ """Downloads and unpacks a toolchain for building on Windows. The contents are
7
+ matched by sha1 which will be updated when the toolchain is updated.
8
+
9
+ Having a toolchain script in depot_tools means that it's not versioned
10
+ directly with the source code. That is, if the toolchain is upgraded, but
11
+ you're trying to build an historical version of Chromium from before the
12
+ toolchain upgrade, this will cause you to build with a newer toolchain than
13
+ was available when that code was committed. This is done for a two main
14
+ reasons: 1) it would likely be annoying to have the up-to-date toolchain
15
+ removed and replaced by one without a service pack applied); 2) it would
16
+ require maintaining scripts that can build older not-up-to-date revisions of
17
+ the toolchain. This is likely to be a poorly tested code path that probably
18
+ won't be properly maintained. See http://crbug.com/323300.
19
+
20
+ This does not extend to major versions of the toolchain however, on the
21
+ assumption that there are more likely to be source incompatibilities between
22
+ major revisions. This script calls a subscript (currently, toolchain2013.py)
23
+ to do the main work. It is expected that toolchain2013.py will always be able
24
+ to acquire/build the most current revision of a VS2013-based toolchain. In the
25
+ future when a hypothetical VS2015 is released, the 2013 script will be
26
+ maintained, and a new 2015 script would be added.
27
+ """
28
+
29
+ from __future__ import print_function
30
+
31
+ import hashlib
32
+ import json
33
+ import optparse
34
+ import os
35
+ import platform
36
+ import shutil
37
+ import subprocess
38
+ import sys
39
+ import tempfile
40
+ import time
41
+ import zipfile
42
+
43
+ # Environment variable that, if set, specifies the default Visual Studio
44
+ # toolchain root directory to use.
45
+ ENV_TOOLCHAIN_ROOT = 'DEPOT_TOOLS_WIN_TOOLCHAIN_ROOT'
46
+
47
+ # winreg isn't natively available under CygWin
48
+ if sys.platform == "win32":
49
+ try:
50
+ import winreg
51
+ except ImportError:
52
+ import _winreg as winreg
53
+ elif sys.platform == "cygwin":
54
+ try:
55
+ import cygwinreg as winreg
56
+ except ImportError:
57
+ print('')
58
+ print('CygWin does not natively support winreg but a replacement exists.')
59
+ print('https://pypi.python.org/pypi/cygwinreg/')
60
+ print('')
61
+ print('Try: easy_install cygwinreg')
62
+ print('')
63
+ raise
64
+
65
+ BASEDIR = os.path.dirname(os.path.abspath(__file__))
66
+ DEPOT_TOOLS_PATH = os.path.join(BASEDIR, '..')
67
+ sys.path.append(DEPOT_TOOLS_PATH)
68
+ try:
69
+ import download_from_google_storage
70
+ except ImportError:
71
+ # Allow use of utility functions in this script from package_from_installed
72
+ # on bare VM that doesn't have a full depot_tools.
73
+ pass
74
+
75
+
76
+ def GetFileList(root):
77
+ """Gets a normalized list of files under |root|."""
78
+ assert not os.path.isabs(root)
79
+ assert os.path.normpath(root) == root
80
+ file_list = []
81
+ # Ignore WER ReportQueue entries that vctip/cl leave in the bin dir if/when
82
+ # they crash. Also ignores the content of the
83
+ # win_sdk/debuggers/x(86|64)/(sym|src)/ directories as this is just the
84
+ # temporarily location that Windbg might use to store the symbol files and
85
+ # downloaded sources.
86
+ #
87
+ # Note: These files are only created on a Windows host, so the
88
+ # ignored_directories list isn't relevant on non-Windows hosts.
89
+
90
+ ignored_directories = ['wer\\reportqueue',
91
+ 'win_sdk\\debuggers\\x86\\sym\\',
92
+ 'win_sdk\\debuggers\\x64\\sym\\',
93
+ 'win_sdk\\debuggers\\x86\\src\\',
94
+ 'win_sdk\\debuggers\\x64\\src\\']
95
+ for base, _, files in os.walk(root):
96
+ paths = [os.path.join(base, f) for f in files]
97
+ for p in paths:
98
+ if any(ignored_dir in p.lower() for ignored_dir in ignored_directories):
99
+ continue
100
+ file_list.append(p)
101
+ return sorted(file_list, key=lambda s: s.replace('/', '\\').lower())
102
+
103
+
104
+ def MakeTimestampsFileName(root, sha1):
105
+ return os.path.join(root, os.pardir, '%s.timestamps' % sha1)
106
+
107
+
108
+ def CalculateHash(root, expected_hash):
109
+ """Calculates the sha1 of the paths to all files in the given |root| and the
110
+ contents of those files, and returns as a hex string.
111
+
112
+ |expected_hash| is the expected hash value for this toolchain if it has
113
+ already been installed.
114
+ """
115
+ if expected_hash:
116
+ full_root_path = os.path.join(root, expected_hash)
117
+ else:
118
+ full_root_path = root
119
+ file_list = GetFileList(full_root_path)
120
+ # Check whether we previously saved timestamps in $root/../{sha1}.timestamps.
121
+ # If we didn't, or they don't match, then do the full calculation, otherwise
122
+ # return the saved value.
123
+ timestamps_file = MakeTimestampsFileName(root, expected_hash)
124
+ timestamps_data = {'files': [], 'sha1': ''}
125
+ if os.path.exists(timestamps_file):
126
+ with open(timestamps_file, 'rb') as f:
127
+ try:
128
+ timestamps_data = json.load(f)
129
+ except ValueError:
130
+ # json couldn't be loaded, empty data will force a re-hash.
131
+ pass
132
+
133
+ matches = len(file_list) == len(timestamps_data['files'])
134
+ # Don't check the timestamp of the version file as we touch this file to
135
+ # indicates which versions of the toolchain are still being used.
136
+ vc_dir = os.path.join(full_root_path, 'VC').lower()
137
+ if matches:
138
+ for disk, cached in zip(file_list, timestamps_data['files']):
139
+ if disk != cached[0] or (
140
+ disk != vc_dir and os.path.getmtime(disk) != cached[1]):
141
+ matches = False
142
+ break
143
+ elif os.path.exists(timestamps_file):
144
+ # Print some information about the extra/missing files. Don't do this if we
145
+ # don't have a timestamp file, as all the files will be considered as
146
+ # missing.
147
+ timestamps_data_files = []
148
+ for f in timestamps_data['files']:
149
+ timestamps_data_files.append(f[0])
150
+ missing_files = [f for f in timestamps_data_files if f not in file_list]
151
+ if len(missing_files):
152
+ print('%d files missing from the %s version of the toolchain:' %
153
+ (len(missing_files), expected_hash))
154
+ for f in missing_files[:10]:
155
+ print('\t%s' % f)
156
+ if len(missing_files) > 10:
157
+ print('\t...')
158
+ extra_files = [f for f in file_list if f not in timestamps_data_files]
159
+ if len(extra_files):
160
+ print('%d extra files in the %s version of the toolchain:' %
161
+ (len(extra_files), expected_hash))
162
+ for f in extra_files[:10]:
163
+ print('\t%s' % f)
164
+ if len(extra_files) > 10:
165
+ print('\t...')
166
+ if matches:
167
+ return timestamps_data['sha1']
168
+
169
+ # Make long hangs when updating the toolchain less mysterious.
170
+ print('Calculating hash of toolchain in %s. Please wait...' % full_root_path)
171
+ sys.stdout.flush()
172
+ digest = hashlib.sha1()
173
+ for path in file_list:
174
+ path_without_hash = str(path).replace('/', '\\')
175
+ if expected_hash:
176
+ path_without_hash = path_without_hash.replace(
177
+ os.path.join(root, expected_hash).replace('/', '\\'), root)
178
+ if sys.version_info[0] < 3:
179
+ digest.update(path_without_hash.lower())
180
+ else:
181
+ digest.update(bytes(path_without_hash.lower(), 'utf-8'))
182
+ with open(path, 'rb') as f:
183
+ digest.update(f.read())
184
+
185
+ # Save the timestamp file if the calculated hash is the expected one.
186
+ if digest.hexdigest() == expected_hash:
187
+ SaveTimestampsAndHash(root, digest.hexdigest())
188
+ return digest.hexdigest()
189
+
190
+
191
+ def CalculateToolchainHashes(root, remove_corrupt_toolchains):
192
+ """Calculate the hash of the different toolchains installed in the |root|
193
+ directory."""
194
+ hashes = []
195
+ dir_list = [
196
+ d for d in os.listdir(root) if os.path.isdir(os.path.join(root, d))]
197
+ for d in dir_list:
198
+ toolchain_hash = CalculateHash(root, d)
199
+ if toolchain_hash != d:
200
+ print('The hash of a version of the toolchain has an unexpected value ('
201
+ '%s instead of %s)%s.' % (toolchain_hash, d,
202
+ ', removing it' if remove_corrupt_toolchains else ''))
203
+ if remove_corrupt_toolchains:
204
+ RemoveToolchain(root, d, True)
205
+ else:
206
+ hashes.append(toolchain_hash)
207
+ return hashes
208
+
209
+
210
+ def SaveTimestampsAndHash(root, sha1):
211
+ """Saves timestamps and the final hash to be able to early-out more quickly
212
+ next time."""
213
+ file_list = GetFileList(os.path.join(root, sha1))
214
+ timestamps_data = {
215
+ 'files': [[f, os.path.getmtime(f)] for f in file_list],
216
+ 'sha1': sha1,
217
+ }
218
+ with open(MakeTimestampsFileName(root, sha1), 'wb') as f:
219
+ json.dump(timestamps_data, f)
220
+
221
+
222
+ def HaveSrcInternalAccess():
223
+ """Checks whether access to src-internal is available."""
224
+ with open(os.devnull, 'w') as nul:
225
+ # This is required to avoid modal dialog boxes after Git 2.14.1 and Git
226
+ # Credential Manager for Windows 1.12. See https://crbug.com/755694 and
227
+ # https://github.com/Microsoft/Git-Credential-Manager-for-Windows/issues/482.
228
+ child_env = dict(os.environ, GCM_INTERACTIVE='NEVER')
229
+ return subprocess.call(
230
+ ['git', '-c', 'core.askpass=true', 'remote', 'show',
231
+ 'https://chrome-internal.googlesource.com/chrome/src-internal/'],
232
+ shell=True, stdin=nul, stdout=nul, stderr=nul, env=child_env) == 0
233
+
234
+
235
+ def LooksLikeGoogler():
236
+ """Checks for a USERDOMAIN environment variable of 'GOOGLE', which
237
+ probably implies the current user is a Googler."""
238
+ return os.environ.get('USERDOMAIN', '').upper() == 'GOOGLE'
239
+
240
+
241
+ def CanAccessToolchainBucket():
242
+ """Checks whether the user has access to gs://chrome-wintoolchain/."""
243
+ gsutil = download_from_google_storage.Gsutil(
244
+ download_from_google_storage.GSUTIL_DEFAULT_PATH, boto_path=None)
245
+ code, _, _ = gsutil.check_call('ls', 'gs://chrome-wintoolchain/')
246
+ return code == 0
247
+
248
+
249
+ def ToolchainBaseURL():
250
+ base_url = os.environ.get('DEPOT_TOOLS_WIN_TOOLCHAIN_BASE_URL', '')
251
+ if base_url.startswith('file://'):
252
+ base_url = base_url[len('file://'):]
253
+ return base_url
254
+
255
+
256
+ def UsesToolchainFromFile():
257
+ return os.path.isdir(ToolchainBaseURL())
258
+
259
+
260
+ def UsesToolchainFromHttp():
261
+ url = ToolchainBaseURL()
262
+ return url.startswith('http://') or url.startswith('https://')
263
+
264
+
265
+ def RequestGsAuthentication():
266
+ """Requests that the user authenticate to be able to access gs:// as a
267
+ Googler. This allows much faster downloads, and pulling (old) toolchains
268
+ that match src/ revisions.
269
+ """
270
+ print('Access to gs://chrome-wintoolchain/ not configured.')
271
+ print('-----------------------------------------------------------------')
272
+ print()
273
+ print('You appear to be a Googler.')
274
+ print()
275
+ print('I\'m sorry for the hassle, but you need to do a one-time manual')
276
+ print('authentication. Please run:')
277
+ print()
278
+ print(' download_from_google_storage --config')
279
+ print()
280
+ print('and follow the instructions.')
281
+ print()
282
+ print('NOTE 1: Use your google.com credentials, not chromium.org.')
283
+ print('NOTE 2: Enter 0 when asked for a "project-id".')
284
+ print()
285
+ print('-----------------------------------------------------------------')
286
+ print()
287
+ sys.stdout.flush()
288
+ sys.exit(1)
289
+
290
+
291
+ def DelayBeforeRemoving(target_dir):
292
+ """A grace period before deleting the out of date toolchain directory."""
293
+ if (os.path.isdir(target_dir) and
294
+ not bool(int(os.environ.get('CHROME_HEADLESS', '0')))):
295
+ for i in range(9, 0, -1):
296
+ sys.stdout.write(
297
+ '\rRemoving old toolchain in %ds... (Ctrl-C to cancel)' % i)
298
+ sys.stdout.flush()
299
+ time.sleep(1)
300
+ print()
301
+
302
+
303
+ def DownloadUsingHttp(filename):
304
+ """Downloads the given file from a url defined in
305
+ DEPOT_TOOLS_WIN_TOOLCHAIN_BASE_URL environment variable."""
306
+ import urlparse
307
+ import urllib2
308
+ from contextlib import closing
309
+ temp_dir = tempfile.mkdtemp()
310
+ assert os.path.basename(filename) == filename
311
+ target_path = os.path.join(temp_dir, filename)
312
+ base_url = ToolchainBaseURL()
313
+ src_url = urlparse.urljoin(base_url, filename)
314
+ try:
315
+ with closing(urllib2.urlopen(src_url)) as fsrc, \
316
+ open(target_path, 'wb') as fdst:
317
+ shutil.copyfileobj(fsrc, fdst)
318
+ except urllib2.URLError as e:
319
+ RmDir(temp_dir)
320
+ sys.exit('Failed to retrieve file: %s' % e)
321
+ return temp_dir, target_path
322
+
323
+
324
+ def DownloadUsingGsutil(filename):
325
+ """Downloads the given file from Google Storage chrome-wintoolchain bucket."""
326
+ temp_dir = tempfile.mkdtemp()
327
+ assert os.path.basename(filename) == filename
328
+ target_path = os.path.join(temp_dir, filename)
329
+ gsutil = download_from_google_storage.Gsutil(
330
+ download_from_google_storage.GSUTIL_DEFAULT_PATH, boto_path=None)
331
+ code = gsutil.call('cp', 'gs://chrome-wintoolchain/' + filename, target_path)
332
+ if code != 0:
333
+ sys.exit('gsutil failed')
334
+ return temp_dir, target_path
335
+
336
+
337
+ def RmDir(path):
338
+ """Deletes path and all the files it contains."""
339
+ if sys.platform != 'win32':
340
+ shutil.rmtree(path, ignore_errors=True)
341
+ else:
342
+ # shutil.rmtree() doesn't delete read-only files on Windows.
343
+ subprocess.check_call('rmdir /s/q "%s"' % path, shell=True)
344
+
345
+
346
+ def DoTreeMirror(target_dir, tree_sha1):
347
+ """In order to save temporary space on bots that do not have enough space to
348
+ download ISOs, unpack them, and copy to the target location, the whole tree
349
+ is uploaded as a zip to internal storage, and then mirrored here."""
350
+ if UsesToolchainFromFile():
351
+ temp_dir = None
352
+ local_zip = os.path.join(ToolchainBaseURL(), tree_sha1 + '.zip')
353
+ if not os.path.isfile(local_zip):
354
+ sys.exit('%s is not a valid file.' % local_zip)
355
+ elif UsesToolchainFromHttp():
356
+ temp_dir, local_zip = DownloadUsingHttp(tree_sha1 + '.zip')
357
+ else:
358
+ temp_dir, local_zip = DownloadUsingGsutil(tree_sha1 + '.zip')
359
+ sys.stdout.write('Extracting %s...\n' % local_zip)
360
+ sys.stdout.flush()
361
+ with zipfile.ZipFile(local_zip, 'r', zipfile.ZIP_DEFLATED, True) as zf:
362
+ zf.extractall(target_dir)
363
+ if temp_dir:
364
+ RmDir(temp_dir)
365
+
366
+
367
+ def RemoveToolchain(root, sha1, delay_before_removing):
368
+ """Remove the |sha1| version of the toolchain from |root|."""
369
+ toolchain_target_dir = os.path.join(root, sha1)
370
+ if delay_before_removing:
371
+ DelayBeforeRemoving(toolchain_target_dir)
372
+ if sys.platform == 'win32':
373
+ # These stay resident and will make the rmdir below fail.
374
+ kill_list = [
375
+ 'mspdbsrv.exe',
376
+ 'vctip.exe', # Compiler and tools experience improvement data uploader.
377
+ ]
378
+ for process_name in kill_list:
379
+ with open(os.devnull, 'wb') as nul:
380
+ subprocess.call(['taskkill', '/f', '/im', process_name],
381
+ stdin=nul, stdout=nul, stderr=nul)
382
+ if os.path.isdir(toolchain_target_dir):
383
+ RmDir(toolchain_target_dir)
384
+
385
+ timestamp_file = MakeTimestampsFileName(root, sha1)
386
+ if os.path.exists(timestamp_file):
387
+ os.remove(timestamp_file)
388
+
389
+
390
+ def RemoveUnusedToolchains(root):
391
+ """Remove the versions of the toolchain that haven't been used recently."""
392
+ valid_toolchains = []
393
+ dirs_to_remove = []
394
+
395
+ for d in os.listdir(root):
396
+ full_path = os.path.join(root, d)
397
+ if os.path.isdir(full_path):
398
+ if not os.path.exists(MakeTimestampsFileName(root, d)):
399
+ dirs_to_remove.append(d)
400
+ else:
401
+ vc_dir = os.path.join(full_path, 'VC')
402
+ valid_toolchains.append((os.path.getmtime(vc_dir), d))
403
+ elif os.path.isfile(full_path):
404
+ os.remove(full_path)
405
+
406
+ for d in dirs_to_remove:
407
+ print('Removing %s as it doesn\'t correspond to any known toolchain.' %
408
+ os.path.join(root, d))
409
+ # Use the RemoveToolchain function to remove these directories as they might
410
+ # contain an older version of the toolchain.
411
+ RemoveToolchain(root, d, False)
412
+
413
+ # Remove the versions of the toolchains that haven't been used in the past 30
414
+ # days.
415
+ toolchain_expiration_time = 60 * 60 * 24 * 30
416
+ for toolchain in valid_toolchains:
417
+ toolchain_age_in_sec = time.time() - toolchain[0]
418
+ if toolchain_age_in_sec > toolchain_expiration_time:
419
+ print('Removing version %s of the Win toolchain as it hasn\'t been used'
420
+ ' in the past %d days.' % (toolchain[1],
421
+ toolchain_age_in_sec / 60 / 60 / 24))
422
+ RemoveToolchain(root, toolchain[1], True)
423
+
424
+
425
+ def EnableCrashDumpCollection():
426
+ """Tell Windows Error Reporting to record crash dumps so that we can diagnose
427
+ linker crashes and other toolchain failures. Documented at:
428
+ https://msdn.microsoft.com/en-us/library/windows/desktop/bb787181.aspx
429
+ """
430
+ if sys.platform == 'win32' and os.environ.get('CHROME_HEADLESS') == '1':
431
+ key_name = r'SOFTWARE\Microsoft\Windows\Windows Error Reporting'
432
+ try:
433
+ key = winreg.CreateKeyEx(winreg.HKEY_LOCAL_MACHINE, key_name, 0,
434
+ winreg.KEY_WOW64_64KEY | winreg.KEY_ALL_ACCESS)
435
+ # Merely creating LocalDumps is sufficient to enable the defaults.
436
+ winreg.CreateKey(key, "LocalDumps")
437
+ # Disable the WER UI, as documented here:
438
+ # https://msdn.microsoft.com/en-us/library/windows/desktop/bb513638.aspx
439
+ winreg.SetValueEx(key, "DontShowUI", 0, winreg.REG_DWORD, 1)
440
+ # Trap OSError instead of WindowsError so pylint will succeed on Linux.
441
+ # Catching errors is important because some build machines are not elevated
442
+ # and writing to HKLM requires elevation.
443
+ except OSError:
444
+ pass
445
+
446
+
447
+ def main():
448
+ parser = optparse.OptionParser(description=sys.modules[__name__].__doc__)
449
+ parser.add_option('--output-json', metavar='FILE',
450
+ help='write information about toolchain to FILE')
451
+ parser.add_option('--force', action='store_true',
452
+ help='force script to run on non-Windows hosts')
453
+ parser.add_option('--no-download', action='store_true',
454
+ help='configure if present but don\'t download')
455
+ parser.add_option('--toolchain-dir',
456
+ default=os.getenv(ENV_TOOLCHAIN_ROOT, BASEDIR),
457
+ help='directory to install toolchain into')
458
+ options, args = parser.parse_args()
459
+
460
+ if not (sys.platform.startswith(('cygwin', 'win32')) or options.force):
461
+ return 0
462
+
463
+ if sys.platform == 'cygwin':
464
+ # This script requires Windows Python, so invoke with depot_tools' Python.
465
+ def winpath(path):
466
+ return subprocess.check_output(['cygpath', '-w', path]).strip()
467
+ python = os.path.join(DEPOT_TOOLS_PATH, 'python.bat')
468
+ cmd = [python, winpath(__file__)]
469
+ if options.output_json:
470
+ cmd.extend(['--output-json', winpath(options.output_json)])
471
+ cmd.extend(args)
472
+ sys.exit(subprocess.call(cmd))
473
+ assert sys.platform != 'cygwin'
474
+
475
+ if len(args) == 0:
476
+ sys.exit('Desired hash is required.')
477
+ desired_hash = args[0]
478
+
479
+ # Create our toolchain destination and "chdir" to it.
480
+ toolchain_dir = os.path.abspath(options.toolchain_dir)
481
+ if not os.path.isdir(toolchain_dir):
482
+ os.makedirs(toolchain_dir)
483
+ os.chdir(toolchain_dir)
484
+
485
+ # Move to depot_tools\win_toolchain where we'll store our files, and where
486
+ # the downloader script is.
487
+ if os.environ.get('GYP_MSVS_VERSION') == '2013':
488
+ target_dir = 'vs2013_files'
489
+ else:
490
+ target_dir = 'vs_files'
491
+ if not os.path.isdir(target_dir):
492
+ os.mkdir(target_dir)
493
+ toolchain_target_dir = os.path.join(target_dir, desired_hash)
494
+
495
+ abs_toolchain_target_dir = os.path.abspath(toolchain_target_dir)
496
+
497
+ got_new_toolchain = False
498
+
499
+ # If the current hash doesn't match what we want in the file, nuke and pave.
500
+ # Typically this script is only run when the .sha1 one file is updated, but
501
+ # directly calling "gclient runhooks" will also run it, so we cache
502
+ # based on timestamps to make that case fast.
503
+ current_hashes = CalculateToolchainHashes(target_dir, True)
504
+ if desired_hash not in current_hashes:
505
+ if options.no_download:
506
+ raise SystemExit('Toolchain is out of date. Run "gclient runhooks" to '
507
+ 'update the toolchain, or set '
508
+ 'DEPOT_TOOLS_WIN_TOOLCHAIN=0 to use the locally '
509
+ 'installed toolchain.')
510
+ should_use_file = False
511
+ should_use_http = False
512
+ should_use_gs = False
513
+ if UsesToolchainFromFile():
514
+ should_use_file = True
515
+ elif UsesToolchainFromHttp():
516
+ should_use_http = True
517
+ elif (HaveSrcInternalAccess() or
518
+ LooksLikeGoogler() or
519
+ CanAccessToolchainBucket()):
520
+ should_use_gs = True
521
+ if not CanAccessToolchainBucket():
522
+ RequestGsAuthentication()
523
+ if not should_use_file and not should_use_gs and not should_use_http:
524
+ if sys.platform not in ('win32', 'cygwin'):
525
+ doc = 'https://chromium.googlesource.com/chromium/src/+/master/docs/' \
526
+ 'win_cross.md'
527
+ print('\n\n\nPlease follow the instructions at %s\n\n' % doc)
528
+ else:
529
+ doc = 'https://chromium.googlesource.com/chromium/src/+/master/docs/' \
530
+ 'windows_build_instructions.md'
531
+ print('\n\n\nNo downloadable toolchain found. In order to use your '
532
+ 'locally installed version of Visual Studio to build Chrome '
533
+ 'please set DEPOT_TOOLS_WIN_TOOLCHAIN=0.\n'
534
+ 'For details search for DEPOT_TOOLS_WIN_TOOLCHAIN in the '
535
+ 'instructions at %s\n\n' % doc)
536
+ return 1
537
+ print('Windows toolchain out of date or doesn\'t exist, updating (Pro)...')
538
+ print(' current_hashes: %s' % ', '.join(current_hashes))
539
+ print(' desired_hash: %s' % desired_hash)
540
+ sys.stdout.flush()
541
+
542
+ DoTreeMirror(toolchain_target_dir, desired_hash)
543
+
544
+ got_new_toolchain = True
545
+
546
+ win_sdk = os.path.join(abs_toolchain_target_dir, 'win_sdk')
547
+ try:
548
+ version_file = os.path.join(toolchain_target_dir, 'VS_VERSION')
549
+ vc_dir = os.path.join(toolchain_target_dir, 'VC')
550
+ with open(version_file, 'rb') as f:
551
+ vs_version = f.read().strip()
552
+ # Touch the VC directory so we can use its timestamp to know when this
553
+ # version of the toolchain has been used for the last time.
554
+ os.utime(vc_dir, None)
555
+ except IOError:
556
+ # Older toolchains didn't have the VS_VERSION file, and used 'win8sdk'
557
+ # instead of just 'win_sdk'.
558
+ vs_version = '2013'
559
+ win_sdk = os.path.join(abs_toolchain_target_dir, 'win8sdk')
560
+
561
+ data = {
562
+ 'path': abs_toolchain_target_dir,
563
+ 'version': vs_version,
564
+ 'win_sdk': win_sdk,
565
+ # Added for backwards compatibility with old toolchain packages.
566
+ 'win8sdk': win_sdk,
567
+ 'wdk': os.path.join(abs_toolchain_target_dir, 'wdk'),
568
+ 'runtime_dirs': [
569
+ os.path.join(abs_toolchain_target_dir, 'sys64'),
570
+ os.path.join(abs_toolchain_target_dir, 'sys32'),
571
+ os.path.join(abs_toolchain_target_dir, 'sysarm64'),
572
+ ],
573
+ }
574
+ with open(os.path.join(target_dir, '..', 'data.json'), 'w') as f:
575
+ json.dump(data, f)
576
+
577
+ if got_new_toolchain:
578
+ current_hashes = CalculateToolchainHashes(target_dir, False)
579
+ if desired_hash not in current_hashes:
580
+ print(
581
+ 'Got wrong hash after pulling a new toolchain. '
582
+ 'Wanted \'%s\', got one of \'%s\'.' % (
583
+ desired_hash, ', '.join(current_hashes)), file=sys.stderr)
584
+ return 1
585
+ SaveTimestampsAndHash(target_dir, desired_hash)
586
+
587
+ if options.output_json:
588
+ shutil.copyfile(os.path.join(target_dir, '..', 'data.json'),
589
+ options.output_json)
590
+
591
+ EnableCrashDumpCollection()
592
+
593
+ RemoveUnusedToolchains(target_dir)
594
+
595
+ return 0
596
+
597
+
598
+ if __name__ == '__main__':
599
+ sys.exit(main())