libv8 6.7.288.46.1 → 7.3.492.27.0beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (408) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -0
  3. data/CHANGELOG.md +4 -0
  4. data/README.md +2 -0
  5. data/ext/libv8/builder.rb +6 -2
  6. data/lib/libv8/version.rb +1 -1
  7. data/vendor/depot_tools/.gitattributes +1 -0
  8. data/vendor/depot_tools/.gitignore +7 -0
  9. data/vendor/depot_tools/CROS_OWNERS +5 -0
  10. data/vendor/depot_tools/OWNERS +12 -1
  11. data/vendor/depot_tools/PRESUBMIT.py +16 -9
  12. data/vendor/depot_tools/README.md +9 -2
  13. data/vendor/depot_tools/autoninja +14 -6
  14. data/vendor/depot_tools/autoninja.bat +11 -1
  15. data/vendor/depot_tools/autoninja.py +40 -18
  16. data/vendor/depot_tools/bb +12 -0
  17. data/vendor/depot_tools/bb.bat +7 -0
  18. data/vendor/depot_tools/bootstrap/win/manifest.txt +1 -1
  19. data/vendor/depot_tools/bootstrap/win/manifest_bleeding_edge.txt +1 -1
  20. data/vendor/depot_tools/bootstrap/win/win_tools.py +2 -1
  21. data/vendor/depot_tools/buildbucket.py +57 -4
  22. data/vendor/depot_tools/cipd +157 -44
  23. data/vendor/depot_tools/cipd.bat +51 -14
  24. data/vendor/depot_tools/cipd.ps1 +104 -42
  25. data/vendor/depot_tools/cipd_client_version +1 -1
  26. data/vendor/depot_tools/cipd_client_version.digests +21 -0
  27. data/vendor/depot_tools/cipd_manifest.txt +19 -6
  28. data/vendor/depot_tools/cipd_manifest.versions +318 -0
  29. data/vendor/depot_tools/clang_format.py +4 -4
  30. data/vendor/depot_tools/cpplint.py +44 -199
  31. data/vendor/depot_tools/dart_format.py +2 -2
  32. data/vendor/depot_tools/detect_host_arch.py +8 -3
  33. data/vendor/depot_tools/download_from_google_storage.py +47 -39
  34. data/vendor/depot_tools/fetch.py +30 -18
  35. data/vendor/depot_tools/fetch_configs/android_internal.py +34 -0
  36. data/vendor/depot_tools/fetch_configs/chromium.py +18 -1
  37. data/vendor/depot_tools/fetch_configs/config_util.py +4 -2
  38. data/vendor/depot_tools/fetch_configs/inspector_protocol.py +40 -0
  39. data/vendor/depot_tools/fetch_configs/node-ci.py +41 -0
  40. data/vendor/depot_tools/fix_encoding.py +3 -3
  41. data/vendor/depot_tools/gclient +1 -1
  42. data/vendor/depot_tools/gclient.py +415 -198
  43. data/vendor/depot_tools/gclient_eval.py +220 -171
  44. data/vendor/depot_tools/gclient_paths.py +142 -0
  45. data/vendor/depot_tools/gclient_scm.py +200 -51
  46. data/vendor/depot_tools/gclient_utils.py +88 -191
  47. data/vendor/depot_tools/gerrit_client.py +13 -0
  48. data/vendor/depot_tools/gerrit_util.py +158 -23
  49. data/vendor/depot_tools/git-nav-upstream +1 -1
  50. data/vendor/depot_tools/git_cache.py +77 -24
  51. data/vendor/depot_tools/git_cl.py +705 -1099
  52. data/vendor/depot_tools/git_common.py +9 -6
  53. data/vendor/depot_tools/git_map_branches.py +19 -2
  54. data/vendor/depot_tools/git_nav_downstream.py +3 -4
  55. data/vendor/depot_tools/git_rebase_update.py +14 -0
  56. data/vendor/depot_tools/git_reparent_branch.py +8 -2
  57. data/vendor/depot_tools/gn.py +38 -3
  58. data/vendor/depot_tools/gsutil.py +8 -3
  59. data/vendor/depot_tools/gsutil.py.bat +15 -0
  60. data/vendor/depot_tools/gsutil.vpython +16 -0
  61. data/vendor/depot_tools/infra/config/OWNERS +0 -1
  62. data/vendor/depot_tools/infra/config/recipes.cfg +3 -2
  63. data/vendor/depot_tools/lucicfg +12 -0
  64. data/vendor/depot_tools/lucicfg.bat +7 -0
  65. data/vendor/depot_tools/man/html/git-map-branches.html +34 -2
  66. data/vendor/depot_tools/man/html/git-new-branch.html +40 -32
  67. data/vendor/depot_tools/man/man1/git-map-branches.1 +24 -5
  68. data/vendor/depot_tools/man/man1/git-new-branch.1 +35 -27
  69. data/vendor/depot_tools/man/src/git-map-branches.demo.1.sh +1 -0
  70. data/vendor/depot_tools/man/src/git-map-branches.txt +10 -0
  71. data/vendor/depot_tools/man/src/git-new-branch.demo.1.sh +9 -4
  72. data/vendor/depot_tools/man/src/git-new-branch.txt +1 -1
  73. data/vendor/depot_tools/metrics.README.md +98 -0
  74. data/vendor/depot_tools/metrics.py +296 -0
  75. data/vendor/depot_tools/metrics_utils.py +303 -0
  76. data/vendor/depot_tools/my_activity.py +91 -29
  77. data/vendor/depot_tools/ninja +1 -1
  78. data/vendor/depot_tools/ninjalog.README.md +64 -0
  79. data/vendor/depot_tools/ninjalog_uploader.py +232 -0
  80. data/vendor/depot_tools/ninjalog_uploader_wrapper.py +116 -0
  81. data/vendor/depot_tools/owners.py +30 -13
  82. data/vendor/depot_tools/owners_finder.py +5 -2
  83. data/vendor/depot_tools/presubmit_canned_checks.py +188 -29
  84. data/vendor/depot_tools/presubmit_support.py +18 -41
  85. data/vendor/depot_tools/pylintrc +23 -19
  86. data/vendor/depot_tools/recipes/OWNERS +2 -0
  87. data/vendor/depot_tools/recipes/README.recipes.md +344 -151
  88. data/vendor/depot_tools/recipes/recipe_modules/bot_update/OWNERS +2 -0
  89. data/vendor/depot_tools/recipes/recipe_modules/bot_update/__init__.py +2 -16
  90. data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +141 -99
  91. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic.json +5 -8
  92. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_luci.json +5 -8
  93. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_with_branch_heads.json +6 -98
  94. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/clobber.json +4 -9
  95. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/deprecated_got_revision_mapping.json +45 -5
  96. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_rebase_patch_ref.json +4 -9
  97. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_reset.json +4 -9
  98. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{tryjob.json → input_commit_with_id_without_repo.json} +6 -11
  99. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{tryjob_empty_revision.json → multiple_patch_refs.json} +8 -9
  100. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_apply_patch_on_gclient.json +19 -29
  101. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{trychange.json → refs.json} +4 -9
  102. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/reset_root_solution_revision.json +4 -9
  103. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail.json +51 -6
  104. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch.json +50 -6
  105. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch_download.json +51 -6
  106. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle.json +17 -25
  107. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_branch_heads.json +17 -25
  108. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_feature_branch.json +18 -26
  109. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8_feature_branch.json +18 -26
  110. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_webrtc.json +26 -28
  111. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8.json +45 -5
  112. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8_head_by_default.json +17 -25
  113. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/unrecognized_commit_repo.json +13 -0
  114. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_manifest_name.json +13 -152
  115. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_tags.json +4 -9
  116. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +185 -202
  117. data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/bot_update.py +52 -157
  118. data/vendor/depot_tools/recipes/recipe_modules/bot_update/test_api.py +5 -14
  119. data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/ensure_checkout.py +34 -0
  120. data/vendor/depot_tools/recipes/recipe_modules/cipd/api.py +14 -2
  121. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic.json +4 -5
  122. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic_pkg.json +4 -5
  123. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-failed.json +7 -5
  124. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-many-instances.json +4 -5
  125. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/mac64.json +4 -5
  126. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_file.json +9 -3
  127. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_mode.json +9 -3
  128. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_verfile.json +9 -3
  129. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/win64.json +4 -5
  130. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk arch.json +2 -3
  131. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk bits.json +2 -3
  132. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_32.json +2 -3
  133. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_64.json +2 -3
  134. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_32.json +2 -3
  135. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_64.json +2 -3
  136. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_mips_64.json +2 -3
  137. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/mac_intel_64.json +2 -3
  138. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_32.json +2 -3
  139. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_64.json +2 -3
  140. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/api.py +13 -8
  141. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic.json +18 -12
  142. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic_luci.json +18 -12
  143. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/win.json +18 -12
  144. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.py +3 -0
  145. data/vendor/depot_tools/recipes/recipe_modules/gclient/__init__.py +1 -0
  146. data/vendor/depot_tools/recipes/recipe_modules/gclient/api.py +58 -46
  147. data/vendor/depot_tools/recipes/recipe_modules/gclient/config.py +65 -22
  148. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/basic.json +20 -21
  149. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/buildbot.json +20 -21
  150. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/revision.json +20 -21
  151. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json +20 -21
  152. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.py +5 -2
  153. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/patch_project.py +62 -14
  154. data/vendor/depot_tools/recipes/recipe_modules/gerrit/api.py +24 -38
  155. data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.expected/basic.json +56 -50
  156. data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.py +15 -9
  157. data/vendor/depot_tools/recipes/recipe_modules/git/__init__.py +4 -1
  158. data/vendor/depot_tools/recipes/recipe_modules/git/api.py +34 -22
  159. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic.json +5 -6
  160. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_branch.json +5 -6
  161. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_file_name.json +5 -6
  162. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_hash.json +5 -6
  163. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_luci.json +222 -0
  164. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_ref.json +5 -6
  165. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_submodule_update_force.json +5 -6
  166. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_tags.json +224 -0
  167. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/can_fail_build.json +10 -6
  168. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cannot_fail_build.json +5 -7
  169. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cat-file_test.json +5 -6
  170. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_delta.json +5 -6
  171. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_failed.json +5 -7
  172. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output.json +5 -6
  173. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output_fails_build.json +10 -5
  174. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/curl_trace_file.json +5 -6
  175. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/git-cache-checkout.json +8 -9
  176. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/platform_win.json +5 -6
  177. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/rebase_failed.json +12 -8
  178. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/remote_not_origin.json +5 -6
  179. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/set_got_revision.json +5 -6
  180. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.py +27 -11
  181. data/vendor/depot_tools/recipes/recipe_modules/git_cl/api.py +1 -1
  182. data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.expected/basic.json +12 -13
  183. data/vendor/depot_tools/recipes/recipe_modules/gitiles/__init__.py +5 -0
  184. data/vendor/depot_tools/recipes/recipe_modules/gitiles/api.py +120 -5
  185. data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.expected/basic.json +45 -3
  186. data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.py +25 -0
  187. data/vendor/depot_tools/recipes/recipe_modules/gitiles/resources/gerrit_client.py +56 -4
  188. data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.expected/basic.json +6 -0
  189. data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.py +49 -0
  190. data/vendor/depot_tools/recipes/recipe_modules/gsutil/api.py +24 -13
  191. data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.expected/basic.json +13 -14
  192. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/basic.json +2 -3
  193. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_linux.json +2 -3
  194. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_mac.json +2 -3
  195. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_win.json +2 -3
  196. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_linux.json +2 -3
  197. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_mac.json +2 -3
  198. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_win.json +2 -3
  199. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_linux.json +2 -3
  200. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_mac.json +2 -3
  201. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_win.json +2 -3
  202. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/path_config.py +1 -2
  203. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/__init__.py +35 -0
  204. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/api.py +116 -0
  205. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/linux.json +22 -0
  206. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/mac.json +82 -0
  207. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/win.json +22 -0
  208. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.py +23 -0
  209. data/vendor/depot_tools/recipes/recipe_modules/presubmit/__init__.py +1 -0
  210. data/vendor/depot_tools/recipes/recipe_modules/presubmit/api.py +2 -7
  211. data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.expected/basic.json +7 -6
  212. data/vendor/depot_tools/recipes/recipe_modules/tryserver/__init__.py +1 -0
  213. data/vendor/depot_tools/recipes/recipe_modules/tryserver/api.py +117 -8
  214. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/basic_tags.json +4 -5
  215. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/set_failure_hash_with_no_steps.json +7 -4
  216. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch.json +98 -7
  217. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch_and_target_ref.json +147 -0
  218. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch.json +8 -5
  219. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch_luci.json +8 -5
  220. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch.json +9 -6
  221. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch_new.json +9 -6
  222. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.py +27 -2
  223. data/vendor/depot_tools/recipes/recipe_modules/tryserver/test_api.py +14 -0
  224. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/__init__.py +25 -0
  225. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/api.py +137 -0
  226. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/linux.json +22 -0
  227. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/mac.json +22 -0
  228. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/win.json +107 -0
  229. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.py +26 -0
  230. data/vendor/depot_tools/recipes/recipes.py +37 -27
  231. data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json +7 -10
  232. data/vendor/depot_tools/repo +34 -8
  233. data/vendor/depot_tools/roll_dep.py +52 -49
  234. data/vendor/depot_tools/scm.py +38 -23
  235. data/vendor/depot_tools/setup_color.py +4 -2
  236. data/vendor/depot_tools/split_cl.py +32 -4
  237. data/vendor/depot_tools/subprocess2.py +22 -4
  238. data/vendor/depot_tools/third_party/httplib2/README.chromium +2 -2
  239. data/vendor/depot_tools/third_party/httplib2/__init__.py +242 -158
  240. data/vendor/depot_tools/third_party/httplib2/cacerts.txt +57 -44
  241. data/vendor/depot_tools/third_party/httplib2/socks.py +15 -5
  242. data/vendor/depot_tools/third_party/logilab/README.chromium +2 -4
  243. data/vendor/depot_tools/third_party/logilab/astroid/README.chromium +2 -1
  244. data/vendor/depot_tools/third_party/logilab/astroid/__init__.py +10 -5
  245. data/vendor/depot_tools/third_party/logilab/astroid/__pkginfo__.py +5 -5
  246. data/vendor/depot_tools/third_party/logilab/astroid/arguments.py +233 -0
  247. data/vendor/depot_tools/third_party/logilab/astroid/as_string.py +82 -33
  248. data/vendor/depot_tools/third_party/logilab/astroid/bases.py +137 -153
  249. data/vendor/depot_tools/third_party/logilab/astroid/brain/{builtin_inference.py → brain_builtin_inference.py} +117 -26
  250. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_dateutil.py +15 -0
  251. data/vendor/depot_tools/third_party/logilab/astroid/brain/{py2gi.py → brain_gi.py} +48 -8
  252. data/vendor/depot_tools/third_party/logilab/astroid/brain/{py2mechanize.py → brain_mechanize.py} +0 -0
  253. data/vendor/depot_tools/third_party/logilab/astroid/brain/{pynose.py → brain_nose.py} +4 -1
  254. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_numpy.py +62 -0
  255. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_pytest.py +76 -0
  256. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_qt.py +44 -0
  257. data/vendor/depot_tools/third_party/logilab/astroid/brain/{pysix_moves.py → brain_six.py} +28 -1
  258. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_ssl.py +65 -0
  259. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_stdlib.py +473 -0
  260. data/vendor/depot_tools/third_party/logilab/astroid/builder.py +104 -81
  261. data/vendor/depot_tools/third_party/logilab/astroid/context.py +81 -0
  262. data/vendor/depot_tools/third_party/logilab/astroid/decorators.py +75 -0
  263. data/vendor/depot_tools/third_party/logilab/astroid/exceptions.py +20 -0
  264. data/vendor/depot_tools/third_party/logilab/astroid/inference.py +137 -183
  265. data/vendor/depot_tools/third_party/logilab/astroid/manager.py +45 -169
  266. data/vendor/depot_tools/third_party/logilab/astroid/mixins.py +37 -14
  267. data/vendor/depot_tools/third_party/logilab/astroid/modutils.py +112 -41
  268. data/vendor/depot_tools/third_party/logilab/astroid/node_classes.py +243 -156
  269. data/vendor/depot_tools/third_party/logilab/astroid/nodes.py +35 -22
  270. data/vendor/depot_tools/third_party/logilab/astroid/objects.py +186 -0
  271. data/vendor/depot_tools/third_party/logilab/astroid/protocols.py +157 -102
  272. data/vendor/depot_tools/third_party/logilab/astroid/raw_building.py +32 -8
  273. data/vendor/depot_tools/third_party/logilab/astroid/rebuilder.py +372 -309
  274. data/vendor/depot_tools/third_party/logilab/astroid/scoped_nodes.py +652 -420
  275. data/vendor/depot_tools/third_party/logilab/astroid/test_utils.py +4 -21
  276. data/vendor/depot_tools/third_party/logilab/astroid/transforms.py +96 -0
  277. data/vendor/depot_tools/third_party/logilab/astroid/util.py +89 -0
  278. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/LICENSE +19 -0
  279. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/README.chromium +11 -0
  280. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/__init__.py +20 -0
  281. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/cext.c +1421 -0
  282. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/compat.py +9 -0
  283. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/simple.py +246 -0
  284. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/slots.py +414 -0
  285. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/utils.py +13 -0
  286. data/vendor/depot_tools/third_party/logilab/wrapt/LICENSE +24 -0
  287. data/vendor/depot_tools/third_party/logilab/wrapt/README.chromium +11 -0
  288. data/vendor/depot_tools/third_party/logilab/wrapt/__init__.py +19 -0
  289. data/vendor/depot_tools/third_party/logilab/wrapt/_wrappers.c +2729 -0
  290. data/vendor/depot_tools/third_party/logilab/wrapt/arguments.py +96 -0
  291. data/vendor/depot_tools/third_party/logilab/wrapt/decorators.py +512 -0
  292. data/vendor/depot_tools/third_party/logilab/wrapt/importer.py +228 -0
  293. data/vendor/depot_tools/third_party/logilab/wrapt/wrappers.py +901 -0
  294. data/vendor/depot_tools/third_party/pylint/README.chromium +2 -25
  295. data/vendor/depot_tools/third_party/pylint/__pkginfo__.py +13 -3
  296. data/vendor/depot_tools/third_party/pylint/checkers/__init__.py +1 -2
  297. data/vendor/depot_tools/third_party/pylint/checkers/async.py +82 -0
  298. data/vendor/depot_tools/third_party/pylint/checkers/base.py +893 -119
  299. data/vendor/depot_tools/third_party/pylint/checkers/classes.py +342 -204
  300. data/vendor/depot_tools/third_party/pylint/checkers/design_analysis.py +51 -34
  301. data/vendor/depot_tools/third_party/pylint/checkers/exceptions.py +84 -47
  302. data/vendor/depot_tools/third_party/pylint/checkers/format.py +55 -30
  303. data/vendor/depot_tools/third_party/pylint/checkers/imports.py +314 -73
  304. data/vendor/depot_tools/third_party/pylint/checkers/logging.py +10 -8
  305. data/vendor/depot_tools/third_party/pylint/checkers/misc.py +2 -1
  306. data/vendor/depot_tools/third_party/pylint/checkers/newstyle.py +45 -48
  307. data/vendor/depot_tools/third_party/pylint/checkers/python3.py +31 -21
  308. data/vendor/depot_tools/third_party/pylint/checkers/raw_metrics.py +3 -3
  309. data/vendor/depot_tools/third_party/pylint/checkers/similar.py +4 -5
  310. data/vendor/depot_tools/third_party/pylint/checkers/spelling.py +24 -10
  311. data/vendor/depot_tools/third_party/pylint/checkers/stdlib.py +120 -56
  312. data/vendor/depot_tools/third_party/pylint/checkers/strings.py +38 -35
  313. data/vendor/depot_tools/third_party/pylint/checkers/typecheck.py +485 -138
  314. data/vendor/depot_tools/third_party/pylint/checkers/utils.py +319 -142
  315. data/vendor/depot_tools/third_party/pylint/checkers/variables.py +329 -207
  316. data/vendor/depot_tools/third_party/pylint/config.py +739 -76
  317. data/vendor/depot_tools/third_party/pylint/epylint.py +9 -5
  318. data/vendor/depot_tools/third_party/pylint/extensions/__init__.py +0 -0
  319. data/vendor/depot_tools/third_party/pylint/extensions/check_docs.py +311 -0
  320. data/vendor/depot_tools/third_party/pylint/extensions/check_elif.py +62 -0
  321. data/vendor/depot_tools/third_party/{logilab/common → pylint}/graph.py +30 -133
  322. data/vendor/depot_tools/third_party/pylint/gui.py +2 -2
  323. data/vendor/depot_tools/third_party/pylint/interfaces.py +21 -3
  324. data/vendor/depot_tools/third_party/pylint/lint.py +123 -140
  325. data/vendor/depot_tools/third_party/pylint/pyreverse/diadefslib.py +10 -13
  326. data/vendor/depot_tools/third_party/pylint/pyreverse/diagrams.py +15 -4
  327. data/vendor/depot_tools/third_party/pylint/pyreverse/inspector.py +372 -0
  328. data/vendor/depot_tools/third_party/pylint/pyreverse/main.py +30 -7
  329. data/vendor/depot_tools/third_party/pylint/pyreverse/utils.py +80 -2
  330. data/vendor/depot_tools/third_party/{logilab/common → pylint/pyreverse}/vcgutils.py +19 -37
  331. data/vendor/depot_tools/third_party/pylint/pyreverse/writer.py +3 -4
  332. data/vendor/depot_tools/third_party/pylint/reporters/__init__.py +34 -18
  333. data/vendor/depot_tools/third_party/pylint/reporters/guireporter.py +1 -1
  334. data/vendor/depot_tools/third_party/pylint/reporters/html.py +10 -3
  335. data/vendor/depot_tools/third_party/pylint/reporters/json.py +10 -4
  336. data/vendor/depot_tools/third_party/pylint/reporters/text.py +94 -3
  337. data/vendor/depot_tools/third_party/pylint/reporters/ureports/__init__.py +106 -0
  338. data/vendor/depot_tools/third_party/{logilab/common → pylint/reporters}/ureports/html_writer.py +17 -57
  339. data/vendor/depot_tools/third_party/{logilab/common → pylint/reporters}/ureports/nodes.py +52 -74
  340. data/vendor/depot_tools/third_party/{logilab/common → pylint/reporters}/ureports/text_writer.py +14 -60
  341. data/vendor/depot_tools/third_party/pylint/testutils.py +22 -20
  342. data/vendor/depot_tools/third_party/pylint/utils.py +268 -44
  343. data/vendor/depot_tools/third_party/repo/progress.py +42 -0
  344. data/vendor/depot_tools/update_depot_tools +1 -1
  345. data/vendor/depot_tools/upload_metrics.py +25 -0
  346. data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +45 -15
  347. data/vendor/depot_tools/win_toolchain/package_from_installed.py +71 -24
  348. data/vendor/depot_tools/yapf +1 -1
  349. data/vendor/depot_tools/yapf.bat +1 -1
  350. metadata +92 -77
  351. data/vendor/depot_tools/git-crsync +0 -3
  352. data/vendor/depot_tools/infra/config/cq.cfg +0 -32
  353. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/apply_gerrit_ref.json +0 -29
  354. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/apply_gerrit_ref_custom.json +0 -29
  355. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/buildbot.json +0 -105
  356. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/shallow.json +0 -195
  357. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle_deprecated.json +0 -248
  358. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8.json +0 -248
  359. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_manifest_name_no_patch.json +0 -105
  360. data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/apply_gerrit.py +0 -33
  361. data/vendor/depot_tools/third_party/logilab/astroid/brain/py2pytest.py +0 -31
  362. data/vendor/depot_tools/third_party/logilab/astroid/brain/py2qt4.py +0 -22
  363. data/vendor/depot_tools/third_party/logilab/astroid/brain/py2stdlib.py +0 -334
  364. data/vendor/depot_tools/third_party/logilab/astroid/inspector.py +0 -273
  365. data/vendor/depot_tools/third_party/logilab/astroid/utils.py +0 -239
  366. data/vendor/depot_tools/third_party/logilab/common/LICENSE.txt +0 -339
  367. data/vendor/depot_tools/third_party/logilab/common/README.chromium +0 -11
  368. data/vendor/depot_tools/third_party/logilab/common/__init__.py +0 -175
  369. data/vendor/depot_tools/third_party/logilab/common/__pkginfo__.py +0 -57
  370. data/vendor/depot_tools/third_party/logilab/common/cache.py +0 -114
  371. data/vendor/depot_tools/third_party/logilab/common/changelog.py +0 -238
  372. data/vendor/depot_tools/third_party/logilab/common/clcommands.py +0 -334
  373. data/vendor/depot_tools/third_party/logilab/common/cli.py +0 -211
  374. data/vendor/depot_tools/third_party/logilab/common/compat.py +0 -78
  375. data/vendor/depot_tools/third_party/logilab/common/configuration.py +0 -1105
  376. data/vendor/depot_tools/third_party/logilab/common/contexts.py +0 -5
  377. data/vendor/depot_tools/third_party/logilab/common/corbautils.py +0 -117
  378. data/vendor/depot_tools/third_party/logilab/common/daemon.py +0 -101
  379. data/vendor/depot_tools/third_party/logilab/common/date.py +0 -335
  380. data/vendor/depot_tools/third_party/logilab/common/dbf.py +0 -231
  381. data/vendor/depot_tools/third_party/logilab/common/debugger.py +0 -214
  382. data/vendor/depot_tools/third_party/logilab/common/decorators.py +0 -281
  383. data/vendor/depot_tools/third_party/logilab/common/deprecation.py +0 -189
  384. data/vendor/depot_tools/third_party/logilab/common/fileutils.py +0 -404
  385. data/vendor/depot_tools/third_party/logilab/common/interface.py +0 -71
  386. data/vendor/depot_tools/third_party/logilab/common/logging_ext.py +0 -195
  387. data/vendor/depot_tools/third_party/logilab/common/modutils.py +0 -702
  388. data/vendor/depot_tools/third_party/logilab/common/optik_ext.py +0 -392
  389. data/vendor/depot_tools/third_party/logilab/common/optparser.py +0 -92
  390. data/vendor/depot_tools/third_party/logilab/common/proc.py +0 -277
  391. data/vendor/depot_tools/third_party/logilab/common/pyro_ext.py +0 -180
  392. data/vendor/depot_tools/third_party/logilab/common/pytest.py +0 -1199
  393. data/vendor/depot_tools/third_party/logilab/common/registry.py +0 -1119
  394. data/vendor/depot_tools/third_party/logilab/common/shellutils.py +0 -462
  395. data/vendor/depot_tools/third_party/logilab/common/sphinx_ext.py +0 -87
  396. data/vendor/depot_tools/third_party/logilab/common/sphinxutils.py +0 -122
  397. data/vendor/depot_tools/third_party/logilab/common/table.py +0 -929
  398. data/vendor/depot_tools/third_party/logilab/common/tasksqueue.py +0 -101
  399. data/vendor/depot_tools/third_party/logilab/common/testlib.py +0 -1392
  400. data/vendor/depot_tools/third_party/logilab/common/textutils.py +0 -537
  401. data/vendor/depot_tools/third_party/logilab/common/tree.py +0 -369
  402. data/vendor/depot_tools/third_party/logilab/common/umessage.py +0 -194
  403. data/vendor/depot_tools/third_party/logilab/common/ureports/__init__.py +0 -172
  404. data/vendor/depot_tools/third_party/logilab/common/ureports/docbook_writer.py +0 -140
  405. data/vendor/depot_tools/third_party/logilab/common/urllib2ext.py +0 -89
  406. data/vendor/depot_tools/third_party/logilab/common/visitor.py +0 -109
  407. data/vendor/depot_tools/third_party/logilab/common/xmlrpcutils.py +0 -131
  408. data/vendor/depot_tools/third_party/logilab/common/xmlutils.py +0 -61
