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,11 +5,14 @@
5
5
 
6
6
  # TODO(hinoka): Use logging.
7
7
 
8
+ from __future__ import print_function
9
+
8
10
  import cStringIO
9
11
  import codecs
10
12
  from contextlib import contextmanager
11
13
  import copy
12
14
  import ctypes
15
+ from datetime import datetime
13
16
  import json
14
17
  import optparse
15
18
  import os
@@ -30,6 +33,11 @@ import os.path as path
30
33
  # How many bytes at a time to read from pipes.
31
34
  BUF_SIZE = 256
32
35
 
36
+ # How many seconds of no stdout activity before process is considered stale. Can
37
+ # be overridden via environmnet variable `STALE_PROCESS_DURATION`. If set to 0,
38
+ # process won't be terminated.
39
+ STALE_PROCESS_DURATION = 1200
40
+
33
41
  # Define a bunch of directory paths.
34
42
  # Relative to this script's filesystem path.
35
43
  THIS_DIR = path.dirname(path.abspath(__file__))
@@ -78,9 +86,6 @@ cache_dir = r%(cache_dir)s
78
86
  """
79
87
 
80
88
 
81
- # How many times to try before giving up.
82
- ATTEMPTS = 5
83
-
84
89
  GIT_CACHE_PATH = path.join(DEPOT_TOOLS_DIR, 'git_cache.py')
85
90
  GCLIENT_PATH = path.join(DEPOT_TOOLS_DIR, 'gclient.py')
86
91
 
@@ -108,17 +113,34 @@ OK = object()
108
113
  FAIL = object()
109
114
 
110
115
 
111
- class PsPrinter(object):
116
+ class ProcessObservers(object):
117
+ """ProcessObservers allows monitoring of child process."""
118
+
119
+ def poke(self):
120
+ """poke is called when child process sent `BUF_SIZE` data to stdout."""
121
+ pass
122
+
123
+ def cancel(self):
124
+ """cancel is called once proc exists successfully."""
125
+ pass
126
+
127
+
128
+ class PsPrinter(ProcessObservers):
112
129
  def __init__(self, interval=300):
113
130
  self.interval = interval
114
131
  self.active = sys.platform.startswith('linux2')
115
132
  self.thread = None
116
133
 
117
- @staticmethod
118
- def print_pstree():
134
+ def print_pstree(self):
119
135
  """Debugging function used to print "ps auxwwf" for stuck processes."""
136
+ # Add new line for cleaner output
137
+ print()
120
138
  subprocess.call(['ps', 'auxwwf'])
121
139
 
140
+ # Restart timer, we want to continue printing until the process is
141
+ # terminated.
142
+ self.poke()
143
+
122
144
  def poke(self):
123
145
  if self.active:
124
146
  self.cancel()
@@ -131,6 +153,30 @@ class PsPrinter(object):
131
153
  self.thread = None
132
154
 
133
155
 
156
+ class StaleProcess(ProcessObservers):
157
+ '''StaleProcess terminates process if there is no poke call in `interval`. '''
158
+
159
+ def __init__(self, interval, proc):
160
+ self.interval = interval
161
+ self.proc = proc
162
+ self.thread = None
163
+
164
+ def _terminate_process(self):
165
+ print('Terminating stale process...')
166
+ self.proc.terminate()
167
+
168
+ def poke(self):
169
+ self.cancel()
170
+ if self.interval > 0:
171
+ self.thread = threading.Timer(self.interval, self._terminate_process)
172
+ self.thread.start()
173
+
174
+ def cancel(self):
175
+ if self.thread is not None:
176
+ self.thread.cancel()
177
+ self.thread = None
178
+
179
+
134
180
  def call(*args, **kwargs): # pragma: no cover
135
181
  """Interactive subprocess call."""
136
182
  kwargs['stdout'] = subprocess.PIPE
@@ -147,22 +193,25 @@ def call(*args, **kwargs): # pragma: no cover
147
193
  kwargs['env'] = env
148
194
 
149
195
  if new_env:
150
- print '===Injecting Environment Variables==='
196
+ print('===Injecting Environment Variables===')
151
197
  for k, v in sorted(new_env.items()):
152
- print '%s: %s' % (k, v)
153
- print '===Running %s ===' % (' '.join(args),)
154
- print 'In directory: %s' % cwd
198
+ print('%s: %s' % (k, v))
199
+ print('%s ===Running %s ===' % (datetime.now(), ' '.join(args),))
200
+ print('In directory: %s' % cwd)
155
201
  start_time = time.time()
156
202
  proc = subprocess.Popen(args, **kwargs)
157
203
  if stdin_data:
158
204
  proc.stdin.write(stdin_data)
159
205
  proc.stdin.close()
160
- psprinter = PsPrinter()
206
+ stale_process_duration = env.get('STALE_PROCESS_DURATION',
207
+ STALE_PROCESS_DURATION)
208
+ observers = [PsPrinter(), StaleProcess(int(stale_process_duration), proc)]
161
209
  # This is here because passing 'sys.stdout' into stdout for proc will
162
210
  # produce out of order output.
163
211
  hanging_cr = False
164
212
  while True:
165
- psprinter.poke()
213
+ for observer in observers:
214
+ observer.poke()
166
215
  buf = proc.stdout.read(BUF_SIZE)
167
216
  if not buf:
168
217
  break
@@ -177,20 +226,23 @@ def call(*args, **kwargs): # pragma: no cover
177
226
  if hanging_cr:
178
227
  sys.stdout.write('\n')
179
228
  out.write('\n')
180
- psprinter.cancel()
229
+ for observer in observers:
230
+ observer.cancel()
181
231
 
182
232
  code = proc.wait()
183
233
  elapsed_time = ((time.time() - start_time) / 60.0)
184
234
  outval = out.getvalue()
185
235
  if code:
186
- print '===Failed in %.1f mins of %s ===' % (elapsed_time, ' '.join(args))
187
- print
236
+ print('%s ===Failed in %.1f mins of %s ===' %
237
+ (datetime.now(), elapsed_time, ' '.join(args)))
238
+ print()
188
239
  raise SubprocessFailed('%s failed with code %d in %s.' %
189
240
  (' '.join(args), code, cwd),
190
241
  code, outval)
191
242
 
192
- print '===Succeeded in %.1f mins of %s ===' % (elapsed_time, ' '.join(args))
193
- print
243
+ print('%s ===Succeeded in %.1f mins of %s ===' %
244
+ (datetime.now(), elapsed_time, ' '.join(args)))
245
+ print()
194
246
  return outval
195
247
 
196
248
 
@@ -222,36 +274,36 @@ def get_gclient_spec(solutions, target_os, target_os_only, target_cpu,
222
274
 
223
275
  def solutions_printer(solutions):
224
276
  """Prints gclient solution to stdout."""
225
- print 'Gclient Solutions'
226
- print '================='
277
+ print('Gclient Solutions')
278
+ print('=================')
227
279
  for solution in solutions:
228
280
  name = solution.get('name')
229
281
  url = solution.get('url')
230
- print '%s (%s)' % (name, url)
282
+ print('%s (%s)' % (name, url))
231
283
  if solution.get('deps_file'):
232
- print ' Dependencies file is %s' % solution['deps_file']
284
+ print(' Dependencies file is %s' % solution['deps_file'])
233
285
  if 'managed' in solution:
234
- print ' Managed mode is %s' % ('ON' if solution['managed'] else 'OFF')
286
+ print(' Managed mode is %s' % ('ON' if solution['managed'] else 'OFF'))
235
287
  custom_vars = solution.get('custom_vars')
236
288
  if custom_vars:
237
- print ' Custom Variables:'
238
- for var_name, var_value in sorted(custom_vars.iteritems()):
239
- print ' %s = %s' % (var_name, var_value)
289
+ print(' Custom Variables:')
290
+ for var_name, var_value in sorted(custom_vars.items()):
291
+ print(' %s = %s' % (var_name, var_value))
240
292
  custom_deps = solution.get('custom_deps')
241
293
  if 'custom_deps' in solution:
242
- print ' Custom Dependencies:'
243
- for deps_name, deps_value in sorted(custom_deps.iteritems()):
294
+ print(' Custom Dependencies:')
295
+ for deps_name, deps_value in sorted(custom_deps.items()):
244
296
  if deps_value:
245
- print ' %s -> %s' % (deps_name, deps_value)
297
+ print(' %s -> %s' % (deps_name, deps_value))
246
298
  else:
247
- print ' %s: Ignore' % deps_name
248
- for k, v in solution.iteritems():
299
+ print(' %s: Ignore' % deps_name)
300
+ for k, v in solution.items():
249
301
  # Print out all the keys we don't know about.
250
302
  if k in ['name', 'url', 'deps_file', 'custom_vars', 'custom_deps',
251
303
  'managed']:
252
304
  continue
253
- print ' %s is %s' % (k, v)
254
- print
305
+ print(' %s is %s' % (k, v))
306
+ print()
255
307
 
256
308
 
257
309
  def modify_solutions(input_solutions):
@@ -270,8 +322,8 @@ def modify_solutions(input_solutions):
270
322
  # We don't want gclient to be using a safesync URL. Instead it should
271
323
  # using the lkgr/lkcr branch/tags.
272
324
  if 'safesync_url' in solution:
273
- print 'Removing safesync url %s from %s' % (solution['safesync_url'],
274
- parsed_path)
325
+ print('Removing safesync url %s from %s' % (solution['safesync_url'],
326
+ parsed_path))
275
327
  del solution['safesync_url']
276
328
 
277
329
  return solutions
@@ -283,11 +335,11 @@ def remove(target, cleanup_dir):
283
335
  os.makedirs(cleanup_dir)
284
336
  dest = path.join(cleanup_dir, '%s_%s' % (
285
337
  path.basename(target), uuid.uuid4().hex))
286
- print 'Marking for removal %s => %s' % (target, dest)
338
+ print('Marking for removal %s => %s' % (target, dest))
287
339
  try:
288
340
  os.rename(target, dest)
289
341
  except Exception as e:
290
- print 'Error renaming %s to %s: %s' % (target, dest, str(e))
342
+ print('Error renaming %s to %s: %s' % (target, dest, str(e)))
291
343
  raise
292
344
 
293
345
 
@@ -299,9 +351,9 @@ def ensure_no_checkout(dir_names, cleanup_dir):
299
351
  if has_checkout:
300
352
  for filename in os.listdir(build_dir):
301
353
  deletion_target = path.join(build_dir, filename)
302
- print '.git detected in checkout, deleting %s...' % deletion_target,
354
+ print('.git detected in checkout, deleting %s...' % deletion_target,)
303
355
  remove(deletion_target, cleanup_dir)
304
- print 'done'
356
+ print('done')
305
357
 
306
358
 
307
359
  def call_gclient(*args, **kwargs):
@@ -313,6 +365,8 @@ def call_gclient(*args, **kwargs):
313
365
  """
