libv8 7.3.492.27.1 → 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 (718) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +11 -14
  4. data/CHANGELOG.md +10 -0
  5. data/README.md +10 -11
  6. data/Rakefile +30 -36
  7. data/ext/libv8/builder.rb +1 -1
  8. data/lib/libv8/version.rb +1 -1
  9. data/libv8.gemspec +1 -3
  10. data/vendor/depot_tools/{cipd.ps1 → .cipd_impl.ps1} +0 -0
  11. data/vendor/depot_tools/.gitattributes +1 -1
  12. data/vendor/depot_tools/.gitignore +7 -2
  13. data/vendor/depot_tools/.style.yapf +3 -1
  14. data/vendor/depot_tools/.vpython +55 -0
  15. data/vendor/depot_tools/.vpython3 +23 -0
  16. data/vendor/depot_tools/CROS_OWNERS +3 -1
  17. data/vendor/depot_tools/GOMA_OWNERS +9 -0
  18. data/vendor/depot_tools/LUCI_OWNERS +5 -0
  19. data/vendor/depot_tools/OWNERS +21 -6
  20. data/vendor/depot_tools/PRESUBMIT.py +35 -18
  21. data/vendor/depot_tools/README.git-cl.md +0 -14
  22. data/vendor/depot_tools/README.md +1 -1
  23. data/vendor/depot_tools/WATCHLISTS +2 -2
  24. data/vendor/depot_tools/auth.py +60 -772
  25. data/vendor/depot_tools/autoninja +12 -6
  26. data/vendor/depot_tools/autoninja.bat +14 -6
  27. data/vendor/depot_tools/autoninja.py +64 -27
  28. data/vendor/depot_tools/bb +1 -1
  29. data/vendor/depot_tools/bootstrap/{win/README.md → README.md} +28 -14
  30. data/vendor/depot_tools/bootstrap/{win/win_tools.py → bootstrap.py} +60 -43
  31. data/vendor/depot_tools/bootstrap/{win/git-bash.template.sh → git-bash.template.sh} +1 -1
  32. data/vendor/depot_tools/bootstrap/{win/git.template.bat → git.template.bat} +0 -0
  33. data/vendor/depot_tools/bootstrap/manifest.txt +27 -0
  34. data/vendor/depot_tools/bootstrap/manifest_bleeding_edge.txt +27 -0
  35. data/vendor/depot_tools/bootstrap/{win/profile.d.python.sh → profile.d.python.sh} +0 -0
  36. data/vendor/depot_tools/bootstrap/{win/python27.bleeding_edge.bat → python27.bat} +0 -0
  37. data/vendor/depot_tools/bootstrap/{win/python27.new.bat → python3.bat} +3 -3
  38. data/vendor/depot_tools/bootstrap/{win/win_tools.bat → win_tools.bat} +21 -16
  39. data/vendor/depot_tools/bootstrap_python3 +35 -0
  40. data/vendor/depot_tools/cbuildbot +1 -1
  41. data/vendor/depot_tools/chrome_set_ver +1 -1
  42. data/vendor/depot_tools/cipd +43 -39
  43. data/vendor/depot_tools/cipd.bat +2 -2
  44. data/vendor/depot_tools/cipd_client_version +1 -1
  45. data/vendor/depot_tools/cipd_client_version.digests +15 -14
  46. data/vendor/depot_tools/cipd_manifest.txt +31 -8
  47. data/vendor/depot_tools/cipd_manifest.versions +278 -158
  48. data/vendor/depot_tools/cit.py +9 -7
  49. data/vendor/depot_tools/clang_format.py +4 -1
  50. data/vendor/depot_tools/clang_format_merge_driver.py +10 -8
  51. data/vendor/depot_tools/compile_single_file.py +7 -2
  52. data/vendor/depot_tools/cpplint.py +51 -45
  53. data/vendor/depot_tools/cros +87 -0
  54. data/vendor/depot_tools/cros_sdk +1 -1
  55. data/vendor/depot_tools/crosjobs +13 -0
  56. data/vendor/depot_tools/detect_host_arch.py +0 -1
  57. data/vendor/depot_tools/dirmd +12 -0
  58. data/vendor/depot_tools/dirmd.bat +7 -0
  59. data/vendor/depot_tools/download_from_google_storage.py +47 -27
  60. data/vendor/depot_tools/ensure_bootstrap +14 -0
  61. data/vendor/depot_tools/fetch +14 -1
  62. data/vendor/depot_tools/fetch.bat +14 -1
  63. data/vendor/depot_tools/fetch.py +5 -7
  64. data/vendor/depot_tools/fetch_configs/chromium.py +6 -4
  65. data/vendor/depot_tools/fetch_configs/devtools-frontend.py +44 -0
  66. data/vendor/depot_tools/fetch_configs/ios_internal.py +10 -19
  67. data/vendor/depot_tools/fix_encoding.py +19 -5
  68. data/vendor/depot_tools/gclient +28 -12
  69. data/vendor/depot_tools/gclient-new-workdir.py +2 -0
  70. data/vendor/depot_tools/gclient.bat +18 -1
  71. data/vendor/depot_tools/gclient.py +160 -119
  72. data/vendor/depot_tools/gclient_eval.py +119 -107
  73. data/vendor/depot_tools/gclient_paths.py +67 -57
  74. data/vendor/depot_tools/gclient_scm.py +181 -159
  75. data/vendor/depot_tools/gclient_utils.py +177 -124
  76. data/vendor/depot_tools/gerrit_client.py +21 -13
  77. data/vendor/depot_tools/gerrit_util.py +188 -228
  78. data/vendor/depot_tools/git-cache +1 -1
  79. data/vendor/depot_tools/git-cl +1 -1
  80. data/vendor/depot_tools/git-drover +1 -1
  81. data/vendor/depot_tools/git-find-releases +1 -1
  82. data/vendor/depot_tools/git-footers +1 -1
  83. data/vendor/depot_tools/git-freeze +1 -1
  84. data/vendor/depot_tools/git-hyper-blame +1 -1
  85. data/vendor/depot_tools/git-map +1 -1
  86. data/vendor/depot_tools/git-map-branches +1 -1
  87. data/vendor/depot_tools/git-mark-merge-base +1 -1
  88. data/vendor/depot_tools/git-nav-downstream +1 -1
  89. data/vendor/depot_tools/git-new-branch +1 -1
  90. data/vendor/depot_tools/git-number +1 -1
  91. data/vendor/depot_tools/git-rebase-update +1 -1
  92. data/vendor/depot_tools/git-rename-branch +1 -1
  93. data/vendor/depot_tools/git-reparent-branch +1 -1
  94. data/vendor/depot_tools/git-retry +1 -1
  95. data/vendor/depot_tools/git-squash-branch +1 -1
  96. data/vendor/depot_tools/git-thaw +1 -1
  97. data/vendor/depot_tools/git-upstream-diff +1 -1
  98. data/vendor/depot_tools/git_cache.py +255 -360
  99. data/vendor/depot_tools/git_cl.py +1562 -2059
  100. data/vendor/depot_tools/git_cl_completion.sh +16 -2
  101. data/vendor/depot_tools/git_common.py +77 -32
  102. data/vendor/depot_tools/git_drover.py +17 -8
  103. data/vendor/depot_tools/git_find_releases.py +11 -9
  104. data/vendor/depot_tools/git_footers.py +13 -9
  105. data/vendor/depot_tools/git_freezer.py +3 -1
  106. data/vendor/depot_tools/git_hyper_blame.py +25 -32
  107. data/vendor/depot_tools/git_map.py +115 -93
  108. data/vendor/depot_tools/git_map_branches.py +11 -10
  109. data/vendor/depot_tools/git_mark_merge_base.py +8 -6
  110. data/vendor/depot_tools/git_nav_downstream.py +9 -6
  111. data/vendor/depot_tools/git_new_branch.py +39 -33
  112. data/vendor/depot_tools/git_number.py +28 -17
  113. data/vendor/depot_tools/git_rebase_update.py +50 -49
  114. data/vendor/depot_tools/git_rename_branch.py +2 -2
  115. data/vendor/depot_tools/git_reparent_branch.py +8 -6
  116. data/vendor/depot_tools/git_upstream_diff.py +4 -2
  117. data/vendor/depot_tools/gn.py +6 -4
  118. data/vendor/depot_tools/goma_auth +12 -0
  119. data/vendor/depot_tools/goma_auth.bat +8 -0
  120. data/vendor/depot_tools/goma_ctl +12 -0
  121. data/vendor/depot_tools/goma_ctl.bat +8 -0
  122. data/vendor/depot_tools/gsutil.py +5 -2
  123. data/vendor/depot_tools/gsutil.py.bat +8 -0
  124. data/vendor/depot_tools/gsutil.vpython +3 -1
  125. data/vendor/depot_tools/infra/config/OWNERS +2 -2
  126. data/vendor/depot_tools/infra/config/recipes.cfg +3 -2
  127. data/vendor/depot_tools/led +1 -1
  128. data/vendor/depot_tools/lockfile.py +116 -0
  129. data/vendor/depot_tools/luci-auth +1 -1
  130. data/vendor/depot_tools/lucicfg +1 -1
  131. data/vendor/depot_tools/mac_toolchain +1 -1
  132. data/vendor/depot_tools/man/html/depot_tools.html +1 -1
  133. data/vendor/depot_tools/man/html/depot_tools_tutorial.html +31 -25
  134. data/vendor/depot_tools/man/html/git-cl.html +1 -1
  135. data/vendor/depot_tools/man/html/git-drover.html +18 -18
  136. data/vendor/depot_tools/man/html/git-footers.html +1 -1
  137. data/vendor/depot_tools/man/html/git-freeze.html +3 -3
  138. data/vendor/depot_tools/man/html/git-hyper-blame.html +1 -1
  139. data/vendor/depot_tools/man/html/git-map-branches.html +2 -2
  140. data/vendor/depot_tools/man/html/git-map.html +1 -1
  141. data/vendor/depot_tools/man/html/git-mark-merge-base.html +1 -1
  142. data/vendor/depot_tools/man/html/git-nav-downstream.html +3 -3
  143. data/vendor/depot_tools/man/html/git-nav-upstream.html +12 -6
  144. data/vendor/depot_tools/man/html/git-new-branch.html +1 -1
  145. data/vendor/depot_tools/man/html/git-rebase-update.html +20 -1
  146. data/vendor/depot_tools/man/html/git-rename-branch.html +1 -1
  147. data/vendor/depot_tools/man/html/git-reparent-branch.html +1 -1
  148. data/vendor/depot_tools/man/html/git-retry.html +1 -1
  149. data/vendor/depot_tools/man/html/git-squash-branch.html +1 -1
  150. data/vendor/depot_tools/man/html/git-thaw.html +1 -1
  151. data/vendor/depot_tools/man/html/git-upstream-diff.html +10 -6
  152. data/vendor/depot_tools/man/man1/git-cl.1 +4 -4
  153. data/vendor/depot_tools/man/man1/git-drover.1 +21 -21
  154. data/vendor/depot_tools/man/man1/git-footers.1 +4 -4
  155. data/vendor/depot_tools/man/man1/git-freeze.1 +6 -6
  156. data/vendor/depot_tools/man/man1/git-hyper-blame.1 +4 -4
  157. data/vendor/depot_tools/man/man1/git-map-branches.1 +4 -4
  158. data/vendor/depot_tools/man/man1/git-map.1 +4 -4
  159. data/vendor/depot_tools/man/man1/git-mark-merge-base.1 +4 -4
  160. data/vendor/depot_tools/man/man1/git-nav-downstream.1 +6 -6
  161. data/vendor/depot_tools/man/man1/git-nav-upstream.1 +15 -9
  162. data/vendor/depot_tools/man/man1/git-new-branch.1 +3 -3
  163. data/vendor/depot_tools/man/man1/git-rebase-update.1 +14 -4
  164. data/vendor/depot_tools/man/man1/git-rename-branch.1 +4 -4
  165. data/vendor/depot_tools/man/man1/git-reparent-branch.1 +4 -4
  166. data/vendor/depot_tools/man/man1/git-retry.1 +4 -4
  167. data/vendor/depot_tools/man/man1/git-squash-branch.1 +4 -4
  168. data/vendor/depot_tools/man/man1/git-thaw.1 +4 -4
  169. data/vendor/depot_tools/man/man1/git-upstream-diff.1 +7 -13
  170. data/vendor/depot_tools/man/man7/depot_tools.7 +4 -4
  171. data/vendor/depot_tools/man/man7/depot_tools_tutorial.7 +31 -25
  172. data/vendor/depot_tools/man/src/common_demo_functions.sh +2 -2
  173. data/vendor/depot_tools/man/src/depot_tools_tutorial.txt +3 -3
  174. data/vendor/depot_tools/man/src/filter_demo_output.py +4 -2
  175. data/vendor/depot_tools/man/src/git-new-branch.txt +2 -1
  176. data/vendor/depot_tools/man/src/git-rebase-update.txt +8 -1
  177. data/vendor/depot_tools/metrics.README.md +8 -5
  178. data/vendor/depot_tools/metrics.py +7 -6
  179. data/vendor/depot_tools/metrics_utils.py +4 -14
  180. data/vendor/depot_tools/my_activity.py +85 -251
  181. data/vendor/depot_tools/ninja +1 -0
  182. data/vendor/depot_tools/ninja-mac +0 -0
  183. data/vendor/depot_tools/ninjalog_uploader.py +146 -145
  184. data/vendor/depot_tools/ninjalog_uploader_wrapper.py +69 -60
  185. data/vendor/depot_tools/owners.py +156 -43
  186. data/vendor/depot_tools/owners_finder.py +28 -14
  187. data/vendor/depot_tools/post_build_ninja_summary.py +76 -48
  188. data/vendor/depot_tools/presubmit_canned_checks.py +293 -106
  189. data/vendor/depot_tools/presubmit_support.py +527 -333
  190. data/vendor/depot_tools/prpc +1 -1
  191. data/vendor/depot_tools/pylint +2 -12
  192. data/vendor/depot_tools/pylint-1.5 +78 -0
  193. data/vendor/depot_tools/pylint-1.6 +78 -0
  194. data/vendor/depot_tools/pylint-1.7 +78 -0
  195. data/vendor/depot_tools/pylint-1.8 +78 -0
  196. data/vendor/depot_tools/pylint-1.9 +78 -0
  197. data/vendor/depot_tools/{depot-tools-auth.bat → pylint.bat} +2 -2
  198. data/vendor/depot_tools/pylint_main.py +45 -0
  199. data/vendor/depot_tools/pylintrc +14 -1
  200. data/vendor/depot_tools/python-bin/python3 +7 -0
  201. data/vendor/depot_tools/python_runner.sh +13 -8
  202. data/vendor/depot_tools/rdb +12 -0
  203. data/vendor/depot_tools/rdb.bat +7 -0
  204. data/vendor/depot_tools/recipes/OWNERS +0 -1
  205. data/vendor/depot_tools/recipes/README.recipes.md +218 -151
  206. data/vendor/depot_tools/recipes/recipe_modules/OWNERS +1 -1
  207. data/vendor/depot_tools/recipes/recipe_modules/bot_update/__init__.py +17 -16
  208. data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +127 -78
  209. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic.json +19 -4
  210. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_luci.json +18 -3
  211. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_with_branch_heads.json +19 -4
  212. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/clobber.json +29 -8
  213. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/deprecated_got_revision_mapping.json +28 -10
  214. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_rebase_patch_ref.json +29 -8
  215. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_reset.json +29 -8
  216. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/input_commit_with_id_without_repo.json +29 -8
  217. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/multiple_patch_refs.json +29 -8
  218. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_apply_patch_on_gclient.json +35 -10
  219. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{with_manifest_name.json → no_cp_checkout_HEAD.json} +25 -15
  220. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_a_branch_head.json +65 -0
  221. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_a_specific_commit.json +65 -0
  222. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_master.json +65 -0
  223. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/refs.json +29 -8
  224. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/reset_root_solution_revision.json +29 -8
  225. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/resolve_chromium_fixed_version.json +117 -0
  226. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail.json +17 -11
  227. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch.json +41 -10
  228. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch_download.json +24 -11
  229. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle.json +35 -10
  230. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_branch_heads.json +35 -10
  231. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_feature_branch.json +38 -11
  232. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8_feature_branch.json +36 -11
  233. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_webrtc.json +35 -10
  234. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8.json +35 -10
  235. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8_head_by_default.json +35 -10
  236. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/unrecognized_commit_repo.json +0 -5
  237. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_tags.json +29 -8
  238. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +95 -22
  239. data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/bot_update.py +187 -114
  240. data/vendor/depot_tools/recipes/recipe_modules/bot_update/test_api.py +2 -2
  241. data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/do_not_retry_patch_failures_in_cq.py +42 -0
  242. data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/ensure_checkout.py +1 -0
  243. data/vendor/depot_tools/recipes/recipe_modules/cipd/__init__.py +0 -1
  244. data/vendor/depot_tools/recipes/recipe_modules/cipd/api.py +2 -2
  245. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic.json +0 -1
  246. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic_pkg.json +0 -1
  247. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-failed.json +2 -4
  248. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-many-instances.json +0 -1
  249. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/mac64.json +0 -1
  250. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_file.json +26 -6
  251. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_mode.json +23 -5
  252. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_verfile.json +23 -5
  253. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/win64.json +0 -1
  254. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk arch.json +0 -1
  255. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk bits.json +0 -1
  256. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_32.json +0 -1
  257. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_64.json +0 -1
  258. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_32.json +0 -1
  259. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_64.json +0 -1
  260. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_mips_64.json +0 -1
  261. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/mac_intel_64.json +0 -1
  262. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_32.json +0 -1
  263. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_64.json +0 -1
  264. data/vendor/depot_tools/recipes/recipe_modules/cipd/test_api.py +1 -1
  265. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/api.py +4 -1
  266. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic.json +4 -2
  267. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic_luci.json +3 -1
  268. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/win.json +4 -2
  269. data/vendor/depot_tools/recipes/recipe_modules/gclient/__init__.py +2 -1
  270. data/vendor/depot_tools/recipes/recipe_modules/gclient/api.py +82 -13
  271. data/vendor/depot_tools/recipes/recipe_modules/gclient/config.py +23 -11
  272. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/basic.json +3 -4
  273. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/revision.json +3 -6
  274. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json +3 -4
  275. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.py +7 -7
  276. data/vendor/depot_tools/recipes/recipe_modules/gclient/resources/diff_deps.py +16 -0
  277. data/vendor/depot_tools/recipes/recipe_modules/gclient/test_api.py +4 -0
  278. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/basic.json +55 -0
  279. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/dont have revision yet.json +84 -0
  280. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/no change, exception.json +83 -0
  281. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/windows.json +55 -0
  282. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.py +88 -0
  283. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/patch_project.py +9 -21
  284. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/sync_failure.py +24 -0
  285. data/vendor/depot_tools/recipes/recipe_modules/gerrit/api.py +2 -1
  286. data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.expected/basic.json +7 -12
  287. data/vendor/depot_tools/recipes/recipe_modules/git/__init__.py +0 -2
  288. data/vendor/depot_tools/recipes/recipe_modules/git/api.py +9 -17
  289. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic.json +2 -8
  290. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_branch.json +2 -8
  291. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_file_name.json +2 -8
  292. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_hash.json +2 -8
  293. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_ref.json +2 -8
  294. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_submodule_update_force.json +2 -8
  295. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_tags.json +2 -8
  296. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/can_fail_build.json +3 -13
  297. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cannot_fail_build.json +2 -8
  298. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cat-file_test.json +4 -12
  299. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_delta.json +2 -10
  300. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_failed.json +1 -7
  301. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output.json +1 -7
  302. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output_fails_build.json +0 -8
  303. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/curl_trace_file.json +3 -10
  304. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/git-cache-checkout.json +3 -11
  305. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/platform_win.json +2 -8
  306. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/rebase_failed.json +3 -13
  307. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/remote_not_origin.json +2 -8
  308. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/set_got_revision.json +2 -8
  309. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.py +0 -5
  310. data/vendor/depot_tools/recipes/recipe_modules/git_cl/__init__.py +1 -1
  311. data/vendor/depot_tools/recipes/recipe_modules/git_cl/api.py +7 -13
  312. data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.expected/basic.json +21 -16
  313. data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.py +1 -2
  314. data/vendor/depot_tools/recipes/recipe_modules/gitiles/api.py +1 -1
  315. data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.expected/basic.json +0 -1
  316. data/vendor/depot_tools/recipes/recipe_modules/gitiles/resources/gerrit_client.py +2 -2
  317. data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.expected/basic.json +0 -1
  318. data/vendor/depot_tools/recipes/recipe_modules/gsutil/api.py +23 -8
  319. data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.expected/basic.json +52 -1
  320. data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.py +15 -0
  321. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/__init__.py +1 -0
  322. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/api.py +32 -8
  323. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/ancient_version.json +83 -0
  324. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/automatic_version.json +83 -0
  325. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/explicit_version.json +83 -0
  326. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/linux.json +0 -1
  327. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/mac.json +5 -4
  328. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/win.json +0 -1
  329. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.py +21 -2
  330. data/vendor/depot_tools/recipes/recipe_modules/presubmit/__init__.py +20 -0
  331. data/vendor/depot_tools/recipes/recipe_modules/presubmit/api.py +235 -3
  332. data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.expected/basic.json +13 -5
  333. data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.py +5 -1
  334. data/vendor/depot_tools/recipes/recipe_modules/presubmit/properties.proto +14 -0
  335. data/vendor/depot_tools/recipes/recipe_modules/presubmit/test_api.py +19 -0
  336. data/vendor/depot_tools/recipes/recipe_modules/presubmit/tests/execute.py +247 -0
  337. data/vendor/depot_tools/recipes/recipe_modules/presubmit/tests/prepare.py +49 -0
  338. data/vendor/depot_tools/recipes/recipe_modules/tryserver/api.py +33 -45
  339. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/basic_tags.json +0 -1
  340. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch.json +64 -21
  341. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch_and_target_ref.json +64 -21
  342. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch.json +1 -22
  343. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch_new.json +1 -22
  344. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.py +5 -32
  345. data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_fetch_ref_timeout.py +29 -0
  346. data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_owner.expected/basic.json +5 -0
  347. data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_owner.py +22 -0
  348. data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_target_ref.py +32 -0
  349. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/linux.json +0 -1
  350. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/mac.json +0 -1
  351. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/win.json +2 -1
  352. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.py +1 -6
  353. data/vendor/depot_tools/recipes/recipes.py +49 -28
  354. data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json +11 -6
  355. data/vendor/depot_tools/repo +698 -540
  356. data/vendor/depot_tools/roll-dep +14 -1
  357. data/vendor/depot_tools/roll-dep.bat +10 -1
  358. data/vendor/depot_tools/roll_dep.py +15 -10
  359. data/vendor/depot_tools/scm.py +95 -75
  360. data/vendor/depot_tools/setup_color.py +36 -2
  361. data/vendor/depot_tools/split_cl.py +44 -32
  362. data/vendor/depot_tools/subcommand.py +6 -6
  363. data/vendor/depot_tools/subprocess2.py +38 -322
  364. data/vendor/depot_tools/third_party/colorama/LICENSE.txt +0 -1
  365. data/vendor/depot_tools/third_party/colorama/README.chromium +4 -5
  366. data/vendor/depot_tools/third_party/colorama/README.rst +346 -0
  367. data/vendor/depot_tools/third_party/colorama/__init__.py +3 -4
  368. data/vendor/depot_tools/third_party/colorama/ansi.py +82 -30
  369. data/vendor/depot_tools/third_party/colorama/ansitowin32.py +105 -37
  370. data/vendor/depot_tools/third_party/colorama/initialise.py +39 -15
  371. data/vendor/depot_tools/third_party/colorama/win32.py +46 -28
  372. data/vendor/depot_tools/third_party/colorama/winterm.py +80 -31
  373. data/vendor/depot_tools/update_depot_tools +18 -8
  374. data/vendor/depot_tools/update_depot_tools.bat +19 -15
  375. data/vendor/depot_tools/upload_metrics.py +7 -6
  376. data/vendor/depot_tools/upload_to_google_storage.py +23 -16
  377. data/vendor/depot_tools/vpython +4 -4
  378. data/vendor/depot_tools/vpython.bat +1 -1
  379. data/vendor/depot_tools/vpython3 +55 -0
  380. data/vendor/depot_tools/vpython3.bat +12 -0
  381. data/vendor/depot_tools/watchlists.py +14 -11
  382. data/vendor/depot_tools/weekly +4 -2
  383. data/vendor/depot_tools/win32imports.py +61 -0
  384. data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +49 -41
  385. data/vendor/depot_tools/win_toolchain/package_from_installed.py +142 -149
  386. data/vendor/depot_tools/wtf +5 -3
  387. data/vendor/depot_tools/yapf +5 -1
  388. metadata +68 -343
  389. data/vendor/depot_tools/README.testing +0 -23
  390. data/vendor/depot_tools/annotated_gclient.py +0 -89
  391. data/vendor/depot_tools/appengine_mapper.py +0 -23
  392. data/vendor/depot_tools/bootstrap/win/manifest.txt +0 -20
  393. data/vendor/depot_tools/bootstrap/win/manifest_bleeding_edge.txt +0 -20
  394. data/vendor/depot_tools/bootstrap/win/pylint.new.bat +0 -7
  395. data/vendor/depot_tools/buildbucket.py +0 -186
  396. data/vendor/depot_tools/checkout.py +0 -431
  397. data/vendor/depot_tools/cros +0 -1
  398. data/vendor/depot_tools/dart_format.py +0 -58
  399. data/vendor/depot_tools/depot-tools-auth +0 -8
  400. data/vendor/depot_tools/depot-tools-auth.py +0 -102
  401. data/vendor/depot_tools/my_reviews.py +0 -396
  402. data/vendor/depot_tools/patch.py +0 -548
  403. data/vendor/depot_tools/pylint.py +0 -30
  404. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/buildbot.json +0 -239
  405. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_luci.json +0 -222
  406. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/__init__.py +0 -4
  407. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/api.py +0 -29
  408. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/basic.json +0 -15
  409. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_linux.json +0 -15
  410. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_mac.json +0 -15
  411. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_win.json +0 -15
  412. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_linux.json +0 -15
  413. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_mac.json +0 -15
  414. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_win.json +0 -15
  415. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_linux.json +0 -15
  416. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_mac.json +0 -15
  417. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_win.json +0 -15
  418. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.py +0 -33
  419. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/path_config.py +0 -66
  420. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/set_failure_hash_with_no_steps.json +0 -11
  421. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch.json +0 -45
  422. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch_luci.json +0 -45
  423. data/vendor/depot_tools/rietveld.py +0 -779
  424. data/vendor/depot_tools/roll-dep-svn +0 -8
  425. data/vendor/depot_tools/roll-dep-svn.bat +0 -12
  426. data/vendor/depot_tools/roll_dep_svn.py +0 -430
  427. data/vendor/depot_tools/support/chromite_wrapper +0 -96
  428. data/vendor/depot_tools/third_party/boto/LICENSE +0 -18
  429. data/vendor/depot_tools/third_party/boto/README.chromium +0 -43
  430. data/vendor/depot_tools/third_party/boto/README.rst +0 -163
  431. data/vendor/depot_tools/third_party/boto/__init__.py +0 -793
  432. data/vendor/depot_tools/third_party/boto/auth.py +0 -682
  433. data/vendor/depot_tools/third_party/boto/auth_handler.py +0 -58
  434. data/vendor/depot_tools/third_party/boto/cacerts/__init__.py +0 -22
  435. data/vendor/depot_tools/third_party/boto/cacerts/cacerts.txt +0 -2183
  436. data/vendor/depot_tools/third_party/boto/compat.py +0 -28
  437. data/vendor/depot_tools/third_party/boto/connection.py +0 -1081
  438. data/vendor/depot_tools/third_party/boto/contrib/__init__.py +0 -22
  439. data/vendor/depot_tools/third_party/boto/contrib/ymlmessage.py +0 -52
  440. data/vendor/depot_tools/third_party/boto/core/README +0 -58
  441. data/vendor/depot_tools/third_party/boto/core/__init__.py +0 -23
  442. data/vendor/depot_tools/third_party/boto/core/auth.py +0 -78
  443. data/vendor/depot_tools/third_party/boto/core/credentials.py +0 -154
  444. data/vendor/depot_tools/third_party/boto/core/dictresponse.py +0 -178
  445. data/vendor/depot_tools/third_party/boto/core/service.py +0 -67
  446. data/vendor/depot_tools/third_party/boto/datapipeline/__init__.py +0 -0
  447. data/vendor/depot_tools/third_party/boto/datapipeline/exceptions.py +0 -42
  448. data/vendor/depot_tools/third_party/boto/datapipeline/layer1.py +0 -546
  449. data/vendor/depot_tools/third_party/boto/ecs/__init__.py +0 -90
  450. data/vendor/depot_tools/third_party/boto/ecs/item.py +0 -153
  451. data/vendor/depot_tools/third_party/boto/exception.py +0 -476
  452. data/vendor/depot_tools/third_party/boto/file/README +0 -49
  453. data/vendor/depot_tools/third_party/boto/file/__init__.py +0 -28
  454. data/vendor/depot_tools/third_party/boto/file/bucket.py +0 -112
  455. data/vendor/depot_tools/third_party/boto/file/connection.py +0 -33
  456. data/vendor/depot_tools/third_party/boto/file/key.py +0 -199
  457. data/vendor/depot_tools/third_party/boto/file/simpleresultset.py +0 -30
  458. data/vendor/depot_tools/third_party/boto/fps/__init__.py +0 -21
  459. data/vendor/depot_tools/third_party/boto/fps/connection.py +0 -369
  460. data/vendor/depot_tools/third_party/boto/fps/exception.py +0 -344
  461. data/vendor/depot_tools/third_party/boto/fps/response.py +0 -175
  462. data/vendor/depot_tools/third_party/boto/gs/__init__.py +0 -22
  463. data/vendor/depot_tools/third_party/boto/gs/acl.py +0 -304
  464. data/vendor/depot_tools/third_party/boto/gs/bucket.py +0 -870
  465. data/vendor/depot_tools/third_party/boto/gs/bucketlistresultset.py +0 -64
  466. data/vendor/depot_tools/third_party/boto/gs/connection.py +0 -103
  467. data/vendor/depot_tools/third_party/boto/gs/cors.py +0 -169
  468. data/vendor/depot_tools/third_party/boto/gs/key.py +0 -704
  469. data/vendor/depot_tools/third_party/boto/gs/resumable_upload_handler.py +0 -659
  470. data/vendor/depot_tools/third_party/boto/gs/user.py +0 -54
  471. data/vendor/depot_tools/third_party/boto/handler.py +0 -44
  472. data/vendor/depot_tools/third_party/boto/https_connection.py +0 -124
  473. data/vendor/depot_tools/third_party/boto/jsonresponse.py +0 -163
  474. data/vendor/depot_tools/third_party/boto/manage/__init__.py +0 -23
  475. data/vendor/depot_tools/third_party/boto/manage/cmdshell.py +0 -241
  476. data/vendor/depot_tools/third_party/boto/manage/propget.py +0 -64
  477. data/vendor/depot_tools/third_party/boto/manage/server.py +0 -556
  478. data/vendor/depot_tools/third_party/boto/manage/task.py +0 -175
  479. data/vendor/depot_tools/third_party/boto/manage/test_manage.py +0 -34
  480. data/vendor/depot_tools/third_party/boto/manage/volume.py +0 -420
  481. data/vendor/depot_tools/third_party/boto/mashups/__init__.py +0 -23
  482. data/vendor/depot_tools/third_party/boto/mashups/interactive.py +0 -97
  483. data/vendor/depot_tools/third_party/boto/mashups/iobject.py +0 -115
  484. data/vendor/depot_tools/third_party/boto/mashups/order.py +0 -211
  485. data/vendor/depot_tools/third_party/boto/mashups/server.py +0 -395
  486. data/vendor/depot_tools/third_party/boto/plugin.py +0 -90
  487. data/vendor/depot_tools/third_party/boto/provider.py +0 -337
  488. data/vendor/depot_tools/third_party/boto/pyami/__init__.py +0 -22
  489. data/vendor/depot_tools/third_party/boto/pyami/bootstrap.py +0 -134
  490. data/vendor/depot_tools/third_party/boto/pyami/config.py +0 -229
  491. data/vendor/depot_tools/third_party/boto/pyami/copybot.cfg +0 -60
  492. data/vendor/depot_tools/third_party/boto/pyami/copybot.py +0 -97
  493. data/vendor/depot_tools/third_party/boto/pyami/helloworld.py +0 -28
  494. data/vendor/depot_tools/third_party/boto/pyami/launch_ami.py +0 -178
  495. data/vendor/depot_tools/third_party/boto/pyami/scriptbase.py +0 -44
  496. data/vendor/depot_tools/third_party/boto/pyami/startup.py +0 -60
  497. data/vendor/depot_tools/third_party/boto/regioninfo.py +0 -63
  498. data/vendor/depot_tools/third_party/boto/resultset.py +0 -169
  499. data/vendor/depot_tools/third_party/boto/roboto/__init__.py +0 -1
  500. data/vendor/depot_tools/third_party/boto/roboto/awsqueryrequest.py +0 -504
  501. data/vendor/depot_tools/third_party/boto/roboto/awsqueryservice.py +0 -121
  502. data/vendor/depot_tools/third_party/boto/roboto/param.py +0 -147
  503. data/vendor/depot_tools/third_party/boto/s3/__init__.py +0 -84
  504. data/vendor/depot_tools/third_party/boto/s3/acl.py +0 -164
  505. data/vendor/depot_tools/third_party/boto/s3/bucket.py +0 -1634
  506. data/vendor/depot_tools/third_party/boto/s3/bucketlistresultset.py +0 -139
  507. data/vendor/depot_tools/third_party/boto/s3/bucketlogging.py +0 -83
  508. data/vendor/depot_tools/third_party/boto/s3/connection.py +0 -540
  509. data/vendor/depot_tools/third_party/boto/s3/cors.py +0 -210
  510. data/vendor/depot_tools/third_party/boto/s3/deletemarker.py +0 -55
  511. data/vendor/depot_tools/third_party/boto/s3/key.py +0 -1712
  512. data/vendor/depot_tools/third_party/boto/s3/keyfile.py +0 -134
  513. data/vendor/depot_tools/third_party/boto/s3/lifecycle.py +0 -231
  514. data/vendor/depot_tools/third_party/boto/s3/multidelete.py +0 -138
  515. data/vendor/depot_tools/third_party/boto/s3/multipart.py +0 -315
  516. data/vendor/depot_tools/third_party/boto/s3/prefix.py +0 -42
  517. data/vendor/depot_tools/third_party/boto/s3/resumable_download_handler.py +0 -339
  518. data/vendor/depot_tools/third_party/boto/s3/tagging.py +0 -71
  519. data/vendor/depot_tools/third_party/boto/s3/user.py +0 -49
  520. data/vendor/depot_tools/third_party/boto/s3/website.py +0 -237
  521. data/vendor/depot_tools/third_party/boto/services/__init__.py +0 -23
  522. data/vendor/depot_tools/third_party/boto/services/bs.py +0 -179
  523. data/vendor/depot_tools/third_party/boto/services/message.py +0 -58
  524. data/vendor/depot_tools/third_party/boto/services/result.py +0 -136
  525. data/vendor/depot_tools/third_party/boto/services/service.py +0 -161
  526. data/vendor/depot_tools/third_party/boto/services/servicedef.py +0 -91
  527. data/vendor/depot_tools/third_party/boto/services/sonofmmm.cfg +0 -43
  528. data/vendor/depot_tools/third_party/boto/services/sonofmmm.py +0 -81
  529. data/vendor/depot_tools/third_party/boto/services/submit.py +0 -88
  530. data/vendor/depot_tools/third_party/boto/ses/__init__.py +0 -54
  531. data/vendor/depot_tools/third_party/boto/ses/connection.py +0 -521
  532. data/vendor/depot_tools/third_party/boto/ses/exceptions.py +0 -77
  533. data/vendor/depot_tools/third_party/boto/storage_uri.py +0 -835
  534. data/vendor/depot_tools/third_party/boto/sts/__init__.py +0 -55
  535. data/vendor/depot_tools/third_party/boto/sts/connection.py +0 -207
  536. data/vendor/depot_tools/third_party/boto/sts/credentials.py +0 -215
  537. data/vendor/depot_tools/third_party/boto/utils.py +0 -927
  538. data/vendor/depot_tools/third_party/colorama/README.txt +0 -304
  539. data/vendor/depot_tools/third_party/fancy_urllib/README +0 -22
  540. data/vendor/depot_tools/third_party/fancy_urllib/__init__.py +0 -460
  541. data/vendor/depot_tools/third_party/logilab/README.chromium +0 -6
  542. data/vendor/depot_tools/third_party/logilab/__init__.py +0 -0
  543. data/vendor/depot_tools/third_party/logilab/astroid/LICENSE.txt +0 -340
  544. data/vendor/depot_tools/third_party/logilab/astroid/README.chromium +0 -11
  545. data/vendor/depot_tools/third_party/logilab/astroid/__init__.py +0 -136
  546. data/vendor/depot_tools/third_party/logilab/astroid/__pkginfo__.py +0 -42
  547. data/vendor/depot_tools/third_party/logilab/astroid/arguments.py +0 -233
  548. data/vendor/depot_tools/third_party/logilab/astroid/as_string.py +0 -548
  549. data/vendor/depot_tools/third_party/logilab/astroid/astpeephole.py +0 -86
  550. data/vendor/depot_tools/third_party/logilab/astroid/bases.py +0 -636
  551. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_builtin_inference.py +0 -336
  552. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_dateutil.py +0 -15
  553. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_gi.py +0 -195
  554. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_mechanize.py +0 -18
  555. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_nose.py +0 -82
  556. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_numpy.py +0 -62
  557. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_pytest.py +0 -76
  558. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_qt.py +0 -44
  559. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_six.py +0 -288
  560. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_ssl.py +0 -65
  561. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_stdlib.py +0 -473
  562. data/vendor/depot_tools/third_party/logilab/astroid/builder.py +0 -263
  563. data/vendor/depot_tools/third_party/logilab/astroid/context.py +0 -81
  564. data/vendor/depot_tools/third_party/logilab/astroid/decorators.py +0 -75
  565. data/vendor/depot_tools/third_party/logilab/astroid/exceptions.py +0 -71
  566. data/vendor/depot_tools/third_party/logilab/astroid/inference.py +0 -359
  567. data/vendor/depot_tools/third_party/logilab/astroid/manager.py +0 -267
  568. data/vendor/depot_tools/third_party/logilab/astroid/mixins.py +0 -147
  569. data/vendor/depot_tools/third_party/logilab/astroid/modutils.py +0 -741
  570. data/vendor/depot_tools/third_party/logilab/astroid/node_classes.py +0 -1053
  571. data/vendor/depot_tools/third_party/logilab/astroid/nodes.py +0 -87
  572. data/vendor/depot_tools/third_party/logilab/astroid/objects.py +0 -186
  573. data/vendor/depot_tools/third_party/logilab/astroid/protocols.py +0 -470
  574. data/vendor/depot_tools/third_party/logilab/astroid/raw_building.py +0 -390
  575. data/vendor/depot_tools/third_party/logilab/astroid/rebuilder.py +0 -989
  576. data/vendor/depot_tools/third_party/logilab/astroid/scoped_nodes.py +0 -1716
  577. data/vendor/depot_tools/third_party/logilab/astroid/test_utils.py +0 -201
  578. data/vendor/depot_tools/third_party/logilab/astroid/transforms.py +0 -96
  579. data/vendor/depot_tools/third_party/logilab/astroid/util.py +0 -89
  580. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/LICENSE +0 -19
  581. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/README.chromium +0 -11
  582. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/__init__.py +0 -20
  583. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/cext.c +0 -1421
  584. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/compat.py +0 -9
  585. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/simple.py +0 -246
  586. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/slots.py +0 -414
  587. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/utils.py +0 -13
  588. data/vendor/depot_tools/third_party/logilab/wrapt/LICENSE +0 -24
  589. data/vendor/depot_tools/third_party/logilab/wrapt/README.chromium +0 -11
  590. data/vendor/depot_tools/third_party/logilab/wrapt/__init__.py +0 -19
  591. data/vendor/depot_tools/third_party/logilab/wrapt/_wrappers.c +0 -2729
  592. data/vendor/depot_tools/third_party/logilab/wrapt/arguments.py +0 -96
  593. data/vendor/depot_tools/third_party/logilab/wrapt/decorators.py +0 -512
  594. data/vendor/depot_tools/third_party/logilab/wrapt/importer.py +0 -228
  595. data/vendor/depot_tools/third_party/logilab/wrapt/wrappers.py +0 -901
  596. data/vendor/depot_tools/third_party/mock/LICENSE.txt +0 -26
  597. data/vendor/depot_tools/third_party/mock/README.chromium +0 -24
  598. data/vendor/depot_tools/third_party/mock/__init__.py +0 -2366
  599. data/vendor/depot_tools/third_party/oauth2client/LICENSE +0 -202
  600. data/vendor/depot_tools/third_party/oauth2client/MODIFICATIONS.diff +0 -66
  601. data/vendor/depot_tools/third_party/oauth2client/README.chromium +0 -15
  602. data/vendor/depot_tools/third_party/oauth2client/__init__.py +0 -5
  603. data/vendor/depot_tools/third_party/oauth2client/anyjson.py +0 -32
  604. data/vendor/depot_tools/third_party/oauth2client/appengine.py +0 -963
  605. data/vendor/depot_tools/third_party/oauth2client/client.py +0 -1363
  606. data/vendor/depot_tools/third_party/oauth2client/clientsecrets.py +0 -153
  607. data/vendor/depot_tools/third_party/oauth2client/crypt.py +0 -377
  608. data/vendor/depot_tools/third_party/oauth2client/django_orm.py +0 -134
  609. data/vendor/depot_tools/third_party/oauth2client/file.py +0 -124
  610. data/vendor/depot_tools/third_party/oauth2client/gce.py +0 -90
  611. data/vendor/depot_tools/third_party/oauth2client/keyring_storage.py +0 -109
  612. data/vendor/depot_tools/third_party/oauth2client/locked_file.py +0 -373
  613. data/vendor/depot_tools/third_party/oauth2client/multistore_file.py +0 -465
  614. data/vendor/depot_tools/third_party/oauth2client/old_run.py +0 -160
  615. data/vendor/depot_tools/third_party/oauth2client/tools.py +0 -243
  616. data/vendor/depot_tools/third_party/oauth2client/util.py +0 -196
  617. data/vendor/depot_tools/third_party/oauth2client/xsrfutil.py +0 -113
  618. data/vendor/depot_tools/third_party/protobuf26/README.chromium +0 -23
  619. data/vendor/depot_tools/third_party/protobuf26/__init__.py +0 -0
  620. data/vendor/depot_tools/third_party/protobuf26/compiler/__init__.py +0 -0
  621. data/vendor/depot_tools/third_party/protobuf26/compiler/plugin_pb2.py +0 -184
  622. data/vendor/depot_tools/third_party/protobuf26/descriptor.py +0 -849
  623. data/vendor/depot_tools/third_party/protobuf26/descriptor_database.py +0 -137
  624. data/vendor/depot_tools/third_party/protobuf26/descriptor_pb2.py +0 -1522
  625. data/vendor/depot_tools/third_party/protobuf26/descriptor_pool.py +0 -643
  626. data/vendor/depot_tools/third_party/protobuf26/internal/__init__.py +0 -0
  627. data/vendor/depot_tools/third_party/protobuf26/internal/api_implementation.py +0 -89
  628. data/vendor/depot_tools/third_party/protobuf26/internal/containers.py +0 -269
  629. data/vendor/depot_tools/third_party/protobuf26/internal/cpp_message.py +0 -663
  630. data/vendor/depot_tools/third_party/protobuf26/internal/decoder.py +0 -831
  631. data/vendor/depot_tools/third_party/protobuf26/internal/encoder.py +0 -788
  632. data/vendor/depot_tools/third_party/protobuf26/internal/enum_type_wrapper.py +0 -89
  633. data/vendor/depot_tools/third_party/protobuf26/internal/message_listener.py +0 -78
  634. data/vendor/depot_tools/third_party/protobuf26/internal/python_message.py +0 -1247
  635. data/vendor/depot_tools/third_party/protobuf26/internal/type_checkers.py +0 -328
  636. data/vendor/depot_tools/third_party/protobuf26/internal/wire_format.py +0 -268
  637. data/vendor/depot_tools/third_party/protobuf26/message.py +0 -284
  638. data/vendor/depot_tools/third_party/protobuf26/message_factory.py +0 -155
  639. data/vendor/depot_tools/third_party/protobuf26/reflection.py +0 -205
  640. data/vendor/depot_tools/third_party/protobuf26/service.py +0 -226
  641. data/vendor/depot_tools/third_party/protobuf26/service_reflection.py +0 -284
  642. data/vendor/depot_tools/third_party/protobuf26/symbol_database.py +0 -185
  643. data/vendor/depot_tools/third_party/protobuf26/text_encoding.py +0 -110
  644. data/vendor/depot_tools/third_party/protobuf26/text_format.py +0 -873
  645. data/vendor/depot_tools/third_party/pylint.py +0 -37
  646. data/vendor/depot_tools/third_party/pylint/LICENSE.txt +0 -340
  647. data/vendor/depot_tools/third_party/pylint/README.chromium +0 -30
  648. data/vendor/depot_tools/third_party/pylint/__init__.py +0 -46
  649. data/vendor/depot_tools/third_party/pylint/__main__.py +0 -3
  650. data/vendor/depot_tools/third_party/pylint/__pkginfo__.py +0 -80
  651. data/vendor/depot_tools/third_party/pylint/checkers/__init__.py +0 -123
  652. data/vendor/depot_tools/third_party/pylint/checkers/async.py +0 -82
  653. data/vendor/depot_tools/third_party/pylint/checkers/base.py +0 -2010
  654. data/vendor/depot_tools/third_party/pylint/checkers/classes.py +0 -1120
  655. data/vendor/depot_tools/third_party/pylint/checkers/design_analysis.py +0 -348
  656. data/vendor/depot_tools/third_party/pylint/checkers/exceptions.py +0 -369
  657. data/vendor/depot_tools/third_party/pylint/checkers/format.py +0 -993
  658. data/vendor/depot_tools/third_party/pylint/checkers/imports.py +0 -654
  659. data/vendor/depot_tools/third_party/pylint/checkers/logging.py +0 -258
  660. data/vendor/depot_tools/third_party/pylint/checkers/misc.py +0 -105
  661. data/vendor/depot_tools/third_party/pylint/checkers/newstyle.py +0 -169
  662. data/vendor/depot_tools/third_party/pylint/checkers/python3.py +0 -591
  663. data/vendor/depot_tools/third_party/pylint/checkers/raw_metrics.py +0 -129
  664. data/vendor/depot_tools/third_party/pylint/checkers/similar.py +0 -371
  665. data/vendor/depot_tools/third_party/pylint/checkers/spelling.py +0 -264
  666. data/vendor/depot_tools/third_party/pylint/checkers/stdlib.py +0 -280
  667. data/vendor/depot_tools/third_party/pylint/checkers/strings.py +0 -618
  668. data/vendor/depot_tools/third_party/pylint/checkers/typecheck.py +0 -974
  669. data/vendor/depot_tools/third_party/pylint/checkers/utils.py +0 -741
  670. data/vendor/depot_tools/third_party/pylint/checkers/variables.py +0 -1191
  671. data/vendor/depot_tools/third_party/pylint/config.py +0 -820
  672. data/vendor/depot_tools/third_party/pylint/epylint.py +0 -181
  673. data/vendor/depot_tools/third_party/pylint/extensions/__init__.py +0 -0
  674. data/vendor/depot_tools/third_party/pylint/extensions/check_docs.py +0 -311
  675. data/vendor/depot_tools/third_party/pylint/extensions/check_elif.py +0 -62
  676. data/vendor/depot_tools/third_party/pylint/graph.py +0 -179
  677. data/vendor/depot_tools/third_party/pylint/gui.py +0 -531
  678. data/vendor/depot_tools/third_party/pylint/interfaces.py +0 -102
  679. data/vendor/depot_tools/third_party/pylint/lint.py +0 -1381
  680. data/vendor/depot_tools/third_party/pylint/pyreverse/__init__.py +0 -5
  681. data/vendor/depot_tools/third_party/pylint/pyreverse/diadefslib.py +0 -230
  682. data/vendor/depot_tools/third_party/pylint/pyreverse/diagrams.py +0 -258
  683. data/vendor/depot_tools/third_party/pylint/pyreverse/inspector.py +0 -372
  684. data/vendor/depot_tools/third_party/pylint/pyreverse/main.py +0 -147
  685. data/vendor/depot_tools/third_party/pylint/pyreverse/utils.py +0 -210
  686. data/vendor/depot_tools/third_party/pylint/pyreverse/vcgutils.py +0 -198
  687. data/vendor/depot_tools/third_party/pylint/pyreverse/writer.py +0 -198
  688. data/vendor/depot_tools/third_party/pylint/reporters/__init__.py +0 -149
  689. data/vendor/depot_tools/third_party/pylint/reporters/guireporter.py +0 -27
  690. data/vendor/depot_tools/third_party/pylint/reporters/html.py +0 -108
  691. data/vendor/depot_tools/third_party/pylint/reporters/json.py +0 -64
  692. data/vendor/depot_tools/third_party/pylint/reporters/text.py +0 -237
  693. data/vendor/depot_tools/third_party/pylint/reporters/ureports/__init__.py +0 -106
  694. data/vendor/depot_tools/third_party/pylint/reporters/ureports/html_writer.py +0 -93
  695. data/vendor/depot_tools/third_party/pylint/reporters/ureports/nodes.py +0 -181
  696. data/vendor/depot_tools/third_party/pylint/reporters/ureports/text_writer.py +0 -99
  697. data/vendor/depot_tools/third_party/pylint/testutils.py +0 -414
  698. data/vendor/depot_tools/third_party/pylint/utils.py +0 -1148
  699. data/vendor/depot_tools/third_party/pymox/COPYING +0 -202
  700. data/vendor/depot_tools/third_party/pymox/MANIFEST.in +0 -5
  701. data/vendor/depot_tools/third_party/pymox/README +0 -56
  702. data/vendor/depot_tools/third_party/pymox/__init__.py +0 -0
  703. data/vendor/depot_tools/third_party/pymox/mox.py +0 -1643
  704. data/vendor/depot_tools/third_party/pymox/mox_test.py +0 -1708
  705. data/vendor/depot_tools/third_party/pymox/mox_test_helper.py +0 -76
  706. data/vendor/depot_tools/third_party/pymox/setup.py +0 -14
  707. data/vendor/depot_tools/third_party/pymox/stubout.py +0 -142
  708. data/vendor/depot_tools/third_party/pymox/stubout_test.py +0 -47
  709. data/vendor/depot_tools/third_party/pymox/stubout_testee.py +0 -2
  710. data/vendor/depot_tools/third_party/simplejson/LICENSE.txt +0 -19
  711. data/vendor/depot_tools/third_party/simplejson/PKG-INFO +0 -29
  712. data/vendor/depot_tools/third_party/simplejson/__init__.py +0 -437
  713. data/vendor/depot_tools/third_party/simplejson/decoder.py +0 -421
  714. data/vendor/depot_tools/third_party/simplejson/encoder.py +0 -501
  715. data/vendor/depot_tools/third_party/simplejson/ordered_dict.py +0 -119
  716. data/vendor/depot_tools/third_party/simplejson/scanner.py +0 -77
  717. data/vendor/depot_tools/third_party/simplejson/tool.py +0 -39
  718. data/vendor/depot_tools/third_party/upload.py +0 -2565