@@ -18,6 +18,27 @@ import subprocess
18
18
  import sys
19
19
 
20
20
  NEED_SHELL = sys.platform.startswith('win')
21
+ GCLIENT_PATH = os.path.join(
22
+ os.path.dirname(os.path.abspath(__file__)), 'gclient.py')
23
+
24
+
25
+ # Commit subject that will be considered a roll. In the format generated by the
26
+ # git log used, so it's "<year>-<month>-<day> <author> <subject>"
27
+ _ROLL_SUBJECT = re.compile(
28
+ # Date
29
+ r'^\d\d\d\d-\d\d-\d\d '
30
+ # Author
31
+ r'[^ ]+ '
32
+ # Subject
33
+ r'('
34
+ # Generated by
35
+ # https://skia.googlesource.com/buildbot/+/master/autoroll/go/repo_manager/deps_repo_manager.go
36
+ r'Roll [^ ]+ [a-f0-9]+\.\.[a-f0-9]+ \(\d+ commits\)'
37
+ r'|'
38
+ # Generated by
39
+ # https://chromium.googlesource.com/infra/infra/+/master/recipes/recipe_modules/recipe_autoroller/api.py
40
+ r'Roll recipe dependencies \(trivial\)\.'
41
+ r')$')
21
42
 
22
43
 