314
366
  cmd = [sys.executable, '-u', GCLIENT_PATH]
315
367
  cmd.extend(args)
368
+ # Disable metrics collection on bots, since it's not supported anyway.
369
+ kwargs.setdefault('env', {})['DEPOT_TOOLS_METRICS'] = '0'
316
370
  return call(*cmd, **kwargs)
317
371
 
318
372
 
@@ -361,7 +415,7 @@ def gclient_sync(
361
415
  args += ['--break_repo_locks']
362
416
  if disable_syntax_validation:
363
417
  args += ['--disable-syntax-validation']
364
- for name, revision in sorted(revisions.iteritems()):
418
+ for name, revision in sorted(revisions.items()):
365
419
  if revision.upper() == 'HEAD':
366
420
  revision = 'origin/master'
367
421
  args.extend(['--revision', '%s@%s' % (name, revision)])
@@ -430,13 +484,13 @@ def create_manifest_old():
430
484
  'revision': match.group(3),
431
485
  }
432
486
  else:
433
- print "WARNING: Couldn't match revinfo line:\n%s" % line
487
+ print("WARNING: Couldn't match revinfo line:\n%s" % line)
434
488
  return manifest
435
489
 
436
490
 
437
491
  # TODO(hinoka): Include patch revision.
438
492
  def create_manifest(gclient_output, patch_root):
