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
@@ -1,4 +0,0 @@
1
- DEPS = [
2
- 'recipe_engine/path',
3
- 'recipe_engine/properties',
4
- ]
@@ -1,29 +0,0 @@
1
- # Copyright 2016 The Chromium Authors. All rights reserved.
2
- # Use of this source code is governed by a BSD-style license that can be
3
- # found in the LICENSE file.
4
-
5
- from recipe_engine import recipe_api
6
-
7
-
8
- class InfraPathsApi(recipe_api.RecipeApi):
9
- """infra_paths module is glue for design mistakes. It will be removed."""
10
-
11
- def initialize(self):
12
- path_config = self.m.properties.get('path_config')
13
- if path_config:
14
- # TODO(phajdan.jr): remove dupes from the engine and delete infra_ prefix.
15
- self.m.path.set_config('infra_' + path_config)
16
-
17
- @property
18
- def default_git_cache_dir(self):
19
- """Returns the location of the default git cache directory.
20
-
21
- This property should be used instead of using path['git_cache'] directly.
22
-
23
- It returns git_cache path if it is defined (Buildbot world), otherwise
24
- uses the more generic [CACHE]/git path (LUCI world).
25
- """
26
- try:
27
- return self.m.path['git_cache']
28
- except KeyError:
29
- return self.m.path['cache'].join('git')
@@ -1,15 +0,0 @@
1
- [
2
- {
3
- "cmd": [],
4
- "name": "show paths",
5
- "~followup_annotations": [
6
- "@@@STEP_LOG_LINE@result@base_paths: {'start_dir': ('/', 'b', 'FakeTestingCWD'), 'cleanup': ('/', 'b', 'cleanup'), 'cache': ('/', 'b', 'c'), 'tmp_base': ('/',)}@@@",
7
- "@@@STEP_LOG_LINE@result@default_git_cache_dir: Path('cache', 'git')@@@",
8
- "@@@STEP_LOG_END@result@@@"
9
- ]
10
- },
11
- {
12
- "jsonResult": null,
13
- "name": "$result"
14
- }
15
- ]
@@ -1,15 +0,0 @@
1
- [
2
- {
3
- "cmd": [],
4
- "name": "show paths",
5
- "~followup_annotations": [
6
- "@@@STEP_LOG_LINE@result@base_paths: {'depot_tools': ('depot_tools',), 'build_internal': ('build_internal',), 'cache': ('build', 'slave', 'cache'), 'goma_cache': ('build', 'slave', 'goma_cache'), 'start_dir': ('/', 'b', 'FakeTestingCWD'), 'cleanup': ('/', 'b', 'build.dead'), 'build': ('build',), 'git_cache': ('build', 'slave', 'cache_dir'), 'root': (), 'tmp_base': ('/',)}@@@",
7
- "@@@STEP_LOG_LINE@result@default_git_cache_dir: Path('git_cache')@@@",
8
- "@@@STEP_LOG_END@result@@@"
9
- ]
10
- },
11
- {
12
- "jsonResult": null,
13
- "name": "$result"
14
- }
15
- ]
@@ -1,15 +0,0 @@
1
- [
2
- {
3
- "cmd": [],
4
- "name": "show paths",
5
- "~followup_annotations": [
6
- "@@@STEP_LOG_LINE@result@base_paths: {'depot_tools': ('depot_tools',), 'build_internal': ('build_internal',), 'cache': ('build', 'slave', 'cache'), 'goma_cache': ('build', 'slave', 'goma_cache'), 'start_dir': ('/', 'b', 'FakeTestingCWD'), 'cleanup': ('/', 'b', 'build.dead'), 'build': ('build',), 'git_cache': ('build', 'slave', 'cache_dir'), 'root': (), 'tmp_base': ('/',)}@@@",
7
- "@@@STEP_LOG_LINE@result@default_git_cache_dir: Path('git_cache')@@@",
8
- "@@@STEP_LOG_END@result@@@"
9
- ]
10
- },
11
- {
12
- "jsonResult": null,
13
- "name": "$result"
14
- }
15
- ]
@@ -1,15 +0,0 @@
1
- [
2
- {
3
- "cmd": [],
4
- "name": "show paths",
5
- "~followup_annotations": [
6
- "@@@STEP_LOG_LINE@result@base_paths: {'depot_tools': ('depot_tools',), 'build_internal': ('build_internal',), 'cache': ('build', 'slave', 'cache'), 'goma_cache': ('build', 'slave', 'goma_cache'), 'start_dir': ('C:\\\\', 'b', 'FakeTestingCWD'), 'cleanup': ('C:\\\\', 'b', 'build.dead'), 'build': ('build',), 'git_cache': ('build', 'slave', 'cache_dir'), 'root': (), 'tmp_base': ('C:\\\\',)}@@@",
7
- "@@@STEP_LOG_LINE@result@default_git_cache_dir: Path('git_cache')@@@",
8
- "@@@STEP_LOG_END@result@@@"
9
- ]
10
- },
11
- {
12
- "jsonResult": null,
13
- "name": "$result"
14
- }
15
- ]
@@ -1,15 +0,0 @@
1
- [
2
- {
3
- "cmd": [],
4
- "name": "show paths",
5
- "~followup_annotations": [
6
- "@@@STEP_LOG_LINE@result@base_paths: {'builder_cache': ('/', 'b', 'c', 'builder'), 'cache': ('/', 'b', 'c'), 'goma_cache': ('/', 'b', 'c', 'goma'), 'start_dir': ('/', 'b', 'FakeTestingCWD'), 'cleanup': ('/', 'b', 'cleanup'), 'git_cache': ('/', 'b', 'c', 'git'), 'tmp_base': ('/',)}@@@",
7
- "@@@STEP_LOG_LINE@result@default_git_cache_dir: Path('git_cache')@@@",
8
- "@@@STEP_LOG_END@result@@@"
9
- ]
10
- },
11
- {
12
- "jsonResult": null,
13
- "name": "$result"
14
- }
15
- ]
@@ -1,15 +0,0 @@
1
- [
2
- {
3
- "cmd": [],
4
- "name": "show paths",
5
- "~followup_annotations": [
6
- "@@@STEP_LOG_LINE@result@base_paths: {'builder_cache': ('/', 'b', 'c', 'builder'), 'cache': ('/', 'b', 'c'), 'goma_cache': ('/', 'b', 'c', 'goma'), 'start_dir': ('/', 'b', 'FakeTestingCWD'), 'cleanup': ('/', 'b', 'cleanup'), 'git_cache': ('/', 'b', 'c', 'git'), 'tmp_base': ('/',)}@@@",
7
- "@@@STEP_LOG_LINE@result@default_git_cache_dir: Path('git_cache')@@@",
8
- "@@@STEP_LOG_END@result@@@"
9
- ]
10
- },
11
- {
12
- "jsonResult": null,
13
- "name": "$result"
14
- }
15
- ]
@@ -1,15 +0,0 @@
1
- [
2
- {
3
- "cmd": [],
4
- "name": "show paths",
5
- "~followup_annotations": [
6
- "@@@STEP_LOG_LINE@result@base_paths: {'builder_cache': ('C:\\\\', 'b', 'c', 'builder'), 'cache': ('C:\\\\', 'b', 'c'), 'goma_cache': ('C:\\\\', 'b', 'c', 'goma'), 'start_dir': ('C:\\\\', 'b', 'FakeTestingCWD'), 'cleanup': ('C:\\\\', 'b', 'cleanup'), 'git_cache': ('C:\\\\', 'b', 'c', 'git'), 'tmp_base': ('C:\\\\',)}@@@",
7
- "@@@STEP_LOG_LINE@result@default_git_cache_dir: Path('git_cache')@@@",
8
- "@@@STEP_LOG_END@result@@@"
9
- ]
10
- },
11
- {
12
- "jsonResult": null,
13
- "name": "$result"
14
- }
15
- ]
@@ -1,15 +0,0 @@
1
- [
2
- {
3
- "cmd": [],
4
- "name": "show paths",
5
- "~followup_annotations": [
6
- "@@@STEP_LOG_LINE@result@base_paths: {'builder_cache': ('/', 'b', 'c', 'b'), 'cache': ('/', 'b', 'c'), 'goma_cache': ('/', 'b', 'c', 'goma_cache'), 'start_dir': ('/', 'b', 'FakeTestingCWD'), 'cleanup': ('/', 'b', 'cleanup'), 'git_cache': ('/', 'b', 'c', 'git_cache'), 'root': ('/', 'b', 'FakeTestingCWD'), 'tmp_base': ('/',)}@@@",
7
- "@@@STEP_LOG_LINE@result@default_git_cache_dir: Path('git_cache')@@@",
8
- "@@@STEP_LOG_END@result@@@"
9
- ]
10
- },
11
- {
12
- "jsonResult": null,
13
- "name": "$result"
14
- }
15
- ]
@@ -1,15 +0,0 @@
1
- [
2
- {
3
- "cmd": [],
4
- "name": "show paths",
5
- "~followup_annotations": [
6
- "@@@STEP_LOG_LINE@result@base_paths: {'builder_cache': ('/', 'b', 'c', 'b'), 'cache': ('/', 'b', 'c'), 'goma_cache': ('/', 'b', 'c', 'goma_cache'), 'start_dir': ('/', 'b', 'FakeTestingCWD'), 'cleanup': ('/', 'b', 'cleanup'), 'git_cache': ('/', 'b', 'c', 'git_cache'), 'root': ('/', 'b', 'FakeTestingCWD'), 'tmp_base': ('/',)}@@@",
7
- "@@@STEP_LOG_LINE@result@default_git_cache_dir: Path('git_cache')@@@",
8
- "@@@STEP_LOG_END@result@@@"
9
- ]
10
- },
11
- {
12
- "jsonResult": null,
13
- "name": "$result"
14
- }
15
- ]
@@ -1,15 +0,0 @@
1
- [
2
- {
3
- "cmd": [],
4
- "name": "show paths",
5
- "~followup_annotations": [
6
- "@@@STEP_LOG_LINE@result@base_paths: {'builder_cache': ('C:\\\\', 'b', 'c', 'b'), 'cache': ('C:\\\\', 'b', 'c'), 'goma_cache': ('C:\\\\', 'b', 'c', 'goma_cache'), 'start_dir': ('C:\\\\', 'b', 'FakeTestingCWD'), 'cleanup': ('C:\\\\', 'b', 'cleanup'), 'git_cache': ('C:\\\\', 'b', 'c', 'git_cache'), 'root': ('C:\\\\', 'b', 'FakeTestingCWD'), 'tmp_base': ('C:\\\\',)}@@@",
7
- "@@@STEP_LOG_LINE@result@default_git_cache_dir: Path('git_cache')@@@",
8
- "@@@STEP_LOG_END@result@@@"
9
- ]
10
- },
11
- {
12
- "jsonResult": null,
13
- "name": "$result"
14
- }
15
- ]
@@ -1,33 +0,0 @@
1
- # Copyright 2016 The Chromium Authors. All rights reserved.
2
- # Use of this source code is governed by a BSD-style license that can be
3
- # found in the LICENSE file.
4
-
5
- import json
6
-
7
- DEPS = [
8
- 'infra_paths',
9
- 'recipe_engine/path',
10
- 'recipe_engine/platform',
11
- 'recipe_engine/properties',
12
- 'recipe_engine/step',
13
- ]
14
-
15
-
16
- def RunSteps(api):
17
- api.step('show paths', [])
18
- api.step.active_result.presentation.logs['result'] = [
19
- 'base_paths: %r' % (api.path.c.base_paths,),
20
- 'default_git_cache_dir: %r' % (api.infra_paths.default_git_cache_dir,),
21
- ]
22
-
23
-
24
- def GenTests(api):
25
- yield api.test('basic')
26
-
27
- for platform in ('linux', 'mac', 'win'):
28
- for path_config in ('buildbot', 'kitchen', 'generic'):
29
- yield (
30
- api.test('paths_%s_%s' % (path_config, platform)) +
31
- api.platform.name(platform) +
32
- api.properties(path_config=path_config)
33
- )
@@ -1,66 +0,0 @@
1
- # Copyright 2016 The Chromium Authors. All rights reserved.
2
- # Use of this source code is governed by a BSD-style license that can be
3
- # found in the LICENSE file.
4
-
5
- from RECIPE_MODULES.recipe_engine.path import CONFIG_CTX
6
-
7
-
8
- @CONFIG_CTX()
9
- def infra_common(c):
10
- c.dynamic_paths['checkout'] = None
11
-
12
-
13
- @CONFIG_CTX(includes=['infra_common'])
14
- def infra_buildbot(c):
15
- """Used on BuildBot by "annotated_run"."""
16
- c.base_paths['root'] = c.START_DIR[:-4]
17
- c.base_paths['cache'] = c.base_paths['root'] + (
18
- 'build', 'slave', 'cache')
19
- c.base_paths['git_cache'] = c.base_paths['root'] + (
20
- 'build', 'slave', 'cache_dir')
21
- c.base_paths['cleanup'] = c.START_DIR[:-1] + ('build.dead',)
22
- c.base_paths['goma_cache'] = c.base_paths['root'] + (
23
- 'build', 'slave', 'goma_cache')
24
- for token in ('build_internal', 'build', 'depot_tools'):
25
- c.base_paths[token] = c.base_paths['root'] + (token,)
26
-
27
-
28
- @CONFIG_CTX(includes=['infra_common'])
29
- def infra_kitchen(c):
30
- """Used on BuildBot by "remote_run" when NOT running Kitchen."""
31
- c.base_paths['root'] = c.START_DIR
32
- # TODO(phajdan.jr): have one cache dir, let clients append suffixes.
33
-
34
- b_dir = c.START_DIR
35
- while b_dir and b_dir[-1] != 'b':
36
- b_dir = b_dir[:-1]
37
-
38
- if c.PLATFORM in ('linux', 'mac'):
39
- c.base_paths['cache'] = ('/', 'b', 'c')
40
- c.base_paths['builder_cache'] = c.base_paths['cache'] + ('b',)
41
- for path in ('git_cache', 'goma_cache'):
42
- c.base_paths[path] = c.base_paths['cache'] + (path,)
43
- elif b_dir:
44
- c.base_paths['cache'] = b_dir + ('c',)
45
- c.base_paths['builder_cache'] = c.base_paths['cache'] + ('b',)
46
- for path in ('git_cache', 'goma_cache'):
47
- c.base_paths[path] = c.base_paths['cache'] + (path,)
48
- else: # pragma: no cover
49
- c.base_paths['cache'] = c.base_paths['root'] + ('c',)
50
- c.base_paths['builder_cache'] = c.base_paths['cache'] + ('b',)
51
- c.base_paths['git_cache'] = c.base_paths['root'] + ('cache_dir',)
52
- for path in ('goma_cache',):
53
- c.base_paths[path] = c.base_paths['cache'] + (path,)
54
-
55
-
56
- @CONFIG_CTX()
57
- def infra_generic(c):
58
- """Used by Kitchen runs on both SwarmBucket and "remote_run"+Kitchen.
59
-
60
- The default path values (ones not set explicitly here) are either installed by
61
- Kitchen directly, or are recipe engine defaults. Note that in "kitchen",
62
- the "start_dir" is ephemeral.
63
- """
64
- c.base_paths['builder_cache'] = c.base_paths['cache'] + ('builder',)
65
- c.base_paths['git_cache'] = c.base_paths['cache'] + ('git',)
66
- c.base_paths['goma_cache'] = c.base_paths['cache'] + ('goma',)
@@ -1,11 +0,0 @@
1
- [
2
- {
3
- "failure": {
4
- "failure": {
5
- "step": ""
6
- },
7
- "humanReason": "boom!"
8
- },
9
- "name": "$result"
10
- }
11
- ]
@@ -1,45 +0,0 @@
1
- [
2
- {
3
- "cmd": [
4
- "git",
5
- "-c",
6
- "core.quotePath=false",
7
- "diff",
8
- "--cached",
9
- "--name-only"
10
- ],
11
- "cwd": "[START_DIR]/v8",
12
- "infra_step": true,
13
- "name": "git diff to analyze patch",
14
- "stdout": "/path/to/tmp/",
15
- "~followup_annotations": [
16
- "@@@STEP_LOG_LINE@files@v8/foo.cc@@@",
17
- "@@@STEP_LOG_END@files@@@",
18
- "@@@SET_BUILD_PROPERTY@do_not_retry@true@@@",
19
- "@@@SET_BUILD_PROPERTY@failure_type@\"INVALID_TEST_RESULTS\"@@@",
20
- "@@@SET_BUILD_PROPERTY@subproject_tag@\"v8\"@@@"
21
- ]
22
- },
23
- {
24
- "cmd": [
25
- "python",
26
- "-u",
27
- "import sys; sys.exit(1)"
28
- ],
29
- "name": "fail",
30
- "~followup_annotations": [
31
- "@@@STEP_TEXT@foo@@@",
32
- "@@@STEP_FAILURE@@@",
33
- "@@@SET_BUILD_PROPERTY@failure_hash@\"c2311ad770732eade3d2f48247abd147e40a70e7\"@@@"
34
- ]
35
- },
36
- {
37
- "failure": {
38
- "failure": {
39
- "step": "fail"
40
- },
41
- "humanReason": "Step('fail') failed with return_code 1"
42
- },
43
- "name": "$result"
44
- }
45
- ]
@@ -1,45 +0,0 @@
1
- [
2
- {
3
- "cmd": [
4
- "git",
5
- "-c",
6
- "core.quotePath=false",
7
- "diff",
8
- "--cached",
9
- "--name-only"
10
- ],
11
- "cwd": "[START_DIR]/v8",
12
- "infra_step": true,
13
- "name": "git diff to analyze patch",
14
- "stdout": "/path/to/tmp/",
15
- "~followup_annotations": [
16
- "@@@STEP_LOG_LINE@files@v8/foo.cc@@@",
17
- "@@@STEP_LOG_END@files@@@",
18
- "@@@SET_BUILD_PROPERTY@do_not_retry@true@@@",
19
- "@@@SET_BUILD_PROPERTY@failure_type@\"INVALID_TEST_RESULTS\"@@@",
20
- "@@@SET_BUILD_PROPERTY@subproject_tag@\"v8\"@@@"
21
- ]
22
- },
23
- {
24
- "cmd": [
25
- "python",
26
- "-u",
27
- "import sys; sys.exit(1)"
28
- ],
29
- "name": "fail",
30
- "~followup_annotations": [
31
- "@@@STEP_TEXT@foo@@@",
32
- "@@@STEP_FAILURE@@@",
33
- "@@@SET_BUILD_PROPERTY@failure_hash@\"c2311ad770732eade3d2f48247abd147e40a70e7\"@@@"
34
- ]
35
- },
36
- {
37
- "failure": {
38
- "failure": {
39
- "step": "fail"
40
- },
41
- "humanReason": "Step('fail') failed with return_code 1"
42
- },
43
- "name": "$result"
44
- }
45
- ]
@@ -1,779 +0,0 @@
1
- # coding: utf-8
2
- # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3
- # Use of this source code is governed by a BSD-style license that can be
4
- # found in the LICENSE file.
5
- """Defines class Rietveld to easily access a rietveld instance.
6
-
7
- Security implications:
8
-
9
- The following hypothesis are made:
10
- - Rietveld enforces:
11
- - Nobody else than issue owner can upload a patch set
12
- - Verifies the issue owner credentials when creating new issues
13
- - A issue owner can't change once the issue is created
14
- - A patch set cannot be modified
15
- """
16
-
17
- import copy
18
- import errno
19
- import json
20
- import logging
21
- import re
22
- import socket
23
- import ssl
24
- import StringIO
25
- import sys
26
- import time
27
- import urllib
28
- import urllib2
29
- import urlparse
30
-
31
- import patch
32
-
33
- from third_party import upload
34
- import third_party.oauth2client.client as oa2client
35
- from third_party import httplib2
36
-
37
- # Appengine replies with 302 when authentication fails (sigh.)
38
- oa2client.REFRESH_STATUS_CODES.append(302)
39
- upload.LOGGER.setLevel(logging.WARNING) # pylint: disable=E1103
40
-
41
-
42
- class Rietveld(object):
43
- """Accesses rietveld."""
44
- def __init__(
45
- self, url, auth_config, email=None, extra_headers=None, maxtries=None):
46
- self.url = url.rstrip('/')
47
- self.rpc_server = upload.GetRpcServer(self.url, auth_config, email)
48
-
49
- self._xsrf_token = None
50
- self._xsrf_token_time = None
51
-
52
- self._maxtries = maxtries or 40
53
-
54
- def xsrf_token(self):
55
- if (not self._xsrf_token_time or
56
- (time.time() - self._xsrf_token_time) > 30*60):
57
- self._xsrf_token_time = time.time()
58
- self._xsrf_token = self.get(
59
- '/xsrf_token',
60
- extra_headers={'X-Requesting-XSRF-Token': '1'})
61
- return self._xsrf_token
62
-
63
- def get_pending_issues(self):
64
- """Returns an array of dict of all the pending issues on the server."""
65
- # TODO: Convert this to use Rietveld::search(), defined below.
66
- return json.loads(
67
- self.get('/search?format=json&commit=2&closed=3&'
68
- 'keys_only=True&limit=1000&order=__key__'))['results']
69
-
70
- def close_issue(self, issue):
71
- """Closes the Rietveld issue for this changelist."""
72
- logging.info('closing issue %d' % issue)
73
- self.post("/%d/close" % issue, [('xsrf_token', self.xsrf_token())])
74
-
75
- def get_description(self, issue, force=False):
76
- """Returns the issue's description.
77
-
78
- Converts any CRLF into LF and strip extraneous whitespace.
79
- """
80
- return '\n'.join(self.get('/%d/description' % issue).strip().splitlines())
81
-
82
- def get_issue_properties(self, issue, messages):
83
- """Returns all the issue's metadata as a dictionary."""
84
- url = '/api/%d' % issue
85
- if messages:
86
- url += '?messages=true'
87
- data = json.loads(self.get(url, retry_on_404=True))
88
- data['description'] = '\n'.join(data['description'].strip().splitlines())
89
- return data
90
-
91
- def get_depends_on_patchset(self, issue, patchset):
92
- """Returns the patchset this patchset depends on if it exists."""
93
- url = '/%d/patchset/%d/get_depends_on_patchset' % (issue, patchset)
94
- resp = None
95
- try:
96
- resp = json.loads(self.get(url))
97
- except (urllib2.HTTPError, ValueError):
98
- # The get_depends_on_patchset endpoint does not exist on this Rietveld
99
- # instance yet. Ignore the error and proceed.
100
- # TODO(rmistry): Make this an error when all Rietveld instances have
101
- # this endpoint.
102
- pass
103
- return resp
104
-
105
- def get_patchset_properties(self, issue, patchset):
106
- """Returns the patchset properties."""
107
- url = '/api/%d/%d' % (issue, patchset)
108
- return json.loads(self.get(url))
109
-
110
- def get_file_content(self, issue, patchset, item):
111
- """Returns the content of a new file.
112
-
113
- Throws HTTP 302 exception if the file doesn't exist or is not a binary file.
114
- """
115
- # content = 0 is the old file, 1 is the new file.
116
- content = 1
117
- url = '/%d/binary/%d/%d/%d' % (issue, patchset, item, content)
118
- return self.get(url)
119
-
120
- def get_file_diff(self, issue, patchset, item):
121
- """Returns the diff of the file.
122
-
123
- Returns a useless diff for binary files.
124
- """
125
- url = '/download/issue%d_%d_%d.diff' % (issue, patchset, item)
126
- return self.get(url)
127
-
128
- def get_patch(self, issue, patchset):
129
- """Returns a PatchSet object containing the details to apply this patch."""
130
- props = self.get_patchset_properties(issue, patchset) or {}
131
- out = []
132
- for filename, state in props.get('files', {}).iteritems():
133
- logging.debug('%s' % filename)
134
- # If not status, just assume it's a 'M'. Rietveld often gets it wrong and
135
- # just has status: null. Oh well.
136
- status = state.get('status') or 'M'
137
- if status[0] not in ('A', 'D', 'M', 'R'):
138
- raise patch.UnsupportedPatchFormat(
139
- filename, 'Change with status \'%s\' is not supported.' % status)
140
-
141
- svn_props = self.parse_svn_properties(
142
- state.get('property_changes', ''), filename)
143
-
144
- if state.get('is_binary'):
145
- if status[0] == 'D':
146
- if status[0] != status.strip():
147
- raise patch.UnsupportedPatchFormat(
148
- filename, 'Deleted file shouldn\'t have property change.')
149
- out.append(patch.FilePatchDelete(filename, state['is_binary']))
150
- else:
151
- content = self.get_file_content(issue, patchset, state['id'])
152
- if not content or content == 'None':
153
- # As a precaution due to a bug in upload.py for git checkout, refuse
154
- # empty files. If it's empty, it's not a binary file.
155
- raise patch.UnsupportedPatchFormat(
156
- filename,
157
- 'Binary file is empty. Maybe the file wasn\'t uploaded in the '
158
- 'first place?')
159
- out.append(patch.FilePatchBinary(
160
- filename,
161
- content,
162
- svn_props,
163
- is_new=(status[0] == 'A')))
164
- continue
165
-
166
- try:
167
- diff = self.get_file_diff(issue, patchset, state['id'])
168
- except urllib2.HTTPError, e:
169
- if e.code == 404:
170
- raise patch.UnsupportedPatchFormat(
171
- filename, 'File doesn\'t have a diff.')
172
- raise
173
-
174
- # FilePatchDiff() will detect file deletion automatically.
175
- p = patch.FilePatchDiff(filename, diff, svn_props)
176
- out.append(p)
177
- if status[0] == 'A':
178
- # It won't be set for empty file.
179
- p.is_new = True
180
- if (len(status) > 1 and
181
- status[1] == '+' and
182
- not (p.source_filename or p.svn_properties)):
183
- raise patch.UnsupportedPatchFormat(
184
- filename, 'Failed to process the svn properties')
185
-
186
- return patch.PatchSet(out)
187
-
188
- @staticmethod
189
- def parse_svn_properties(rietveld_svn_props, filename):
190
- """Returns a list of tuple [('property', 'newvalue')].
191
-
192
- rietveld_svn_props is the exact format from 'svn diff'.
193
- """
194
- rietveld_svn_props = rietveld_svn_props.splitlines()
195
- svn_props = []
196
- if not rietveld_svn_props:
197
- return svn_props
198
- # 1. Ignore svn:mergeinfo.
199
- # 2. Accept svn:eol-style and svn:executable.
200
- # 3. Refuse any other.
201
- # \n
202
- # Added: svn:ignore\n
203
- # + LF\n
204
-
205
- spacer = rietveld_svn_props.pop(0)
206
- if spacer or not rietveld_svn_props:
207
- # svn diff always put a spacer between the unified diff and property
208
- # diff
209
- raise patch.UnsupportedPatchFormat(
210
- filename, 'Failed to parse svn properties.')
211
-
212
- while rietveld_svn_props:
213
- # Something like 'Added: svn:eol-style'. Note the action is localized.
214
- # *sigh*.
215
- action = rietveld_svn_props.pop(0)
216
- match = re.match(r'^(\w+): (.+)$', action)
217
- if not match or not rietveld_svn_props:
218
- raise patch.UnsupportedPatchFormat(
219
- filename,
220
- 'Failed to parse svn properties: %s, %s' % (action, svn_props))
221
-
222
- if match.group(2) == 'svn:mergeinfo':
223
- # Silently ignore the content.
224
- rietveld_svn_props.pop(0)
225
- continue
226
-
227
- if match.group(1) not in ('Added', 'Modified'):
228
- # Will fail for our French friends.
229
- raise patch.UnsupportedPatchFormat(
230
- filename, 'Unsupported svn property operation.')
231
-
232
- if match.group(2) in ('svn:eol-style', 'svn:executable', 'svn:mime-type'):
233
- # ' + foo' where foo is the new value. That's fragile.
234
- content = rietveld_svn_props.pop(0)
235
- match2 = re.match(r'^ \+ (.*)$', content)
236
- if not match2:
237
- raise patch.UnsupportedPatchFormat(
238
- filename, 'Unsupported svn property format.')
239
- svn_props.append((match.group(2), match2.group(1)))
240
- return svn_props
241
-
242
- def update_description(self, issue, description):
243
- """Sets the description for an issue on Rietveld."""
244
- logging.info('new description for issue %d' % issue)
245
- self.post('/%d/description' % issue, [
246
- ('description', description),
247
- ('xsrf_token', self.xsrf_token())])
248
-
249
- def add_comment(self, issue, message, add_as_reviewer=False):
250
- max_message = 10000
251
- tail = '…\n(message too large)'
252
- if len(message) > max_message:
253
- message = message[:max_message-len(tail)] + tail
254
- logging.info('issue %d; comment: %s' % (issue, message.strip()[:300]))
255
- return self.post('/%d/publish' % issue, [
256
- ('xsrf_token', self.xsrf_token()),
257
- ('message', message),
258
- ('message_only', 'True'),
259
- ('add_as_reviewer', str(bool(add_as_reviewer))),
260
- ('send_mail', 'True'),
261
- ('no_redirect', 'True')])
262
-
263
- def add_inline_comment(
264
- self, issue, text, side, snapshot, patchset, patchid, lineno):
265
- logging.info('add inline comment for issue %d' % issue)
266
- return self.post('/inline_draft', [
267
- ('issue', str(issue)),
268
- ('text', text),
269
- ('side', side),
270
- ('snapshot', snapshot),
271
- ('patchset', str(patchset)),
272
- ('patch', str(patchid)),
273
- ('lineno', str(lineno))])
274
-
275
- def set_flag(self, issue, patchset, flag, value):
276
- return self.post('/%d/edit_flags' % issue, [
277
- ('last_patchset', str(patchset)),
278
- ('xsrf_token', self.xsrf_token()),
279
- (flag, str(value))])
280
-
281
- def set_flags(self, issue, patchset, flags):
282
- return self.post('/%d/edit_flags' % issue, [
283
- ('last_patchset', str(patchset)),
284
- ('xsrf_token', self.xsrf_token()),
285
- ] + [(flag, str(value)) for flag, value in flags.iteritems()])
286
-
287
- def search(
288
- self,
289
- owner=None, reviewer=None,
290
- base=None,
291
- closed=None, private=None, commit=None,
292
- created_before=None, created_after=None,
293
- modified_before=None, modified_after=None,
294
- per_request=None, keys_only=False,
295
- with_messages=False):
296
- """Yields search results."""
297
- # These are expected to be strings.
298
- string_keys = {
299
- 'owner': owner,
300
- 'reviewer': reviewer,
301
- 'base': base,
302
- 'created_before': created_before,
303
- 'created_after': created_after,
304
- 'modified_before': modified_before,
305
- 'modified_after': modified_after,
306
- }
307
- # These are either None, False or True.
308
- three_state_keys = {
309
- 'closed': closed,
310
- 'private': private,
311
- 'commit': commit,
312
- }
313
- # The integer values were determined by checking HTML source of Rietveld on
314
- # https://codereview.chromium.org/search. See also http://crbug.com/712060.
315
- three_state_value_map = {
316
- None: 1, # Unknown.
317
- True: 2, # Yes.
318
- False: 3, # No.
319
- }
320
-
321
- url = '/search?format=json'
322
- # Sort the keys mainly to ease testing.
323
- for key in sorted(string_keys):
324
- value = string_keys[key]
325
- if value:
326
- url += '&%s=%s' % (key, urllib2.quote(value))
327
- for key in sorted(three_state_keys):
328
- value = three_state_keys[key]
329
- if value is not None:
330
- url += '&%s=%d' % (key, three_state_value_map[value])
331
-
332
- if keys_only:
333
- url += '&keys_only=True'
334
- if with_messages:
335
- url += '&with_messages=True'
336
- if per_request:
337
- url += '&limit=%d' % per_request
338
-
339
- cursor = ''
340
- while True:
341
- output = self.get(url + cursor)
342
- if output.startswith('<'):
343
- # It's an error message. Return as no result.
344
- break
345
- data = json.loads(output) or {}
346
- if not data.get('results'):
347
- break
348
- for i in data['results']:
349
- yield i
350
- cursor = '&cursor=%s' % data['cursor']
351
-
352
- def trigger_try_jobs(
353
- self, issue, patchset, reason, clobber, revision, builders_and_tests,
354
- master=None, category='cq'):
355
- """Requests new try jobs.
356
-
357
- |builders_and_tests| is a map of builders: [tests] to run.
358
- |master| is the name of the try master the builders belong to.
359
- |category| is used to distinguish regular jobs and experimental jobs.
360
-
361
- Returns the keys of the new TryJobResult entites.
362
- """
363
- params = [
364
- ('reason', reason),
365
- ('clobber', 'True' if clobber else 'False'),
366
- ('builders', json.dumps(builders_and_tests)),
367
- ('xsrf_token', self.xsrf_token()),
368
- ('category', category),
369
- ]
370
- if revision:
371
- params.append(('revision', revision))
372
- if master:
373
- # Temporarily allow empty master names for old configurations. The try
374
- # job will not be associated with a master name on rietveld. This is
375
- # going to be deprecated.
376
- params.append(('master', master))
377
- return self.post('/%d/try/%d' % (issue, patchset), params)
378
-
379
- def trigger_distributed_try_jobs(
380
- self, issue, patchset, reason, clobber, revision, masters,
381
- category='cq'):
382
- """Requests new try jobs.
383
-
384
- |masters| is a map of masters: map of builders: [tests] to run.
385
- |category| is used to distinguish regular jobs and experimental jobs.
386
- """
387
- for (master, builders_and_tests) in masters.iteritems():
388
- self.trigger_try_jobs(
389
- issue, patchset, reason, clobber, revision, builders_and_tests,
390
- master, category)
391
-
392
- def get_pending_try_jobs(self, cursor=None, limit=100):
393
- """Retrieves the try job requests in pending state.
394
-
395
- Returns a tuple of the list of try jobs and the cursor for the next request.
396
- """
397
- url = '/get_pending_try_patchsets?limit=%d' % limit
398
- extra = ('&cursor=' + cursor) if cursor else ''
399
- data = json.loads(self.get(url + extra))
400
- return data['jobs'], data['cursor']
401
-
402
- def get(self, request_path, **kwargs):
403
- kwargs.setdefault('payload', None)
404
- return self._send(request_path, **kwargs)
405
-
406
- def post(self, request_path, data, **kwargs):
407
- ctype, body = upload.EncodeMultipartFormData(data, [])
408
- return self._send(request_path, payload=body, content_type=ctype, **kwargs)
409
-
410
- def _send(self, request_path, retry_on_404=False, **kwargs):
411
- """Sends a POST/GET to Rietveld. Returns the response body."""
412
- # rpc_server.Send() assumes timeout=None by default; make sure it's set
413
- # to something reasonable.
414
- kwargs.setdefault('timeout', 15)
415
- logging.debug('POSTing to %s, args %s.', request_path, kwargs)
416
- try:
417
- # Sadly, upload.py calls ErrorExit() which does a sys.exit(1) on HTTP
418
- # 500 in AbstractRpcServer.Send().
419
- old_error_exit = upload.ErrorExit
420
- def trap_http_500(msg):
421
- """Converts an incorrect ErrorExit() call into a HTTPError exception."""
422
- m = re.search(r'(50\d) Server Error', msg)
423
- if m:
424
- # Fake an HTTPError exception. Cheezy. :(
425
- raise urllib2.HTTPError(
426
- request_path, int(m.group(1)), msg, None, StringIO.StringIO())
427
- old_error_exit(msg)
428
- upload.ErrorExit = trap_http_500
429
-
430
- for retry in xrange(self._maxtries):
431
- try:
432
- logging.debug('%s' % request_path)
433
- return self.rpc_server.Send(request_path, **kwargs)
434
- except urllib2.HTTPError, e:
435
- if retry >= (self._maxtries - 1):
436
- raise
437
- flake_codes = {500, 502, 503}
438
- if retry_on_404:
439
- flake_codes.add(404)
440
- if e.code not in flake_codes:
441
- raise
442
- except urllib2.URLError, e:
443
- if retry >= (self._maxtries - 1):
444
- raise
445
-
446
- def is_transient():
447
- # The idea here is to retry if the error isn't permanent.
448
- # Unfortunately, there are so many different possible errors,
449
- # that we end up enumerating those that are known to us to be
450
- # transient.
451
- # The reason can be a string or another exception, e.g.,
452
- # socket.error or whatever else.
453
- reason_as_str = str(e.reason)
454
- for retry_anyway in (
455
- 'Name or service not known',
456
- 'EOF occurred in violation of protocol',
457
- 'timed out',
458
- # See http://crbug.com/601260.
459
- '[Errno 10060] A connection attempt failed',
460
- '[Errno 104] Connection reset by peer',
461
- ):
462
- if retry_anyway in reason_as_str:
463
- return True
464
- return False # Assume permanent otherwise.
465
- if not is_transient():
466
- logging.error('Caught urllib2.URLError %s which wasn\'t deemed '
467
- 'transient', e.reason)
468
- raise
469
- except socket.error, e:
470
- if retry >= (self._maxtries - 1):
471
- raise
472
- if not 'timed out' in str(e):
473
- raise
474
- # If reaching this line, loop again. Uses a small backoff.
475
- time.sleep(min(10, 1+retry*2))
476
- except urllib2.HTTPError as e:
477
- print 'Request to %s failed: %s' % (e.geturl(), e.read())
478
- raise
479
- finally:
480
- upload.ErrorExit = old_error_exit
481
-
482
- # DEPRECATED.
483
- Send = get
484
-
485
-
486
- class OAuthRpcServer(object):
487
- def __init__(self,
488
- host,
489
- client_email,
490
- client_private_key,
491
- private_key_password='notasecret',
492
- user_agent=None,
493
- timeout=None,
494
- extra_headers=None):
495
- """Wrapper around httplib2.Http() that handles authentication.
496
-
497
- client_email: email associated with the service account
498
- client_private_key: encrypted private key, as a string
499
- private_key_password: password used to decrypt the private key
500
- """
501
-
502
- # Enforce https
503
- host_parts = urlparse.urlparse(host)
504
-
505
- if host_parts.scheme == 'https': # fine
506
- self.host = host
507
- elif host_parts.scheme == 'http':
508
- upload.logging.warning('Changing protocol to https')
509
- self.host = 'https' + host[4:]
510
- else:
511
- msg = 'Invalid url provided: %s' % host
512
- upload.logging.error(msg)
513
- raise ValueError(msg)
514
-
515
- self.host = self.host.rstrip('/')
516
-
517
- self.extra_headers = extra_headers or {}
518
-
519
- if not oa2client.HAS_OPENSSL:
520
- logging.error("No support for OpenSSL has been found, "
521
- "OAuth2 support requires it.")
522
- logging.error("Installing pyopenssl will probably solve this issue.")
523
- raise RuntimeError('No OpenSSL support')
524
- self.creds = oa2client.SignedJwtAssertionCredentials(
525
- client_email,
526
- client_private_key,
527
- 'https://www.googleapis.com/auth/userinfo.email',
528
- private_key_password=private_key_password,
529
- user_agent=user_agent)
530
-
531
- self._http = self.creds.authorize(httplib2.Http(timeout=timeout))
532
-
533
- def Send(self,
534
- request_path,
535
- payload=None,
536
- content_type='application/octet-stream',
537
- timeout=None,
538
- extra_headers=None,
539
- **kwargs):
540
- """Send a POST or GET request to the server.
541
-
542
- Args:
543
- request_path: path on the server to hit. This is concatenated with the
544
- value of 'host' provided to the constructor.
545
- payload: request is a POST if not None, GET otherwise
546
- timeout: in seconds
547
- extra_headers: (dict)
548
-
549
- Returns: the HTTP response body as a string
550
-
551
- Raises:
552
- urllib2.HTTPError
553
- """
554
- # This method signature should match upload.py:AbstractRpcServer.Send()
555
- method = 'GET'
556
-
557
- headers = self.extra_headers.copy()
558
- headers.update(extra_headers or {})
559
-
560
- if payload is not None:
561
- method = 'POST'
562
- headers['Content-Type'] = content_type
563
-
564
- prev_timeout = self._http.timeout
565
- try:
566
- if timeout:
567
- self._http.timeout = timeout
568
- url = self.host + request_path
569
- if kwargs:
570
- url += "?" + urllib.urlencode(kwargs)
571
-
572
- # This weird loop is there to detect when the OAuth2 token has expired.
573
- # This is specific to appengine *and* rietveld. It relies on the
574
- # assumption that a 302 is triggered only by an expired OAuth2 token. This
575
- # prevents any usage of redirections in pages accessed this way.
576
-
577
- # This variable is used to make sure the following loop runs only twice.
578
- redirect_caught = False
579
- while True:
580
- try:
581
- ret = self._http.request(url,
582
- method=method,
583
- body=payload,
584
- headers=headers,
585
- redirections=0)
586
- except httplib2.RedirectLimit:
587
- if redirect_caught or method != 'GET':
588
- logging.error('Redirection detected after logging in. Giving up.')
589
- raise
590
- redirect_caught = True
591
- logging.debug('Redirection detected. Trying to log in again...')
592
- self.creds.access_token = None
593
- continue
594
- break
595
-
596
- if ret[0].status >= 300:
597
- raise urllib2.HTTPError(
598
- request_path, int(ret[0]['status']), ret[1], None,
599
- StringIO.StringIO())
600
-
601
- return ret[1]
602
-
603
- finally:
604
- self._http.timeout = prev_timeout
605
-
606
-
607
- class JwtOAuth2Rietveld(Rietveld):
608
- """Access to Rietveld using OAuth authentication.
609
-
610
- This class is supposed to be used only by bots, since this kind of
611
- access is restricted to service accounts.
612
- """
613
- # The parent__init__ is not called on purpose.
614
- # pylint: disable=super-init-not-called
615
- def __init__(self,
616
- url,
617
- client_email,
618
- client_private_key_file,
619
- private_key_password=None,
620
- extra_headers=None,
621
- maxtries=None):
622
-
623
- if private_key_password is None: # '' means 'empty password'
624
- private_key_password = 'notasecret'
625
-
626
- self.url = url.rstrip('/')
627
- bot_url = self.url
628
- if self.url.endswith('googleplex.com'):
629
- bot_url = self.url + '/bots'
630
-
631
- with open(client_private_key_file, 'rb') as f:
632
- client_private_key = f.read()
633
- logging.info('Using OAuth login: %s' % client_email)
634
- self.rpc_server = OAuthRpcServer(bot_url,
635
- client_email,
636
- client_private_key,
637
- private_key_password=private_key_password,
638
- extra_headers=extra_headers or {})
639
- self._xsrf_token = None
640
- self._xsrf_token_time = None
641
-
642
- self._maxtries = maxtries or 40
643
-
644
-
645
- class CachingRietveld(Rietveld):
646
- """Caches the common queries.
647
-
648
- Not to be used in long-standing processes, like the commit queue.
649
- """
650
- def __init__(self, *args, **kwargs):
651
- super(CachingRietveld, self).__init__(*args, **kwargs)
652
- self._cache = {}
653
-
654
- def _lookup(self, function_name, args, update):
655
- """Caches the return values corresponding to the arguments.
656
-
657
- It is important that the arguments are standardized, like None vs False.
658
- """
659
- function_cache = self._cache.setdefault(function_name, {})
660
- if args not in function_cache:
661
- function_cache[args] = update(*args)
662
- return copy.deepcopy(function_cache[args])
663
-
664
- def get_description(self, issue, force=False):
665
- if force:
666
- return super(CachingRietveld, self).get_description(issue, force=force)
667
- else:
668
- return self._lookup(
669
- 'get_description',
670
- (issue,),
671
- super(CachingRietveld, self).get_description)
672
-
673
- def get_issue_properties(self, issue, messages):
674
- """Returns the issue properties.
675
-
676
- Because in practice the presubmit checks often ask without messages first
677
- and then with messages, always ask with messages and strip off if not asked
678
- for the messages.
679
- """
680
- # It's a tad slower to request with the message but it's better than
681
- # requesting the properties twice.
682
- data = self._lookup(
683
- 'get_issue_properties',
684
- (issue, True),
685
- super(CachingRietveld, self).get_issue_properties)
686
- if not messages:
687
- # Assumes self._lookup uses deepcopy.
688
- del data['messages']
689
- return data
690
-
691
- def get_patchset_properties(self, issue, patchset):
692
- return self._lookup(
693
- 'get_patchset_properties',
694
- (issue, patchset),
695
- super(CachingRietveld, self).get_patchset_properties)
696
-
697
-
698
- class ReadOnlyRietveld(object):
699
- """
700
- Only provides read operations, and simulates writes locally.
701
-
702
- Intentionally do not inherit from Rietveld to avoid any write-issuing
703
- logic to be invoked accidentally.
704
- """
705
-
706
- # Dictionary of local changes, indexed by issue number as int.
707
- _local_changes = {}
708
-
709
- def __init__(self, *args, **kwargs):
710
- # We still need an actual Rietveld instance to issue reads, just keep
711
- # it hidden.
712
- self._rietveld = Rietveld(*args, **kwargs)
713
-
714
- @classmethod
715
- def _get_local_changes(cls, issue):
716
- """Returns dictionary of local changes for |issue|, if any."""
717
- return cls._local_changes.get(issue, {})
718
-
719
- @property
720
- def url(self):
721
- return self._rietveld.url
722
-
723
- def get_pending_issues(self):
724
- pending_issues = self._rietveld.get_pending_issues()
725
-
726
- # Filter out issues we've closed or unchecked the commit checkbox.
727
- return [issue for issue in pending_issues
728
- if not self._get_local_changes(issue).get('closed', False) and
729
- self._get_local_changes(issue).get('commit', True)]
730
-
731
- def close_issue(self, issue): # pylint:disable=no-self-use
732
- logging.info('ReadOnlyRietveld: closing issue %d' % issue)
733
- ReadOnlyRietveld._local_changes.setdefault(issue, {})['closed'] = True
734
-
735
- def get_issue_properties(self, issue, messages):
736
- data = self._rietveld.get_issue_properties(issue, messages)
737
- data.update(self._get_local_changes(issue))
738
- return data
739
-
740
- def get_patchset_properties(self, issue, patchset):
741
- return self._rietveld.get_patchset_properties(issue, patchset)
742
-
743
- def get_depends_on_patchset(self, issue, patchset):
744
- return self._rietveld.get_depends_on_patchset(issue, patchset)
745
-
746
- def get_patch(self, issue, patchset):
747
- return self._rietveld.get_patch(issue, patchset)
748
-
749
- def update_description(self, issue, description): # pylint:disable=no-self-use
750
- logging.info('ReadOnlyRietveld: new description for issue %d: %s' %
751
- (issue, description))
752
-
753
- def add_comment(self, # pylint:disable=no-self-use
754
- issue,
755
- message,
756
- add_as_reviewer=False):
757
- logging.info('ReadOnlyRietveld: posting comment "%s" to issue %d' %
758
- (message, issue))
759
-
760
- def set_flag(self, issue, patchset, flag, value): # pylint:disable=no-self-use
761
- logging.info('ReadOnlyRietveld: setting flag "%s" to "%s" for issue %d' %
762
- (flag, value, issue))
763
- ReadOnlyRietveld._local_changes.setdefault(issue, {})[flag] = value
764
-
765
- def set_flags(self, issue, patchset, flags):
766
- for flag, value in flags.iteritems():
767
- self.set_flag(issue, patchset, flag, value)
768
-
769
- def trigger_try_jobs( # pylint:disable=no-self-use
770
- self, issue, patchset, reason, clobber, revision, builders_and_tests,
771
- master=None, category='cq'):
772
- logging.info('ReadOnlyRietveld: triggering try jobs %r for issue %d' %
773
- (builders_and_tests, issue))
774
-
775
- def trigger_distributed_try_jobs( # pylint:disable=no-self-use
776
- self, issue, patchset, reason, clobber, revision, masters,
777
- category='cq'):
778
- logging.info('ReadOnlyRietveld: triggering try jobs %r for issue %d' %
779
- (masters, issue))