@@ -5,6 +5,8 @@
5
5
 
6
6
  """Splits a branch into smaller branches and uploads CLs."""
7
7
 
8
+ from __future__ import print_function
9
+
8
10
  import collections
9
11
  import os
10
12
  import re
@@ -12,9 +14,11 @@ import subprocess2
12
14
  import sys
13
15
  import tempfile
14
16
 
17
+ import gclient_utils
15
18
  import git_footers
16
19
  import owners
17
20
  import owners_finder
21
+ import scm
18
22
 
19
23
  import git_common as git
20
24
 
@@ -75,7 +79,7 @@ def AddUploadedByGitClSplitToDescription(description):
75
79
 
76
80
  def UploadCl(refactor_branch, refactor_branch_upstream, directory, files,
77
81
  description, comment, reviewers, changelist, cmd_upload,
78
- cq_dry_run, enable_auto_submit):
82
+ cq_dry_run, enable_auto_submit, repository_root):
79
83
  """Uploads a CL with all changes to |files| in |refactor_branch|.
80
84
 
81
85
  Args:
@@ -95,26 +99,31 @@ def UploadCl(refactor_branch, refactor_branch_upstream, directory, files,
95
99
  # Create a branch.
96
100
  if not CreateBranchForDirectory(
97
101
  refactor_branch, directory, refactor_branch_upstream):
98
- print 'Skipping ' + directory + ' for which a branch already exists.'
102
+ print('Skipping ' + directory + ' for which a branch already exists.')
99
103
  return
100
104
 
101
105
  # Checkout all changes to files in |files|.
102
- deleted_files = [f.AbsoluteLocalPath() for f in files if f.Action() == 'D']
106
+ deleted_files = []
107
+ modified_files = []
108
+ for action, f in files:
109
+ abspath = os.path.abspath(os.path.join(repository_root, f))
110
+ if action == 'D':
111
+ deleted_files.append(abspath)
112
+ else:
113
+ modified_files.append(abspath)
114
+
103
115
  if deleted_files:
104
116
  git.run(*['rm'] + deleted_files)
105
- modified_files = [f.AbsoluteLocalPath() for f in files if f.Action() != 'D']
106
117
  if modified_files:
107
118
  git.run(*['checkout', refactor_branch, '--'] + modified_files)
108
119
 
109
120
  # Commit changes. The temporary file is created with delete=False so that it
110
121
  # can be deleted manually after git has read it rather than automatically
111
122
  # when it is closed.
112
- with tempfile.NamedTemporaryFile(delete=False) as tmp_file:
113
- tmp_file.write(FormatDescriptionOrComment(description, directory))
114
- # Close the file to let git open it at the next line.
115
- tmp_file.close()
116
- git.run('commit', '-F', tmp_file.name)
117
- os.remove(tmp_file.name)
123
+ with gclient_utils.temporary_file() as tmp_file:
124
+ gclient_utils.FileWrite(
125
+ tmp_file, FormatDescriptionOrComment(description, directory))
126
+ git.run('commit', '-F', tmp_file)
118
127
 
119
128
  # Upload a CL.
120
129
  upload_args = ['-f', '-r', ','.join(reviewers)]
@@ -124,7 +133,7 @@ def UploadCl(refactor_branch, refactor_branch_upstream, directory, files,
124
133
  upload_args.append('--send-mail')
125
134
  if enable_auto_submit:
126
135
  upload_args.append('--enable-auto-submit')
127
- print 'Uploading CL for ' + directory + '.'
136
+ print('Uploading CL for ' + directory + '.')
128
137
  cmd_upload(upload_args)
129
138
  if comment:
130
139
  changelist().AddComment(FormatDescriptionOrComment(comment, directory),
@@ -139,9 +148,9 @@ def GetFilesSplitByOwners(owners_database, files):
139
148
  values are lists of files sharing an OWNERS file.
140
149
  """