439
- """Return the JSONPB equivilent of the source manifest proto.
493
+ """Return the JSONPB equivalent of the source manifest proto.
440
494
 
441
495
  The source manifest proto is defined here:
442
496
  https://chromium.googlesource.com/infra/luci/recipes-py/+/master/recipe_engine/source_manifest.proto
@@ -454,7 +508,7 @@ def create_manifest(gclient_output, patch_root):
454
508
  dirs = {}
455
509
  if patch_root:
456
510
  patch_root = patch_root.strip('/') # Normalize directory names.
457
- for directory, info in gclient_output.get('solutions', {}).iteritems():
511
+ for directory, info in gclient_output.get('solutions', {}).items():
458
512
  directory = directory.strip('/') # Normalize the directory name.
459
513
  # The format of the url is "https://repo.url/blah.git@abcdefabcdef" or
460
514
  # just "https://repo.url/blah.git"
@@ -615,11 +669,11 @@ def _maybe_break_locks(checkout_path, tries=3):
615
669
  for filename in filenames:
616
670
  if filename.endswith('.lock'):
617
671
  to_break = os.path.join(dirpath, filename)
618
- print 'breaking lock: %s' % to_break
672
+ print('breaking lock: %s' % to_break)
619
673
  try:
620
674
  os.remove(to_break)
