libv8 5.3.332.38.5 → 5.6.326.50.0beta1

Sign up to get free protection for your applications and to get access to all the features.
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,150 +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 boto
16
- import os
17
- import re
18
- import sys
19
-
20
- from boto.pyami.config import BotoConfigLocations
21
- from gslib.command import Command
22
- from gslib.command import COMMAND_NAME
23
- from gslib.command import COMMAND_NAME_ALIASES
24
- from gslib.command import CONFIG_REQUIRED
25
- from gslib.command import FILE_URIS_OK
26
- from gslib.command import MAX_ARGS
27
- from gslib.command import MIN_ARGS
28
- from gslib.command import PROVIDER_URIS_OK
29
- from gslib.command import SUPPORTED_SUB_ARGS
30
- from gslib.command import URIS_START_ARG
31
- from gslib.help_provider import HELP_NAME
32
- from gslib.help_provider import HELP_NAME_ALIASES
33
- from gslib.help_provider import HELP_ONE_LINE_SUMMARY
34
- from gslib.help_provider import HELP_TEXT
35
- from gslib.help_provider import HelpType
36
- from gslib.help_provider import HELP_TYPE
37
- from hashlib import md5
38
-
39
- _detailed_help_text = ("""
40
- <B>SYNOPSIS</B>
41
- gsutil version
42
-
43
-
44
- <B>DESCRIPTION</B>
45
- Prints information about the version of gsutil, boto, and Python being
46
- run on your system.
47
- """)
48
-
49
-
50
- class VersionCommand(Command):
51
- """Implementation of gsutil version command."""
52
-
53
- # Command specification (processed by parent class).
54
- command_spec = {
55
- # Name of command.
56
- COMMAND_NAME : 'version',
57
- # List of command name aliases.
58
- COMMAND_NAME_ALIASES : ['ver'],
59
- # Min number of args required by this command.
60
- MIN_ARGS : 0,
61
- # Max number of args required by this command, or NO_MAX.
62
- MAX_ARGS : 0,
63
- # Getopt-style string specifying acceptable sub args.
64
- SUPPORTED_SUB_ARGS : '',
65
- # True if file URIs acceptable for this command.
66
- FILE_URIS_OK : False,
67
- # True if provider-only URIs acceptable for this command.
68
- PROVIDER_URIS_OK : False,
69
- # Index in args of first URI arg.
70
- URIS_START_ARG : 0,
71
- # True if must configure gsutil before running command.
72
- CONFIG_REQUIRED : False,
73
- }
74
- help_spec = {
75
- # Name of command or auxiliary help info for which this help applies.
76
- HELP_NAME : 'version',
77
- # List of help name aliases.
78
- HELP_NAME_ALIASES : ['ver'],
79
- # Type of help:
80
- HELP_TYPE : HelpType.COMMAND_HELP,
81
- # One line summary of this help.
82
- HELP_ONE_LINE_SUMMARY : 'Print version info about gsutil',
83
- # The full help text.
84
- HELP_TEXT : _detailed_help_text,
85
- }
86
-
87
- # Command entry point.
88
- def RunCommand(self):
89
- for path in BotoConfigLocations:
90
- f = None
91
- try:
92
- f = open(path, 'r')
93
- break
94
- except IOError:
95
- pass
96
- finally:
97
- if f:
98
- f.close()
99
- else:
100
- path = "no config found"
101
-
102
- try:
103
- f = open(os.path.join(self.gsutil_bin_dir, 'CHECKSUM'))
104
- shipped_checksum = f.read().strip()
105
- f.close()
106
- except IOError:
107
- shipped_checksum = 'MISSING'
108
- try:
109
- cur_checksum = self._ComputeCodeChecksum()
110
- except IOError:
111
- cur_checksum = 'MISSING FILES'
112
- if shipped_checksum == cur_checksum:
113
- checksum_ok_str = 'OK'
114
- else:
115
- checksum_ok_str = '!= %s' % shipped_checksum
116
- sys.stderr.write(
117
- 'gsutil version %s\nchecksum %s (%s)\n'
118
- 'boto version %s\npython version %s\n'
119
- 'config path: %s\ngsutil path: %s\n' % (
120
- self.gsutil_ver, cur_checksum, checksum_ok_str,
121
- boto.__version__, sys.version, path, os.path.realpath(sys.argv[0])))
122
-
123
- return 0
124
-
125
- def _ComputeCodeChecksum(self):
126
- """
127
- Computes a checksum of gsutil code so we can see if users locally modified
128
- gsutil when requesting support. (It's fine for users to make local mods,
129
- but when users ask for support we ask them to run a stock version of
130
- gsutil so we can reduce possible variables.)
131
- """
132
- m = md5()
133
- # Checksum gsutil and all .py files under gsutil bin (including bundled
134
- # libs). Although we will eventually make gsutil allow use of a centrally
135
- # installed boto (once boto shifts to more frequent releases), in that case
136
- # the local copies still should not have any user modifications.
137
- files_to_checksum = [os.path.join(self.gsutil_bin_dir, 'gsutil')]
138
- for root, sub_folders, files in os.walk(self.gsutil_bin_dir):
139
- for file in files:
140
- if file[-3:] == '.py':
141
- files_to_checksum.append(os.path.join(root, file))
142
- # Sort to ensure consistent checksum build, no matter how os.walk
143
- # orders the list.
144
- for file in sorted(files_to_checksum):
145
- f = open(file, 'r')
146
- content = f.read()
147
- content = re.sub(r'(\r\n|\r|\n)', '\n', content)
148
- m.update(content)
149
- f.close()
150
- return m.hexdigest()
@@ -1,76 +0,0 @@
1
- # Copyright 2010 Google Inc. All Rights Reserved.
2
- #
3
- # Permission is hereby granted, free of charge, to any person obtaining a
4
- # copy of this software and associated documentation files (the
5
- # "Software"), to deal in the Software without restriction, including
6
- # without limitation the rights to use, copy, modify, merge, publish, dis-
7
- # tribute, sublicense, and/or sell copies of the Software, and to permit
8
- # persons to whom the Software is furnished to do so, subject to the fol-
9
- # lowing conditions:
10
- #
11
- # The above copyright notice and this permission notice shall be included
12
- # in all copies or substantial portions of the Software.
13
- #
14
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15
- # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
16
- # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
17
- # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
18
- # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
20
- # IN THE SOFTWARE.
21
-
22
- """gsutil exceptions."""
23
-
24
-
25
- class AbortException(StandardError):
26
- """Exception raised when a user aborts a command that needs to do cleanup."""
27
-
28
- def __init__(self, reason):
29
- StandardError.__init__(self)
30
- self.reason = reason
31
-
32
- def __repr__(self):
33
- return 'AbortException: %s' % self.reason
34
-
35
- def __str__(self):
36
- return 'AbortException: %s' % self.reason
37
-
38
-
39
- class CommandException(StandardError):
40
- """Exception raised when a problem is encountered running a gsutil command.
41
-
42
- This exception should be used to signal user errors or system failures
43
- (like timeouts), not bugs (like an incorrect param value). For the
44
- latter you should raise Exception so we can see where/how it happened
45
- via gsutil -D (which will include a stack trace for raised Exceptions).
46
- """
47
-
48
- def __init__(self, reason, informational=False):
49
- """Instantiate a CommandException.
50
-
51
- Args:
52
- reason: Text describing the problem.
53
- informational: Indicates reason should be printed as FYI, not a failure.
54
- """
55
- StandardError.__init__(self)
56
- self.reason = reason
57
- self.informational = informational
58
-
59
- def __repr__(self):
60
- return 'CommandException: %s' % self.reason
61
-
62
- def __str__(self):
63
- return 'CommandException: %s' % self.reason
64
-
65
-
66
- class ProjectIdException(StandardError):
67
-
68
- def __init__(self, reason):
69
- StandardError.__init__(self)
70
- self.reason = reason
71
-
72
- def __repr__(self):
73
- return 'ProjectIdException: %s' % self.reason
74
-
75
- def __str__(self):
76
- return 'ProjectIdException: %s' % self.reason
@@ -1,81 +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.exception import CommandException
16
-
17
- class HelpType(object):
18
- COMMAND_HELP = 'command_help'
19
- ADDITIONAL_HELP = 'additional_help'
20
-
21
- ALL_HELP_TYPES = [HelpType.COMMAND_HELP, HelpType.ADDITIONAL_HELP]
22
-
23
- # help_spec key constants.
24
- HELP_NAME = 'help_name'
25
- HELP_NAME_ALIASES = 'help_name_aliases'
26
- HELP_TYPE = 'help_type'
27
- HELP_ONE_LINE_SUMMARY = 'help_one_line_summary'
28
- HELP_TEXT = 'help_text'
29
-
30
- # Constants enforced by SanityCheck
31
- MAX_HELP_NAME_LEN = 15
32
- MIN_ONE_LINE_SUMMARY_LEN = 10
33
- MAX_ONE_LINE_SUMMARY_LEN = 80 - MAX_HELP_NAME_LEN
34
-
35
- REQUIRED_SPEC_KEYS = [HELP_NAME, HELP_NAME_ALIASES, HELP_TYPE,
36
- HELP_ONE_LINE_SUMMARY, HELP_TEXT]
37
-
38
- class HelpProvider(object):
39
- """Interface for providing help."""
40
-
41
- # Each subclass must define the following map.
42
- help_spec = {
43
- # Name of command or auxiliary help info for which this help applies.
44
- HELP_NAME : None,
45
- # List of help name aliases.
46
- HELP_NAME_ALIASES : None,
47
- # HelpType.
48
- HELP_TYPE : None,
49
- # One line summary of this help.
50
- HELP_ONE_LINE_SUMMARY : None,
51
- # The full help text.
52
- HELP_TEXT : None,
53
- }
54
-
55
- # This is a static helper instead of a class method because the help loader
56
- # (gslib.commands.help._LoadHelpMaps()) operates on classes not instances.
57
- def SanityCheck(help_provider, help_name_map):
58
- """Helper for checking that a HelpProvider has minimally adequate content."""
59
- for k in REQUIRED_SPEC_KEYS:
60
- if k not in help_provider.help_spec or help_provider.help_spec[k] is None:
61
- raise CommandException('"%s" help implementation is missing %s '
62
- 'specification' % (help_provider.help_name, k))
63
- # Sanity check the content.
64
- assert (len(help_provider.help_spec[HELP_NAME]) > 1
65
- and len(help_provider.help_spec[HELP_NAME]) < MAX_HELP_NAME_LEN)
66
- for hna in help_provider.help_spec[HELP_NAME_ALIASES]:
67
- assert len(hna) > 0
68
- one_line_summary_len = len(help_provider.help_spec[HELP_ONE_LINE_SUMMARY])
69
- assert (one_line_summary_len > MIN_ONE_LINE_SUMMARY_LEN
70
- and one_line_summary_len < MAX_ONE_LINE_SUMMARY_LEN)
71
- assert len(help_provider.help_spec[HELP_TEXT]) > 10
72
-
73
- # Ensure there are no dupe help names or aliases across commands.
74
- name_check_list = [help_provider.help_spec[HELP_NAME]]
75
- name_check_list.extend(help_provider.help_spec[HELP_NAME_ALIASES])
76
- for name_or_alias in name_check_list:
77
- if help_name_map.has_key(name_or_alias):
78
- raise CommandException(
79
- 'Duplicate help name/alias "%s" found while loading help from %s. '
80
- 'That name/alias was already taken by %s' % (name_or_alias,
81
- help_provider.__module__, help_name_map[name_or_alias].__module__))
@@ -1,550 +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
- import copy
16
- import threading
17
- import wildcard_iterator
18
-
19
- from bucket_listing_ref import BucketListingRef
20
- from gslib.exception import CommandException
21
- from gslib.plurality_checkable_iterator import PluralityCheckableIterator
22
- from gslib.storage_uri_builder import StorageUriBuilder
23
- from wildcard_iterator import ContainsWildcard
24
-
25
- """
26
- Name expansion support for the various ways gsutil lets users refer to
27
- collections of data (via explicit wildcarding as well as directory,
28
- bucket, and bucket subdir implicit wildcarding). This class encapsulates
29
- the various rules for determining how these expansions are done.
30
- """
31
-
32
-
33
- class NameExpansionResult(object):
34
- """
35
- Holds one fully expanded result from iterating over NameExpansionIterator.
36
-
37
- The member data in this class need to be pickleable because
38
- NameExpansionResult instances are passed through Multiprocessing.Queue. In
39
- particular, don't include any boto state like StorageUri, since that pulls
40
- in a big tree of objects, some of which aren't pickleable (and even if
41
- they were, pickling/unpickling such a large object tree would result in
42
- significant overhead).
43
-
44
- The state held in this object is needed for handling the various naming cases
45
- (e.g., copying from a single source URI to a directory generates different
46
- dest URI names than copying multiple URIs to a directory, to be consistent
47
- with naming rules used by the Unix cp command). For more details see comments
48
- in _NameExpansionIterator.
49
- """
50
-
51
- def __init__(self, src_uri_str, is_multi_src_request,
52
- src_uri_expands_to_multi, names_container, expanded_uri_str,
53
- have_existing_dst_container=None, is_latest=False):
54
- """
55
- Args:
56
- src_uri_str: string representation of StorageUri that was expanded.
57
- is_multi_src_request: bool indicator whether src_uri_str expanded to more
58
- than 1 BucketListingRef.
59
- src_uri_expands_to_multi: bool indicator whether the current src_uri
60
- expanded to more than 1 BucketListingRef.
61
- names_container: Bool indicator whether src_uri names a container.
62
- expanded_uri_str: string representation of StorageUri to which src_uri_str
63
- expands.
64
- have_existing_dst_container: bool indicator whether this is a copy
65
- request to an existing bucket, bucket subdir, or directory. Default
66
- None value should be used in cases where this is not needed (commands
67
- other than cp).
68
- is_latest: Bool indicating that the result represents the object's current
69
- version.
70
- """
71
- self.src_uri_str = src_uri_str
72
- self.is_multi_src_request = is_multi_src_request
73
- self.src_uri_expands_to_multi = src_uri_expands_to_multi
74
- self.names_container = names_container
75
- self.expanded_uri_str = expanded_uri_str
76
- self.have_existing_dst_container = have_existing_dst_container
77
- self.is_latest = is_latest
78
-
79
- def __repr__(self):
80
- return '%s' % self.expanded_uri_str
81
-
82
- def IsEmpty(self):
83
- """Returns True if name expansion yielded no matches."""
84
- return self.expanded_blr is None
85
-
86
- def GetSrcUriStr(self):
87
- """Returns the string representation of the StorageUri that was expanded."""
88
- return self.src_uri_str
89
-
90
- def IsMultiSrcRequest(self):
91
- """
92
- Returns bool indicator whether name expansion resulted in more than 0
93
- BucketListingRef.
94
- """
95
- return self.is_multi_src_request
96
-
97
- def SrcUriExpandsToMulti(self):
98
- """
99
- Returns bool indicator whether the current src_uri expanded to more than
100
- 1 BucketListingRef
101
- """
102
- return self.src_uri_expands_to_multi
103
-
104
- def NamesContainer(self):
105
- """
106
- Returns bool indicator of whether src_uri names a directory, bucket, or
107
- bucket subdir.
108
- """
109
- return self.names_container
110
-
111
- def GetExpandedUriStr(self):
112
- """
113
- Returns the string representation of StorageUri to which src_uri_str
114
- expands.
115
- """
116
- return self.expanded_uri_str
117
-
118
- def HaveExistingDstContainer(self):
119
- """Returns bool indicator whether this is a copy request to an
120
- existing bucket, bucket subdir, or directory, or None if not
121
- relevant."""
122
- return self.have_existing_dst_container
123
-
124
-
125
- class _NameExpansionIterator(object):
126
- """
127
- Iterates over all src_uris, expanding wildcards, object-less bucket names,
128
- subdir bucket names, and directory names, generating a flat listing of all
129
- the matching objects/files.
130
-
131
- You should instantiate this object using the static factory function
132
- NameExpansionIterator, because consumers of this iterator need the
133
- PluralityCheckableIterator wrapper built by that function.
134
-
135
- Yields:
136
- gslib.name_expansion.NameExpansionResult.
137
-
138
- Raises:
139
- CommandException: if errors encountered.
140
- """
141
-
142
- def __init__(self, command_name, proj_id_handler, headers, debug,
143
- bucket_storage_uri_class, uri_strs, recursion_requested,
144
- have_existing_dst_container=None, flat=True,
145
- all_versions=False, for_all_version_delete=False):
146
- """
147
- Args:
148
- command_name: name of command being run.
149
- proj_id_handler: ProjectIdHandler to use for current command.
150
- headers: Dictionary containing optional HTTP headers to pass to boto.
151
- debug: Debug level to pass in to boto connection (range 0..3).
152
- bucket_storage_uri_class: Class to instantiate for cloud StorageUris.
153
- Settable for testing/mocking.
154
- uri_strs: PluralityCheckableIterator of URI strings needing expansion.
155
- recursion_requested: True if -R specified on command-line.
156
- have_existing_dst_container: Bool indicator whether this is a copy
157
- request to an existing bucket, bucket subdir, or directory. Default
158
- None value should be used in cases where this is not needed (commands
159
- other than cp).
160
- flat: Bool indicating whether bucket listings should be flattened, i.e.,
161
- so the mapped-to results contain objects spanning subdirectories.
162
- all_versions: Bool indicating whether to iterate over all object versions.
163
- for_all_version_delete: Bool indicating whether this is for an all-version
164
- delete.
165
-
166
- Examples of _NameExpansionIterator with flat=True:
167
- - Calling with one of the uri_strs being 'gs://bucket' will enumerate all
168
- top-level objects, as will 'gs://bucket/' and 'gs://bucket/*'.
169
- - 'gs://bucket/**' will enumerate all objects in the bucket.
170
- - 'gs://bucket/abc' will enumerate all next-level objects under directory
171
- abc (i.e., not including subdirectories of abc) if gs://bucket/abc/*
172
- matches any objects; otherwise it will enumerate the single name
173
- gs://bucket/abc
174
- - 'gs://bucket/abc/**' will enumerate all objects under abc or any of its
175
- subdirectories.
176
- - 'file:///tmp' will enumerate all files under /tmp, as will
177
- 'file:///tmp/*'
178
- - 'file:///tmp/**' will enumerate all files under /tmp or any of its
179
- subdirectories.
180
-
181
- Example if flat=False: calling with gs://bucket/abc/* lists matching objects
182
- or subdirs, but not sub-subdirs or objects beneath subdirs.
183
-
184
- Note: In step-by-step comments below we give examples assuming there's a
185
- gs://bucket with object paths:
186
- abcd/o1.txt
187
- abcd/o2.txt
188
- xyz/o1.txt
189
- xyz/o2.txt
190
- and a directory file://dir with file paths:
191
- dir/a.txt
192
- dir/b.txt
193
- dir/c/
194
- """
195
- self.command_name = command_name
196
- self.proj_id_handler = proj_id_handler
197
- self.headers = headers
198
- self.debug = debug
199
- self.bucket_storage_uri_class = bucket_storage_uri_class
200
- self.suri_builder = StorageUriBuilder(debug, bucket_storage_uri_class)
201
- self.uri_strs = uri_strs
202
- self.recursion_requested = recursion_requested
203
- self.have_existing_dst_container = have_existing_dst_container
204
- self.flat = flat
205
- self.all_versions = all_versions
206
-
207
- # Map holding wildcard strings to use for flat vs subdir-by-subdir listings.
208
- # (A flat listing means show all objects expanded all the way down.)
209
- self._flatness_wildcard = {True: '**', False: '*'}
210
-
211
- def __iter__(self):
212
- for uri_str in self.uri_strs:
213
- # Step 1: Expand any explicitly specified wildcards. The output from this
214
- # step is an iterator of BucketListingRef.
215
- # Starting with gs://buck*/abc* this step would expand to gs://bucket/abcd
216
- if ContainsWildcard(uri_str):
217
- post_step1_iter = self._WildcardIterator(uri_str)
218
- else:
219
- suri = self.suri_builder.StorageUri(uri_str)
220
- post_step1_iter = iter([BucketListingRef(suri)])
221
- post_step1_iter = PluralityCheckableIterator(post_step1_iter)
222
-
223
- # Step 2: Expand bucket subdirs and versions. The output from this
224
- # step is an iterator of (names_container, BucketListingRef).
225
- # Starting with gs://bucket/abcd this step would expand to:
226
- # iter([(True, abcd/o1.txt), (True, abcd/o2.txt)]).
227
- if self.flat and self.recursion_requested:
228
- post_step2_iter = _ImplicitBucketSubdirIterator(self,
229
- post_step1_iter, self.flat)
230
- elif self.all_versions:
231
- post_step2_iter = _AllVersionIterator(self, post_step1_iter,
232
- headers=self.headers)
233
- else:
234
- post_step2_iter = _NonContainerTuplifyIterator(post_step1_iter)
235
- post_step2_iter = PluralityCheckableIterator(post_step2_iter)
236
-
237
- # Step 3. Expand directories and buckets. This step yields the iterated
238
- # values. Starting with gs://bucket this step would expand to:
239
- # [abcd/o1.txt, abcd/o2.txt, xyz/o1.txt, xyz/o2.txt]
240
- # Starting with file://dir this step would expand to:
241
- # [dir/a.txt, dir/b.txt, dir/c/]
242
- exp_src_bucket_listing_refs = []
243
- wc = self._flatness_wildcard[self.flat]
244
- src_uri_expands_to_multi = (post_step1_iter.has_plurality()
245
- or post_step2_iter.has_plurality())
246
- is_multi_src_request = (self.uri_strs.has_plurality()
247
- or src_uri_expands_to_multi)
248
-
249
- if post_step2_iter.is_empty():
250
- raise CommandException('No URIs matched: %s' % uri_str)
251
- for (names_container, blr) in post_step2_iter:
252
- if (not blr.GetUri().names_container()
253
- and (self.flat or not blr.HasPrefix())):
254
- yield NameExpansionResult(uri_str, is_multi_src_request,
255
- src_uri_expands_to_multi, names_container,
256
- blr.GetUriString(),
257
- self.have_existing_dst_container,
258
- is_latest=blr.IsLatest())
259
- continue
260
- if not self.recursion_requested:
261
- if blr.GetUri().is_file_uri():
262
- desc = 'directory'
263
- else:
264
- desc = 'bucket'
265
- print 'Omitting %s "%s". (Did you mean to do %s -R?)' % (
266
- desc, blr.GetUri(), self.command_name)
267
- continue
268
- if blr.GetUri().is_file_uri():
269
- # Convert dir to implicit recursive wildcard.
270
- uri_to_iterate = '%s/%s' % (blr.GetUriString(), wc)
271
- else:
272
- # Convert bucket to implicit recursive wildcard.
273
- uri_to_iterate = blr.GetUri().clone_replace_name(wc)
274
- wc_iter = PluralityCheckableIterator(
275
- self._WildcardIterator(uri_to_iterate))
276
- src_uri_expands_to_multi = (src_uri_expands_to_multi
277
- or wc_iter.has_plurality())
278
- is_multi_src_request = (self.uri_strs.has_plurality()
279
- or src_uri_expands_to_multi)
280
- for blr in wc_iter:
281
- yield NameExpansionResult(uri_str, is_multi_src_request,
282
- src_uri_expands_to_multi, True,
283
- blr.GetUriString(),
284
- self.have_existing_dst_container,
285
- is_latest=blr.IsLatest())
286
-
287
- def _WildcardIterator(self, uri_or_str):
288
- """
289
- Helper to instantiate gslib.WildcardIterator. Args are same as
290
- gslib.WildcardIterator interface, but this method fills in most of the
291
- values from instance state.
292
-
293
- Args:
294
- uri_or_str: StorageUri or URI string naming wildcard objects to iterate.
295
- """
296
- return wildcard_iterator.wildcard_iterator(
297
- uri_or_str, self.proj_id_handler,
298
- bucket_storage_uri_class=self.bucket_storage_uri_class,
299
- headers=self.headers, debug=self.debug,
300
- all_versions=self.all_versions)
301
-
302
-
303
- def NameExpansionIterator(command_name, proj_id_handler, headers, debug,
304
- bucket_storage_uri_class, uri_strs,
305
- recursion_requested,
306
- have_existing_dst_container=None, flat=True,
307
- all_versions=False,
308
- for_all_version_delete=False):
309
- """
310
- Static factory function for instantiating _NameExpansionIterator, which
311
- wraps the resulting iterator in a PluralityCheckableIterator and checks
312
- that it is non-empty. Also, allows uri_strs can be either an array or an
313
- iterator.
314
-
315
- Args:
316
- command_name: name of command being run.
317
- proj_id_handler: ProjectIdHandler to use for current command.
318
- headers: Dictionary containing optional HTTP headers to pass to boto.
319
- debug: Debug level to pass in to boto connection (range 0..3).
320
- bucket_storage_uri_class: Class to instantiate for cloud StorageUris.
321
- Settable for testing/mocking.
322
- uri_strs: PluralityCheckableIterator of URI strings needing expansion.
323
- recursion_requested: True if -R specified on command-line.
324
- have_existing_dst_container: Bool indicator whether this is a copy
325
- request to an existing bucket, bucket subdir, or directory. Default
326
- None value should be used in cases where this is not needed (commands
327
- other than cp).
328
- flat: Bool indicating whether bucket listings should be flattened, i.e.,
329
- so the mapped-to results contain objects spanning subdirectories.
330
- all_versions: Bool indicating whether to iterate over all object versions.
331
- for_all_version_delete: Bool indicating whether this is for an all-version
332
- delete.
333
-
334
- Examples of ExpandWildcardsAndContainers with flat=True:
335
- - Calling with one of the uri_strs being 'gs://bucket' will enumerate all
336
- top-level objects, as will 'gs://bucket/' and 'gs://bucket/*'.
337
- - 'gs://bucket/**' will enumerate all objects in the bucket.
338
- - 'gs://bucket/abc' will enumerate all next-level objects under directory
339
- abc (i.e., not including subdirectories of abc) if gs://bucket/abc/*
340
- matches any objects; otherwise it will enumerate the single name
341
- gs://bucket/abc
342
- - 'gs://bucket/abc/**' will enumerate all objects under abc or any of its
343
- subdirectories.
344
- - 'file:///tmp' will enumerate all files under /tmp, as will
345
- 'file:///tmp/*'
346
- - 'file:///tmp/**' will enumerate all files under /tmp or any of its
347
- subdirectories.
348
-
349
- Example if flat=False: calling with gs://bucket/abc/* lists matching objects
350
- or subdirs, but not sub-subdirs or objects beneath subdirs.
351
-
352
- Note: In step-by-step comments below we give examples assuming there's a
353
- gs://bucket with object paths:
354
- abcd/o1.txt
355
- abcd/o2.txt
356
- xyz/o1.txt
357
- xyz/o2.txt
358
- and a directory file://dir with file paths:
359
- dir/a.txt
360
- dir/b.txt
361
- dir/c/
362
- """
363
- uri_strs = PluralityCheckableIterator(uri_strs)
364
- name_expansion_iterator = _NameExpansionIterator(
365
- command_name, proj_id_handler, headers, debug, bucket_storage_uri_class,
366
- uri_strs, recursion_requested, have_existing_dst_container, flat,
367
- all_versions=all_versions, for_all_version_delete=for_all_version_delete)
368
- name_expansion_iterator = PluralityCheckableIterator(name_expansion_iterator)
369
- if name_expansion_iterator.is_empty():
370
- raise CommandException('No URIs matched')
371
- return name_expansion_iterator
372
-
373
-
374
- class NameExpansionIteratorQueue(object):
375
- """
376
- Wrapper around NameExpansionIterator that provides a Multiprocessing.Queue
377
- facade.
378
-
379
- Only a blocking get() function can be called, and the block and timeout
380
- params on that function are ignored. All other class functions raise
381
- NotImplementedError.
382
-
383
- This class is thread safe.
384
- """
385
-
386
- def __init__(self, name_expansion_iterator, final_value):
387
- self.name_expansion_iterator = name_expansion_iterator
388
- self.final_value = final_value
389
- self.lock = threading.Lock()
390
-
391
- def qsize(self):
392
- raise NotImplementedError(
393
- "NameExpansionIteratorQueue.qsize() not implemented")
394
-
395
- def empty(self):
396
- raise NotImplementedError(
397
- "NameExpansionIteratorQueue.empty() not implemented")
398
-
399
- def full(self):
400
- raise NotImplementedError(
401
- "NameExpansionIteratorQueue.full() not implemented")
402
-
403
- def put(self, obj=None, block=None, timeout=None):
404
- raise NotImplementedError(
405
- "NameExpansionIteratorQueue.put() not implemented")
406
-
407
- def put_nowait(self, obj):
408
- raise NotImplementedError(
409
- "NameExpansionIteratorQueue.put_nowait() not implemented")
410
-
411
- def get(self, block=None, timeout=None):
412
- self.lock.acquire()
413
- try:
414
- if self.name_expansion_iterator.is_empty():
415
- return self.final_value
416
- return self.name_expansion_iterator.next()
417
- finally:
418
- self.lock.release()
419
-
420
- def get_nowait(self):
421
- raise NotImplementedError(
422
- "NameExpansionIteratorQueue.get_nowait() not implemented")
423
-
424
- def get_no_wait(self):
425
- raise NotImplementedError(
426
- "NameExpansionIteratorQueue.get_no_wait() not implemented")
427
-
428
- def close(self):
429
- raise NotImplementedError(
430
- "NameExpansionIteratorQueue.close() not implemented")
431
-
432
- def join_thread(self):
433
- raise NotImplementedError(
434
- "NameExpansionIteratorQueue.join_thread() not implemented")
435
-
436
- def cancel_join_thread(self):
437
- raise NotImplementedError(
438
- "NameExpansionIteratorQueue.cancel_join_thread() not implemented")
439
-
440
-
441
- class _NonContainerTuplifyIterator(object):
442
- """
443
- Iterator that produces the tuple (False, blr) for each iteration
444
- of blr_iter. Used for cases where blr_iter iterates over a set of
445
- BucketListingRefs known not to name containers.
446
- """
447
-
448
- def __init__(self, blr_iter):
449
- """
450
- Args:
451
- blr_iter: iterator of BucketListingRef.
452
- """
453
- self.blr_iter = blr_iter
454
-
455
- def __iter__(self):
456
- for blr in self.blr_iter:
457
- yield (False, blr)
458
-
459
-
460
- class _ImplicitBucketSubdirIterator(object):
461
-
462
- """
463
- Iterator wrapper that iterates over blr_iter, performing implicit bucket
464
- subdir expansion.
465
-
466
- Each iteration yields tuple (names_container, expanded BucketListingRefs)
467
- where names_container is true if URI names a directory, bucket,
468
- or bucket subdir (vs how StorageUri.names_container() doesn't
469
- handle latter case).
470
-
471
- For example, iterating over [BucketListingRef("gs://abc")] would expand to:
472
- [BucketListingRef("gs://abc/o1"), BucketListingRef("gs://abc/o2")]
473
- if those subdir objects exist, and [BucketListingRef("gs://abc") otherwise.
474
- """
475
-
476
- def __init__(self, name_expansion_instance, blr_iter, flat):
477
- """
478
- Args:
479
- name_expansion_instance: calling instance of NameExpansion class.
480
- blr_iter: iterator of BucketListingRef.
481
- flat: bool indicating whether bucket listings should be flattened, i.e.,
482
- so the mapped-to results contain objects spanning subdirectories.
483
- """
484
- self.blr_iter = blr_iter
485
- self.name_expansion_instance = name_expansion_instance
486
- self.flat = flat
487
-
488
- def __iter__(self):
489
- for blr in self.blr_iter:
490
- uri = blr.GetUri()
491
- if uri.names_object():
492
- # URI could be a bucket subdir.
493
- implicit_subdir_iterator = PluralityCheckableIterator(
494
- self.name_expansion_instance._WildcardIterator(
495
- self.name_expansion_instance.suri_builder.StorageUri(
496
- '%s/%s' % (uri.uri.rstrip('/'),
497
- self.name_expansion_instance._flatness_wildcard[
498
- self.flat]))))
499
- if not implicit_subdir_iterator.is_empty():
500
- for exp_blr in implicit_subdir_iterator:
501
- yield (True, exp_blr)
502
- else:
503
- yield (False, blr)
504
- else:
505
- yield (False, blr)
506
-
507
- class _AllVersionIterator(object):
508
- """
509
- Iterator wrapper that iterates over blr_iter, performing implicit version
510
- expansion.
511
-
512
- Output behavior is identical to that in _ImplicitBucketSubdirIterator above.
513
-
514
- For example, iterating over [BucketListingRef("gs://abc/o1")] would expand to:
515
- [BucketListingRef("gs://abc/o1#1234"), BucketListingRef("gs://abc/o1#1235")]
516
- """
517
-
518
- def __init__(self, name_expansion_instance, blr_iter, headers=None):
519
- """
520
- Args:
521
- name_expansion_instance: calling instance of NameExpansion class.
522
- blr_iter: iterator of BucketListingRef.
523
- flat: bool indicating whether bucket listings should be flattened, i.e.,
524
- so the mapped-to results contain objects spanning subdirectories.
525
- """
526
- self.blr_iter = blr_iter
527
- self.name_expansion_instance = name_expansion_instance
528
- self.headers = headers
529
-
530
- def __iter__(self):
531
- empty = True
532
- for blr in self.blr_iter:
533
- uri = blr.GetUri()
534
- if not uri.names_object():
535
- empty = False
536
- yield (True, blr)
537
- break
538
- for key in uri.list_bucket(
539
- prefix=uri.object_name, headers=self.headers, all_versions=True):
540
- if key.name != uri.object_name:
541
- # The desired entries will be alphabetically first in this listing.
542
- break
543
- version_blr = BucketListingRef(uri.clone_replace_key(key), key=key)
544
- empty = False
545
- yield (False, version_blr)
546
- # If no version exists, yield the unversioned blr, and let the consuming
547
- # operation fail. This mirrors behavior in _ImplicitBucketSubdirIterator.
548
- if empty:
549
- yield (False, blr)
550
-