libv8 5.3.332.38.5 → 5.6.326.50.0beta1

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 (352) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +0 -1
  3. data/CHANGELOG.md +2 -0
  4. data/ext/libv8/builder.rb +2 -2
  5. data/lib/libv8/version.rb +1 -1
  6. data/patches/0001-Build-a-standalone-static-library.patch +4 -4
  7. data/patches/0002-Don-t-compile-unnecessary-stuff.patch +16 -11
  8. data/patches/0003-Use-the-fPIC-flag-for-the-static-library.patch +4 -4
  9. data/patches/{0005-Do-not-embed-debug-symbols-in-macOS-libraries.patch → 0004-Do-not-embed-debug-symbols-in-macOS-libraries.patch} +4 -4
  10. data/vendor/depot_tools/.gitignore +4 -0
  11. data/vendor/depot_tools/OWNERS +0 -2
  12. data/vendor/depot_tools/PRESUBMIT.py +20 -23
  13. data/vendor/depot_tools/README.gclient.md +3 -3
  14. data/vendor/depot_tools/README.git-cl.md +13 -12
  15. data/vendor/depot_tools/README.md +2 -3
  16. data/vendor/depot_tools/WATCHLISTS +0 -1
  17. data/vendor/depot_tools/appengine_mapper.py +23 -0
  18. data/vendor/depot_tools/apply_issue.py +2 -8
  19. data/vendor/depot_tools/bootstrap/win/README.md +1 -8
  20. data/vendor/depot_tools/bootstrap/win/git_bootstrap.py +6 -16
  21. data/vendor/depot_tools/bootstrap/win/git_version.txt +1 -1
  22. data/vendor/depot_tools/bootstrap/win/git_version_bleeding_edge.txt +1 -1
  23. data/vendor/depot_tools/checkout.py +20 -433
  24. data/vendor/depot_tools/cipd +73 -0
  25. data/vendor/depot_tools/cipd.bat +12 -0
  26. data/vendor/depot_tools/cipd.ps1 +57 -0
  27. data/vendor/depot_tools/cipd_client_version +1 -0
  28. data/vendor/depot_tools/clang_format.py +9 -6
  29. data/vendor/depot_tools/clang_format_merge_driver +8 -0
  30. data/vendor/depot_tools/clang_format_merge_driver.bat +11 -0
  31. data/vendor/depot_tools/clang_format_merge_driver.py +67 -0
  32. data/vendor/depot_tools/codereview.settings +3 -2
  33. data/vendor/depot_tools/commit_queue.py +1 -1
  34. data/vendor/depot_tools/cpplint.py +2 -0
  35. data/vendor/depot_tools/fetch.py +1 -54
  36. data/vendor/depot_tools/fetch_configs/android.py +2 -2
  37. data/vendor/depot_tools/fetch_configs/breakpad.py +2 -3
  38. data/vendor/depot_tools/fetch_configs/chromium.py +2 -3
  39. data/vendor/depot_tools/fetch_configs/crashpad.py +2 -2
  40. data/vendor/depot_tools/fetch_configs/dart.py +2 -3
  41. data/vendor/depot_tools/fetch_configs/dartino.py +2 -3
  42. data/vendor/depot_tools/fetch_configs/dartium.py +2 -3
  43. data/vendor/depot_tools/fetch_configs/depot_tools.py +3 -6
  44. data/vendor/depot_tools/fetch_configs/gyp.py +2 -3
  45. data/vendor/depot_tools/fetch_configs/infra.py +2 -2
  46. data/vendor/depot_tools/fetch_configs/infra_internal.py +2 -2
  47. data/vendor/depot_tools/fetch_configs/ios.py +2 -2
  48. data/vendor/depot_tools/fetch_configs/ios_internal.py +2 -3
  49. data/vendor/depot_tools/fetch_configs/mojo.py +2 -3
  50. data/vendor/depot_tools/fetch_configs/nacl.py +2 -3
  51. data/vendor/depot_tools/fetch_configs/naclports.py +2 -3
  52. data/vendor/depot_tools/fetch_configs/pdfium.py +2 -2
  53. data/vendor/depot_tools/fetch_configs/skia.py +2 -2
  54. data/vendor/depot_tools/fetch_configs/skia_buildbot.py +2 -2
  55. data/vendor/depot_tools/fetch_configs/syzygy.py +2 -2
  56. data/vendor/depot_tools/fetch_configs/v8.py +2 -3
  57. data/vendor/depot_tools/fetch_configs/webrtc.py +5 -3
  58. data/vendor/depot_tools/fetch_configs/webrtc_android.py +2 -2
  59. data/vendor/depot_tools/fetch_configs/webrtc_ios.py +2 -2
  60. data/vendor/depot_tools/fix_encoding.py +6 -6
  61. data/vendor/depot_tools/gclient.py +136 -368
  62. data/vendor/depot_tools/gclient_scm.py +108 -647
  63. data/vendor/depot_tools/gclient_utils.py +22 -86
  64. data/vendor/depot_tools/gerrit_client.py +105 -0
  65. data/vendor/depot_tools/gerrit_util.py +174 -67
  66. data/vendor/depot_tools/git-crrev-parse +6 -7
  67. data/vendor/depot_tools/git-gs +1 -1
  68. data/vendor/depot_tools/git_cache.py +68 -18
  69. data/vendor/depot_tools/git_cherry_pick_upload.py +4 -4
  70. data/vendor/depot_tools/git_cl.py +1028 -961
  71. data/vendor/depot_tools/git_common.py +2 -3
  72. data/vendor/depot_tools/git_drover.py +0 -1
  73. data/vendor/depot_tools/git_footers.py +3 -43
  74. data/vendor/depot_tools/git_rebase_update.py +9 -1
  75. data/vendor/depot_tools/git_squash_branch.py +1 -1
  76. data/vendor/depot_tools/infra/config/cq.cfg +8 -1
  77. data/vendor/depot_tools/infra/config/recipes.cfg +1 -1
  78. data/vendor/depot_tools/man/html/depot_tools.html +3 -11
  79. data/vendor/depot_tools/man/html/depot_tools_tutorial.html +9 -9
  80. data/vendor/depot_tools/man/html/git-cherry-pick-upload.html +2 -2
  81. data/vendor/depot_tools/man/html/git-drover.html +17 -17
  82. data/vendor/depot_tools/man/html/git-footers.html +2 -2
  83. data/vendor/depot_tools/man/html/git-freeze.html +4 -4
  84. data/vendor/depot_tools/man/html/git-hyper-blame.html +2 -2
  85. data/vendor/depot_tools/man/html/git-map-branches.html +2 -2
  86. data/vendor/depot_tools/man/html/git-map.html +2 -2
  87. data/vendor/depot_tools/man/html/git-mark-merge-base.html +2 -2
  88. data/vendor/depot_tools/man/html/git-nav-downstream.html +2 -2
  89. data/vendor/depot_tools/man/html/git-nav-upstream.html +2 -2
  90. data/vendor/depot_tools/man/html/git-new-branch.html +2 -2
  91. data/vendor/depot_tools/man/html/git-rebase-update.html +2 -2
  92. data/vendor/depot_tools/man/html/git-rename-branch.html +2 -2
  93. data/vendor/depot_tools/man/html/git-reparent-branch.html +2 -2
  94. data/vendor/depot_tools/man/html/git-retry.html +3 -3
  95. data/vendor/depot_tools/man/html/git-squash-branch.html +3 -3
  96. data/vendor/depot_tools/man/html/git-thaw.html +2 -2
  97. data/vendor/depot_tools/man/html/git-upstream-diff.html +3 -3
  98. data/vendor/depot_tools/man/man1/git-cherry-pick-upload.1 +4 -4
  99. data/vendor/depot_tools/man/man1/git-drover.1 +19 -19
  100. data/vendor/depot_tools/man/man1/git-footers.1 +4 -4
  101. data/vendor/depot_tools/man/man1/git-freeze.1 +6 -6
  102. data/vendor/depot_tools/man/man1/git-hyper-blame.1 +4 -4
  103. data/vendor/depot_tools/man/man1/git-map-branches.1 +4 -4
  104. data/vendor/depot_tools/man/man1/git-map.1 +4 -4
  105. data/vendor/depot_tools/man/man1/git-mark-merge-base.1 +4 -4
  106. data/vendor/depot_tools/man/man1/git-nav-downstream.1 +4 -4
  107. data/vendor/depot_tools/man/man1/git-nav-upstream.1 +4 -4
  108. data/vendor/depot_tools/man/man1/git-new-branch.1 +4 -4
  109. data/vendor/depot_tools/man/man1/git-rebase-update.1 +4 -4
  110. data/vendor/depot_tools/man/man1/git-rename-branch.1 +4 -4
  111. data/vendor/depot_tools/man/man1/git-reparent-branch.1 +4 -4
  112. data/vendor/depot_tools/man/man1/git-retry.1 +5 -5
  113. data/vendor/depot_tools/man/man1/git-squash-branch.1 +5 -5
  114. data/vendor/depot_tools/man/man1/git-thaw.1 +4 -4
  115. data/vendor/depot_tools/man/man1/git-upstream-diff.1 +5 -5
  116. data/vendor/depot_tools/man/man7/depot_tools.7 +5 -10
  117. data/vendor/depot_tools/man/man7/depot_tools_tutorial.7 +4 -4
  118. data/vendor/depot_tools/man/src/depot_tools.txt +1 -1
  119. data/vendor/depot_tools/man/src/depot_tools_tutorial.txt +7 -7
  120. data/vendor/depot_tools/man/src/filter_demo_output.py +2 -2
  121. data/vendor/depot_tools/man/src/git-footers.demo.1.sh +1 -1
  122. data/vendor/depot_tools/man/src/git-retry.txt +1 -1
  123. data/vendor/depot_tools/man/src/git-squash-branch.txt +2 -2
  124. data/vendor/depot_tools/man/src/git-upstream-diff.txt +1 -1
  125. data/vendor/depot_tools/my_activity.py +6 -3
  126. data/vendor/depot_tools/my_reviews.py +1 -1
  127. data/vendor/depot_tools/ninja +2 -2
  128. data/vendor/depot_tools/ninja-linux32 +0 -0
  129. data/vendor/depot_tools/ninja-linux64 +0 -0
  130. data/vendor/depot_tools/ninja-mac +0 -0
  131. data/vendor/depot_tools/ninja.exe +0 -0
  132. data/vendor/depot_tools/owners.py +14 -3
  133. data/vendor/depot_tools/presubmit_canned_checks.py +46 -67
  134. data/vendor/depot_tools/presubmit_support.py +109 -371
  135. data/vendor/depot_tools/pylintrc +83 -56
  136. data/vendor/depot_tools/recipe_modules/OWNERS +1 -0
  137. data/vendor/depot_tools/recipe_modules/bot_update/__init__.py +18 -9
  138. data/vendor/depot_tools/recipe_modules/bot_update/api.py +56 -55
  139. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/basic.json +3 -7
  140. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/basic_output_manifest.json +3 -7
  141. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/basic_with_branch_heads.json +3 -7
  142. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/buildbot.json +52 -0
  143. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/clobber.json +19 -10
  144. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/gerrit_no_rebase_patch_ref.json +19 -10
  145. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/gerrit_no_reset.json +19 -10
  146. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/no_shallow.json +19 -10
  147. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/reset_root_solution_revision.json +19 -10
  148. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/trychange.json +3 -7
  149. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/trychange_oauth2.json +2 -54
  150. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/trychange_oauth2_buildbot.json +56 -0
  151. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/{forced.json → trychange_oauth2_json.json} +6 -9
  152. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/trychange_oauth2_json_win.json +54 -0
  153. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob.json +9 -9
  154. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_fail.json +9 -9
  155. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_fail_patch.json +9 -9
  156. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_fail_patch_download.json +9 -9
  157. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_gerrit_angle.json +20 -10
  158. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_gerrit_angle_deprecated.json +59 -0
  159. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_v8.json +9 -9
  160. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_v8_head_by_default.json +20 -10
  161. data/vendor/depot_tools/recipe_modules/bot_update/example.py +45 -63
  162. data/vendor/depot_tools/recipe_modules/bot_update/resources/bot_update.py +210 -807
  163. data/vendor/depot_tools/recipe_modules/bot_update/test_api.py +34 -45
  164. data/vendor/depot_tools/recipe_modules/cipd/api.py +59 -84
  165. data/vendor/depot_tools/recipe_modules/cipd/example.expected/basic.json +71 -117
  166. data/vendor/depot_tools/recipe_modules/cipd/example.expected/describe-failed.json +14 -60
  167. data/vendor/depot_tools/recipe_modules/cipd/example.expected/describe-many-instances.json +71 -117
  168. data/vendor/depot_tools/recipe_modules/cipd/example.expected/mac64.json +71 -117
  169. data/vendor/depot_tools/recipe_modules/cipd/example.expected/win64.json +71 -117
  170. data/vendor/depot_tools/recipe_modules/cipd/example.py +2 -12
  171. data/vendor/depot_tools/recipe_modules/cipd/test_api.py +0 -9
  172. data/vendor/depot_tools/recipe_modules/depot_tools/api.py +6 -0
  173. data/vendor/depot_tools/recipe_modules/depot_tools/example.expected/basic.json +7 -0
  174. data/vendor/depot_tools/recipe_modules/depot_tools/example.expected/win.json +7 -0
  175. data/vendor/depot_tools/recipe_modules/depot_tools/example.py +3 -0
  176. data/vendor/depot_tools/recipe_modules/gclient/__init__.py +4 -0
  177. data/vendor/depot_tools/recipe_modules/gclient/api.py +9 -22
  178. data/vendor/depot_tools/recipe_modules/gclient/config.py +18 -5
  179. data/vendor/depot_tools/recipe_modules/gclient/example.expected/basic.json +14 -14
  180. data/vendor/depot_tools/recipe_modules/gclient/example.expected/buildbot.json +211 -0
  181. data/vendor/depot_tools/recipe_modules/gclient/example.expected/revision.json +16 -14
  182. data/vendor/depot_tools/recipe_modules/gclient/example.expected/tryserver.json +16 -14
  183. data/vendor/depot_tools/recipe_modules/gclient/example.py +13 -11
  184. data/vendor/depot_tools/recipe_modules/gerrit/__init__.py +6 -0
  185. data/vendor/depot_tools/recipe_modules/gerrit/api.py +63 -0
  186. data/vendor/depot_tools/recipe_modules/gerrit/example.expected/basic.json +64 -0
  187. data/vendor/depot_tools/recipe_modules/gerrit/example.py +35 -0
  188. data/vendor/depot_tools/recipe_modules/gerrit/test_api.py +24 -0
  189. data/vendor/depot_tools/recipe_modules/git/__init__.py +4 -0
  190. data/vendor/depot_tools/recipe_modules/git/api.py +155 -142
  191. data/vendor/depot_tools/recipe_modules/git/example.expected/basic.json +43 -17
  192. data/vendor/depot_tools/recipe_modules/git/example.expected/basic_branch.json +43 -17
  193. data/vendor/depot_tools/recipe_modules/git/example.expected/basic_file_name.json +43 -17
  194. data/vendor/depot_tools/recipe_modules/git/example.expected/basic_hash.json +43 -17
  195. data/vendor/depot_tools/recipe_modules/git/example.expected/basic_ref.json +43 -17
  196. data/vendor/depot_tools/recipe_modules/git/example.expected/basic_submodule_update_force.json +43 -17
  197. data/vendor/depot_tools/recipe_modules/git/example.expected/can_fail_build.json +13 -13
  198. data/vendor/depot_tools/recipe_modules/git/example.expected/cannot_fail_build.json +43 -17
  199. data/vendor/depot_tools/recipe_modules/git/example.expected/cat-file_test.json +45 -19
  200. data/vendor/depot_tools/recipe_modules/git/example.expected/count-objects_delta.json +45 -19
  201. data/vendor/depot_tools/recipe_modules/git/example.expected/count-objects_failed.json +43 -17
  202. data/vendor/depot_tools/recipe_modules/git/example.expected/count-objects_with_bad_output.json +43 -17
  203. data/vendor/depot_tools/recipe_modules/git/example.expected/count-objects_with_bad_output_fails_build.json +8 -8
  204. data/vendor/depot_tools/recipe_modules/git/example.expected/curl_trace_file.json +44 -18
  205. data/vendor/depot_tools/recipe_modules/git/example.expected/git-cache-checkout.json +48 -22
  206. data/vendor/depot_tools/recipe_modules/git/example.expected/platform_win.json +43 -17
  207. data/vendor/depot_tools/recipe_modules/git/example.expected/rebase_failed.json +42 -16
  208. data/vendor/depot_tools/recipe_modules/git/example.expected/remote_not_origin.json +43 -17
  209. data/vendor/depot_tools/recipe_modules/git/example.expected/set_got_revision.json +43 -17
  210. data/vendor/depot_tools/recipe_modules/git/example.py +9 -3
  211. data/vendor/depot_tools/recipe_modules/git_cl/__init__.py +4 -0
  212. data/vendor/depot_tools/recipe_modules/git_cl/api.py +8 -8
  213. data/vendor/depot_tools/recipe_modules/git_cl/example.py +1 -1
  214. data/vendor/depot_tools/recipe_modules/gsutil/__init__.py +4 -0
  215. data/vendor/depot_tools/recipe_modules/gsutil/api.py +196 -0
  216. data/vendor/depot_tools/recipe_modules/gsutil/example.expected/basic.json +186 -0
  217. data/vendor/depot_tools/recipe_modules/gsutil/example.py +77 -0
  218. data/vendor/depot_tools/recipe_modules/gsutil/resources/gsutil_smart_retry.py +69 -0
  219. data/vendor/depot_tools/recipe_modules/infra_paths/__init__.py +3 -0
  220. data/vendor/depot_tools/recipe_modules/infra_paths/api.py +20 -3
  221. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/basic.json +3 -1
  222. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_buildbot_linux.json +3 -1
  223. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_buildbot_mac.json +3 -1
  224. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_buildbot_win.json +3 -1
  225. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_kitchen_linux.json +3 -1
  226. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_kitchen_mac.json +3 -1
  227. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_kitchen_win.json +3 -1
  228. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_swarmbucket_linux.json +3 -1
  229. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_swarmbucket_mac.json +3 -1
  230. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_swarmbucket_win.json +3 -1
  231. data/vendor/depot_tools/recipe_modules/infra_paths/example.py +6 -1
  232. data/vendor/depot_tools/recipe_modules/infra_paths/path_config.py +4 -6
  233. data/vendor/depot_tools/recipe_modules/rietveld/__init__.py +5 -0
  234. data/vendor/depot_tools/recipe_modules/rietveld/api.py +12 -9
  235. data/vendor/depot_tools/recipe_modules/rietveld/example.expected/basic.json +2 -24
  236. data/vendor/depot_tools/recipe_modules/rietveld/example.expected/buildbot.json +30 -0
  237. data/vendor/depot_tools/recipe_modules/rietveld/example.py +12 -6
  238. data/vendor/depot_tools/recipe_modules/tryserver/__init__.py +4 -0
  239. data/vendor/depot_tools/recipe_modules/tryserver/api.py +46 -70
  240. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/set_failure_hash_with_no_steps.json +8 -0
  241. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/{with_svn_patch.json → with_gerrit_patch.json} +1 -31
  242. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_gerrit_patch_deprecated.json +39 -0
  243. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_git_patch.json +2 -2
  244. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_git_patch_luci.json +8 -0
  245. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_rietveld_patch.json +3 -3
  246. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_rietveld_patch_new.json +3 -3
  247. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_wrong_patch.json +1 -1
  248. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_wrong_patch_new.json +1 -1
  249. data/vendor/depot_tools/recipe_modules/tryserver/example.py +35 -5
  250. data/vendor/depot_tools/recipes.py +52 -28
  251. data/vendor/depot_tools/repo +216 -69
  252. data/vendor/depot_tools/rietveld.py +20 -15
  253. data/vendor/depot_tools/roll_dep.py +1 -1
  254. data/vendor/depot_tools/scm.py +11 -826
  255. data/vendor/depot_tools/subprocess2.py +5 -5
  256. data/vendor/depot_tools/third_party/cq_client/README.depot_tools.md +2 -0
  257. data/vendor/depot_tools/third_party/cq_client/README.md +5 -1
  258. data/vendor/depot_tools/third_party/cq_client/cq.pb.go +183 -104
  259. data/vendor/depot_tools/third_party/cq_client/cq.proto +43 -27
  260. data/vendor/depot_tools/third_party/cq_client/cq_pb2.py +95 -29
  261. data/vendor/depot_tools/third_party/cq_client/testdata/cq_both.cfg +67 -0
  262. data/vendor/depot_tools/third_party/cq_client/testdata/cq_gerrit.cfg +1 -2
  263. data/vendor/depot_tools/third_party/cq_client/testdata/cq_rietveld.cfg +0 -3
  264. data/vendor/depot_tools/third_party/upload.py +44 -24
  265. data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +0 -5
  266. metadata +38 -93
  267. data/patches/0004-Reinterpret-thread-hash-for-FreeBSD-too.patch +0 -25
  268. data/vendor/depot_tools/git-auto-svn +0 -6
  269. data/vendor/depot_tools/git_auto_svn.py +0 -122
  270. data/vendor/depot_tools/man/html/git-auto-svn.html +0 -837
  271. data/vendor/depot_tools/man/man1/git-auto-svn.1 +0 -113
  272. data/vendor/depot_tools/man/src/_git-auto-svn_desc.helper.txt +0 -1
  273. data/vendor/depot_tools/man/src/git-auto-svn.txt +0 -69
  274. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/off.json +0 -43
  275. data/vendor/depot_tools/recipe_modules/cipd/example.expected/install-failed.json +0 -31
  276. data/vendor/depot_tools/recipe_modules/cipd/resources/bootstrap.py +0 -218
  277. data/vendor/depot_tools/recipe_modules/tryserver/test_api.py +0 -7
  278. data/vendor/depot_tools/third_party/gsutil/CHECKSUM +0 -1
  279. data/vendor/depot_tools/third_party/gsutil/COPYING +0 -202
  280. data/vendor/depot_tools/third_party/gsutil/LICENSE.third_party +0 -295
  281. data/vendor/depot_tools/third_party/gsutil/MANIFEST.in +0 -5
  282. data/vendor/depot_tools/third_party/gsutil/README +0 -38
  283. data/vendor/depot_tools/third_party/gsutil/README.chromium +0 -25
  284. data/vendor/depot_tools/third_party/gsutil/README.pkg +0 -49
  285. data/vendor/depot_tools/third_party/gsutil/ReleaseNotes.txt +0 -825
  286. data/vendor/depot_tools/third_party/gsutil/VERSION +0 -1
  287. data/vendor/depot_tools/third_party/gsutil/gslib/README +0 -5
  288. data/vendor/depot_tools/third_party/gsutil/gslib/__init__.py +0 -22
  289. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/__init__.py +0 -15
  290. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/acls.py +0 -234
  291. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/anon.py +0 -57
  292. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/command_opts.py +0 -116
  293. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/dev.py +0 -139
  294. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/metadata.py +0 -186
  295. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/naming.py +0 -173
  296. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/prod.py +0 -160
  297. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/projects.py +0 -130
  298. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/subdirs.py +0 -110
  299. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/support.py +0 -86
  300. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/versioning.py +0 -242
  301. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/wildcards.py +0 -170
  302. data/vendor/depot_tools/third_party/gsutil/gslib/bucket_listing_ref.py +0 -175
  303. data/vendor/depot_tools/third_party/gsutil/gslib/command.py +0 -725
  304. data/vendor/depot_tools/third_party/gsutil/gslib/command_runner.py +0 -102
  305. data/vendor/depot_tools/third_party/gsutil/gslib/commands/__init__.py +0 -15
  306. data/vendor/depot_tools/third_party/gsutil/gslib/commands/cat.py +0 -131
  307. data/vendor/depot_tools/third_party/gsutil/gslib/commands/chacl.py +0 -523
  308. data/vendor/depot_tools/third_party/gsutil/gslib/commands/config.py +0 -662
  309. data/vendor/depot_tools/third_party/gsutil/gslib/commands/cp.py +0 -1819
  310. data/vendor/depot_tools/third_party/gsutil/gslib/commands/disablelogging.py +0 -101
  311. data/vendor/depot_tools/third_party/gsutil/gslib/commands/enablelogging.py +0 -149
  312. data/vendor/depot_tools/third_party/gsutil/gslib/commands/getacl.py +0 -82
  313. data/vendor/depot_tools/third_party/gsutil/gslib/commands/getcors.py +0 -121
  314. data/vendor/depot_tools/third_party/gsutil/gslib/commands/getdefacl.py +0 -86
  315. data/vendor/depot_tools/third_party/gsutil/gslib/commands/getlogging.py +0 -137
  316. data/vendor/depot_tools/third_party/gsutil/gslib/commands/getversioning.py +0 -116
  317. data/vendor/depot_tools/third_party/gsutil/gslib/commands/getwebcfg.py +0 -122
  318. data/vendor/depot_tools/third_party/gsutil/gslib/commands/help.py +0 -218
  319. data/vendor/depot_tools/third_party/gsutil/gslib/commands/ls.py +0 -578
  320. data/vendor/depot_tools/third_party/gsutil/gslib/commands/mb.py +0 -172
  321. data/vendor/depot_tools/third_party/gsutil/gslib/commands/mv.py +0 -159
  322. data/vendor/depot_tools/third_party/gsutil/gslib/commands/perfdiag.py +0 -903
  323. data/vendor/depot_tools/third_party/gsutil/gslib/commands/rb.py +0 -113
  324. data/vendor/depot_tools/third_party/gsutil/gslib/commands/rm.py +0 -237
  325. data/vendor/depot_tools/third_party/gsutil/gslib/commands/setacl.py +0 -138
  326. data/vendor/depot_tools/third_party/gsutil/gslib/commands/setcors.py +0 -145
  327. data/vendor/depot_tools/third_party/gsutil/gslib/commands/setdefacl.py +0 -105
  328. data/vendor/depot_tools/third_party/gsutil/gslib/commands/setmeta.py +0 -420
  329. data/vendor/depot_tools/third_party/gsutil/gslib/commands/setversioning.py +0 -114
  330. data/vendor/depot_tools/third_party/gsutil/gslib/commands/setwebcfg.py +0 -190
  331. data/vendor/depot_tools/third_party/gsutil/gslib/commands/update.py +0 -305
  332. data/vendor/depot_tools/third_party/gsutil/gslib/commands/version.py +0 -150
  333. data/vendor/depot_tools/third_party/gsutil/gslib/exception.py +0 -76
  334. data/vendor/depot_tools/third_party/gsutil/gslib/help_provider.py +0 -81
  335. data/vendor/depot_tools/third_party/gsutil/gslib/name_expansion.py +0 -550
  336. data/vendor/depot_tools/third_party/gsutil/gslib/no_op_auth_plugin.py +0 -30
  337. data/vendor/depot_tools/third_party/gsutil/gslib/plurality_checkable_iterator.py +0 -56
  338. data/vendor/depot_tools/third_party/gsutil/gslib/project_id.py +0 -67
  339. data/vendor/depot_tools/third_party/gsutil/gslib/storage_uri_builder.py +0 -56
  340. data/vendor/depot_tools/third_party/gsutil/gslib/thread_pool.py +0 -79
  341. data/vendor/depot_tools/third_party/gsutil/gslib/util.py +0 -167
  342. data/vendor/depot_tools/third_party/gsutil/gslib/wildcard_iterator.py +0 -498
  343. data/vendor/depot_tools/third_party/gsutil/gsutil +0 -384
  344. data/vendor/depot_tools/third_party/gsutil/gsutil.spec.in +0 -75
  345. data/vendor/depot_tools/third_party/gsutil/oauth2_plugin/__init__.py +0 -22
  346. data/vendor/depot_tools/third_party/gsutil/oauth2_plugin/oauth2_client.py +0 -630
  347. data/vendor/depot_tools/third_party/gsutil/oauth2_plugin/oauth2_client_test.py +0 -374
  348. data/vendor/depot_tools/third_party/gsutil/oauth2_plugin/oauth2_helper.py +0 -103
  349. data/vendor/depot_tools/third_party/gsutil/oauth2_plugin/oauth2_plugin.py +0 -24
  350. data/vendor/depot_tools/third_party/gsutil/pkg_util.py +0 -60
  351. data/vendor/depot_tools/third_party/gsutil/plugins/__init__.py +0 -0
  352. data/vendor/depot_tools/third_party/gsutil/plugins/sso_auth.py +0 -105
@@ -1,114 +0,0 @@
1
- # Copyright 2012 Google Inc. All Rights Reserved.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- from gslib.command import Command
16
- from gslib.command import COMMAND_NAME
17
- from gslib.command import COMMAND_NAME_ALIASES
18
- from gslib.command import CONFIG_REQUIRED
19
- from gslib.command import FILE_URIS_OK
20
- from gslib.command import MAX_ARGS
21
- from gslib.command import MIN_ARGS
22
- from gslib.command import PROVIDER_URIS_OK
23
- from gslib.command import SUPPORTED_SUB_ARGS
24
- from gslib.command import URIS_START_ARG
25
- from gslib.exception import CommandException
26
- from gslib.help_provider import HELP_NAME
27
- from gslib.help_provider import HELP_NAME_ALIASES
28
- from gslib.help_provider import HELP_ONE_LINE_SUMMARY
29
- from gslib.help_provider import HELP_TEXT
30
- from gslib.help_provider import HelpType
31
- from gslib.help_provider import HELP_TYPE
32
- from gslib.util import NO_MAX
33
-
34
-
35
- _detailed_help_text = ("""
36
- <B>SYNOPSIS</B>
37
- gsutil setversioning [on|off] bucket_uri...
38
-
39
-
40
- <B>DESCRIPTION</B>
41
- The Versioning Configuration feature enables you to configure a Google Cloud
42
- Storage bucket to keep old versions of objects.
43
-
44
- The gsutil setversioning command allows you to enable or suspend versioning
45
- on one or more buckets.
46
- """)
47
-
48
- class SetVersioningCommand(Command):
49
- """Implementation of gsutil setversioning command."""
50
-
51
- # Command specification (processed by parent class).
52
- command_spec = {
53
- # Name of command.
54
- COMMAND_NAME : 'setversioning',
55
- # List of command name aliases.
56
- COMMAND_NAME_ALIASES : [],
57
- # Min number of args required by this command.
58
- MIN_ARGS : 1,
59
- # Max number of args required by this command, or NO_MAX.
60
- MAX_ARGS : NO_MAX,
61
- # Getopt-style string specifying acceptable sub args.
62
- SUPPORTED_SUB_ARGS : '',
63
- # True if file URIs acceptable for this command.
64
- FILE_URIS_OK : False,
65
- # True if provider-only URIs acceptable for this command.
66
- PROVIDER_URIS_OK : False,
67
- # Index in args of first URI arg.
68
- URIS_START_ARG : 1,
69
- # True if must configure gsutil before running command.
70
- CONFIG_REQUIRED : True,
71
- }
72
- help_spec = {
73
- # Name of command or auxiliary help info for which this help applies.
74
- HELP_NAME : 'setversioning',
75
- # List of help name aliases.
76
- HELP_NAME_ALIASES : [],
77
- # Type of help)
78
- HELP_TYPE : HelpType.COMMAND_HELP,
79
- # One line summary of this help.
80
- HELP_ONE_LINE_SUMMARY : 'Enable or suspend versioning for one or more '
81
- 'buckets',
82
- # The full help text.
83
- HELP_TEXT : _detailed_help_text,
84
- }
85
-
86
-
87
- # Command entry point.
88
- def RunCommand(self):
89
- versioning_arg = self.args[0].lower()
90
- if not versioning_arg in ('on', 'off'):
91
- raise CommandException('Argument to %s must be either [on|off]'
92
- % (self.command_name))
93
- uri_args = self.args[1:]
94
-
95
- # Iterate over URIs, expanding wildcards, and setting the website
96
- # configuration on each.
97
- some_matched = False
98
- for uri_str in uri_args:
99
- for blr in self.WildcardIterator(uri_str):
100
- uri = blr.GetUri()
101
- if not uri.names_bucket():
102
- raise CommandException('URI %s must name a bucket for the %s command'
103
- % (str(uri), self.command_name))
104
- some_matched = True
105
- if versioning_arg == 'on':
106
- print 'Enabling versioning for %s...' % uri
107
- uri.configure_versioning(True)
108
- else:
109
- print 'Suspending versioning for %s...' % uri
110
- uri.configure_versioning(False)
111
- if not some_matched:
112
- raise CommandException('No URIs matched')
113
-
114
- return 0
@@ -1,190 +0,0 @@
1
- # Copyright 2012 Google Inc. All Rights Reserved.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- from gslib.command import Command
16
- from gslib.command import COMMAND_NAME
17
- from gslib.command import COMMAND_NAME_ALIASES
18
- from gslib.command import CONFIG_REQUIRED
19
- from gslib.command import FILE_URIS_OK
20
- from gslib.command import MAX_ARGS
21
- from gslib.command import MIN_ARGS
22
- from gslib.command import PROVIDER_URIS_OK
23
- from gslib.command import SUPPORTED_SUB_ARGS
24
- from gslib.command import URIS_START_ARG
25
- from gslib.exception import CommandException
26
- from gslib.help_provider import HELP_NAME
27
- from gslib.help_provider import HELP_NAME_ALIASES
28
- from gslib.help_provider import HELP_ONE_LINE_SUMMARY
29
- from gslib.help_provider import HELP_TEXT
30
- from gslib.help_provider import HelpType
31
- from gslib.help_provider import HELP_TYPE
32
- from gslib.util import NO_MAX
33
-
34
-
35
- _detailed_help_text = ("""
36
- <B>SYNOPSIS</B>
37
- gsutil setwebcfg [-m main_page_suffix] [-e error_page] bucket_uri...
38
-
39
-
40
- <B>DESCRIPTION</B>
41
- The Website Configuration feature enables you to configure a Google Cloud
42
- Storage bucket to behave like a static website. This means requests made via a
43
- domain-named bucket aliased using a Domain Name System "CNAME" to
44
- c.storage.googleapis.com will work like any other website, i.e., a GET to the
45
- bucket will serve the configured "main" page instead of the usual bucket
46
- listing and a GET for a non-existent object will serve the configured error
47
- page.
48
-
49
- For example, suppose your company's Domain name is example.com. You could set
50
- up a website bucket as follows:
51
-
52
- 1. Create a bucket called example.com (see the "DOMAIN NAMED BUCKETS"
53
- section of "gsutil help naming" for details about creating such buckets).
54
-
55
- 2. Create index.html and 404.html files and upload them to the bucket.
56
-
57
- 3. Configure the bucket to have website behavior using the command:
58
-
59
- gsutil setwebcfg -m index.html -e 404.html gs://example.com
60
-
61
- 4. Add a DNS CNAME record for example.com pointing to c.storage.googleapis.com
62
- (ask your DNS administrator for help with this).
63
-
64
- Now if you open a browser and navigate to http://example.com, it will display
65
- the main page instead of the default bucket listing. Note: It can take time
66
- for DNS updates to propagate because of caching used by the DNS, so it may
67
- take up to a day for the domain-named bucket website to work after you create
68
- the CNAME DNS record.
69
-
70
- Additional notes:
71
-
72
- 1. Because the main page is only served when a bucket listing request is made
73
- via the CNAME alias, you can continue to use "gsutil ls" to list the bucket
74
- and get the normal bucket listing (rather than the main page).
75
-
76
- 2. The main_page_suffix applies to each subdirectory of the bucket. For
77
- example, with the main_page_suffix configured to be index.html, a GET
78
- request for http://example.com would retrieve
79
- http://example.com/index.html, and a GET request for
80
- http://example.com/photos would retrieve
81
- http://example.com/photos/index.html.
82
-
83
- 2. There is just one 404.html page: For example, a GET request for
84
- http://example.com/photos/missing would retrieve
85
- http://example.com/404.html, not http://example.com/photos/404.html.
86
-
87
- 3. For additional details see
88
- https://developers.google.com/storage/docs/website-configuration.
89
-
90
-
91
- <B>OPTIONS</B>
92
- -m index.html Specifies the object name to serve when a bucket listing
93
- is requested via the CNAME alias to
94
- c.storage.googleapis.com.
95
-
96
- -e 404.html Specifies the error page to serve when a request is made
97
- for a non-existing object, via the is requested via the
98
- CNAME alias to c.storage.googleapis.com.
99
- """)
100
-
101
- def BuildGSWebConfig(main_page_suffix=None, not_found_page=None):
102
- config_body_l = ['<WebsiteConfiguration>']
103
- if main_page_suffix:
104
- config_body_l.append('<MainPageSuffix>%s</MainPageSuffix>' %
105
- main_page_suffix)
106
- if not_found_page:
107
- config_body_l.append('<NotFoundPage>%s</NotFoundPage>' %
108
- not_found_page)
109
- config_body_l.append('</WebsiteConfiguration>')
110
- return "".join(config_body_l)
111
-
112
- def BuildS3WebConfig(main_page_suffix=None, error_page=None):
113
- config_body_l = ['<WebsiteConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">']
114
- if not main_page_suffix:
115
- raise CommandException('S3 requires main page / index document')
116
- config_body_l.append('<IndexDocument><Suffix>%s</Suffix></IndexDocument>' %
117
- main_page_suffix)
118
- if error_page:
119
- config_body_l.append('<ErrorDocument><Key>%s</Key></ErrorDocument>' %
120
- error_page)
121
- config_body_l.append('</WebsiteConfiguration>')
122
- return "".join(config_body_l)
123
-
124
- class SetWebcfgCommand(Command):
125
- """Implementation of gsutil setwebcfg command."""
126
-
127
- # Command specification (processed by parent class).
128
- command_spec = {
129
- # Name of command.
130
- COMMAND_NAME : 'setwebcfg',
131
- # List of command name aliases.
132
- COMMAND_NAME_ALIASES : [],
133
- # Min number of args required by this command.
134
- MIN_ARGS : 1,
135
- # Max number of args required by this command, or NO_MAX.
136
- MAX_ARGS : NO_MAX,
137
- # Getopt-style string specifying acceptable sub args.
138
- SUPPORTED_SUB_ARGS : 'm:e:',
139
- # True if file URIs acceptable for this command.
140
- FILE_URIS_OK : False,
141
- # True if provider-only URIs acceptable for this command.
142
- PROVIDER_URIS_OK : False,
143
- # Index in args of first URI arg.
144
- URIS_START_ARG : 1,
145
- # True if must configure gsutil before running command.
146
- CONFIG_REQUIRED : True,
147
- }
148
- help_spec = {
149
- # Name of command or auxiliary help info for which this help applies.
150
- HELP_NAME : 'setwebcfg',
151
- # List of help name aliases.
152
- HELP_NAME_ALIASES : [],
153
- # Type of help)
154
- HELP_TYPE : HelpType.COMMAND_HELP,
155
- # One line summary of this help.
156
- HELP_ONE_LINE_SUMMARY : 'Set a main page and/or error page for one or more buckets',
157
- # The full help text.
158
- HELP_TEXT : _detailed_help_text,
159
- }
160
-
161
-
162
- # Command entry point.
163
- def RunCommand(self):
164
- main_page_suffix = None
165
- error_page = None
166
- if self.sub_opts:
167
- for o, a in self.sub_opts:
168
- if o == '-m':
169
- main_page_suffix = a
170
- elif o == '-e':
171
- error_page = a
172
-
173
- uri_args = self.args
174
-
175
- # Iterate over URIs, expanding wildcards, and setting the website
176
- # configuration on each.
177
- some_matched = False
178
- for uri_str in uri_args:
179
- for blr in self.WildcardIterator(uri_str):
180
- uri = blr.GetUri()
181
- if not uri.names_bucket():
182
- raise CommandException('URI %s must name a bucket for the %s command'
183
- % (str(uri), self.command_name))
184
- some_matched = True
185
- print 'Setting website config on %s...' % uri
186
- uri.set_website_config(main_page_suffix, error_page)
187
- if not some_matched:
188
- raise CommandException('No URIs matched')
189
-
190
- return 0
@@ -1,305 +0,0 @@
1
- # Copyright 2011 Google Inc. All Rights Reserved.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- import os
16
- import platform
17
- import shutil
18
- import signal
19
- import sys
20
- import tarfile
21
- import tempfile
22
-
23
- from boto import config
24
- from gslib.command import Command
25
- from gslib.command import COMMAND_NAME
26
- from gslib.command import COMMAND_NAME_ALIASES
27
- from gslib.command import CONFIG_REQUIRED
28
- from gslib.command import FILE_URIS_OK
29
- from gslib.command import MAX_ARGS
30
- from gslib.command import MIN_ARGS
31
- from gslib.command import PROVIDER_URIS_OK
32
- from gslib.command import SUPPORTED_SUB_ARGS
33
- from gslib.command import URIS_START_ARG
34
- from gslib.exception import CommandException
35
- from gslib.help_provider import HELP_NAME
36
- from gslib.help_provider import HELP_NAME_ALIASES
37
- from gslib.help_provider import HELP_ONE_LINE_SUMMARY
38
- from gslib.help_provider import HELP_TEXT
39
- from gslib.help_provider import HelpType
40
- from gslib.help_provider import HELP_TYPE
41
-
42
- _detailed_help_text = ("""
43
- <B>SYNOPSIS</B>
44
- gsutil update [-f] [uri]
45
-
46
-
47
- <B>DESCRIPTION</B>
48
- The gsutil update command downloads the latest gsutil release, checks its
49
- version, and offers to let you update to it if it differs from the version
50
- you're currently running.
51
-
52
- Once you say "Y" to the prompt of whether to install the update, the gsutil
53
- update command locates where the running copy of gsutil is installed,
54
- unpacks the new version into an adjacent directory, moves the previous version
55
- aside, moves the new version to where the previous version was installed,
56
- and removes the moved-aside old version. Because of this, users are cautioned
57
- not to store data in the gsutil directory, since that data will be lost
58
- when you update gsutil. (Some users change directories into the gsutil
59
- directory to run the command. We advise against doing that, for this reason.)
60
-
61
- By default gsutil update will retrieve the new code from
62
- gs://pub/gsutil.tar.gz, but you can optionally specify a URI to use
63
- instead. This is primarily used for distributing pre-release versions of
64
- the code to a small group of early test users.
65
-
66
-
67
- <B>OPTIONS</B>
68
- -f Forces the update command to offer to let you update, even if you
69
- have the most current copy already. This can be useful if you have
70
- a corrupted local copy.
71
- """)
72
-
73
-
74
- class UpdateCommand(Command):
75
- """Implementation of gsutil update command."""
76
-
77
- # Command specification (processed by parent class).
78
- command_spec = {
79
- # Name of command.
80
- COMMAND_NAME : 'update',
81
- # List of command name aliases.
82
- COMMAND_NAME_ALIASES : ['refresh'],
83
- # Min number of args required by this command.
84
- MIN_ARGS : 0,
85
- # Max number of args required by this command, or NO_MAX.
86
- MAX_ARGS : 1,
87
- # Getopt-style string specifying acceptable sub args.
88
- SUPPORTED_SUB_ARGS : 'f',
89
- # True if file URIs acceptable for this command.
90
- FILE_URIS_OK : False,
91
- # True if provider-only URIs acceptable for this command.
92
- PROVIDER_URIS_OK : False,
93
- # Index in args of first URI arg.
94
- URIS_START_ARG : 0,
95
- # True if must configure gsutil before running command.
96
- CONFIG_REQUIRED : True,
97
- }
98
- help_spec = {
99
- # Name of command or auxiliary help info for which this help applies.
100
- HELP_NAME : 'update',
101
- # List of help name aliases.
102
- HELP_NAME_ALIASES : ['refresh'],
103
- # Type of help:
104
- HELP_TYPE : HelpType.COMMAND_HELP,
105
- # One line summary of this help.
106
- HELP_ONE_LINE_SUMMARY : 'Update to the latest gsutil release',
107
- # The full help text.
108
- HELP_TEXT : _detailed_help_text,
109
- }
110
-
111
- def _ExplainIfSudoNeeded(self, tf, dirs_to_remove):
112
- """Explains what to do if sudo needed to update gsutil software.
113
-
114
- Happens if gsutil was previously installed by a different user (typically if
115
- someone originally installed in a shared file system location, using sudo).
116
-
117
- Args:
118
- tf: Opened TarFile.
119
- dirs_to_remove: List of directories to remove.
120
-
121
- Raises:
122
- CommandException: if errors encountered.
123
- """
124
- system = platform.system()
125
- # If running under Windows we don't need (or have) sudo.
126
- if system.lower().startswith('windows'):
127
- return
128
-
129
- user_id = os.getuid()
130
- if (os.stat(self.gsutil_bin_dir).st_uid == user_id
131
- and os.stat(self.boto_lib_dir).st_uid == user_id):
132
- return
133
-
134
- # Won't fail - this command runs after main startup code that insists on
135
- # having a config file.
136
- config_files = ' '.join(self.config_file_list)
137
- self._CleanUpUpdateCommand(tf, dirs_to_remove)
138
- raise CommandException(
139
- ('Since it was installed by a different user previously, you will need '
140
- 'to update using the following commands.\nYou will be prompted for '
141
- 'your password, and the install will run as "root". If you\'re unsure '
142
- 'what this means please ask your system administrator for help:'
143
- '\n\tchmod 644 %s\n\tsudo env BOTO_CONFIG=%s gsutil update'
144
- '\n\tchmod 600 %s') % (config_files, config_files, config_files),
145
- informational=True)
146
-
147
- # This list is checked during gsutil update by doing a lowercased
148
- # slash-left-stripped check. For example "/Dev" would match the "dev" entry.
149
- unsafe_update_dirs = [
150
- 'applications', 'auto', 'bin', 'boot', 'desktop', 'dev',
151
- 'documents and settings', 'etc', 'export', 'home', 'kernel', 'lib',
152
- 'lib32', 'library', 'lost+found', 'mach_kernel', 'media', 'mnt', 'net',
153
- 'null', 'network', 'opt', 'private', 'proc', 'program files', 'python',
154
- 'root', 'sbin', 'scripts', 'srv', 'sys', 'system', 'tmp', 'users', 'usr',
155
- 'var', 'volumes', 'win', 'win32', 'windows', 'winnt',
156
- ]
157
-
158
- def _EnsureDirsSafeForUpdate(self, dirs):
159
- """Throws Exception if any of dirs is known to be unsafe for gsutil update.
160
-
161
- This provides a fail-safe check to ensure we don't try to overwrite
162
- or delete any important directories. (That shouldn't happen given the
163
- way we construct tmp dirs, etc., but since the gsutil update cleanup
164
- uses shutil.rmtree() it's prudent to add extra checks.)
165
-
166
- Args:
167
- dirs: List of directories to check.
168
-
169
- Raises:
170
- CommandException: If unsafe directory encountered.
171
- """
172
- for d in dirs:
173
- if not d:
174
- d = 'null'
175
- if d.lstrip(os.sep).lower() in self.unsafe_update_dirs:
176
- raise CommandException('EnsureDirsSafeForUpdate: encountered unsafe '
177
- 'directory (%s); aborting update' % d)
178
-
179
- def _CleanUpUpdateCommand(self, tf, dirs_to_remove):
180
- """Cleans up temp files etc. from running update command.
181
-
182
- Args:
183
- tf: Opened TarFile.
184
- dirs_to_remove: List of directories to remove.
185
-
186
- """
187
- tf.close()
188
- self._EnsureDirsSafeForUpdate(dirs_to_remove)
189
- for directory in dirs_to_remove:
190
- try:
191
- shutil.rmtree(directory)
192
- except OSError as e:
193
- # Ignore errors while attempting to remove old dirs under Windows. They
194
- # happen because of Windows exclusive file locking, and the update
195
- # actually succeeds but just leaves the old versions around in the
196
- # user's temp dir.
197
- if not platform.system().lower().startswith('windows'):
198
- raise
199
-
200
- # Command entry point.
201
- def RunCommand(self):
202
- for cfg_var in ('is_secure', 'https_validate_certificates'):
203
- if (config.has_option('Boto', cfg_var)
204
- and not config.getboolean('Boto', cfg_var)):
205
- raise CommandException('Your boto configuration has %s = False. '
206
- 'The update command\ncannot be run this way, for '
207
- 'security reasons.' % cfg_var)
208
- dirs_to_remove = []
209
- # Retrieve gsutil tarball and check if it's newer than installed code.
210
- # TODO: Store this version info as metadata on the tarball object and
211
- # change this command's implementation to check that metadata instead of
212
- # downloading the tarball to check the version info.
213
- tmp_dir = tempfile.mkdtemp()
214
- dirs_to_remove.append(tmp_dir)
215
- os.chdir(tmp_dir)
216
- print 'Checking for software update...'
217
- if len(self.args):
218
- update_from_uri_str = self.args[0]
219
- if not update_from_uri_str.endswith('.tar.gz'):
220
- raise CommandException(
221
- 'The update command only works with tar.gz files.')
222
- else:
223
- update_from_uri_str = 'gs://pub/gsutil.tar.gz'
224
- self.command_runner.RunNamedCommand('cp', [update_from_uri_str,
225
- 'file://gsutil.tar.gz'],
226
- self.headers, self.debug)
227
- # Note: tf is closed in _CleanUpUpdateCommand.
228
- tf = tarfile.open('gsutil.tar.gz')
229
- tf.errorlevel = 1 # So fatal tarball unpack errors raise exceptions.
230
- tf.extract('./gsutil/VERSION')
231
-
232
- ver_file = open('gsutil/VERSION', 'r')
233
- try:
234
- latest_version_string = ver_file.read().rstrip('\n')
235
- finally:
236
- ver_file.close()
237
-
238
- force_update = False
239
- if self.sub_opts:
240
- for o, unused_a in self.sub_opts:
241
- if o == '-f':
242
- force_update = True
243
- if not force_update and self.gsutil_ver == latest_version_string:
244
- self._CleanUpUpdateCommand(tf, dirs_to_remove)
245
- if len(self.args):
246
- raise CommandException('You already have %s installed.' %
247
- update_from_uri_str, informational=True)
248
- else:
249
- raise CommandException('You already have the latest gsutil release '
250
- 'installed.', informational=True)
251
-
252
- print(('This command will update to the "%s" version of\ngsutil at %s') %
253
- (latest_version_string, self.gsutil_bin_dir))
254
- self._ExplainIfSudoNeeded(tf, dirs_to_remove)
255
-
256
- answer = raw_input('Proceed? [y/N] ')
257
- if not answer or answer.lower()[0] != 'y':
258
- self._CleanUpUpdateCommand(tf, dirs_to_remove)
259
- raise CommandException('Not running update.', informational=True)
260
-
261
- # Ignore keyboard interrupts during the update to reduce the chance someone
262
- # hitting ^C leaves gsutil in a broken state.
263
- signal.signal(signal.SIGINT, signal.SIG_IGN)
264
-
265
- # self.gsutil_bin_dir lists the path where the code should end up (like
266
- # /usr/local/gsutil), which is one level down from the relative path in the
267
- # tarball (since the latter creates files in ./gsutil). So, we need to
268
- # extract at the parent directory level.
269
- gsutil_bin_parent_dir = os.path.dirname(self.gsutil_bin_dir)
270
-
271
- # Extract tarball to a temporary directory in a sibling to gsutil_bin_dir.
272
- old_dir = tempfile.mkdtemp(dir=gsutil_bin_parent_dir)
273
- new_dir = tempfile.mkdtemp(dir=gsutil_bin_parent_dir)
274
- dirs_to_remove.append(old_dir)
275
- dirs_to_remove.append(new_dir)
276
- self._EnsureDirsSafeForUpdate(dirs_to_remove)
277
- try:
278
- tf.extractall(path=new_dir)
279
- except Exception, e:
280
- self._CleanUpUpdateCommand(tf, dirs_to_remove)
281
- raise CommandException('Update failed: %s.' % e)
282
-
283
- # For enterprise mode (shared/central) installation, users with
284
- # different user/group than the installation user/group must be
285
- # able to run gsutil so we need to do some permissions adjustments
286
- # here. Since enterprise mode is not not supported for Windows
287
- # users, we can skip this step when running on Windows, which
288
- # avoids the problem that Windows has no find or xargs command.
289
- system = platform.system()
290
- if not system.lower().startswith('windows'):
291
- # Make all files and dirs in updated area readable by other
292
- # and make all directories executable by other. These steps
293
- os.system('chmod -R o+r ' + new_dir)
294
- os.system('find ' + new_dir + ' -type d | xargs chmod o+x')
295
-
296
- # Make main gsutil script readable and executable by other.
297
- os.system('chmod o+rx ' + os.path.join(new_dir, 'gsutil'))
298
-
299
- # Move old installation aside and new into place.
300
- os.rename(self.gsutil_bin_dir, old_dir + os.sep + 'old')
301
- os.rename(new_dir + os.sep + 'gsutil', self.gsutil_bin_dir)
302
- self._CleanUpUpdateCommand(tf, dirs_to_remove)
303
- signal.signal(signal.SIGINT, signal.SIG_DFL)
304
- print 'Update complete.'
305
- return 0