141
150
  files_split_by_owners = collections.defaultdict(list)
142
- for f in files:
143
- files_split_by_owners[owners_database.enclosing_dir_with_owners(
144
- f.LocalPath())].append(f)
151
+ for action, path in files:
152
+ enclosing_dir = owners_database.enclosing_dir_with_owners(path)
153
+ files_split_by_owners[enclosing_dir].append((action, path))
145
154
  return files_split_by_owners
146
155
 
147
156
 
@@ -162,16 +171,16 @@ def PrintClInfo(cl_index, num_cls, directory, file_paths, description,
162
171
  directory).splitlines()
163
172
  indented_description = '\n'.join([' ' + l for l in description_lines])
164
173
 
165
- print 'CL {}/{}'.format(cl_index, num_cls)
166
- print 'Path: {}'.format(directory)
167
- print 'Reviewers: {}'.format(', '.join(reviewers))
168
- print '\n' + indented_description + '\n'
169
- print '\n'.join(file_paths)
170
- print
174
+ print('CL {}/{}'.format(cl_index, num_cls))
175
+ print('Path: {}'.format(directory))
176
+ print('Reviewers: {}'.format(', '.join(reviewers)))
177
+ print('\n' + indented_description + '\n')
178
+ print('\n'.join(file_paths))
179
+ print()
171
180
 
