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,33 @@
1
+ @echo off
2
+ :: Copyright 2017 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
+ setlocal
7
+
8
+ REM Set unique build ID.
9
+ FOR /f "usebackq tokens=*" %%a in (`python -c "from __future__ import print_function; import uuid; print(uuid.uuid4())"`) do set AUTONINJA_BUILD_ID=%%a
10
+
11
+ REM If a build performance summary has been requested then also set NINJA_STATUS
12
+ REM to trigger more verbose status updates. In particular this makes it possible
13
+ REM to see how quickly process creation is happening - often a critical clue on
14
+ REM Windows. The trailing space is intentional.
15
+ if "%NINJA_SUMMARIZE_BUILD%" == "1" set NINJA_STATUS=[%%r processes, %%f/%%t @ %%o/s : %%es ]
16
+
17
+ REM Execute whatever is printed by autoninja.py.
18
+ REM Also print it to reassure that the right settings are being used.
19
+ FOR /f "usebackq tokens=*" %%a in (`vpython %~dp0autoninja.py "%*"`) do echo %%a & %%a
20
+ @if errorlevel 1 goto buildfailure
21
+
22
+ REM Use call to invoke vpython script here, because we use vpython via vpython.bat.
23
+ @if "%NINJA_SUMMARIZE_BUILD%" == "1" call vpython.bat %~dp0post_build_ninja_summary.py %*
24
+ @call vpython.bat %~dp0ninjalog_uploader_wrapper.py --cmdline %*
25
+
26
+ exit /b
27
+ :buildfailure
28
+
29
+ @call vpython.bat %~dp0ninjalog_uploader_wrapper.py --cmdline %*
30
+
31
+ REM Return an error code of 1 so that if a developer types:
32
+ REM "autoninja chrome && chrome" then chrome won't run if the build fails.
33
+ cmd /c exit 1
@@ -0,0 +1,148 @@
1
+ #!/usr/bin/env vpython
2
+ # Copyright (c) 2017 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
+ """
7
+ This script (intended to be invoked by autoninja or autoninja.bat) detects
8
+ whether a build is using goma. If so it runs with a large -j value, and
9
+ otherwise it chooses a small one. This auto-adjustment makes using goma simpler
10
+ and safer, and avoids errors that can cause slow goma builds or swap-storms
11
+ on non-goma builds.
12
+ """
13
+
14
+ # [VPYTHON:BEGIN]
15
+ # wheel: <
16
+ # name: "infra/python/wheels/psutil/${vpython_platform}"
17
+ # version: "version:5.6.2"
18
+ # >
19
+ # [VPYTHON:END]
20
+
21
+ from __future__ import print_function
22
+
23
+ import os
24
+ import psutil
25
+ import re
26
+ import sys
27
+
28
+ SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
29
+
30
+ # The -t tools are incompatible with -j
31
+ t_specified = False
32
+ j_specified = False
33
+ output_dir = '.'
34
+ input_args = sys.argv
35
+ # On Windows the autoninja.bat script passes along the arguments enclosed in
36
+ # double quotes. This prevents multiple levels of parsing of the special '^'
37
+ # characters needed when compiling a single file but means that this script gets
38
+ # called with a single argument containing all of the actual arguments,
39
+ # separated by spaces. When this case is detected we need to do argument
40
+ # splitting ourselves. This means that arguments containing actual spaces are
41
+ # not supported by autoninja, but that is not a real limitation.
42
+ if (sys.platform.startswith('win') and len(sys.argv) == 2 and
43
+ input_args[1].count(' ') > 0):
44
+ input_args = sys.argv[:1] + sys.argv[1].split()
45
+
46
+ # Ninja uses getopt_long, which allow to intermix non-option arguments.
47
+ # To leave non supported parameters untouched, we do not use getopt.
48
+ for index, arg in enumerate(input_args[1:]):
49
+ if arg.startswith('-j'):
50
+ j_specified = True
51
+ if arg.startswith('-t'):
52
+ t_specified = True
53
+ if arg == '-C':
54
+ # + 1 to get the next argument and +1 because we trimmed off input_args[0]
55
+ output_dir = input_args[index + 2]
56
+ elif arg.startswith('-C'):
57
+ # Support -Cout/Default
58
+ output_dir = arg[2:]
59
+
60
+ use_goma = False
61
+ use_jumbo_build = False
62
+
63
+ # Attempt to auto-detect goma usage. We support gn-based builds, where we
64
+ # look for args.gn in the build tree, and cmake-based builds where we look for
65
+ # rules.ninja.
66
+ if os.path.exists(os.path.join(output_dir, 'args.gn')):
67
+ with open(os.path.join(output_dir, 'args.gn')) as file_handle:
68
+ for line in file_handle:
69
+ # This regex pattern copied from create_installer_archive.py
70
+ if re.match(r'^\s*use_goma\s*=\s*true(\s*$|\s*#.*$)', line):
71
+ use_goma = True
72
+ continue
73
+ match_use_jumbo_build = re.match(
74
+ r'^\s*use_jumbo_build\s*=\s*true(\s*$|\s*#.*$)', line)
75
+ if match_use_jumbo_build:
76
+ use_jumbo_build = True
77
+ continue
78
+ elif os.path.exists(os.path.join(output_dir, 'rules.ninja')):
79
+ with open(os.path.join(output_dir, 'rules.ninja')) as file_handle:
80
+ for line in file_handle:
81
+ if re.match(r'^\s*command\s*=\s*\S+gomacc', line):
82
+ use_goma = True
83
+ break
84
+
85
+ # If GOMA_DISABLED is set to "true", "t", "yes", "y", or "1" (case-insensitive)
86
+ # then gomacc will use the local compiler instead of doing a goma compile. This
87
+ # is convenient if you want to briefly disable goma. It avoids having to rebuild
88
+ # the world when transitioning between goma/non-goma builds. However, it is not
89
+ # as fast as doing a "normal" non-goma build because an extra process is created
90
+ # for each compile step. Checking this environment variable ensures that
91
+ # autoninja uses an appropriate -j value in this situation.
92
+ goma_disabled_env = os.environ.get('GOMA_DISABLED', '0').lower()
93
+ if goma_disabled_env in ['true', 't', 'yes', 'y', '1']:
94
+ use_goma = False
95
+
96
+ # Specify ninja.exe on Windows so that ninja.bat can call autoninja and not
97
+ # be called back.
98
+ ninja_exe = 'ninja.exe' if sys.platform.startswith('win') else 'ninja'
99
+ ninja_exe_path = os.path.join(SCRIPT_DIR, ninja_exe)
100
+
101
+ # Use absolute path for ninja path,
102
+ # or fail to execute ninja if depot_tools is not in PATH.
103
+ args = [ninja_exe_path] + input_args[1:]
104
+
105
+ num_cores = psutil.cpu_count()
106
+ if not j_specified and not t_specified:
107
+ if use_goma:
108
+ args.append('-j')
109
+ core_multiplier = int(os.environ.get('NINJA_CORE_MULTIPLIER', '40'))
110
+ j_value = num_cores * core_multiplier
111
+
112
+ if sys.platform.startswith('win'):
113
+ # On windows, j value higher than 1000 does not improve build performance.
114
+ j_value = min(j_value, 1000)
115
+ elif sys.platform == 'darwin':
116
+ # On Mac, j value higher than 500 causes 'Too many open files' error
117
+ # (crbug.com/936864).
118
+ j_value = min(j_value, 500)
119
+
120
+ args.append('%d' % j_value)
121
+ else:
122
+ j_value = num_cores
123
+ # Ninja defaults to |num_cores + 2|
124
+ j_value += int(os.environ.get('NINJA_CORE_ADDITION', '2'))
125
+ if use_jumbo_build:
126
+ # Compiling a jumbo .o can easily use 1-2GB of memory. Leaving 2GB per
127
+ # process avoids memory swap/compression storms when also considering
128
+ # already in-use memory.
129
+ physical_ram = psutil.virtual_memory().total
130
+ GB = 1024 * 1024 * 1024
131
+ j_value = min(j_value, physical_ram / (2 * GB))
132
+ args.append('-j')
133
+ args.append('%d' % j_value)
134
+
135
+ # On Windows, fully quote the path so that the command processor doesn't think
136
+ # the whole output is the command.
137
+ # On Linux and Mac, if people put depot_tools in directories with ' ',
138
+ # shell would misunderstand ' ' as a path separation.
139
+ # TODO(yyanagisawa): provide proper quoting for Windows.
140
+ # see https://cs.chromium.org/chromium/src/tools/mb/mb.py
141
+ for i in range(len(args)):
142
+ if (i == 0 and sys.platform.startswith('win')) or ' ' in args[i]:
143
+ args[i] = '"%s"' % args[i].replace('"', '\\"')
144
+
145
+ if os.environ.get('NINJA_SUMMARIZE_BUILD', '0') == '1':
146
+ args += ['-d', 'stats']
147
+
148
+ print(' '.join(args))
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env bash
2
+
3
+ # Copyright 2019 The Chromium Authors. All rights reserved.
4
+ # Use of this source code is governed by a BSD-style license that can be
5
+ # found in the LICENSE file.
6
+
7
+ MYPATH=$(dirname "${BASH_SOURCE[0]}")
8
+
9
+ source "$MYPATH/cipd_bin_setup.sh"
10
+ cipd_bin_setup &> /dev/null
11
+
12
+ exec "$MYPATH/.cipd_bin/bb" "$@"
@@ -0,0 +1,7 @@
1
+ @echo off
2
+ :: Copyright 2019 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
+ call "%~dp0\cipd_bin_setup.bat" > nul 2>&1
7
+ "%~dp0\.cipd_bin\bb.exe" %*
@@ -0,0 +1,155 @@
1
+ # Windows binary tool bootstrap
2
+
3
+ This directory has the 'magic' for the `depot_tools` windows binary update
4
+ mechanisms.
5
+
6
+ A previous Python may actually be in use when it is run, preventing us
7
+ from replacing it outright without breaking running code. To
8
+ ommodate this, and Python cleanup, we handle Python in two stages:
9
+
10
+ 1. Use CIPD to install both Git and Python at once.
11
+ 2. Use "win_tools.py" as a post-processor to install generated files and
12
+ fix-ups.
13
+
14
+ ## Software bootstrapped
15
+ * Python 2 and 3 (https://www.python.org/)
16
+ * Git for Windows (https://git-for-windows.github.io/)
17
+
18
+ ## Mechanism
19
+
20
+ Any time a user runs `gclient` on windows, it will invoke the `depot_tools`
21
+ autoupdate script [depot_tools.bat](../../update_depot_tools.bat). This, in
22
+ turn, will run [win_tools.bat](./win_tools.bat), which does the bulk of the
23
+ work.
24
+
25
+ `win_tools.bat` will successively look to see if the local version of the binary
26
+ package is present, and if so, if it's the expected version. If either of those
27
+ cases is not true, it will download and unpack the respective binary.
28
+
29
+ Installation of Git and Python is done by the [win_tools.bat](./win_tools.bat)
30
+ script, which uses CIPD (via the [cipd](/cipd.bat) bootstrap) to acquire and
31
+ install each package into the root of the `depot_tools` repository. Afterwards,
32
+ the [win_tools.py](./win_tools.py) Python script is invoked to install stubs,
33
+ wrappers, and support scripts into `depot_tools` for end-users.
34
+
35
+ ### Manifest
36
+
37
+ The Git and Python versions are specified in [manifest.txt](./manifest.txt).
38
+
39
+ There is an associated file,
40
+ [manifest_bleeding_edge.txt](./manifest_bleeding_edge.txt), that can be used
41
+ to canary new versions on select bots. Any bots with a `.bleeding_edge` file
42
+ in their `depot_tools` root will automatically use the bleeding edge manifest.
43
+ This allows opt-in systems to test against new versions of Python or Git. Once
44
+ those versions have been verified correct, `manifest.txt` can be updated to the
45
+ same specification, which will cause the remainder of systems to update.
46
+
47
+ ### Bundles
48
+
49
+ Git and Python bundle construction is documented in
50
+ [infra packaging](https://chromium.googlesource.com/infra/infra/+/master/doc/packaging/).
51
+
52
+ Note that in order for the update to take effect, `gclient` currently needs to
53
+ run twice. The first time it will update the `depot_tools` repo, and the second
54
+ time it will see the new git version and update to it. This is a bug that should
55
+ be fixed, in case you're reading this and this paragraph infuriates you more
56
+ than the rest of this README.
57
+
58
+ ## Testing
59
+
60
+ After any modification to this script set, a test sequence should be run on a
61
+ Windows bot.
62
+
63
+ The post-processing will regenerate "python.bat" and "python3.bat" to point to
64
+ the current Python instance. Any previous Python installations will stick
65
+ around, but new invocations will use the new instance. Old installations will
66
+ die off either due to processes terminating or systems restarting. When this
67
+ happens, they will be cleaned up by the post-processing script.
68
+
69
+ Testing
70
+ =======
71
+
72
+ For each of the following test scenarios, run these commands and verify that
73
+ they are working:
74
+
75
+ ```bash
76
+ :: Assert that `gclient` invocation will update (and do the update).
77
+ gclient version
78
+
79
+ :: Assert that Python fundamentally works.
80
+ python -c "import Queue; print dir(Queue)"
81
+
82
+ :: Assert that Python 3 fundamentally works.
83
+ python3 -c "import queue; print(dir(queue))"
84
+
85
+ :: Assert that Python scripts work from `cmd.exe`.
86
+ git map-branches
87
+
88
+ :: Assert that `git bash` works.
89
+ git bash
90
+
91
+ ## (Within `git bash`) assert that Python fundamentally works.
92
+ python -c "import Queue; print dir(Queue)"
93
+ ## (Within `git bash`) assert that Python 3 fundamentally works.
94
+ python3 -c "import queue; print(dir(queue))"
95
+ ## (Within `git bash`) assert that Python scripts work.
96
+ git map-branches
97
+ ```
98
+
99
+ Run this sequence through the following upgrade/downgrade procedures:
100
+
101
+ * Cold default installation.
102
+ - Clean `depot_tools` via: `git clean -x -f -d .`
103
+ - Run through test steps.
104
+ - Test upgrade to bleeding edge (if it differs).
105
+ - Run `python.bat` in another shell, keep it open
106
+ - Run `python3.bat` in another shell, keep it open
107
+ - Add `.bleeding_edge` to `depot_tools` root.
108
+ - Run through test steps.
109
+ - In the old `python.bat` shell, run `import Queue`, confirm that it
110
+ works.
111
+ - In the old `python3.bat` shell, run `import queue`, confirm that it
112
+ works.
113
+ - Close the Python shell, run `gclient version`, ensure that old directory
114
+ is cleaned.
115
+ * Cold bleeding edge installation.
116
+ - Clean `depot_tools` via: `git clean -x -f -d .`
117
+ - Add `.bleeding_edge` to `depot_tools` root.
118
+ - Run through test steps.
119
+ - Test downgrade to default (if it differs).
120
+ - Run `python.bat` in another shell, keep it open
121
+ - Run `python3.bat` in another shell, keep it open
122
+ - Delete `.bleeding_edge` from `depot_tools` root.
123
+ - Run through test steps.
124
+ - In the old `python.bat` shell, run `import Queue`, confirm that it
125
+ works.
126
+ - In the old `python3.bat` shell, run `import queue`, confirm that it
127
+ works.
128
+ - Close the Python shell, run `gclient version`, ensure that old directory
129
+ is cleaned.
130
+ * Warm bleeding edge upgrade.
131
+ - Clean `depot_tools` via: `git clean -x -f -d .`
132
+ - Run `gclient version` to load defaults.
133
+ - Run `python.bat` in another shell, keep it open
134
+ - Run `python3.bat` in another shell, keep it open
135
+ - Add `.bleeding_edge` to `depot_tools` root.
136
+ - Run through test steps.
137
+ - In the old `python.bat` shell, run `import Queue`, confirm that it
138
+ works.
139
+ - In the old `python3.bat` shell, run `import queue`, confirm that it
140
+ works.
141
+ - Close the Python shell, run `gclient version`, ensure that old directory is
142
+ cleaned.
143
+ * Upgradable and Revertible.
144
+ - Checkout current `HEAD`.
145
+ - Run `gclient version` to load HEAD toolchain (initial).
146
+ - Apply the candidate patch.
147
+ - Run through test steps (upgrade).
148
+ - Checkout current `HEAD` again.
149
+ - Run `gclient version` to load HEAD toolchain (revert).
150
+ - Run through test steps.
151
+
152
+ This will take some time, but will ensure that all affected bots and users
153
+ should not encounter any problems due to the change. As systems and users are
154
+ migrated off of this implicit bootstrap, the testing procedure will become less
155
+ critical.
@@ -0,0 +1,356 @@
1
+ # Copyright 2016 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 argparse
6
+ import collections
7
+ import contextlib
8
+ import fnmatch
9
+ import hashlib
10
+ import logging
11
+ import os
12
+ import platform
13
+ import posixpath
14
+ import shutil
15
+ import string
16
+ import subprocess
17
+ import sys
18
+ import tempfile
19
+
20
+
21
+ THIS_DIR = os.path.abspath(os.path.dirname(__file__))
22
+ ROOT_DIR = os.path.abspath(os.path.join(THIS_DIR, '..'))
23
+
24
+ DEVNULL = open(os.devnull, 'w')
25
+
26
+ IS_WIN = sys.platform.startswith('win')
27
+ BAT_EXT = '.bat' if IS_WIN else ''
28
+
29
+ # Top-level stubs to generate that fall through to executables within the Git
30
+ # directory.
31
+ WIN_GIT_STUBS = {
32
+ 'git.bat': 'cmd\\git.exe',
33
+ 'gitk.bat': 'cmd\\gitk.exe',
34
+ 'ssh.bat': 'usr\\bin\\ssh.exe',
35
+ 'ssh-keygen.bat': 'usr\\bin\\ssh-keygen.exe',
36
+ }
37
+
38
+
39
+ # Accumulated template parameters for generated stubs.
40
+ class Template(collections.namedtuple('Template', (
41
+ 'PYTHON_RELDIR', 'PYTHON_BIN_RELDIR', 'PYTHON_BIN_RELDIR_UNIX',
42
+ 'PYTHON3_BIN_RELDIR', 'PYTHON3_BIN_RELDIR_UNIX', 'GIT_BIN_RELDIR',
43
+ 'GIT_BIN_RELDIR_UNIX', 'GIT_PROGRAM',
44
+ ))):
45
+
46
+ @classmethod
47
+ def empty(cls):
48
+ return cls(**{k: None for k in cls._fields})
49
+
50
+ def maybe_install(self, name, dst_path):
51
+ """Installs template |name| to |dst_path| if it has changed.
52
+
53
+ This loads the template |name| from THIS_DIR, resolves template parameters,
54
+ and installs it to |dst_path|. See `maybe_update` for more information.
55
+
56
+ Args:
57
+ name (str): The name of the template to install.
58
+ dst_path (str): The destination filesystem path.
59
+
60
+ Returns (bool): True if |dst_path| was updated, False otherwise.
61
+ """
62
+ template_path = os.path.join(THIS_DIR, name)
63
+ with open(template_path, 'r', encoding='utf8') as fd:
64
+ t = string.Template(fd.read())
65
+ return maybe_update(t.safe_substitute(self._asdict()), dst_path)
66
+
67
+
68
+ def maybe_update(content, dst_path):
69
+ """Writes |content| to |dst_path| if |dst_path| does not already match.
70
+
71
+ This function will ensure that there is a file at |dst_path| containing
72
+ |content|. If |dst_path| already exists and contains |content|, no operation
73
+ will be performed, preserving filesystem modification times and avoiding
74
+ potential write contention.
75
+
76
+ Args:
77
+ content (str): The file content.
78
+ dst_path (str): The destination filesystem path.
79
+
80
+ Returns (bool): True if |dst_path| was updated, False otherwise.
81
+ """
82
+ # If the path already exists and matches the new content, refrain from writing
83
+ # a new one.
84
+ if os.path.exists(dst_path):
85
+ with open(dst_path, 'r', encoding='utf-8') as fd:
86
+ if fd.read() == content:
87
+ return False
88
+
89
+ logging.debug('Updating %r', dst_path)
90
+ with open(dst_path, 'w', encoding='utf-8') as fd:
91
+ fd.write(content)
92
+ os.chmod(dst_path, 0o755)
93
+ return True
94
+
95
+
96
+ def maybe_copy(src_path, dst_path):
97
+ """Writes the content of |src_path| to |dst_path| if needed.
98
+
99
+ See `maybe_update` for more information.
100
+
101
+ Args:
102
+ src_path (str): The content source filesystem path.
103
+ dst_path (str): The destination filesystem path.
104
+
105
+ Returns (bool): True if |dst_path| was updated, False otherwise.
106
+ """
107
+ with open(src_path, 'r', encoding='utf-8') as fd:
108
+ content = fd.read()
109
+ return maybe_update(content, dst_path)
110
+
111
+
112
+ def call_if_outdated(stamp_path, stamp_version, fn):
113
+ """Invokes |fn| if the stamp at |stamp_path| doesn't match |stamp_version|.
114
+
115
+ This can be used to keep a filesystem record of whether an operation has been
116
+ performed. The record is stored at |stamp_path|. To invalidate a record,
117
+ change the value of |stamp_version|.
118
+
119
+ After |fn| completes successfully, |stamp_path| will be updated to match
120
+ |stamp_version|, preventing the same update from happening in the future.
121
+
122
+ Args:
123
+ stamp_path (str): The filesystem path of the stamp file.
124
+ stamp_version (str): The desired stamp version.
125
+ fn (callable): A callable to invoke if the current stamp version doesn't
126
+ match |stamp_version|.
127
+
128
+ Returns (bool): True if an update occurred.
129
+ """
130
+
131
+ stamp_version = stamp_version.strip()
132
+ if os.path.isfile(stamp_path):
133
+ with open(stamp_path, 'r', encoding='utf-8') as fd:
134
+ current_version = fd.read().strip()
135
+ if current_version == stamp_version:
136
+ return False
137
+
138
+ fn()
139
+
140
+ with open(stamp_path, 'w', encoding='utf-8') as fd:
141
+ fd.write(stamp_version)
142
+ return True
143
+
144
+
145
+ def _in_use(path):
146
+ """Checks if a Windows file is in use.
147
+
148
+ When Windows is using an executable, it prevents other writers from
149
+ modifying or deleting that executable. We can safely test for an in-use
150
+ file by opening it in write mode and checking whether or not there was
151
+ an error.
152
+
153
+ Returns (bool): True if the file was in use, False if not.
154
+ """
155
+ try:
156
+ with open(path, 'r+'):
157
+ return False
158
+ except IOError:
159
+ return True
160
+
161
+
162
+ def _toolchain_in_use(toolchain_path):
163
+ """Returns (bool): True if a toolchain rooted at |path| is in use.
164
+ """
165
+ # Look for Python files that may be in use.
166
+ for python_dir in (
167
+ os.path.join(toolchain_path, 'python', 'bin'), # CIPD
168
+ toolchain_path, # Legacy ZIP distributions.
169
+ ):
170
+ for component in (
171
+ os.path.join(python_dir, 'python.exe'),
172
+ os.path.join(python_dir, 'DLLs', 'unicodedata.pyd'),
173
+ ):
174
+ if os.path.isfile(component) and _in_use(component):
175
+ return True
176
+ # Look for Pytho:n 3 files that may be in use.
177
+ python_dir = os.path.join(toolchain_path, 'python3', 'bin')
178
+ for component in (
179
+ os.path.join(python_dir, 'python3.exe'),
180
+ os.path.join(python_dir, 'DLLs', 'unicodedata.pyd'),
181
+ ):
182
+ if os.path.isfile(component) and _in_use(component):
183
+ return True
184
+ return False
185
+
186
+
187
+
188
+ def _check_call(argv, stdin_input=None, **kwargs):
189
+ """Wrapper for subprocess.check_call that adds logging."""
190
+ logging.info('running %r', argv)
191
+ if stdin_input is not None:
192
+ kwargs['stdin'] = subprocess.PIPE
193
+ proc = subprocess.Popen(argv, **kwargs)
194
+ proc.communicate(input=stdin_input)
195
+ if proc.returncode:
196
+ raise subprocess.CalledProcessError(proc.returncode, argv, None)
197
+
198
+
199
+ def _safe_rmtree(path):
200
+ if not os.path.exists(path):
201
+ return
202
+
203
+ def _make_writable_and_remove(path):
204
+ st = os.stat(path)
205
+ new_mode = st.st_mode | 0o200
206
+ if st.st_mode == new_mode:
207
+ return False
208
+ try:
209
+ os.chmod(path, new_mode)
210
+ os.remove(path)
211
+ return True
212
+ except Exception:
213
+ return False
214
+
215
+ def _on_error(function, path, excinfo):
216
+ if not _make_writable_and_remove(path):
217
+ logging.warning('Failed to %s: %s (%s)', function, path, excinfo)
218
+
219
+ shutil.rmtree(path, onerror=_on_error)
220
+
221
+
222
+ def clean_up_old_installations(skip_dir):
223
+ """Removes Python installations other than |skip_dir|.
224
+
225
+ This includes an "in-use" check against the "python.exe" in a given directory
226
+ to avoid removing Python executables that are currently ruinning. We need
227
+ this because our Python bootstrap may be run after (and by) other software
228
+ that is using the bootstrapped Python!
229
+ """
230
+ root_contents = os.listdir(ROOT_DIR)
231
+ for f in ('win_tools-*_bin', 'python27*_bin', 'git-*_bin', 'bootstrap-*_bin'):
232
+ for entry in fnmatch.filter(root_contents, f):
233
+ full_entry = os.path.join(ROOT_DIR, entry)
234
+ if full_entry == skip_dir or not os.path.isdir(full_entry):
235
+ continue
236
+
237
+ logging.info('Cleaning up old installation %r', entry)
238
+ if not _toolchain_in_use(full_entry):
239
+ _safe_rmtree(full_entry)
240
+ else:
241
+ logging.info('Toolchain at %r is in-use; skipping', full_entry)
242
+
243
+
244
+ # Version of "git_postprocess" system configuration (see |git_postprocess|).
245
+ GIT_POSTPROCESS_VERSION = '2'
246
+
247
+
248
+ def git_get_mingw_dir(git_directory):
249
+ """Returns (str) The "mingw" directory in a Git installation, or None."""
250
+ for candidate in ('mingw64', 'mingw32'):
251
+ mingw_dir = os.path.join(git_directory, candidate)
252
+ if os.path.isdir(mingw_dir):
253
+ return mingw_dir
254
+ return None
255
+
256
+
257
+ def git_postprocess(template, git_directory):
258
+ # Update depot_tools files for "git help <command>"
259
+ mingw_dir = git_get_mingw_dir(git_directory)
260
+ if mingw_dir:
261
+ docsrc = os.path.join(ROOT_DIR, 'man', 'html')
262
+ git_docs_dir = os.path.join(mingw_dir, 'share', 'doc', 'git-doc')
263
+ for name in os.listdir(docsrc):
264
+ maybe_copy(
265
+ os.path.join(docsrc, name),
266
+ os.path.join(git_docs_dir, name))
267
+ else:
268
+ logging.info('Could not find mingw directory for %r.', git_directory)
269
+
270
+ # Create Git templates and configure its base layout.
271
+ for stub_name, relpath in WIN_GIT_STUBS.items():
272
+ stub_template = template._replace(GIT_PROGRAM=relpath)
273
+ stub_template.maybe_install(
274
+ 'git.template.bat',
275
+ os.path.join(ROOT_DIR, stub_name))
276
+
277
+ # Set-up our system configuration environment. The following set of
278
+ # parameters is versioned by "GIT_POSTPROCESS_VERSION". If they change,
279
+ # update "GIT_POSTPROCESS_VERSION" accordingly.
280
+ def configure_git_system():
281
+ git_bat_path = os.path.join(ROOT_DIR, 'git.bat')
282
+ _check_call([git_bat_path, 'config', '--system', 'core.autocrlf', 'false'])
283
+ _check_call([git_bat_path, 'config', '--system', 'core.filemode', 'false'])
284
+ _check_call([git_bat_path, 'config', '--system', 'core.preloadindex',
285
+ 'true'])
286
+ _check_call([git_bat_path, 'config', '--system', 'core.fscache', 'true'])
287
+ _check_call([git_bat_path, 'config', '--system', 'protocol.version', '2'])
288
+
289
+ call_if_outdated(
290
+ os.path.join(git_directory, '.git_postprocess'),
291
+ GIT_POSTPROCESS_VERSION,
292
+ configure_git_system)
293
+
294
+
295
+ def main(argv):
296
+ parser = argparse.ArgumentParser()
297
+ parser.add_argument('--verbose', action='store_true')
298
+ parser.add_argument('--bootstrap-name', required=True,
299
+ help='The directory of the Python installation.')
300
+ args = parser.parse_args(argv)
301
+
302
+ logging.basicConfig(level=logging.DEBUG if args.verbose else logging.WARN)
303
+
304
+ template = Template.empty()._replace(
305
+ PYTHON_RELDIR=os.path.join(args.bootstrap_name, 'python'),
306
+ PYTHON_BIN_RELDIR=os.path.join(args.bootstrap_name, 'python', 'bin'),
307
+ PYTHON_BIN_RELDIR_UNIX=posixpath.join(
308
+ args.bootstrap_name, 'python', 'bin'),
309
+ PYTHON3_BIN_RELDIR=os.path.join(args.bootstrap_name, 'python3', 'bin'),
310
+ PYTHON3_BIN_RELDIR_UNIX=posixpath.join(
311
+ args.bootstrap_name, 'python3', 'bin'),
312
+ GIT_BIN_RELDIR=os.path.join(args.bootstrap_name, 'git'),
313
+ GIT_BIN_RELDIR_UNIX=posixpath.join(args.bootstrap_name, 'git'))
314
+
315
+ bootstrap_dir = os.path.join(ROOT_DIR, args.bootstrap_name)
316
+
317
+ # Clean up any old Python and Git installations.
318
+ clean_up_old_installations(bootstrap_dir)
319
+
320
+ if IS_WIN:
321
+ git_postprocess(template, os.path.join(bootstrap_dir, 'git'))
322
+ templates = [
323
+ ('git-bash.template.sh', 'git-bash', ROOT_DIR),
324
+ ('python27.bat', 'python.bat', ROOT_DIR),
325
+ ('python3.bat', 'python3.bat', ROOT_DIR),
326
+ ]
327
+ for src_name, dst_name, dst_dir in templates:
328
+ # Re-evaluate and regenerate our root templated files.
329
+ template.maybe_install(src_name, os.path.join(dst_dir, dst_name))
330
+
331
+ # Emit our Python bin depot-tools-relative directory. This is read by
332
+ # python.bat, python3.bat, vpython[.bat] and vpython3[.bat] to identify the
333
+ # path of the current Python installation.
334
+ #
335
+ # We use this indirection so that upgrades can change this pointer to
336
+ # redirect "python.bat" to a new Python installation. We can't just update
337
+ # "python.bat" because batch file executions reload the batch file and seek
338
+ # to the previous cursor in between every command, so changing the batch
339
+ # file contents could invalidate any existing executions.
340
+ #
341
+ # The intention is that the batch file itself never needs to change when
342
+ # switching Python versions.
343
+
344
+ maybe_update(
345
+ template.PYTHON_BIN_RELDIR,
346
+ os.path.join(ROOT_DIR, 'python_bin_reldir.txt'))
347
+
348
+ maybe_update(
349
+ template.PYTHON3_BIN_RELDIR,
350
+ os.path.join(ROOT_DIR, 'python3_bin_reldir.txt'))
351
+
352
+ return 0
353
+
354
+
355
+ if __name__ == '__main__':
356
+ sys.exit(main(sys.argv[1:]))