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,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:]))