172
181
 
173
182
  def SplitCl(description_file, comment_file, changelist, cmd_upload, dry_run,
174
- cq_dry_run, enable_auto_submit):
183
+ cq_dry_run, enable_auto_submit, repository_root):
175
184
  """"Splits a branch into smaller branches and uploads CLs.
176
185
 
177
186
  Args:
@@ -193,11 +202,14 @@ def SplitCl(description_file, comment_file, changelist, cmd_upload, dry_run,
193
202
  EnsureInGitRepository()
194
203
 
195
204
  cl = changelist()
196
- change = cl.GetChange(cl.GetCommonAncestorWithUpstream(), None)
197
- files = change.AffectedFiles()
205
+ upstream = cl.GetCommonAncestorWithUpstream()
206
+ files = [
207
+ (action.strip(), f)
208
+ for action, f in scm.GIT.CaptureStatus(repository_root, upstream)
209
+ ]
198
210
 
199
211
  if not files:
200
- print 'Cannot split an empty CL.'
212
+ print('Cannot split an empty CL.')
201
213
  return 1
202
214
 
203
215
  author = git.run('config', 'user.email').strip() or None
@@ -207,8 +219,8 @@ def SplitCl(description_file, comment_file, changelist, cmd_upload, dry_run,
207
219
  assert refactor_branch_upstream, \
208
220
  "Branch %s must have an upstream." % refactor_branch
209
221
 
210
- owners_database = owners.Database(change.RepositoryRoot(), file, os.path)
211
- owners_database.load_data_needed_for([f.LocalPath() for f in files])
222
+ owners_database = owners.Database(repository_root, open, os.path)
223
+ owners_database.load_data_needed_for([f for _, f in files])
212
224
 
213
225
  files_split_by_owners = GetFilesSplitByOwners(owners_database, files)
214
226
 
@@ -216,22 +228,22 @@ def SplitCl(description_file, comment_file, changelist, cmd_upload, dry_run,
216
228
  print('Will split current branch (' + refactor_branch + ') into ' +
217
229
  str(num_cls) + ' CLs.\n')
218
230
  if cq_dry_run and num_cls > CL_SPLIT_FORCE_LIMIT:
219
- print (
231
+ print(
220
232
  'This will generate "%r" CLs. This many CLs can potentially generate'
221
233
  ' too much load on the build infrastructure. Please email'
222
234
  ' infra-dev@chromium.org to ensure that this won\'t break anything.'
223
235
  ' The infra team reserves the right to cancel your jobs if they are'
224
- ' overloading the CQ.') % num_cls
225
- answer = raw_input('Proceed? (y/n):')
236
+ ' overloading the CQ.' % num_cls)
237
+ answer = gclient_utils.AskForData('Proceed? (y/n):')
226
238
  if answer.lower() != 'y':
227
239
  return 0
228
240
 
229
241
  for cl_index, (directory, files) in \
230
- enumerate(files_split_by_owners.iteritems(), 1):
242
+ enumerate(files_split_by_owners.items(), 1):
231
243
  # Use '/' as a path separator in the branch name and the CL description
232
244
  # and comment.
233
245
  directory = directory.replace(os.path.sep, '/')
234
- file_paths = [f.LocalPath() for f in files]
246
+ file_paths = [f for _, f in files]
235
247
  reviewers = owners_database.reviewers_for(file_paths, author)
236
248
 
237
249
  if dry_run:
@@ -240,7 +252,7 @@ def SplitCl(description_file, comment_file, changelist, cmd_upload, dry_run,
240
252
  else:
241
253
  UploadCl(refactor_branch, refactor_branch_upstream, directory, files,
242
254
  description, comment, reviewers, changelist, cmd_upload,
243
- cq_dry_run, enable_auto_submit)
255
+ cq_dry_run, enable_auto_submit, repository_root)
244
256
 
245
257
  # Go back to the original branch.
246
258
  git.run('checkout', refactor_branch)
@@ -66,11 +66,11 @@ def epilog(text):
66
66
 
67
67
  def CMDhelp(parser, args):
68
68
  """Prints list of commands or help for a specific command."""
69
- # This is the default help implementation. It can be disabled or overriden if
69
+ # This is the default help implementation. It can be disabled or overridden if
70
70
  # wanted.
71
71
  if not any(i in ('-h', '--help') for i in args):
72
72
  args = args + ['--help']
73
- _, args = parser.parse_args(args)
73
+ parser.parse_args(args)
74
74
  # Never gets there.
75
75
  assert False
76
76
 
@@ -160,7 +160,7 @@ class CommandDispatcher(object):
160
160
  commands = self.enumerate_commands()
161
161
  docs = sorted(
162
162
  (cmd_name, self._create_command_summary(cmd_name, handler))
163
- for cmd_name, handler in commands.iteritems())
163
+ for cmd_name, handler in commands.items())
164
164
  # Skip commands without a docstring.
165
165
  docs = [i for i in docs if i[1]]
166
166
  # Then calculate maximum length for alignment:
@@ -235,14 +235,14 @@ class CommandDispatcher(object):
235
235
 
236
236
  if args:
237
237
  if args[0] in ('-h', '--help') and len(args) > 1:
238
- # Inverse the argument order so 'tool --help cmd' is rewritten to
238
+ # Reverse the argument order so 'tool --help cmd' is rewritten to
239
239
  # 'tool cmd --help'.
240
240
  args = [args[1], args[0]] + args[2:]
241
241
  command = self.find_nearest_command(args[0])
242
242
  if command:
243
243
  if command.__name__ == 'CMDhelp' and len(args) > 1:
244
- # Inverse the arguments order so 'tool help cmd' is rewritten to
245
- # 'tool cmd --help'. Do it here since we want 'tool hel cmd' to work
244
+ # Reverse the argument order so 'tool help cmd' is rewritten to
245
+ # 'tool cmd --help'. Do it here since we want 'tool help cmd' to work
246
246
  # too.
247
247
  args = [args[1], '--help'] + args[2:]
248
248
  command = self.find_nearest_command(args[0]) or command
@@ -1,4 +1,4 @@
1
- # coding=utf8
1
+ # coding=utf-8
2
2
  # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3
3
  # Use of this source code is governed by a BSD-style license that can be
4
4
  # found in the LICENSE file.
@@ -12,41 +12,27 @@ import errno
12
12
  import io
13
13
  import logging
14
14
  import os
15
-
16
- try:
17
- import Queue
18
- except ImportError: # For Py3 compatibility
19
- import queue as Queue
20
-
21
15
  import subprocess
22
16
  import sys
23
- import time
24
17
  import threading
25
18
 
26
19
  # Cache the string-escape codec to ensure subprocess can find it later.
27
20
  # See crbug.com/912292#c2 for context.
28
21
  if sys.version_info.major == 2:
22
+ import Queue
29
23
  codecs.lookup('string-escape')
30
-
31
- # TODO(crbug.com/953884): Remove this when python3 migration is done.
32
- try:
33
- basestring
34
- except NameError:
24
+ else:
25
+ import queue as Queue
35
26
  # pylint: disable=redefined-builtin
36
- basestring = str
27
+ basestring = (str, bytes)
37
28
 
38
29
 
39
30
  # Constants forwarded from subprocess.
40
31
  PIPE = subprocess.PIPE
41
32
  STDOUT = subprocess.STDOUT
42
33
  # Sends stdout or stderr to os.devnull.
43
- VOID = object()
44
- # Error code when a process was killed because it timed out.
45
- TIMED_OUT = -2001
46
-
47
- # Globals.
48
- # Set to True if you somehow need to disable this hack.
49
- SUBPROCESS_CLEANUP_HACKED = False
34
+ VOID = open(os.devnull, 'w')
35
+ VOID_INPUT = open(os.devnull, 'r')
50
36
 
51
37
 
52
38
  class CalledProcessError(subprocess.CalledProcessError):
@@ -62,7 +48,11 @@ class CalledProcessError(subprocess.CalledProcessError):
62
48
  ' '.join(self.cmd), self.returncode)
63
49
  if self.cwd:
64
50
  out += ' in ' + self.cwd
65
- return '\n'.join(filter(None, (out, self.stdout, self.stderr)))
51
+ if self.stdout:
52
+ out += '\n' + self.stdout.decode('utf-8', 'ignore')
53
+ if self.stderr:
54
+ out += '\n' + self.stderr.decode('utf-8', 'ignore')
55
+ return out
66
56
 
67
57
 
68
58
  class CygwinRebaseError(CalledProcessError):
@@ -78,51 +68,11 @@ def kill_pid(pid):
78
68
  # Unable to import 'module'
79
69
  # pylint: disable=no-member,F0401
80
70
  import signal
81
- return os.kill(pid, signal.SIGKILL)
82
- except ImportError:
83
- pass
84
-
85
-
86
- def kill_win(process):
87
- """Kills a process with its windows handle.
88
-
89
- Has no effect on other platforms.
90
- """
91
- try:
92
- # Unable to import 'module'
93
- # pylint: disable=import-error
94
- import win32process
95
- # Access to a protected member _handle of a client class
96
- # pylint: disable=protected-access
97
- return win32process.TerminateProcess(process._handle, -1)
71
+ return os.kill(pid, signal.SIGTERM)
98
72
  except ImportError:
99
73
  pass
100
74
 
101
75
 
102
- def add_kill():
103
- """Adds kill() method to subprocess.Popen for python <2.6"""
104
- if hasattr(subprocess.Popen, 'kill'):
105
- return
106
-
107
- if sys.platform == 'win32':
108
- subprocess.Popen.kill = kill_win
109
- else:
110
- subprocess.Popen.kill = lambda process: kill_pid(process.pid)
111
-
112
-
113
- def hack_subprocess():
114
- """subprocess functions may throw exceptions when used in multiple threads.
115
-
116
- See http://bugs.python.org/issue1731717 for more information.
117
- """
118
- global SUBPROCESS_CLEANUP_HACKED
119
- if not SUBPROCESS_CLEANUP_HACKED and threading.activeCount() != 1:
120
- # Only hack if there is ever multiple threads.
121
- # There is no point to leak with only one thread.
122
- subprocess._cleanup = lambda: None
123
- SUBPROCESS_CLEANUP_HACKED = True
124
-
125
-
126
76
  def get_english_env(env):
127
77
  """Forces LANG and/or LANGUAGE to be English.
128
78
 
@@ -150,42 +100,6 @@ def get_english_env(env):
150
100
  return env
151
101
 
152
102
 
153
- class NagTimer(object):
154
- """
155
- Triggers a callback when a time interval passes without an event being fired.
156
-
157
- For example, the event could be receiving terminal output from a subprocess;
158
- and the callback could print a warning to stderr that the subprocess appeared
159
- to be hung.
160
- """
161
- def __init__(self, interval, cb):
162
- self.interval = interval
163
- self.cb = cb
164
- self.timer = threading.Timer(self.interval, self.fn)
165
- self.last_output = self.previous_last_output = 0
166
-
167
- def start(self):
168
- self.last_output = self.previous_last_output = time.time()
169
- self.timer.start()
170
-
171
- def event(self):
172
- self.last_output = time.time()
173
-
174
- def fn(self):
175
- now = time.time()
176
- if self.last_output == self.previous_last_output:
177
- self.cb(now - self.previous_last_output)
178
- # Use 0.1 fudge factor, just in case
179
- # (self.last_output - now) is very close to zero.
180
- sleep_time = (self.last_output - now - 0.1) % self.interval
181
- self.previous_last_output = self.last_output
182
- self.timer = threading.Timer(sleep_time + 0.1, self.fn)
183
- self.timer.start()
184
-
185
- def cancel(self):
186
- self.timer.cancel()
187
-
188
-
189
103
  class Popen(subprocess.Popen):