23
44
  class Error(Exception):
@@ -70,22 +91,9 @@ def should_show_log(upstream_url):
70
91
  return True
71
92
 
72
93
 
73
- def get_gclient_root():
74
- gclient = os.path.join(
75
- os.path.dirname(os.path.abspath(__file__)), 'gclient.py')
76
- return check_output([sys.executable, gclient, 'root']).strip()
77
-
78
-
79
- def get_deps(root):
80
- """Returns the path and the content of the DEPS file."""
81
- deps_path = os.path.join(root, 'DEPS')
82
- try:
83
- with open(deps_path, 'rb') as f:
84
- deps_content = f.read()
85
- except (IOError, OSError):
86
- raise Error('Ensure the script is run in the directory '
87
- 'containing DEPS file.')
88
- return deps_path, deps_content
94
+ def gclient(args):
95
+ """Executes gclient with the given args and returns the stdout."""
96
+ return check_output([sys.executable, GCLIENT_PATH] + args).strip()
89
97
 
90
98
 
91
99
  def generate_commit_message(
@@ -101,10 +109,7 @@ def generate_commit_message(
101
109
  cwd=full_dir).rstrip()
102
110
  logs = re.sub(r'(?m)^(\d\d\d\d-\d\d-\d\d [^@]+)@[^ ]+( .*)$', r'\1\2', logs)
103
111
  lines = logs.splitlines()
104
- cleaned_lines = [
105
- l for l in lines
106
- if not l.endswith('recipe-roller Roll recipe dependencies (trivial).')
107
- ]
112
+ cleaned_lines = [l for l in lines if not _ROLL_SUBJECT.match(l)]
108
113
  logs = '\n'.join(cleaned_lines) + '\n'
109
114
 
110
115
  nb_commits = len(lines)
@@ -124,17 +129,19 @@ def generate_commit_message(
124
129
  # internal -> external rollers. Please do not remove or break it.
125
130
  if not no_log and should_show_log(upstream_url):
126
131
  if len(cleaned_lines) > log_limit:
127
- # Keep the first N log entries.
128
- logs = ''.join(logs.splitlines(True)[:log_limit]) + '(...)\n'
132
+ # Keep the first N/2 log entries and last N/2 entries.
133
+ lines = logs.splitlines(True)
134
+ lines = lines[:log_limit/2] + ['(...)\n'] + lines[-log_limit/2:]
135
+ logs = ''.join(lines)
129
136
  log_section += logs
130
137
  return header + log_section
131
138
 
132
139
 
133
- def calculate_roll(full_dir, dependency, gclient_dict, roll_to):
140
+ def calculate_roll(full_dir, dependency, roll_to):
134
141
  """Calculates the roll for a dependency by processing gclient_dict, and
135
142
  fetching the dependency via git.
136
143
  """
137
- head = gclient_eval.GetRevision(gclient_dict, dependency)
144
+ head = gclient(['getdep', '-r', dependency])
138
145
  if not head:
139
146
  raise Error('%s is unpinned.' % dependency)
140
147
  check_call(['git', 'fetch', 'origin', '--quiet'], cwd=full_dir)
@@ -142,7 +149,7 @@ def calculate_roll(full_dir, dependency, gclient_dict, roll_to):
142
149
  return head, roll_to
143
150
 
144
151
 
145
- def gen_commit_msg(logs, cmdline, rolls, reviewers, bug):
152
+ def gen_commit_msg(logs, cmdline, reviewers, bug):
146
153
  """Returns the final commit message."""
147
154
  commit_msg = ''
148
155
  if len(logs) > 1:
@@ -150,25 +157,21 @@ def gen_commit_msg(logs, cmdline, rolls, reviewers, bug):
150
157
  commit_msg += '\n\n'.join(logs)
151
158
  commit_msg += '\nCreated with:\n ' + cmdline + '\n'
152
159
  commit_msg += 'R=%s\n' % ','.join(reviewers) if reviewers else ''
153
- commit_msg += 'BUG=%s\n' % bug if bug else ''
160
+ commit_msg += '\nBug: %s\n' % bug if bug else ''
154
161
  return commit_msg
155
162
 
156
163
 
157
- def finalize(commit_msg, deps_path, deps_content, rolls, is_relative, root_dir):
158
- """Edits the DEPS file, commits it, then uploads a CL."""
164
+ def finalize(commit_msg, current_dir, rolls):
165
+ """Commits changes to the DEPS file, then uploads a CL."""
159
166
  print('Commit message:')
160
167
  print('\n'.join(' ' + i for i in commit_msg.splitlines()))
161
168
 
162
- with open(deps_path, 'wb') as f:
163
- f.write(deps_content)
164
- current_dir = os.path.dirname(deps_path)
165
169
  check_call(['git', 'add', 'DEPS'], cwd=current_dir)
166
170
  check_call(['git', 'commit', '--quiet', '-m', commit_msg], cwd=current_dir)
167
171
 
168
172
  # Pull the dependency to the right revision. This is surprising to users
169
173
  # otherwise.
170
- for dependency, (_head, roll_to) in sorted(rolls.iteritems()):
171
- full_dir = os.path.normpath(os.path.join(root_dir, dependency))
174
+ for _head, roll_to, full_dir in sorted(rolls.itervalues()):
172
175
  check_call(['git', 'checkout', '--quiet', roll_to], cwd=full_dir)
173
176
 
174
177
 
@@ -213,7 +216,7 @@ def main():
213
216
  if not '@' in r:
214
217
  reviewers[i] = r + '@chromium.org'
215
218
 
216
- gclient_root = get_gclient_root()
219
+ gclient_root = gclient(['root'])
217
220
  current_dir = os.getcwd()
218
221
  dependencies = sorted(d.rstrip('/').rstrip('\\') for d in args.dep_path)
219
222
  cmdline = 'roll-dep ' + ' '.join(dependencies) + ''.join(
@@ -224,17 +227,17 @@ def main():
224
227
  'Ensure %s is clean first (no non-merged commits).' % current_dir)
225
228
  # First gather all the information without modifying anything, except for a
226
229
  # git fetch.
227
- deps_path, deps_content = get_deps(current_dir)
228
- gclient_dict = gclient_eval.Exec(deps_content, deps_path)
229
- is_relative = gclient_dict.get('use_relative_paths', False)
230
- root_dir = current_dir if is_relative else gclient_root
231
230
  rolls = {}
232
231
  for dependency in dependencies:
233
- full_dir = os.path.normpath(os.path.join(root_dir, dependency))
232
+ full_dir = os.path.normpath(os.path.join(gclient_root, dependency))
234
233
  if not os.path.isdir(full_dir):
235
- raise Error('Directory not found: %s (%s)' % (dependency, full_dir))
236
- head, roll_to = calculate_roll(
237
- full_dir, dependency, gclient_dict, args.roll_to)
234
+ print('Dependency %s not found at %s' % (dependency, full_dir))
235
+ full_dir = os.path.normpath(os.path.join(current_dir, dependency))
236
+ print('Will look for relative dependency at %s' % full_dir)
237
+ if not os.path.isdir(full_dir):
238
+ raise Error('Directory not found: %s (%s)' % (dependency, full_dir))
239
+
240
+ head, roll_to = calculate_roll(full_dir, dependency, args.roll_to)
238
241
  if roll_to == head:
239
242
  if len(dependencies) == 1:
240
243
  raise AlreadyRolledError('No revision to roll!')
@@ -242,20 +245,20 @@ def main():
242
245
  else:
243
246
  print(
244
247
  '%s: Rolling from %s to %s' % (dependency, head[:10], roll_to[:10]))
245
- rolls[dependency] = (head, roll_to)
248
+ rolls[dependency] = (head, roll_to, full_dir)
246
249
 
247
250
  logs = []
248
- for dependency, (head, roll_to) in sorted(rolls.iteritems()):
249
- full_dir = os.path.normpath(os.path.join(root_dir, dependency))
251
+ setdep_args = []
252
+ for dependency, (head, roll_to, full_dir) in sorted(rolls.iteritems()):
250
253
  log = generate_commit_message(
251
254
  full_dir, dependency, head, roll_to, args.no_log, args.log_limit)
252
255
  logs.append(log)
253
- gclient_eval.SetRevision(gclient_dict, dependency, roll_to)
256
+ setdep_args.extend(['-r', '{}@{}'.format(dependency, roll_to)])
254
257
 
255
- deps_content = gclient_eval.RenderDEPSFile(gclient_dict)
258
+ gclient(['setdep'] + setdep_args)
256
259
 
257
- commit_msg = gen_commit_msg(logs, cmdline, rolls, reviewers, args.bug)
258
- finalize(commit_msg, deps_path, deps_content, rolls, is_relative, root_dir)
260
+ commit_msg = gen_commit_msg(logs, cmdline, reviewers, args.bug)
261
+ finalize(commit_msg, current_dir, rolls)
259
262
  except Error as e:
260
263
  sys.stderr.write('error: %s\n' % e)
261
264
  return 2 if isinstance(e, AlreadyRolledError) else 1
@@ -4,8 +4,8 @@
4
4
 
5
5
  """SCM-specific utility classes."""
6
6
 
7
- import cStringIO
8
7
  import glob
8
+ import io
9
9
  import logging
10
10
  import os
11
11
  import platform
@@ -20,8 +20,9 @@ import subprocess2
20
20
 
21
21
 
22
22
  def ValidateEmail(email):
23
- return (re.match(r"^[a-zA-Z0-9._%-+]+@[a-zA-Z0-9._%-]+.[a-zA-Z]{2,6}$", email)
24
- is not None)
23
+ return (
24
+ re.match(r"^[a-zA-Z0-9._%\-+]+@[a-zA-Z0-9._%-]+.[a-zA-Z]{2,6}$", email)
25
+ is not None)
25
26
 
26
27
 
27
28
  def GetCasedPath(path):
@@ -50,7 +51,7 @@ def GenFakeDiff(filename):
50
51
  filename = filename.replace(os.sep, '/')
51
52
  nb_lines = len(file_content)
52
53
  # We need to use / since patch on unix will fail otherwise.
53
- data = cStringIO.StringIO()
54
+ data = io.StringIO()
54
55
  data.write("Index: %s\n" % filename)
55
56
  data.write('=' * 67 + '\n')
56
57
  # Note: Should we use /dev/null instead?
@@ -225,7 +226,7 @@ class GIT(object):
225
226
  return remote, upstream_branch
226
227
 
227
228
  @staticmethod
228
- def RefToRemoteRef(ref, remote=None):
229
+ def RefToRemoteRef(ref, remote):
229
230
  """Convert a checkout ref to the equivalent remote ref.
230
231
 
231
232
  Returns:
@@ -239,10 +240,24 @@ class GIT(object):
239
240
  m = re.match('^(refs/(remotes/)?)?branch-heads/', ref or '')
240
241
  if m:
241
242
  return ('refs/remotes/branch-heads/', ref.replace(m.group(0), ''))
242
- if remote:
243
- m = re.match('^((refs/)?remotes/)?%s/|(refs/)?heads/' % remote, ref or '')
244
- if m:
245
- return ('refs/remotes/%s/' % remote, ref.replace(m.group(0), ''))
243
+
244
+ m = re.match('^((refs/)?remotes/)?%s/|(refs/)?heads/' % remote, ref or '')
245
+ if m:
246
+ return ('refs/remotes/%s/' % remote, ref.replace(m.group(0), ''))
247
+
248
+ return None
249
+
250
+ @staticmethod
251
+ def RemoteRefToRef(ref, remote):
252
+ assert remote, 'A remote must be given'
253
+ if not ref or not ref.startswith('refs/'):
254
+ return None
255
+ if not ref.startswith('refs/remotes/'):
256
+ return ref
257
+ if ref.startswith('refs/remotes/branch-heads/'):
258
+ return 'refs' + ref[len('refs/remotes'):]
259
+ if ref.startswith('refs/remotes/%s/' % remote):
260
+ return 'refs/heads' + ref[len('refs/remotes/%s' % remote):]
246
261
  return None
247
262
 
248
263
  @staticmethod
@@ -255,6 +270,15 @@ class GIT(object):
255
270
  upstream_branch = ''.join(remote_ref)
256
271
  return upstream_branch
257
272
 
273
+ @staticmethod
274
+ def IsAncestor(cwd, maybe_ancestor, ref):
275
+ """Verifies if |maybe_ancestor| is an ancestor of |ref|."""
276
+ try:
277
+ GIT.Capture(['merge-base', '--is-ancestor', maybe_ancestor, ref], cwd=cwd)
278
+ return True
279
+ except subprocess2.CalledProcessError:
280
+ return False
281
+
258
282
  @staticmethod
259
283
  def GetOldContents(cwd, filename, branch=None):
260
284
  if not branch:
@@ -345,20 +369,11 @@ class GIT(object):
345
369
 
346
370
  sha_only: Fail unless rev is a sha hash.
347
371
  """
348
- # 'git rev-parse foo' where foo is *any* 40 character hex string will return
349
- # the string and return code 0. So strip one character to force 'git
350
- # rev-parse' to do a hash table look-up and returns 128 if the hash is not
351
- # present.
352
- lookup_rev = rev
353
- if re.match(r'^[0-9a-fA-F]{40}$', rev):
354
- lookup_rev = rev[:-1]
355
372
  try:
356
- sha = GIT.Capture(['rev-parse', lookup_rev], cwd=cwd).lower()
357
- if lookup_rev != rev:
358
- # Make sure we get the original 40 chars back.
359
- return rev.lower() == sha
373
+ sha = GIT.Capture(['rev-parse', '--verify', '%s^{commit}' % rev],
374
+ cwd=cwd)
360
375
  if sha_only:
361
- return sha.startswith(rev.lower())
376
+ return sha == rev.lower()
362
377
  return True
363
378
  except subprocess2.CalledProcessError:
364
379
  return False
@@ -368,9 +383,9 @@ class GIT(object):
368
383
  """Asserts git's version is at least min_version."""
369
384
  if cls.current_version is None:
370
385
  current_version = cls.Capture(['--version'], '.')
371
- matched = re.search(r'version ([0-9\.]+)', current_version)
386
+ matched = re.search(r'version ([0-9\.]+)', current_version.decode())
372
387
  cls.current_version = matched.group(1)
373
- current_version_list = map(only_int, cls.current_version.split('.'))
388
+ current_version_list = list(map(only_int, cls.current_version.split('.')))
374
389
  for min_ver in map(int, min_version.split('.')):
375
390
  ver = current_version_list.pop(0)
376
391
  if ver < min_ver:
@@ -3,6 +3,8 @@
3
3
  # Use of this source code is governed by a BSD-style license that can be
4
4
  # found in the LICENSE file.
5
5
 
6
+ from __future__ import print_function
7
+
6
8
  import os
7
9
  import sys
8
10
  from third_party import colorama
@@ -90,5 +92,5 @@ def init():
90
92
 
91
93
  if __name__ == '__main__':
92
94
  init()
93
- print 'IS_TTY:', IS_TTY
94
- print 'OUT_TYPE:', OUT_TYPE
95
+ print('IS_TTY:', IS_TTY)
96
+ print('OUT_TYPE:', OUT_TYPE)
@@ -19,6 +19,13 @@ import owners_finder
19
19
  import git_common as git
20
20
 
21
21
 
22
+ # If a call to `git cl split` will generate more than this number of CLs, the
23
+ # command will prompt the user to make sure they know what they're doing. Large
24
+ # numbers of CLs generated by `git cl split` have caused infrastructure issues
25
+ # in the past.
26
+ CL_SPLIT_FORCE_LIMIT = 10
27
+
28
+
22
29
  def ReadFile(file_path):
23
30
  """Returns the content of |file_path|."""
24
31
  with open(file_path) as f:
@@ -67,7 +74,8 @@ def AddUploadedByGitClSplitToDescription(description):
67
74
 
68
75
 
69
76
  def UploadCl(refactor_branch, refactor_branch_upstream, directory, files,
70
- description, comment, reviewers, changelist, cmd_upload):
77
+ description, comment, reviewers, changelist, cmd_upload,
78
+ cq_dry_run, enable_auto_submit):
71
79
  """Uploads a CL with all changes to |files| in |refactor_branch|.
72
80
 
73
81
  Args:
@@ -81,6 +89,8 @@ def UploadCl(refactor_branch, refactor_branch_upstream, directory, files,
81
89
  reviewers: A set of reviewers for the CL.
82
90
  changelist: The Changelist class.
83
91
  cmd_upload: The function associated with the git cl upload command.
92
+ cq_dry_run: If CL uploads should also do a cq dry run.
93
+ enable_auto_submit: If CL uploads should also enable auto submit.
84
94
  """
85
95
  # Create a branch.
86
96
  if not CreateBranchForDirectory(
@@ -107,9 +117,13 @@ def UploadCl(refactor_branch, refactor_branch_upstream, directory, files,
107
117
  os.remove(tmp_file.name)
108
118
 
109
119
  # Upload a CL.
110
- upload_args = ['-f', '--cq-dry-run', '-r', ','.join(reviewers)]
120
+ upload_args = ['-f', '-r', ','.join(reviewers)]
121
+ if cq_dry_run:
122
+ upload_args.append('--cq-dry-run')
111
123
  if not comment:
112
124
  upload_args.append('--send-mail')
125
+ if enable_auto_submit:
126
+ upload_args.append('--enable-auto-submit')
113
127
  print 'Uploading CL for ' + directory + '.'
114
128
  cmd_upload(upload_args)
115
129
  if comment:
@@ -156,7 +170,8 @@ def PrintClInfo(cl_index, num_cls, directory, file_paths, description,
156
170
  print
157
171
 
158
172
 
159
- def SplitCl(description_file, comment_file, changelist, cmd_upload, dry_run):
173
+ def SplitCl(description_file, comment_file, changelist, cmd_upload, dry_run,
174
+ cq_dry_run, enable_auto_submit):
160
175
  """"Splits a branch into smaller branches and uploads CLs.
161
176
 
162
177
  Args:
@@ -165,6 +180,8 @@ def SplitCl(description_file, comment_file, changelist, cmd_upload, dry_run):
165
180
  changelist: The Changelist class.
166
181
  cmd_upload: The function associated with the git cl upload command.
167
182
  dry_run: Whether this is a dry run (no branches or CLs created).
183
+ cq_dry_run: If CL uploads should also do a cq dry run.
184
+ enable_auto_submit: If CL uploads should also enable auto submit.
168
185
 
169
186
  Returns:
170
187
  0 in case of success. 1 in case of error.
@@ -198,6 +215,16 @@ def SplitCl(description_file, comment_file, changelist, cmd_upload, dry_run):
198
215
  num_cls = len(files_split_by_owners)
199
216
  print('Will split current branch (' + refactor_branch + ') into ' +
200
217
  str(num_cls) + ' CLs.\n')
218
+ if cq_dry_run and num_cls > CL_SPLIT_FORCE_LIMIT:
219
+ print (
220
+ 'This will generate "%r" CLs. This many CLs can potentially generate'
221
+ ' too much load on the build infrastructure. Please email'
222
+ ' infra-dev@chromium.org to ensure that this won\'t break anything.'
223
+ ' 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):')
226
+ if answer.lower() != 'y':
227
+ return 0
201
228
 
202
229
  for cl_index, (directory, files) in \
203
230
  enumerate(files_split_by_owners.iteritems(), 1):
@@ -212,7 +239,8 @@ def SplitCl(description_file, comment_file, changelist, cmd_upload, dry_run):
212
239
  reviewers)
213
240
  else:
214
241
  UploadCl(refactor_branch, refactor_branch_upstream, directory, files,
215
- description, comment, reviewers, changelist, cmd_upload)
242
+ description, comment, reviewers, changelist, cmd_upload,
243
+ cq_dry_run, enable_auto_submit)
216
244
 
217
245
  # Go back to the original branch.
218
246
  git.run('checkout', refactor_branch)
@@ -7,16 +7,34 @@
7
7
  In theory you shouldn't need anything else in subprocess, or this module failed.
8
8
  """
9
9
 
10
- import cStringIO
10
+ import codecs
11
11
  import errno
12
+ import io
12
13
  import logging
13
14
  import os
14
- import Queue
15
+
16
+ try:
17
+ import Queue
18
+ except ImportError: # For Py3 compatibility
19
+ import queue as Queue
20
+
15
21
  import subprocess
16
22
  import sys
17
23
  import time
18
24
  import threading
19
25
 
26
+ # Cache the string-escape codec to ensure subprocess can find it later.
27
+ # See crbug.com/912292#c2 for context.
28
+ if sys.version_info.major == 2:
29
+ codecs.lookup('string-escape')
30
+
31
+ # TODO(crbug.com/953884): Remove this when python3 migration is done.
32
+ try:
33
+ basestring
34
+ except NameError:
35
+ # pylint: disable=redefined-builtin
36
+ basestring = str
37
+
20
38
 
21
39
  # Constants forwarded from subprocess.
22
40
  PIPE = subprocess.PIPE
@@ -244,7 +262,7 @@ class Popen(subprocess.Popen):
244
262
  try:
245
263
  with self.popen_lock:
246
264
  super(Popen, self).__init__(args, **kwargs)
247
- except OSError, e:
265
+ except OSError as e:
248
266
  if e.errno == errno.EAGAIN and sys.platform == 'cygwin':
249
267
  # Convert fork() emulation failure into a CygwinRebaseError().
250
268
  raise CygwinRebaseError(
@@ -281,7 +299,7 @@ class Popen(subprocess.Popen):
281
299
 
282
300
  def write_stdin():
283
301
  try:
284
- stdin_io = cStringIO.StringIO(input)
302
+ stdin_io = io.BytesIO(input)
285
303
  while True:
286
304
  data = stdin_io.read(1024)
287
305
  if data: