libv8 4.5.95.5 → 5.0.71.48.0beta2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (332) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +45 -19
  3. data/CHANGELOG.md +14 -0
  4. data/README.md +30 -15
  5. data/Rakefile +7 -6
  6. data/ext/libv8/arch.rb +5 -4
  7. data/ext/libv8/builder.rb +25 -19
  8. data/ext/libv8/compiler.rb +6 -33
  9. data/ext/libv8/location.rb +7 -8
  10. data/lib/libv8/version.rb +1 -1
  11. data/libv8.gemspec +1 -1
  12. data/patches/build-standalone-static-library.patch +14 -0
  13. data/patches/disable-building-tests.patch +48 -10
  14. data/patches/fPIC-for-static.patch +3 -3
  15. data/release/x86-linux/Vagrantfile +8 -4
  16. data/release/x86_64-freebsd10/Vagrantfile +86 -0
  17. data/release/x86_64-linux/Vagrantfile +8 -4
  18. data/spec/compiler_spec.rb +5 -29
  19. data/spec/support/compiler_helpers.rb +2 -4
  20. data/vendor/depot_tools/.gitignore +15 -3
  21. data/vendor/depot_tools/OWNERS +2 -2
  22. data/vendor/depot_tools/PRESUBMIT.py +4 -2
  23. data/vendor/depot_tools/WATCHLISTS +6 -0
  24. data/vendor/depot_tools/apply_issue.py +70 -38
  25. data/vendor/depot_tools/bootstrap/win/README.md +66 -0
  26. data/vendor/depot_tools/bootstrap/win/git-bash.template.sh +12 -0
  27. data/vendor/depot_tools/bootstrap/win/git.template.bat +5 -0
  28. data/vendor/depot_tools/bootstrap/win/profile.d.python.sh +20 -0
  29. data/vendor/depot_tools/bootstrap/win/win_tools.bat +96 -45
  30. data/vendor/depot_tools/breakpad.py +6 -141
  31. data/vendor/depot_tools/buildbucket.py +45 -31
  32. data/vendor/depot_tools/cbuildbot +1 -0
  33. data/vendor/depot_tools/checkout.py +2 -1
  34. data/vendor/depot_tools/chrome_set_ver +1 -0
  35. data/vendor/depot_tools/cit +8 -0
  36. data/vendor/depot_tools/cit.bat +11 -0
  37. data/vendor/depot_tools/cit.py +120 -0
  38. data/vendor/depot_tools/codereview.settings +0 -2
  39. data/vendor/depot_tools/commit_queue +1 -5
  40. data/vendor/depot_tools/commit_queue.bat +1 -4
  41. data/vendor/depot_tools/commit_queue.py +78 -29
  42. data/vendor/depot_tools/cpplint.py +22 -14
  43. data/vendor/depot_tools/cros +1 -0
  44. data/vendor/depot_tools/cros_sdk +1 -0
  45. data/vendor/depot_tools/depot-tools-auth.py +3 -3
  46. data/vendor/depot_tools/download_from_google_storage.py +101 -21
  47. data/vendor/depot_tools/drover.py +2 -3
  48. data/vendor/depot_tools/fetch.py +31 -27
  49. data/vendor/depot_tools/{recipes → fetch_configs}/android.py +4 -4
  50. data/vendor/depot_tools/fetch_configs/breakpad.py +45 -0
  51. data/vendor/depot_tools/{recipes → fetch_configs}/chromium.py +3 -3
  52. data/vendor/depot_tools/{recipes/recipe_util.py → fetch_configs/config_util.py} +3 -3
  53. data/vendor/depot_tools/fetch_configs/crashpad.py +41 -0
  54. data/vendor/depot_tools/{recipes → fetch_configs}/dart.py +3 -3
  55. data/vendor/depot_tools/{recipes/pdfium.py → fetch_configs/dartino.py} +14 -13
  56. data/vendor/depot_tools/{recipes → fetch_configs}/dartium.py +3 -3
  57. data/vendor/depot_tools/{recipes → fetch_configs}/depot_tools.py +3 -3
  58. data/vendor/depot_tools/fetch_configs/gyp.py +42 -0
  59. data/vendor/depot_tools/{recipes → fetch_configs}/infra.py +3 -3
  60. data/vendor/depot_tools/{recipes → fetch_configs}/infra_internal.py +3 -3
  61. data/vendor/depot_tools/{recipes → fetch_configs}/ios.py +4 -4
  62. data/vendor/depot_tools/{recipes → fetch_configs}/mojo.py +3 -3
  63. data/vendor/depot_tools/{recipes → fetch_configs}/nacl.py +3 -3
  64. data/vendor/depot_tools/{recipes → fetch_configs}/naclports.py +3 -3
  65. data/vendor/depot_tools/fetch_configs/pdfium.py +40 -0
  66. data/vendor/depot_tools/{recipes → fetch_configs}/skia.py +3 -3
  67. data/vendor/depot_tools/{recipes → fetch_configs}/skia_buildbot.py +3 -3
  68. data/vendor/depot_tools/fetch_configs/syzygy.py +41 -0
  69. data/vendor/depot_tools/{recipes → fetch_configs}/v8.py +3 -3
  70. data/vendor/depot_tools/{recipes → fetch_configs}/webrtc.py +3 -3
  71. data/vendor/depot_tools/{recipes → fetch_configs}/webrtc_android.py +4 -4
  72. data/vendor/depot_tools/{recipes → fetch_configs}/webrtc_ios.py +4 -4
  73. data/vendor/depot_tools/fix_encoding.py +6 -6
  74. data/vendor/depot_tools/gcl.py +11 -21
  75. data/vendor/depot_tools/gclient +10 -0
  76. data/vendor/depot_tools/gclient-new-workdir.py +7 -38
  77. data/vendor/depot_tools/gclient.bat +2 -2
  78. data/vendor/depot_tools/gclient.py +85 -65
  79. data/vendor/depot_tools/gclient_scm.py +83 -10
  80. data/vendor/depot_tools/gclient_utils.py +5 -1
  81. data/vendor/depot_tools/gerrit_util.py +243 -26
  82. data/vendor/depot_tools/git-auto-svn +1 -1
  83. data/vendor/depot_tools/git-cache +1 -1
  84. data/vendor/depot_tools/git-cherry-pick-upload +1 -1
  85. data/vendor/depot_tools/git-cl +1 -1
  86. data/vendor/depot_tools/git-drover +6 -0
  87. data/vendor/depot_tools/git-find-releases +6 -0
  88. data/vendor/depot_tools/git-footers +1 -1
  89. data/vendor/depot_tools/git-freeze +1 -1
  90. data/vendor/depot_tools/git-gs +1 -1
  91. data/vendor/depot_tools/git-hyper-blame +6 -0
  92. data/vendor/depot_tools/git-map +1 -1
  93. data/vendor/depot_tools/git-map-branches +1 -1
  94. data/vendor/depot_tools/git-mark-merge-base +1 -1
  95. data/vendor/depot_tools/git-nav-downstream +1 -1
  96. data/vendor/depot_tools/git-new-branch +1 -1
  97. data/vendor/depot_tools/git-number +1 -1
  98. data/vendor/depot_tools/git-rebase-update +1 -1
  99. data/vendor/depot_tools/git-rename-branch +1 -1
  100. data/vendor/depot_tools/git-reparent-branch +1 -1
  101. data/vendor/depot_tools/git-retry +1 -1
  102. data/vendor/depot_tools/git-squash-branch +1 -1
  103. data/vendor/depot_tools/git-thaw +1 -1
  104. data/vendor/depot_tools/git-try +1 -1
  105. data/vendor/depot_tools/git-upstream-diff +1 -1
  106. data/vendor/depot_tools/git_auto_svn.py +24 -6
  107. data/vendor/depot_tools/git_cache.py +74 -27
  108. data/vendor/depot_tools/git_cl.py +2118 -747
  109. data/vendor/depot_tools/git_common.py +100 -6
  110. data/vendor/depot_tools/git_dates.py +62 -0
  111. data/vendor/depot_tools/git_drover.py +424 -0
  112. data/vendor/depot_tools/git_find_releases.py +65 -0
  113. data/vendor/depot_tools/git_footers.py +42 -0
  114. data/vendor/depot_tools/git_hyper_blame.py +391 -0
  115. data/vendor/depot_tools/git_map_branches.py +8 -6
  116. data/vendor/depot_tools/git_new_branch.py +6 -1
  117. data/vendor/depot_tools/git_rebase_update.py +56 -16
  118. data/vendor/depot_tools/git_reparent_branch.py +13 -0
  119. data/vendor/depot_tools/git_try.py +0 -2
  120. data/vendor/depot_tools/gsutil.py +51 -20
  121. data/vendor/depot_tools/infra/config/OWNERS +3 -1
  122. data/vendor/depot_tools/infra/config/cq.cfg +7 -3
  123. data/vendor/depot_tools/infra/config/recipes.cfg +9 -0
  124. data/vendor/depot_tools/luci_hacks/README.md +35 -0
  125. data/vendor/depot_tools/{bootstrap/virtualenv/tests → luci_hacks}/__init__.py +0 -0
  126. data/vendor/depot_tools/luci_hacks/luci_recipe_run.isolate +12 -0
  127. data/vendor/depot_tools/luci_hacks/luci_recipe_run.py +81 -0
  128. data/vendor/depot_tools/luci_hacks/trigger_luci_job.py +128 -0
  129. data/vendor/depot_tools/man/html/depot_tools.html +9 -1
  130. data/vendor/depot_tools/man/html/depot_tools_tutorial.html +4 -4
  131. data/vendor/depot_tools/man/html/git-drover.html +191 -35
  132. data/vendor/depot_tools/man/html/git-hyper-blame.html +878 -0
  133. data/vendor/depot_tools/man/html/git-rebase-update.html +9 -4
  134. data/vendor/depot_tools/man/man1/git-drover.1 +189 -36
  135. data/vendor/depot_tools/man/man1/git-hyper-blame.1 +128 -0
  136. data/vendor/depot_tools/man/man1/git-rebase-update.1 +8 -6
  137. data/vendor/depot_tools/man/man7/depot_tools.7 +9 -4
  138. data/vendor/depot_tools/man/src/_git-hyper-blame_desc.helper.txt +1 -0
  139. data/vendor/depot_tools/man/src/common_demo_functions.sh +5 -0
  140. data/vendor/depot_tools/man/src/depot_tools_tutorial.txt +1 -1
  141. data/vendor/depot_tools/man/src/git-drover.demo.1.sh +11 -16
  142. data/vendor/depot_tools/man/src/git-drover.demo.3.sh +27 -0
  143. data/vendor/depot_tools/man/src/git-drover.demo.4.sh +39 -0
  144. data/vendor/depot_tools/man/src/git-drover.txt +49 -3
  145. data/vendor/depot_tools/man/src/git-hyper-blame.demo.1.sh +3 -0
  146. data/vendor/depot_tools/man/src/git-hyper-blame.demo.2.sh +4 -0
  147. data/vendor/depot_tools/man/src/git-hyper-blame.demo.common.sh +57 -0
  148. data/vendor/depot_tools/man/src/git-hyper-blame.txt +85 -0
  149. data/vendor/depot_tools/man/src/git-rebase-update.txt +5 -1
  150. data/vendor/depot_tools/my_activity.py +6 -21
  151. data/vendor/depot_tools/ninja +2 -2
  152. data/vendor/depot_tools/ninja-linux32 +0 -0
  153. data/vendor/depot_tools/ninja-linux64 +0 -0
  154. data/vendor/depot_tools/ninja-mac +0 -0
  155. data/vendor/depot_tools/ninja.exe +0 -0
  156. data/vendor/depot_tools/presubmit_canned_checks.py +83 -69
  157. data/vendor/depot_tools/presubmit_support.py +126 -42
  158. data/vendor/depot_tools/pylint.py +5 -1
  159. data/vendor/depot_tools/python_runner.sh +55 -0
  160. data/vendor/depot_tools/recipe_modules/bot_update/__init__.py +32 -0
  161. data/vendor/depot_tools/recipe_modules/bot_update/api.py +283 -0
  162. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/basic.json +56 -0
  163. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/basic_output_manifest.json +63 -0
  164. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/basic_with_branch_heads.json +57 -0
  165. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/clobber.json +44 -0
  166. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/forced.json +57 -0
  167. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/gerrit_no_reset.json +44 -0
  168. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/no_shallow.json +44 -0
  169. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/off.json +43 -0
  170. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/reset_root_solution_revision.json +43 -0
  171. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/svn_mode.json +59 -0
  172. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/trychange.json +58 -0
  173. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/trychange_oauth2.json +60 -0
  174. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob.json +58 -0
  175. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_fail.json +60 -0
  176. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_fail_patch.json +81 -0
  177. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_fail_patch_download.json +81 -0
  178. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_gerrit_angle.json +49 -0
  179. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_v8.json +61 -0
  180. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_v8_head_by_default.json +51 -0
  181. data/vendor/depot_tools/recipe_modules/bot_update/example.py +172 -0
  182. data/vendor/depot_tools/{bootstrap/virtualenv/virtualenv_support → recipe_modules/bot_update/resources}/__init__.py +0 -0
  183. data/vendor/depot_tools/recipe_modules/bot_update/resources/bot_update.py +1764 -0
  184. data/vendor/depot_tools/recipe_modules/bot_update/test_api.py +86 -0
  185. data/vendor/depot_tools/recipe_modules/depot_tools/__init__.py +3 -0
  186. data/vendor/depot_tools/recipe_modules/depot_tools/api.py +27 -0
  187. data/vendor/depot_tools/recipe_modules/gclient/__init__.py +10 -0
  188. data/vendor/depot_tools/recipe_modules/gclient/api.py +378 -0
  189. data/vendor/depot_tools/recipe_modules/gclient/config.py +671 -0
  190. data/vendor/depot_tools/recipe_modules/gclient/example.expected/basic.json +172 -0
  191. data/vendor/depot_tools/recipe_modules/gclient/example.expected/revision.json +174 -0
  192. data/vendor/depot_tools/recipe_modules/gclient/example.expected/tryserver.json +185 -0
  193. data/vendor/depot_tools/recipe_modules/gclient/example.py +100 -0
  194. data/vendor/depot_tools/recipe_modules/gclient/test_api.py +37 -0
  195. data/vendor/depot_tools/recipe_modules/git/__init__.py +9 -0
  196. data/vendor/depot_tools/recipe_modules/git/api.py +377 -0
  197. data/vendor/depot_tools/recipe_modules/git/example.expected/basic.json +177 -0
  198. data/vendor/depot_tools/recipe_modules/git/example.expected/basic_branch.json +177 -0
  199. data/vendor/depot_tools/recipe_modules/git/example.expected/basic_file_name.json +179 -0
  200. data/vendor/depot_tools/recipe_modules/git/example.expected/basic_hash.json +176 -0
  201. data/vendor/depot_tools/recipe_modules/git/example.expected/basic_ref.json +177 -0
  202. data/vendor/depot_tools/recipe_modules/git/example.expected/basic_submodule_update_force.json +178 -0
  203. data/vendor/depot_tools/recipe_modules/git/example.expected/can_fail_build.json +153 -0
  204. data/vendor/depot_tools/recipe_modules/git/example.expected/cannot_fail_build.json +181 -0
  205. data/vendor/depot_tools/recipe_modules/git/example.expected/cat-file_test.json +199 -0
  206. data/vendor/depot_tools/recipe_modules/git/example.expected/count-objects_delta.json +250 -0
  207. data/vendor/depot_tools/recipe_modules/git/example.expected/count-objects_failed.json +181 -0
  208. data/vendor/depot_tools/recipe_modules/git/example.expected/count-objects_with_bad_output.json +182 -0
  209. data/vendor/depot_tools/recipe_modules/git/example.expected/count-objects_with_bad_output_fails_build.json +102 -0
  210. data/vendor/depot_tools/recipe_modules/git/example.expected/curl_trace_file.json +181 -0
  211. data/vendor/depot_tools/recipe_modules/git/example.expected/platform_win.json +186 -0
  212. data/vendor/depot_tools/recipe_modules/git/example.expected/rebase_failed.json +179 -0
  213. data/vendor/depot_tools/recipe_modules/git/example.expected/remote_not_origin.json +179 -0
  214. data/vendor/depot_tools/recipe_modules/git/example.expected/set_got_revision.json +178 -0
  215. data/vendor/depot_tools/recipe_modules/git/example.py +147 -0
  216. data/vendor/depot_tools/recipe_modules/git/resources/git_setup.py +61 -0
  217. data/vendor/depot_tools/recipe_modules/git/test_api.py +18 -0
  218. data/vendor/depot_tools/recipe_modules/git_cl/__init__.py +4 -0
  219. data/vendor/depot_tools/recipe_modules/git_cl/api.py +25 -0
  220. data/vendor/depot_tools/recipe_modules/git_cl/config.py +22 -0
  221. data/vendor/depot_tools/recipe_modules/git_cl/example.expected/basic.json +66 -0
  222. data/vendor/depot_tools/recipe_modules/git_cl/example.py +41 -0
  223. data/vendor/depot_tools/recipe_modules/infra_paths/__init__.py +4 -0
  224. data/vendor/depot_tools/recipe_modules/infra_paths/api.py +12 -0
  225. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/basic.json +14 -0
  226. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_buildbot_linux.json +14 -0
  227. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_buildbot_mac.json +14 -0
  228. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_buildbot_win.json +14 -0
  229. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_kitchen_linux.json +14 -0
  230. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_kitchen_mac.json +14 -0
  231. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_kitchen_win.json +14 -0
  232. data/vendor/depot_tools/recipe_modules/infra_paths/example.py +28 -0
  233. data/vendor/depot_tools/recipe_modules/infra_paths/path_config.py +45 -0
  234. data/vendor/depot_tools/recipe_modules/presubmit/__init__.py +4 -0
  235. data/vendor/depot_tools/recipe_modules/presubmit/api.py +20 -0
  236. data/vendor/depot_tools/recipe_modules/presubmit/example.expected/basic.json +18 -0
  237. data/vendor/depot_tools/recipe_modules/presubmit/example.py +15 -0
  238. data/vendor/depot_tools/recipe_modules/rietveld/__init__.py +5 -0
  239. data/vendor/depot_tools/recipe_modules/rietveld/api.py +94 -0
  240. data/vendor/depot_tools/recipe_modules/rietveld/example.expected/basic.json +30 -0
  241. data/vendor/depot_tools/recipe_modules/rietveld/example.py +24 -0
  242. data/vendor/depot_tools/recipe_modules/tryserver/__init__.py +15 -0
  243. data/vendor/depot_tools/recipe_modules/tryserver/api.py +280 -0
  244. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_git_patch.json +104 -0
  245. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_rietveld_patch.json +58 -0
  246. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_rietveld_patch_new.json +58 -0
  247. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_svn_patch.json +68 -0
  248. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_wrong_patch.json +43 -0
  249. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_wrong_patch_new.json +43 -0
  250. data/vendor/depot_tools/recipe_modules/tryserver/example.py +53 -0
  251. data/vendor/depot_tools/recipe_modules/tryserver/test_api.py +7 -0
  252. data/vendor/depot_tools/recipes.py +136 -0
  253. data/vendor/depot_tools/repo +1 -1
  254. data/vendor/depot_tools/rietveld.py +46 -15
  255. data/vendor/depot_tools/roll_dep.py +97 -36
  256. data/vendor/depot_tools/scm.py +3 -3
  257. data/vendor/depot_tools/setup_color.py +94 -0
  258. data/vendor/depot_tools/subprocess2.py +10 -1
  259. data/vendor/depot_tools/third_party/cq_client/OWNERS +0 -1
  260. data/vendor/depot_tools/third_party/cq_client/README.md +47 -9
  261. data/vendor/depot_tools/third_party/cq_client/cq.pb.go +617 -0
  262. data/vendor/depot_tools/third_party/cq_client/cq.proto +75 -17
  263. data/vendor/depot_tools/third_party/cq_client/cq_pb2.py +168 -41
  264. data/vendor/depot_tools/third_party/cq_client/testdata/cq_gerrit.cfg +55 -0
  265. data/vendor/depot_tools/third_party/cq_client/{test/cq_example.cfg → testdata/cq_rietveld.cfg} +14 -6
  266. data/vendor/depot_tools/third_party/fancy_urllib/README +5 -4
  267. data/vendor/depot_tools/third_party/fancy_urllib/__init__.py +114 -52
  268. data/vendor/depot_tools/third_party/protobuf26/README.chromium +9 -6
  269. data/vendor/depot_tools/third_party/upload.py +17 -31
  270. data/vendor/depot_tools/trychange.py +0 -2
  271. data/vendor/depot_tools/update_depot_tools +29 -11
  272. data/vendor/depot_tools/update_depot_tools.bat +4 -9
  273. data/vendor/depot_tools/upload_to_google_storage.py +42 -5
  274. data/vendor/depot_tools/win_toolchain/OWNERS +1 -0
  275. data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +227 -52
  276. data/vendor/depot_tools/win_toolchain/package_from_installed.py +203 -88
  277. metadata +161 -81
  278. data/patches/arm/do-not-imply-vfp3-and-armv7.patch +0 -16
  279. data/patches/arm/do-not-use-vfp2.patch +0 -13
  280. data/patches/clang51/no-unused-variable.patch +0 -12
  281. data/vendor/depot_tools/bootstrap/.gitignore +0 -2
  282. data/vendor/depot_tools/bootstrap/bootstrap.py +0 -234
  283. data/vendor/depot_tools/bootstrap/deps.pyl +0 -15
  284. data/vendor/depot_tools/bootstrap/util.py +0 -87
  285. data/vendor/depot_tools/bootstrap/virtualenv/.gitignore +0 -10
  286. data/vendor/depot_tools/bootstrap/virtualenv/.travis.yml +0 -28
  287. data/vendor/depot_tools/bootstrap/virtualenv/AUTHORS.txt +0 -91
  288. data/vendor/depot_tools/bootstrap/virtualenv/CONTRIBUTING.rst +0 -21
  289. data/vendor/depot_tools/bootstrap/virtualenv/LICENSE.txt +0 -22
  290. data/vendor/depot_tools/bootstrap/virtualenv/MANIFEST.in +0 -11
  291. data/vendor/depot_tools/bootstrap/virtualenv/README.rst +0 -10
  292. data/vendor/depot_tools/bootstrap/virtualenv/bin/rebuild-script.py +0 -71
  293. data/vendor/depot_tools/bootstrap/virtualenv/docs/changes.rst +0 -747
  294. data/vendor/depot_tools/bootstrap/virtualenv/docs/conf.py +0 -149
  295. data/vendor/depot_tools/bootstrap/virtualenv/docs/development.rst +0 -61
  296. data/vendor/depot_tools/bootstrap/virtualenv/docs/index.rst +0 -137
  297. data/vendor/depot_tools/bootstrap/virtualenv/docs/installation.rst +0 -58
  298. data/vendor/depot_tools/bootstrap/virtualenv/docs/make.bat +0 -170
  299. data/vendor/depot_tools/bootstrap/virtualenv/docs/reference.rst +0 -256
  300. data/vendor/depot_tools/bootstrap/virtualenv/docs/userguide.rst +0 -249
  301. data/vendor/depot_tools/bootstrap/virtualenv/scripts/virtualenv +0 -3
  302. data/vendor/depot_tools/bootstrap/virtualenv/setup.py +0 -111
  303. data/vendor/depot_tools/bootstrap/virtualenv/tests/test_activate.sh +0 -94
  304. data/vendor/depot_tools/bootstrap/virtualenv/tests/test_activate_expected.output +0 -2
  305. data/vendor/depot_tools/bootstrap/virtualenv/tests/test_virtualenv.py +0 -139
  306. data/vendor/depot_tools/bootstrap/virtualenv/tests/tox.ini +0 -12
  307. data/vendor/depot_tools/bootstrap/virtualenv/tox.ini +0 -17
  308. data/vendor/depot_tools/bootstrap/virtualenv/virtualenv.py +0 -2367
  309. data/vendor/depot_tools/bootstrap/virtualenv/virtualenv_embedded/activate.bat +0 -26
  310. data/vendor/depot_tools/bootstrap/virtualenv/virtualenv_embedded/activate.csh +0 -42
  311. data/vendor/depot_tools/bootstrap/virtualenv/virtualenv_embedded/activate.fish +0 -74
  312. data/vendor/depot_tools/bootstrap/virtualenv/virtualenv_embedded/activate.ps1 +0 -150
  313. data/vendor/depot_tools/bootstrap/virtualenv/virtualenv_embedded/activate.sh +0 -80
  314. data/vendor/depot_tools/bootstrap/virtualenv/virtualenv_embedded/activate_this.py +0 -34
  315. data/vendor/depot_tools/bootstrap/virtualenv/virtualenv_embedded/deactivate.bat +0 -20
  316. data/vendor/depot_tools/bootstrap/virtualenv/virtualenv_embedded/distutils-init.py +0 -101
  317. data/vendor/depot_tools/bootstrap/virtualenv/virtualenv_embedded/distutils.cfg +0 -6
  318. data/vendor/depot_tools/bootstrap/virtualenv/virtualenv_embedded/site.py +0 -758
  319. data/vendor/depot_tools/bootstrap/virtualenv/virtualenv_support/pip-6.0-py2.py3-none-any.whl +0 -0
  320. data/vendor/depot_tools/bootstrap/virtualenv/virtualenv_support/setuptools-8.2.1-py2.py3-none-any.whl +0 -0
  321. data/vendor/depot_tools/bootstrap/win/README.google +0 -16
  322. data/vendor/depot_tools/cbuildbot +0 -96
  323. data/vendor/depot_tools/chrome_set_ver +0 -96
  324. data/vendor/depot_tools/cros +0 -96
  325. data/vendor/depot_tools/cros_sdk +0 -96
  326. data/vendor/depot_tools/git-cl-upload-hook +0 -52
  327. data/vendor/depot_tools/git-crup +0 -45
  328. data/vendor/depot_tools/python_git_runner.sh +0 -36
  329. data/vendor/depot_tools/recipes/blink.py +0 -59
  330. data/vendor/depot_tools/third_party/cq_client/test/validate_config_test.py +0 -52
  331. data/vendor/depot_tools/third_party/cq_client/validate_config.py +0 -108
  332. data/vendor/depot_tools/win_toolchain/toolchain2013.py +0 -494
@@ -0,0 +1,55 @@
1
+ version: 1
2
+ cq_name: "infra"
3
+ cq_status_url: "https://chromium-cq-status.appspot.com"
4
+ hide_ref_in_committed_msg: true
5
+ commit_burst_delay: 600
6
+ max_commit_burst: 10
7
+ in_production: false
8
+ git_repo_url: "https://chromium.googlesource.com/infra/infra.git"
9
+ target_ref: "refs/pending/heads/master"
10
+
11
+ gerrit {
12
+ cq_verified_label: "Commit-Queue-Verified"
13
+ }
14
+
15
+ verifiers {
16
+ tree_status: {
17
+ tree_status_url: "https://infra-status.appspot.com"
18
+ }
19
+
20
+ try_job {
21
+ buckets {
22
+ name: "tryserver.blink"
23
+ builders { name: "android_blink_compile_dbg" }
24
+ builders { name: "android_blink_compile_rel" }
25
+ builders { name: "win_blink_rel" }
26
+ builders {
27
+ name: "win_blink_rel_triggered"
28
+ triggered_by: "win_blink_rel"
29
+ }
30
+ }
31
+ buckets {
32
+ name: "tryserver.chromium.linux"
33
+ builders {
34
+ name: "android_arm64_dbg_recipe"
35
+ }
36
+ builders {
37
+ name: "linux_chromium_rel_ng"
38
+ experiment_percentage: 10
39
+ }
40
+ }
41
+ buckets {
42
+ name: "tryserver.chromium.mac"
43
+ builders {
44
+ name: "ios_dbg_simulator_ninja"
45
+ experiment_percentage: 100
46
+ }
47
+ }
48
+ try_job_retry_config {
49
+ try_job_retry_quota: 10
50
+ global_retry_quota: 11
51
+ failure_retry_weight: 12
52
+ transient_failure_retry_weight: 13
53
+ }
54
+ }
55
+ }
@@ -15,7 +15,8 @@ rietveld {
15
15
 
16
16
  verifiers {
17
17
  reviewer_lgtm: {
18
- committer_list: "chromium"
18
+ committer_list: "project-chromium-committers"
19
+ dry_run_access_list: "project-chromium-tryjob-access"
19
20
  max_wait_secs: 600
20
21
  no_lgtm_msg: "LGTM is missing"
21
22
  }
@@ -29,9 +30,10 @@ verifiers {
29
30
  name: "tryserver.blink"
30
31
  builders { name: "android_blink_compile_dbg" }
31
32
  builders { name: "android_blink_compile_rel" }
33
+ builders { name: "win_blink_rel" }
32
34
  builders {
33
- name: "win_blink_rel"
34
- triggered: true
35
+ name: "win_blink_rel_triggered"
36
+ triggered_by: "win_blink_rel"
35
37
  }
36
38
  }
37
39
  buckets {
@@ -41,15 +43,21 @@ verifiers {
41
43
  }
42
44
  builders {
43
45
  name: "linux_chromium_rel_ng"
44
- experiment_percentage: 0.1
46
+ experiment_percentage: 10
45
47
  }
46
48
  }
47
49
  buckets {
48
50
  name: "tryserver.chromium.mac"
49
51
  builders {
50
52
  name: "ios_dbg_simulator_ninja"
51
- experiment_percentage: 1.0
53
+ experiment_percentage: 100
52
54
  }
53
55
  }
56
+ try_job_retry_config {
57
+ try_job_retry_quota: 10
58
+ global_retry_quota: 11
59
+ failure_retry_weight: 12
60
+ transient_failure_retry_weight: 13
61
+ }
54
62
  }
55
- }
63
+ }
@@ -1,7 +1,5 @@
1
- The fancy_urllib library was obtained from
2
- http://googleappengine.googlecode.com/svn/trunk/python/lib/fancy_urllib/fancy_urllib/__init__.py
3
- under the following license (http://googleappengine.googlecode.com/svn/trunk/python/LICENSE):
4
-
1
+ The fancy_urllib library was obtained from [1] under the following
2
+ license ([2]):
5
3
 
6
4
  GOOGLE APP ENGINE SDK
7
5
  =====================
@@ -19,3 +17,6 @@ distributed under the License is distributed on an "AS IS" BASIS,
19
17
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20
18
  See the License for the specific language governing permissions and
21
19
  limitations under the License.
20
+
21
+ [1] https://github.com/GoogleCloudPlatform/appengine-python-vm-runtime/blob/master/python_vm_runtime/lib/fancy_urllib/fancy_urllib/__init__.py
22
+ [2] https://github.com/GoogleCloudPlatform/appengine-python-vm-runtime/blob/master/python_vm_runtime/LICENSE
@@ -1,5 +1,3 @@
1
- #!/usr/bin/env python
2
- #
3
1
  # Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007 Python Software
4
2
  # Foundation; All Rights Reserved
5
3
 
@@ -14,13 +12,12 @@ __author__ = "{frew,nick.johnson}@google.com (Fred Wulff and Nick Johnson)"
14
12
  import base64
15
13
  import httplib
16
14
  import logging
17
- import re
18
15
  import socket
19
- import urllib2
20
-
16
+ from urllib import splitpasswd
21
17
  from urllib import splittype
22
18
  from urllib import splituser
23
- from urllib import splitpasswd
19
+ import urllib2
20
+
24
21
 
25
22
  class InvalidCertificateException(httplib.HTTPException):
26
23
  """Raised when a certificate is provided with an invalid hostname."""
@@ -31,6 +28,7 @@ class InvalidCertificateException(httplib.HTTPException):
31
28
  Args:
32
29
  host: The hostname the connection was made to.
33
30
  cert: The SSL certificate (as a dictionary) the host returned.
31
+ reason: user readable error reason.
34
32
  """
35
33
  httplib.HTTPException.__init__(self)
36
34
  self.host = host
@@ -38,21 +36,35 @@ class InvalidCertificateException(httplib.HTTPException):
38
36
  self.reason = reason
39
37
 
40
38
  def __str__(self):
41
- return ('Host %s returned an invalid certificate (%s): %s\n'
42
- 'To learn more, see '
43
- 'http://code.google.com/appengine/kb/general.html#rpcssl' %
39
+ return ("Host %s returned an invalid certificate (%s): %s\n"
40
+ "To learn more, see "
41
+ "http://code.google.com/appengine/kb/general.html#rpcssl" %
44
42
  (self.host, self.reason, self.cert))
45
43
 
44
+
45
+ try:
46
+ import ssl
47
+ _CAN_VALIDATE_CERTS = True
48
+ except ImportError:
49
+ _CAN_VALIDATE_CERTS = False
50
+
51
+
46
52
  def can_validate_certs():
47
53
  """Return True if we have the SSL package and can validate certificates."""
48
- try:
49
- import ssl
50
- return True
51
- except ImportError:
52
- return False
53
-
54
- def _create_fancy_connection(tunnel_host=None, key_file=None,
55
- cert_file=None, ca_certs=None):
54
+ return _CAN_VALIDATE_CERTS
55
+
56
+
57
+ # Reexport SSLError so clients don't have to to do their own checking for ssl's
58
+ # existence.
59
+ if can_validate_certs():
60
+ SSLError = ssl.SSLError
61
+ else:
62
+ SSLError = None
63
+
64
+
65
+ def create_fancy_connection(tunnel_host=None, key_file=None,
66
+ cert_file=None, ca_certs=None,
67
+ proxy_authorization=None):
56
68
  # This abomination brought to you by the fact that
57
69
  # the HTTPHandler creates the connection instance in the middle
58
70
  # of do_open so we need to add the tunnel host to the class.
@@ -70,28 +82,64 @@ def _create_fancy_connection(tunnel_host=None, key_file=None,
70
82
  self.key_file = key_file
71
83
  self.cert_file = cert_file
72
84
  self.ca_certs = ca_certs
73
- try:
74
- import ssl
85
+ if can_validate_certs():
75
86
  if self.ca_certs:
76
87
  self.cert_reqs = ssl.CERT_REQUIRED
77
88
  else:
78
89
  self.cert_reqs = ssl.CERT_NONE
79
- except ImportError:
80
- pass
90
+
91
+ def _get_hostport(self, host, port):
92
+ # Python 2.7.7rc1 (hg r90728:568041fd8090), 3.4.1 and 3.5 rename
93
+ # _set_hostport to _get_hostport and changes it's functionality. The
94
+ # Python 2.7.7rc1 version of this method is included here for
95
+ # compatibility with earlier versions of Python. Without this, HTTPS over
96
+ # HTTP CONNECT proxies cannot be used.
97
+
98
+ # This method may be removed if compatibility with Python <2.7.7rc1 is not
99
+ # required.
100
+
101
+ # Python bug: http://bugs.python.org/issue7776
102
+ if port is None:
103
+ i = host.rfind(":")
104
+ j = host.rfind("]") # ipv6 addresses have [...]
105
+ if i > j:
106
+ try:
107
+ port = int(host[i+1:])
108
+ except ValueError:
109
+ if host[i+1:] == "": # http://foo.com:/ == http://foo.com/
110
+ port = self.default_port
111
+ else:
112
+ raise httplib.InvalidURL("nonnumeric port: '%s'" % host[i+1:])
113
+ host = host[:i]
114
+ else:
115
+ port = self.default_port
116
+ if host and host[0] == "[" and host[-1] == "]":
117
+ host = host[1:-1]
118
+
119
+ return (host, port)
81
120
 
82
121
  def _tunnel(self):
83
- self._set_hostport(self._tunnel_host, None)
122
+ self.host, self.port = self._get_hostport(self._tunnel_host, None)
84
123
  logging.info("Connecting through tunnel to: %s:%d",
85
124
  self.host, self.port)
86
- self.send("CONNECT %s:%d HTTP/1.0\r\n\r\n" % (self.host, self.port))
125
+
126
+ self.send("CONNECT %s:%d HTTP/1.0\r\n" % (self.host, self.port))
127
+
128
+ if proxy_authorization:
129
+ self.send("Proxy-Authorization: %s\r\n" % proxy_authorization)
130
+
131
+ # blank line
132
+ self.send("\r\n")
133
+
87
134
  response = self.response_class(self.sock, strict=self.strict,
88
135
  method=self._method)
136
+ # pylint: disable=protected-access
89
137
  (_, code, message) = response._read_status()
90
138
 
91
139
  if code != 200:
92
140
  self.close()
93
- raise socket.error, "Tunnel connection failed: %d %s" % (
94
- code, message.strip())
141
+ raise socket.error("Tunnel connection failed: %d %s" %
142
+ (code, message.strip()))
95
143
 
96
144
  while True:
97
145
  line = response.fp.readline()
@@ -106,15 +154,15 @@ def _create_fancy_connection(tunnel_host=None, key_file=None,
106
154
  Returns:
107
155
  list: A list of valid host globs.
108
156
  """
109
- if 'subjectAltName' in cert:
110
- return [x[1] for x in cert['subjectAltName'] if x[0].lower() == 'dns']
157
+ if "subjectAltName" in cert:
158
+ return [x[1] for x in cert["subjectAltName"] if x[0].lower() == "dns"]
111
159
  else:
112
160
  # Return a list of commonName fields
113
- return [x[0][1] for x in cert['subject']
114
- if x[0][0].lower() == 'commonname']
161
+ return [x[0][1] for x in cert["subject"]
162
+ if x[0][0].lower() == "commonname"]
115
163
 
116
164
  def _validate_certificate_hostname(self, cert, hostname):
117
- """Validates that a given hostname is valid for an SSL certificate.
165
+ """Perform RFC2818/6125 validation against a cert and hostname.
118
166
 
119
167
  Args:
120
168
  cert: A dictionary representing an SSL certificate.
@@ -124,14 +172,19 @@ def _create_fancy_connection(tunnel_host=None, key_file=None,
124
172
  """
125
173
  hosts = self._get_valid_hosts_for_cert(cert)
126
174
  for host in hosts:
127
- # Convert the glob-style hostname expression (eg, '*.google.com') into a
128
- # valid regular expression.
129
- host_re = host.replace('.', '\.').replace('*', '[^.]*')
130
- if re.search('^%s$' % (host_re,), hostname, re.I):
175
+ # Wildcards are only valid when the * exists at the end of the last
176
+ # (left-most) label, and there are at least 3 labels in the expression.
177
+ if ("*." in host and host.count("*") == 1 and
178
+ host.count(".") > 1 and "." in hostname):
179
+ left_expected, right_expected = host.split("*.")
180
+ left_hostname, right_hostname = hostname.split(".", 1)
181
+ if (left_hostname.startswith(left_expected) and
182
+ right_expected == right_hostname):
183
+ return True
184
+ elif host == hostname:
131
185
  return True
132
186
  return False
133
187
 
134
-
135
188
  def connect(self):
136
189
  # TODO(frew): When we drop support for <2.6 (in the far distant future),
137
190
  # change this to socket.create_connection.
@@ -141,9 +194,11 @@ def _create_fancy_connection(tunnel_host=None, key_file=None,
141
194
  self._tunnel()
142
195
 
143
196
  # ssl and FakeSocket got deprecated. Try for the new hotness of wrap_ssl,
144
- # with fallback.
145
- try:
146
- import ssl
197
+ # with fallback. Note: Since can_validate_certs() just checks for the
198
+ # ssl module, it's equivalent to attempting to import ssl from
199
+ # the function, but doesn't require a dynamic import, which doesn't
200
+ # play nicely with dev_appserver.
201
+ if can_validate_certs():
147
202
  self.sock = ssl.wrap_socket(self.sock,
148
203
  keyfile=self.key_file,
149
204
  certfile=self.cert_file,
@@ -152,15 +207,15 @@ def _create_fancy_connection(tunnel_host=None, key_file=None,
152
207
 
153
208
  if self.cert_reqs & ssl.CERT_REQUIRED:
154
209
  cert = self.sock.getpeercert()
155
- hostname = self.host.split(':', 0)[0]
210
+ hostname = self.host.split(":", 0)[0]
156
211
  if not self._validate_certificate_hostname(cert, hostname):
157
212
  raise InvalidCertificateException(hostname, cert,
158
- 'hostname mismatch')
159
- except ImportError:
160
- ssl = socket.ssl(self.sock,
161
- keyfile=self.key_file,
162
- certfile=self.cert_file)
163
- self.sock = httplib.FakeSocket(self.sock, ssl)
213
+ "hostname mismatch")
214
+ else:
215
+ ssl_socket = socket.ssl(self.sock,
216
+ keyfile=self.key_file,
217
+ certfile=self.cert_file)
218
+ self.sock = httplib.FakeSocket(self.sock, ssl_socket)
164
219
 
165
220
  return PresetProxyHTTPSConnection
166
221
 
@@ -329,17 +384,24 @@ class FancyProxyHandler(urllib2.ProxyHandler):
329
384
  class FancyHTTPSHandler(urllib2.HTTPSHandler):
330
385
  """An HTTPSHandler that works with CONNECT-enabled proxies."""
331
386
 
332
- def do_open(self, http_class, req):
387
+ def do_open(self, http_class, req, *args, **kwargs):
388
+ proxy_authorization = None
389
+ for header in req.headers:
390
+ if header.lower() == "proxy-authorization":
391
+ proxy_authorization = req.headers[header]
392
+ break
393
+
333
394
  # Intentionally very specific so as to opt for false negatives
334
395
  # rather than false positives.
335
396
  try:
336
397
  return urllib2.HTTPSHandler.do_open(
337
398
  self,
338
- _create_fancy_connection(req._tunnel_host,
339
- req._key_file,
340
- req._cert_file,
341
- req._ca_certs),
342
- req)
399
+ create_fancy_connection(req._tunnel_host,
400
+ req._key_file,
401
+ req._cert_file,
402
+ req._ca_certs,
403
+ proxy_authorization),
404
+ req, *args, **kwargs)
343
405
  except urllib2.URLError, url_error:
344
406
  try:
345
407
  import ssl
@@ -347,7 +409,7 @@ class FancyHTTPSHandler(urllib2.HTTPSHandler):
347
409
  url_error.reason.args[0] == 1):
348
410
  # Display the reason to the user. Need to use args for python2.5
349
411
  # compat.
350
- raise InvalidCertificateException(req.host, '',
412
+ raise InvalidCertificateException(req.host, "",
351
413
  url_error.reason.args[1])
352
414
  except ImportError:
353
415
  pass
@@ -2,12 +2,12 @@ This directory contains google.protobuf module version 2.6.0 build 0.
2
2
 
3
3
  sergiyb@: It has been manually renamed to protobuf26. This is needed to avoid
4
4
  conflicts with a built-in google.protobuf module found on many developer
5
- machines. The long-term solution to this problem, however, should be virtualenv.
6
- Unfortunately due to limited time and lack of experience, it was not a
7
- reasonable short-term solution.
5
+ machines. The long-term solution to this problem was to use virtualenv and it
6
+ was implemented, but had to be reverted due to incompatibilities with ChromiumOS
7
+ builds (see http://crbug.com/542922).
8
8
 
9
- If you need to update this package, please make sure that you replace all
10
- the references to google.protobuf in the package itself with protobuf26, e.g.
9
+ If you need to update this package, please make sure that you replace all the
10
+ references to google.protobuf in the package itself with protobuf26, e.g.
11
11
 
12
12
  from google.protobuf import text_format
13
13
  import google.protobuf
@@ -17,4 +17,7 @@ becomes
17
17
  from protobuf26 import text_format
18
18
  import protobuf26
19
19
 
20
- Bug tracking setting up virtualenv for depot_tools is https://crbug.com/496241.
20
+ Original bug tracking setting up virtualenv for depot_tools was
21
+ http://crbug.com/503067, but it was closed as WontFix. If you believe that
22
+ virtualenv should be added to the current version of depot_tools, please re-open
23
+ that bug.
@@ -842,15 +842,12 @@ def GetContentType(filename):
842
842
  # Use a shell for subcommands on Windows to get a PATH search.
843
843
  use_shell = sys.platform.startswith("win")
844
844
 
845
- def RunShellWithReturnCodeAndStderr(command, print_output=False,
846
- universal_newlines=True,
847
- env=os.environ):
845
+ def RunShellWithReturnCodeAndStderr(command, universal_newlines=True,
846
+ env=os.environ):
848
847
  """Run a command and return output from stdout, stderr and the return code.
849
848
 
850
849
  Args:
851
850
  command: Command to execute.
852
- print_output: If True, the output is printed to stdout.
853
- If False, both stdout and stderr are ignored.
854
851
  universal_newlines: Use universal_newlines flag (default: True).
855
852
 
856
853
  Returns:
@@ -862,37 +859,20 @@ def RunShellWithReturnCodeAndStderr(command, print_output=False,
862
859
  p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
863
860
  shell=use_shell, universal_newlines=universal_newlines,
864
861
  env=env)
865
- if print_output:
866
- output_array = []
867
- while True:
868
- line = p.stdout.readline()
869
- if not line:
870
- break
871
- print line.strip("\n")
872
- output_array.append(line)
873
- output = "".join(output_array)
874
- else:
875
- output = p.stdout.read()
876
- p.wait()
877
- errout = p.stderr.read()
878
- if print_output and errout:
879
- print >> sys.stderr, errout
862
+ output, errout = p.communicate()
880
863
  p.stdout.close()
881
864
  p.stderr.close()
882
865
  return output, errout, p.returncode
883
866
 
884
- def RunShellWithReturnCode(command, print_output=False,
885
- universal_newlines=True,
886
- env=os.environ):
867
+ def RunShellWithReturnCode(command, universal_newlines=True, env=os.environ):
887
868
  """Run a command and return output from stdout and the return code."""
888
- out, err, retcode = RunShellWithReturnCodeAndStderr(command, print_output,
869
+ out, err, retcode = RunShellWithReturnCodeAndStderr(command,
889
870
  universal_newlines, env)
890
871
  return out, retcode
891
872
 
892
873
  def RunShell(command, silent_ok=False, universal_newlines=True,
893
- print_output=False, env=os.environ):
894
- data, retcode = RunShellWithReturnCode(command, print_output,
895
- universal_newlines, env)
874
+ env=os.environ):
875
+ data, retcode = RunShellWithReturnCode(command, universal_newlines, env)
896
876
  if retcode:
897
877
  ErrorExit("Got error status from %s:\n%s" % (command, data))
898
878
  if not silent_ok and not data:
@@ -1448,6 +1428,9 @@ class GitVCS(VersionControlSystem):
1448
1428
  env = os.environ.copy()
1449
1429
  if "GIT_EXTERNAL_DIFF" in env:
1450
1430
  del env["GIT_EXTERNAL_DIFF"]
1431
+ # 'cat' is a magical git string that disables pagers on all platforms.
1432
+ env["GIT_PAGER"] = "cat"
1433
+
1451
1434
  # -M/-C will not print the diff for the deleted file when a file is renamed.
1452
1435
  # This is confusing because the original file will not be shown on the
1453
1436
  # review when a file is renamed. So, get a diff with ONLY deletes, then
@@ -1762,7 +1745,7 @@ class PerforceVCS(VersionControlSystem):
1762
1745
  args.extend(extra_args)
1763
1746
 
1764
1747
  data, retcode = RunShellWithReturnCode(
1765
- args, print_output=False, universal_newlines=universal_newlines)
1748
+ args, universal_newlines=universal_newlines)
1766
1749
  if marshal_output and data:
1767
1750
  data = marshal.loads(data)
1768
1751
  return data, retcode
@@ -2501,12 +2484,15 @@ def RealMain(argv, data=None):
2501
2484
  uploaded_diff_file = [("data", "data.diff", data)]
2502
2485
  ctype, body = EncodeMultipartFormData(form_fields, uploaded_diff_file)
2503
2486
  response_body = rpc_server.Send("/upload", body, content_type=ctype)
2504
- patchset = None
2487
+ issue, patchset = None, None
2505
2488
  if not options.download_base or not uploaded_diff_file:
2506
2489
  lines = response_body.splitlines()
2507
2490
  if len(lines) >= 2:
2508
- msg = lines[0]
2491
+ # lines[0] is "Issue (created|updated): <url>".
2492
+ issue = lines[0][lines[0].rfind("/")+1:]
2493
+ # lines[1] is just patchset number.
2509
2494
  patchset = lines[1].strip()
2495
+ msg = '%s (patchset: %s)' % (lines[0], patchset)
2510
2496
  patches = [x.split(" ", 1) for x in lines[2:]]
2511
2497
  else:
2512
2498
  msg = response_body
@@ -2516,7 +2502,7 @@ def RealMain(argv, data=None):
2516
2502
  if not response_body.startswith("Issue created.") and \
2517
2503
  not response_body.startswith("Issue updated."):
2518
2504
  sys.exit(0)
2519
- issue = msg[msg.rfind("/")+1:]
2505
+ assert issue
2520
2506
 
2521
2507
  if not uploaded_diff_file:
2522
2508
  result = UploadSeparatePatches(issue, rpc_server, patchset, data, options)