190
104
  """Wraps subprocess.Popen() with various workarounds.
191
105
 
@@ -208,13 +122,20 @@ class Popen(subprocess.Popen):
208
122
  popen_lock = threading.Lock()
209
123
 
210
124
  def __init__(self, args, **kwargs):
211
- # Make sure we hack subprocess if necessary.
212
- hack_subprocess()
213
- add_kill()
214
-
215
125
  env = get_english_env(kwargs.get('env'))
216
126
  if env:
217
127
  kwargs['env'] = env
128
+ if kwargs.get('env') is not None and sys.version_info.major != 2:
129
+ # Subprocess expects environment variables to be strings in Python 3.
130
+ def ensure_str(value):
131
+ if isinstance(value, bytes):
132
+ return value.decode()
133
+ return value
134
+
135
+ kwargs['env'] = {
136
+ ensure_str(k): ensure_str(v)
137
+ for k, v in kwargs['env'].items()
138
+ }
218
139
  if kwargs.get('shell') is None:
219
140
  # *Sigh*: Windows needs shell=True, or else it won't search %PATH% for
220
141
  # the executable, but shell=True makes subprocess on Linux fail when it's
@@ -232,33 +153,6 @@ class Popen(subprocess.Popen):
232
153
  tmp_str += '; cwd=%s' % kwargs['cwd']
233
154
  logging.debug(tmp_str)
234
155
 
235
- self.stdout_cb = None
236
- self.stderr_cb = None
237
- self.stdin_is_void = False
238
- self.stdout_is_void = False
239
- self.stderr_is_void = False
240
- self.cmd_str = tmp_str
241
-
242
- if kwargs.get('stdin') is VOID:
243
- kwargs['stdin'] = open(os.devnull, 'r')
244
- self.stdin_is_void = True
245
-
246
- for stream in ('stdout', 'stderr'):
247
- if kwargs.get(stream) in (VOID, os.devnull):
248
- kwargs[stream] = open(os.devnull, 'w')
249
- setattr(self, stream + '_is_void', True)
250
- if callable(kwargs.get(stream)):
251
- setattr(self, stream + '_cb', kwargs[stream])
252
- kwargs[stream] = PIPE
253
-
254
- self.start = time.time()
255
- self.timeout = None
256
- self.nag_timer = None
257
- self.nag_max = None
258
- self.shell = kwargs.get('shell', None)
259
- # Silence pylint on MacOSX
260
- self.returncode = None
261
-
262
156
  try:
263
157
  with self.popen_lock:
264
158
  super(Popen, self).__init__(args, **kwargs)
@@ -279,205 +173,25 @@ class Popen(subprocess.Popen):
279
173
  'Check that %s or %s exist and have execution permission.'
280
174
  % (str(e), kwargs.get('cwd'), args[0]))
281
175
 
282
- def _tee_threads(self, input): # pylint: disable=redefined-builtin
283
- """Does I/O for a process's pipes using threads.
284
-
285
- It's the simplest and slowest implementation. Expect very slow behavior.
286
-
287
- If there is a callback and it doesn't keep up with the calls, the timeout
288
- effectiveness will be delayed accordingly.
289
- """
290
- # Queue of either of <threadname> when done or (<threadname>, data). In
291
- # theory we would like to limit to ~64kb items to not cause large memory
292
- # usage when the callback blocks. It is not done because it slows down
293
- # processing on OSX10.6 by a factor of 2x, making it even slower than
294
- # Windows! Revisit this decision if it becomes a problem, e.g. crash
295
- # because of memory exhaustion.
296
- queue = Queue.Queue()
297
- done = threading.Event()
298
- nag = None
299
-
300
- def write_stdin():
301
- try:
302
- stdin_io = io.BytesIO(input)
303
- while True:
304
- data = stdin_io.read(1024)
305
- if data:
306
- self.stdin.write(data)
307
- else:
308
- self.stdin.close()
309
- break
310
- finally:
311
- queue.put('stdin')
312
-
313
- def _queue_pipe_read(pipe, name):
314
- """Queues characters read from a pipe into a queue."""
315
- try:
316
- while True:
317
- data = pipe.read(1)
318
- if not data:
319
- break
320
- if nag:
321
- nag.event()
322
- queue.put((name, data))
323
- finally:
324
- queue.put(name)
325
-
326
- def timeout_fn():
327
- try:
328
- done.wait(self.timeout)
329
- finally:
330
- queue.put('timeout')
331
-
332
- def wait_fn():
333
- try:
334
- self.wait()
335
- finally:
336
- queue.put('wait')
337
-
338
- # Starts up to 5 threads:
339
- # Wait for the process to quit
340
- # Read stdout
341
- # Read stderr
342
- # Write stdin
343
- # Timeout
344
- threads = {
345
- 'wait': threading.Thread(target=wait_fn),
346
- }
347
- if self.timeout is not None:
348
- threads['timeout'] = threading.Thread(target=timeout_fn)
349
- if self.stdout_cb:
350
- threads['stdout'] = threading.Thread(
351
- target=_queue_pipe_read, args=(self.stdout, 'stdout'))
352
- if self.stderr_cb:
353
- threads['stderr'] = threading.Thread(
354
- target=_queue_pipe_read, args=(self.stderr, 'stderr'))
355
- if input:
356
- threads['stdin'] = threading.Thread(target=write_stdin)
357
- elif self.stdin:
358
- # Pipe but no input, make sure it's closed.
359
- self.stdin.close()
360
- for t in threads.itervalues():
361
- t.start()
362
-
363
- if self.nag_timer:
364
- def _nag_cb(elapsed):
365
- logging.warn(' No output for %.0f seconds from command:' % elapsed)
366
- logging.warn(' %s' % self.cmd_str)
367
- if (self.nag_max and
368
- int('%.0f' % (elapsed / self.nag_timer)) >= self.nag_max):
369
- queue.put('timeout')
370
- done.set() # Must do this so that timeout thread stops waiting.
371
- nag = NagTimer(self.nag_timer, _nag_cb)
372
- nag.start()
373
-
374
- timed_out = False
375
- try:
376
- # This thread needs to be optimized for speed.
377
- while threads:
378
- item = queue.get()
379
- if item[0] == 'stdout':
380
- self.stdout_cb(item[1])
381
- elif item[0] == 'stderr':
382
- self.stderr_cb(item[1])
383
- else:
384
- # A thread terminated.
385
- if item in threads:
386
- threads[item].join()
387
- del threads[item]
388
- if item == 'wait':
389
- # Terminate the timeout thread if necessary.
390
- done.set()
391
- elif item == 'timeout' and not timed_out and self.poll() is None:
392
- logging.debug('Timed out after %.0fs: killing' % (
393
- time.time() - self.start))
394
- self.kill()
395
- timed_out = True
396
- finally:
397
- # Stop the threads.
398
- done.set()
399
- if nag:
400
- nag.cancel()
401
- if 'wait' in threads:
402
- # Accelerate things, otherwise it would hang until the child process is
403
- # done.
404
- logging.debug('Killing child because of an exception')
405
- self.kill()
406
- # Join threads.
407
- for thread in threads.itervalues():
408
- thread.join()
409
- if timed_out:
410
- self.returncode = TIMED_OUT
411
-
412
- # pylint: disable=arguments-differ,W0622
413
- def communicate(self, input=None, timeout=None, nag_timer=None,
414
- nag_max=None):
415
- """Adds timeout and callbacks support.
416
-
417
- Returns (stdout, stderr) like subprocess.Popen().communicate().
418
-
419
- - The process will be killed after |timeout| seconds and returncode set to
420
- TIMED_OUT.
421
- - If the subprocess runs for |nag_timer| seconds without producing terminal
422
- output, print a warning to stderr.
423
- """
424
- self.timeout = timeout
425
- self.nag_timer = nag_timer
426
- self.nag_max = nag_max
427
- if (not self.timeout and not self.nag_timer and
428
- not self.stdout_cb and not self.stderr_cb):
429
- return super(Popen, self).communicate(input)
430
-
431
- if self.timeout and self.shell:
432
- raise TypeError(
433
- 'Using timeout and shell simultaneously will cause a process leak '
434
- 'since the shell will be killed instead of the child process.')
435
-
436
- stdout = None
437
- stderr = None
438
- # Convert to a lambda to workaround python's deadlock.
439
- # http://docs.python.org/library/subprocess.html#subprocess.Popen.wait
440
- # When the pipe fills up, it would deadlock this process.
441
- if self.stdout and not self.stdout_cb and not self.stdout_is_void:
442
- stdout = []
443
- self.stdout_cb = stdout.append
444
- if self.stderr and not self.stderr_cb and not self.stderr_is_void:
445
- stderr = []
446
- self.stderr_cb = stderr.append
447
- self._tee_threads(input)
448
- if stdout is not None:
449
- stdout = ''.join(stdout)
450
- if stderr is not None:
451
- stderr = ''.join(stderr)
452
- return (stdout, stderr)
453
-
454
-
455
- def communicate(args, timeout=None, nag_timer=None, nag_max=None, **kwargs):
456
- """Wraps subprocess.Popen().communicate() and add timeout support.
176
+
177
+ def communicate(args, **kwargs):
178
+ """Wraps subprocess.Popen().communicate().
457
179
 
458
180
  Returns ((stdout, stderr), returncode).
459
181
 
460
- - The process will be killed after |timeout| seconds and returncode set to
461
- TIMED_OUT.
462
182
  - If the subprocess runs for |nag_timer| seconds without producing terminal
463
183
  output, print a warning to stderr.
464
184
  - Automatically passes stdin content as input so do not specify stdin=PIPE.
465
185
  """