621
675
  except OSError as ex:
622
- print 'FAILED to break lock: %s: %s' % (to_break, ex)
676
+ print('FAILED to break lock: %s: %s' % (to_break, ex))
623
677
  raise
624
678
 
625
679
  for _ in xrange(tries):
@@ -631,12 +685,14 @@ def _maybe_break_locks(checkout_path, tries=3):
631
685
 
632
686
 
633
687
 
634
- def git_checkouts(solutions, revisions, refs, git_cache_dir, cleanup_dir):
688
+ def git_checkouts(solutions, revisions, refs, no_fetch_tags, git_cache_dir,
689
+ cleanup_dir):
635
690
  build_dir = os.getcwd()
636
691
  first_solution = True
637
692
  for sln in solutions:
638
693
  sln_dir = path.join(build_dir, sln['name'])
639
- _git_checkout(sln, sln_dir, revisions, refs, git_cache_dir, cleanup_dir)
694
+ _git_checkout(sln, sln_dir, revisions, refs, no_fetch_tags, git_cache_dir,
695
+ cleanup_dir)
640
696
  if first_solution:
641
697
  git_ref = git('log', '--format=%H', '--max-count=1',
642
698
  cwd=path.join(build_dir, sln['name'])
@@ -645,11 +701,14 @@ def git_checkouts(solutions, revisions, refs, git_cache_dir, cleanup_dir):
645
701
  return git_ref
646
702
 
647
703
 
648
- def _git_checkout(sln, sln_dir, revisions, refs, git_cache_dir, cleanup_dir):
704
+ def _git_checkout(sln, sln_dir, revisions, refs, no_fetch_tags, git_cache_dir,
705
+ cleanup_dir):
649
706
  name = sln['name']
650
707
  url = sln['url']
651
708
  populate_cmd = (['cache', 'populate', '--ignore_locks', '-v',
652
709
  '--cache-dir', git_cache_dir, url, '--reset-fetch-config'])
710
+ if no_fetch_tags:
711
+ populate_cmd.extend(['--no-fetch-tags'])
653
712
  for ref in refs:
654
713
  populate_cmd.extend(['--ref', ref])
655
714
 
@@ -686,14 +745,14 @@ def _git_checkout(sln, sln_dir, revisions, refs, git_cache_dir, cleanup_dir):
686
745
  # Only kick in deadline after second attempt to ensure we retry at least
687
746
  # once after initial fetch from not-yet-replicated server.
688
747
  if attempt >= 2 and overrun > 0:
689
- print 'Ran %s seconds past deadline. Aborting.' % (overrun,)
748
+ print('Ran %s seconds past deadline. Aborting.' % (overrun,))
690
749
  # TODO(tandrii): raise exception immediately here, instead of doing
691
750
  # useless step 2 trying to fetch something that we know doesn't exist
692
751
  # in cache **after production data gives us confidence to do so**.
693
752
  break
694
753
 
695
754
  sleep_secs = min(60, 2**attempt)
696
- print 'waiting %s seconds and trying to fetch again...' % sleep_secs
755
+ print('waiting %s seconds and trying to fetch again...' % sleep_secs)
697
756
  time.sleep(sleep_secs)
698
757
 
699
758
  # Step 2: populate a checkout from local cache. All operations are local.
@@ -705,13 +764,15 @@ def _git_checkout(sln, sln_dir, revisions, refs, git_cache_dir, cleanup_dir):
705
764
  # If repo deletion was aborted midway, it may have left .git in broken
706
765
  # state.
707
766
  if path.exists(sln_dir) and is_broken_repo_dir(sln_dir):
708
- print 'Git repo %s appears to be broken, removing it' % sln_dir
767
+ print('Git repo %s appears to be broken, removing it' % sln_dir)
709
768
  remove(sln_dir, cleanup_dir)
710
769
 
711
770
  # Use "tries=1", since we retry manually in this loop.
712
771
  if not path.isdir(sln_dir):
713
772
  git('clone', '--no-checkout', '--local', '--shared', mirror_dir,
714
773
  sln_dir)
774
+ # Detach HEAD to be consistent with the non-clone case
775
+ git('checkout', 'master', '--detach', cwd=sln_dir)
715
776
  _git_disable_gc(sln_dir)
716
777
  else:
717
778
  _git_disable_gc(sln_dir)
@@ -732,8 +793,8 @@ def _git_checkout(sln, sln_dir, revisions, refs, git_cache_dir, cleanup_dir):
732
793
  git('clean', '-dff', cwd=sln_dir)
733
794
  return
734
795
  except SubprocessFailed as e:
735
- # Exited abnormally, theres probably something wrong.
736
- print 'Something failed: %s.' % str(e)
796
+ # Exited abnormally, there's probably something wrong.
797
+ print('Something failed: %s.' % str(e))
737
798
  if first_try:
738
799
  first_try = False
739
800
  # Lets wipe the checkout and try again.
@@ -747,16 +808,6 @@ def _git_disable_gc(cwd):
747
808
  git('config', 'gc.autopacklimit', '0', cwd=cwd)
748
809
 
749
810
 
750
- def _download(url):
751
- """Fetch url and return content, with retries for flake."""
752
- for attempt in xrange(ATTEMPTS):
753
- try:
754
- return urllib2.urlopen(url).read()
755
- except Exception:
756
- if attempt == ATTEMPTS - 1:
757
- raise
758
-
759
-
760
811
  def get_commit_position(git_path, revision='HEAD'):
761
812
  """Dumps the 'git' log for a specific revision and parses out the commit
762
813
  position.
@@ -781,9 +832,9 @@ def parse_got_revision(gclient_output, got_revision_mapping):
781
832
  solutions_output = {
782
833
  # Make sure path always ends with a single slash.
783
834
  '%s/' % path.rstrip('/') : solution_output for path, solution_output
784
- in gclient_output['solutions'].iteritems()
835
+ in gclient_output['solutions'].items()
785
836
  }
786
- for property_name, dir_name in got_revision_mapping.iteritems():
837
+ for property_name, dir_name in got_revision_mapping.items():
787
838
  # Make sure dir_name always ends with a single slash.
788
839
  dir_name = '%s/' % dir_name.rstrip('/')
789
840
  if dir_name not in solutions_output:
@@ -816,15 +867,16 @@ def emit_json(out_file, did_run, gclient_output=None, **kwargs):
816
867
 
817
868
 
818
869
  def ensure_checkout(solutions, revisions, first_sln, target_os, target_os_only,
819
- target_cpu, patch_root, patch_refs,
820
- gerrit_rebase_patch_ref, refs, git_cache_dir,
821
- cleanup_dir, gerrit_reset, disable_syntax_validation):
870
+ target_cpu, patch_root, patch_refs, gerrit_rebase_patch_ref,
871
+ no_fetch_tags, refs, git_cache_dir, cleanup_dir,
872
+ gerrit_reset, disable_syntax_validation):
822
873
  # Get a checkout of each solution, without DEPS or hooks.
823
874
  # Calling git directly because there is no way to run Gclient without
824
875
  # invoking DEPS.
825
- print 'Fetching Git checkout'
876
+ print('Fetching Git checkout')
826
877
 
827
- git_checkouts(solutions, revisions, refs, git_cache_dir, cleanup_dir)
878
+ git_checkouts(solutions, revisions, refs, no_fetch_tags, git_cache_dir,
879
+ cleanup_dir)
828
880
 
829
881
  # Ensure our build/ directory is set up with the correct .gclient file.
830
882
  gclient_configure(solutions, target_os, target_os_only, target_cpu,
@@ -836,7 +888,7 @@ def ensure_checkout(solutions, revisions, first_sln, target_os, target_os_only,
836
888
  # We want to pass all non-solution revisions into the gclient sync call.
837
889
  solution_dirs = {sln['name'] for sln in solutions}
838
890
  gc_revisions = {
839
- dirname: rev for dirname, rev in revisions.iteritems()
891
+ dirname: rev for dirname, rev in revisions.items()
840
892
  if dirname not in solution_dirs}
841
893
  # Gclient sometimes ignores "unmanaged": "False" in the gclient solution
842
894
  # if --revision <anything> is passed (for example, for subrepos).
@@ -844,20 +896,20 @@ def ensure_checkout(solutions, revisions, first_sln, target_os, target_os_only,
844
896
  for solution_name in list(solution_dirs):
845
897
  gc_revisions[solution_name] = 'unmanaged'
846
898
 
847
- with git_config_if_not_set('user.name', 'chrome-bot'):
848
- with git_config_if_not_set('user.email', 'chrome-bot@chromium.org'):
849
- # Let gclient do the DEPS syncing.
850
- # The branch-head refspec is a special case because its possible Chrome
851
- # src, which contains the branch-head refspecs, is DEPSed in.
852
- gclient_output = gclient_sync(
853
- BRANCH_HEADS_REFSPEC in refs,
854
- TAGS_REFSPEC in refs,
855
- gc_revisions,
856
- break_repo_locks,
857
- disable_syntax_validation,
858
- patch_refs,
859
- gerrit_reset,
860
- gerrit_rebase_patch_ref)
899
+ with git_config_if_not_set('user.name', 'chrome-bot'), \
900
+ git_config_if_not_set('user.email', 'chrome-bot@chromium.org'):
901
+ # Let gclient do the DEPS syncing.
902
+ # The branch-head refspec is a special case because it's possible Chrome
903
+ # src, which contains the branch-head refspecs, is DEPSed in.
904
+ gclient_output = gclient_sync(
905
+ BRANCH_HEADS_REFSPEC in refs,
906
+ TAGS_REFSPEC in refs,
907
+ gc_revisions,
908
+ break_repo_locks,
909
+ disable_syntax_validation,
910
+ patch_refs,
911
+ gerrit_reset,
912
+ gerrit_rebase_patch_ref)
861
913
 
862
914
  # Now that gclient_sync has finished, we should revert any .DEPS.git so that
863
915
  # presubmit doesn't complain about it being modified.
@@ -901,7 +953,7 @@ def parse_revisions(revisions, root):
901
953
  if not normalized_root.endswith('.git'):
902
954
  normalized_root += '.git'
903
955
  elif parsed_root.scheme:
904
- print 'WARNING: Unrecognized scheme %s, ignoring' % parsed_root.scheme
956
+ print('WARNING: Unrecognized scheme %s, ignoring' % parsed_root.scheme)
905
957
  continue
906
958
  else:
907
959
  # This is probably a local path.
@@ -934,6 +986,12 @@ def parse_args():
934
986
  'Can prepend root@<rev> to specify which repository, '
935
987
  'where root is either a filesystem path or git https '
936
988
  'url. To specify Tip of Tree, set rev to HEAD. ')
989
+ parse.add_option(
990
+ '--no_fetch_tags',
991
+ action='store_true',
992
+ help=('Don\'t fetch tags from the server for the git checkout. '
993
+ 'This can speed up fetch considerably when '
994
+ 'there are many tags.'))
937
995
  # TODO(machenbach): Remove the flag when all uses have been removed.
938
996
  parse.add_option('--output_manifest', action='store_true',
939
997
  help=('Deprecated.'))
@@ -990,10 +1048,9 @@ def parse_args():
990
1048
  with open(options.revision_mapping_file, 'r') as f:
991
1049
  options.revision_mapping = json.load(f)
992
1050
  except Exception as e:
993
- print (
994
- 'WARNING: Caught execption while parsing revision_mapping*: %s'
995
- % (str(e),)
996
- )
1051
+ print(
1052
+ 'WARNING: Caught exception while parsing revision_mapping*: %s'
1053
+ % (str(e),))
997
1054
 
998
1055
  # Because we print CACHE_DIR out into a .gclient file, and then later run
999
1056
  # eval() on it, backslashes need to be escaped, otherwise "E:\b\build" gets
@@ -1024,26 +1081,36 @@ def prepare(options, git_slns, active):
1024
1081
  first_sln = dir_names[0]
1025
1082
 
1026
1083
  # Split all the revision specifications into a nice dict.
1027
- print 'Revisions: %s' % options.revision
1084
+ print('Revisions: %s' % options.revision)
1028
1085
  revisions = parse_revisions(options.revision, first_sln)
1029
- print 'Fetching Git checkout at %s@%s' % (first_sln, revisions[first_sln])
1086
+ print('Fetching Git checkout at %s@%s' % (first_sln, revisions[first_sln]))
1030
1087
  return revisions, step_text
1031
1088
 
1032
1089
 
1033
1090
  def checkout(options, git_slns, specs, revisions, step_text):
1034
- print 'Using Python version: %s' % (sys.version,)
1035
- print 'Checking git version...'
1091
+ print('Using Python version: %s' % (sys.version,))
1092
+ print('Checking git version...')
1036
1093
  ver = git('version').strip()
1037
- print 'Using %s' % ver
1094
+ print('Using %s' % ver)
1038
1095
 
1039
1096
  try:
1040
1097
  protocol = git('config', '--get', 'protocol.version')
1041
- print 'Using git protocol version %s' % protocol
1098
+ print('Using git protocol version %s' % protocol)
1042
1099
  except SubprocessFailed as e:
1043
- print 'git protocol version is not specified.'
1100
+ print('git protocol version is not specified.')
1044
1101
 
1045
1102
  first_sln = git_slns[0]['name']
1046
1103
  dir_names = [sln.get('name') for sln in git_slns if 'name' in sln]
1104
+ dirty_path = '.dirty_bot_checkout'
1105
+ if os.path.exists(dirty_path):
1106
+ ensure_no_checkout(dir_names, options.cleanup_dir)
1107
+
1108
+ with open(dirty_path, 'w') as f:
1109
+ # create file, no content
1110
+ pass
1111
+
1112
+ should_delete_dirty_file = False
1113
+
1047
1114
  try:
1048
1115
  # Outer try is for catching patch failures and exiting gracefully.
1049
1116
  # Inner try is for catching gclient failures and retrying gracefully.
@@ -1066,6 +1133,9 @@ def checkout(options, git_slns, specs, revisions, step_text):
1066
1133
  patch_refs=options.patch_refs,
1067
1134
  gerrit_rebase_patch_ref=not options.gerrit_no_rebase_patch_ref,
1068
1135
 
1136
+ # Control how the fetch step will occur.
1137
+ no_fetch_tags=options.no_fetch_tags,
1138
+
1069
1139
  # Finally, extra configurations cleanup dir location.
1070
1140
  refs=options.refs,
1071
1141
  git_cache_dir=options.git_cache_dir,
@@ -1073,10 +1143,12 @@ def checkout(options, git_slns, specs, revisions, step_text):
1073
1143
  gerrit_reset=not options.gerrit_no_reset,
1074
1144
  disable_syntax_validation=options.disable_syntax_validation)
1075
1145
  gclient_output = ensure_checkout(**checkout_parameters)
1146
+ should_delete_dirty_file = True
1076
1147
  except GclientSyncFailed:
1077
- print 'We failed gclient sync, lets delete the checkout and retry.'
1148
+ print('We failed gclient sync, lets delete the checkout and retry.')
1078
1149
  ensure_no_checkout(dir_names, options.cleanup_dir)
1079
1150
  gclient_output = ensure_checkout(**checkout_parameters)
1151
+ should_delete_dirty_file = True
1080
1152
  except PatchFailed as e:
1081
1153
  # Tell recipes information such as root, got_revision, etc.
1082
1154
  emit_json(options.output_json,
@@ -1088,7 +1160,15 @@ def checkout(options, git_slns, specs, revisions, step_text):
1088
1160
  failed_patch_body=e.output,
1089
1161
  step_text='%s PATCH FAILED' % step_text,
1090
1162
  fixed_revisions=revisions)
1163
+ should_delete_dirty_file = True
1091
1164
  raise
1165
+ finally:
1166
+ if should_delete_dirty_file:
1167
+ try:
1168
+ os.remove(dirty_path)
1169
+ except OSError:
1170
+ print('Dirty file %s has been removed by a different process.' %
1171
+ dirty_path)
1092
1172
 
1093
1173
  # Take care of got_revisions outputs.
1094
1174
  revision_mapping = GOT_REVISION_MAPPINGS.get(git_slns[0]['url'], {})
@@ -1124,14 +1204,14 @@ def checkout(options, git_slns, specs, revisions, step_text):
1124
1204
 
1125
1205
 
1126
1206
  def print_debug_info():
1127
- print "Debugging info:"
1207
+ print("Debugging info:")
1128
1208
  debug_params = {
1129
1209
  'CURRENT_DIR': path.abspath(os.getcwd()),
1130
1210
  'THIS_DIR': THIS_DIR,
1131
1211
  'DEPOT_TOOLS_DIR': DEPOT_TOOLS_DIR,
1132
1212
  }
1133
- for k, v in sorted(debug_params.iteritems()):
1134
- print "%s: %r" % (k, v)
1213
+ for k, v in sorted(debug_params.items()):
1214
+ print("%s: %r" % (k, v))
1135
1215
 
1136
1216
 
1137
1217
  def main():
@@ -1141,7 +1221,7 @@ def main():
1141
1221
  # Check if this script should activate or not.
1142
1222
  active = True
1143
1223
 
1144
- # Print a helpful message to tell developers whats going on with this step.
1224
+ # Print a helpful message to tell developers what's going on with this step.
1145
1225
  print_debug_info()
1146
1226
 
1147
1227
  # Parse, manipulate, and print the gclient solutions.
@@ -1152,21 +1232,14 @@ def main():
1152
1232
 
1153
1233
  solutions_printer(git_slns)
1154
1234
 
1155
- # Creating hardlinks during a build can interact with git reset in
1156
- # unfortunate ways if git's index isn't refreshed beforehand. (See
1157
- # crbug.com/330461#c13 for an explanation.)
1158
- try:
1159
- call_gclient('recurse', '-v', 'git', 'update-index', '--refresh')
1160
- except SubprocessFailed:
1161
- # Failure here (and nowhere else) may have adverse effects on the
1162
- # compile time of the build but shouldn't affect its ability to
1163
- # successfully complete.
1164
- print 'WARNING: Failed to update git indices.'
1165
-
1166
1235
  try:
1167
1236
  # Dun dun dun, the main part of bot_update.
1168
- revisions, step_text = prepare(options, git_slns, active)
1169
- checkout(options, git_slns, specs, revisions, step_text)
1237
+ # gn creates hardlinks during the build. By default, this makes
1238
+ # `git reset` overwrite the sources of the hardlinks, which causes
1239
+ # unnecessary rebuilds. (See crbug.com/330461#c13 for an explanation.)
1240
+ with git_config_if_not_set('core.trustctime', 'false'):
1241
+ revisions, step_text = prepare(options, git_slns, active)
1242
+ checkout(options, git_slns, specs, revisions, step_text)
1170
1243
 
1171
1244
  except PatchFailed as e:
1172
1245
  # Return a specific non-zero exit code for patch failure (because it is