466
- stdin = kwargs.pop('stdin', None)
467
- if stdin is not None:
468
- if isinstance(stdin, basestring):
469
- # When stdin is passed as an argument, use it as the actual input data and
470
- # set the Popen() parameter accordingly.
471
- kwargs['stdin'] = PIPE
472
- else:
473
- kwargs['stdin'] = stdin
474
- stdin = None
186
+ stdin = None
187
+ # When stdin is passed as an argument, use it as the actual input data and
188
+ # set the Popen() parameter accordingly.
189
+ if 'stdin' in kwargs and isinstance(kwargs['stdin'], basestring):
190
+ stdin = kwargs['stdin']
191
+ kwargs['stdin'] = PIPE
475
192
 
476
193
  proc = Popen(args, **kwargs)
477
- if stdin:
478
- return proc.communicate(stdin, timeout, nag_timer), proc.returncode
479
- else:
480
- return proc.communicate(None, timeout, nag_timer), proc.returncode
194
+ return proc.communicate(stdin), proc.returncode
481
195
 
482
196
 
483
197
  def call(args, **kwargs):
@@ -486,6 +200,8 @@ def call(args, **kwargs):
486
200
  Automatically convert stdout=PIPE or stderr=PIPE to VOID.
487
201
  In no case they can be returned since no code path raises
488
202
  subprocess2.CalledProcessError.
203
+
204
+ Returns exit code.
489
205
  """
490
206
  if kwargs.get('stdout') == PIPE:
491
207
  kwargs['stdout'] = VOID
@@ -520,7 +236,7 @@ def capture(args, **kwargs):
520
236
  - Discards returncode.
521
237
  - Blocks stdin by default if not specified since no output will be visible.
522
238
  """
523
- kwargs.setdefault('stdin', VOID)
239
+ kwargs.setdefault('stdin', VOID_INPUT)
524
240
 
525
241
  # Like check_output, deny the caller from using stdout arg.
526
242
  return communicate(args, stdout=PIPE, **kwargs)[0][0]
@@ -536,7 +252,7 @@ def check_output(args, **kwargs):
536
252
  - Blocks stdin by default if not specified since no output will be visible.
537
253
  - As per doc, "The stdout argument is not allowed as it is used internally."
538
254
  """
539
- kwargs.setdefault('stdin', VOID)
255
+ kwargs.setdefault('stdin', VOID_INPUT)
540
256
  if 'stdout' in kwargs:
541
257
  raise ValueError('stdout argument not allowed, it would be overridden.')
542
258
  return check_call_out(args, stdout=PIPE, **kwargs)[0]