libv8 7.8.279.23.0beta1 → 8.4.255.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (719) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +11 -14
  4. data/CHANGELOG.md +7 -1
  5. data/README.md +10 -11
  6. data/Rakefile +30 -36
  7. data/ext/libv8/builder.rb +2 -1
  8. data/lib/libv8/version.rb +1 -1
  9. data/libv8.gemspec +1 -3
  10. data/vendor/depot_tools/{cipd.ps1 → .cipd_impl.ps1} +0 -0
  11. data/vendor/depot_tools/.gitattributes +1 -1
  12. data/vendor/depot_tools/.gitignore +3 -1
  13. data/vendor/depot_tools/.style.yapf +3 -1
  14. data/vendor/depot_tools/.vpython +55 -0
  15. data/vendor/depot_tools/.vpython3 +23 -0
  16. data/vendor/depot_tools/CROS_OWNERS +3 -1
  17. data/vendor/depot_tools/GOMA_OWNERS +9 -0
  18. data/vendor/depot_tools/LUCI_OWNERS +5 -0
  19. data/vendor/depot_tools/OWNERS +21 -6
  20. data/vendor/depot_tools/PRESUBMIT.py +35 -18
  21. data/vendor/depot_tools/README.git-cl.md +0 -14
  22. data/vendor/depot_tools/README.md +1 -1
  23. data/vendor/depot_tools/WATCHLISTS +2 -2
  24. data/vendor/depot_tools/auth.py +60 -772
  25. data/vendor/depot_tools/autoninja +12 -6
  26. data/vendor/depot_tools/autoninja.bat +6 -6
  27. data/vendor/depot_tools/autoninja.py +64 -27
  28. data/vendor/depot_tools/bb +1 -1
  29. data/vendor/depot_tools/bootstrap/{win/README.md → README.md} +28 -14
  30. data/vendor/depot_tools/bootstrap/{win/win_tools.py → bootstrap.py} +60 -43
  31. data/vendor/depot_tools/bootstrap/{win/git-bash.template.sh → git-bash.template.sh} +1 -1
  32. data/vendor/depot_tools/bootstrap/{win/git.template.bat → git.template.bat} +0 -0
  33. data/vendor/depot_tools/bootstrap/manifest.txt +27 -0
  34. data/vendor/depot_tools/bootstrap/manifest_bleeding_edge.txt +27 -0
  35. data/vendor/depot_tools/bootstrap/{win/profile.d.python.sh → profile.d.python.sh} +0 -0
  36. data/vendor/depot_tools/bootstrap/{win/python27.bleeding_edge.bat → python27.bat} +0 -0
  37. data/vendor/depot_tools/bootstrap/{win/python27.new.bat → python3.bat} +3 -3
  38. data/vendor/depot_tools/bootstrap/{win/win_tools.bat → win_tools.bat} +21 -16
  39. data/vendor/depot_tools/bootstrap_python3 +35 -0
  40. data/vendor/depot_tools/cbuildbot +1 -1
  41. data/vendor/depot_tools/chrome_set_ver +1 -1
  42. data/vendor/depot_tools/cipd +43 -39
  43. data/vendor/depot_tools/cipd.bat +2 -2
  44. data/vendor/depot_tools/cipd_client_version +1 -1
  45. data/vendor/depot_tools/cipd_client_version.digests +15 -14
  46. data/vendor/depot_tools/cipd_manifest.txt +31 -8
  47. data/vendor/depot_tools/cipd_manifest.versions +278 -158
  48. data/vendor/depot_tools/cit.py +9 -7
  49. data/vendor/depot_tools/clang_format.py +4 -1
  50. data/vendor/depot_tools/clang_format_merge_driver.py +10 -8
  51. data/vendor/depot_tools/compile_single_file.py +7 -2
  52. data/vendor/depot_tools/cpplint.py +51 -45
  53. data/vendor/depot_tools/cros +87 -0
  54. data/vendor/depot_tools/cros_sdk +1 -1
  55. data/vendor/depot_tools/crosjobs +13 -0
  56. data/vendor/depot_tools/detect_host_arch.py +0 -1
  57. data/vendor/depot_tools/dirmd +12 -0
  58. data/vendor/depot_tools/dirmd.bat +7 -0
  59. data/vendor/depot_tools/download_from_google_storage.py +47 -27
  60. data/vendor/depot_tools/ensure_bootstrap +14 -0
  61. data/vendor/depot_tools/fetch +14 -1
  62. data/vendor/depot_tools/fetch.bat +14 -1
  63. data/vendor/depot_tools/fetch.py +5 -7
  64. data/vendor/depot_tools/fetch_configs/chromium.py +6 -4
  65. data/vendor/depot_tools/fetch_configs/devtools-frontend.py +44 -0
  66. data/vendor/depot_tools/fetch_configs/ios_internal.py +10 -19
  67. data/vendor/depot_tools/fix_encoding.py +19 -5
  68. data/vendor/depot_tools/gclient +28 -12
  69. data/vendor/depot_tools/gclient-new-workdir.py +2 -0
  70. data/vendor/depot_tools/gclient.bat +18 -1
  71. data/vendor/depot_tools/gclient.py +156 -118
  72. data/vendor/depot_tools/gclient_eval.py +119 -107
  73. data/vendor/depot_tools/gclient_paths.py +67 -57
  74. data/vendor/depot_tools/gclient_scm.py +180 -169
  75. data/vendor/depot_tools/gclient_utils.py +177 -124
  76. data/vendor/depot_tools/gerrit_client.py +21 -13
  77. data/vendor/depot_tools/gerrit_util.py +188 -228
  78. data/vendor/depot_tools/git-cache +1 -1
  79. data/vendor/depot_tools/git-cl +1 -1
  80. data/vendor/depot_tools/git-drover +1 -1
  81. data/vendor/depot_tools/git-find-releases +1 -1
  82. data/vendor/depot_tools/git-footers +1 -1
  83. data/vendor/depot_tools/git-freeze +1 -1
  84. data/vendor/depot_tools/git-hyper-blame +1 -1
  85. data/vendor/depot_tools/git-map +1 -1
  86. data/vendor/depot_tools/git-map-branches +1 -1
  87. data/vendor/depot_tools/git-mark-merge-base +1 -1
  88. data/vendor/depot_tools/git-nav-downstream +1 -1
  89. data/vendor/depot_tools/git-new-branch +1 -1
  90. data/vendor/depot_tools/git-number +1 -1
  91. data/vendor/depot_tools/git-rebase-update +1 -1
  92. data/vendor/depot_tools/git-rename-branch +1 -1
  93. data/vendor/depot_tools/git-reparent-branch +1 -1
  94. data/vendor/depot_tools/git-retry +1 -1
  95. data/vendor/depot_tools/git-squash-branch +1 -1
  96. data/vendor/depot_tools/git-thaw +1 -1
  97. data/vendor/depot_tools/git-upstream-diff +1 -1
  98. data/vendor/depot_tools/git_cache.py +195 -281
  99. data/vendor/depot_tools/git_cl.py +1506 -2075
  100. data/vendor/depot_tools/git_cl_completion.sh +16 -2
  101. data/vendor/depot_tools/git_common.py +77 -32
  102. data/vendor/depot_tools/git_drover.py +17 -8
  103. data/vendor/depot_tools/git_find_releases.py +11 -9
  104. data/vendor/depot_tools/git_footers.py +13 -9
  105. data/vendor/depot_tools/git_freezer.py +3 -1
  106. data/vendor/depot_tools/git_hyper_blame.py +25 -32
  107. data/vendor/depot_tools/git_map.py +115 -93
  108. data/vendor/depot_tools/git_map_branches.py +11 -10
  109. data/vendor/depot_tools/git_mark_merge_base.py +8 -6
  110. data/vendor/depot_tools/git_nav_downstream.py +9 -6
  111. data/vendor/depot_tools/git_new_branch.py +39 -33
  112. data/vendor/depot_tools/git_number.py +28 -17
  113. data/vendor/depot_tools/git_rebase_update.py +50 -49
  114. data/vendor/depot_tools/git_rename_branch.py +2 -2
  115. data/vendor/depot_tools/git_reparent_branch.py +8 -6
  116. data/vendor/depot_tools/git_upstream_diff.py +4 -2
  117. data/vendor/depot_tools/gn.py +6 -4
  118. data/vendor/depot_tools/goma_auth +12 -0
  119. data/vendor/depot_tools/goma_auth.bat +8 -0
  120. data/vendor/depot_tools/goma_ctl +12 -0
  121. data/vendor/depot_tools/goma_ctl.bat +8 -0
  122. data/vendor/depot_tools/gsutil.py +5 -2
  123. data/vendor/depot_tools/gsutil.py.bat +8 -0
  124. data/vendor/depot_tools/gsutil.vpython +3 -1
  125. data/vendor/depot_tools/infra/config/OWNERS +2 -2
  126. data/vendor/depot_tools/infra/config/recipes.cfg +3 -2
  127. data/vendor/depot_tools/led +1 -1
  128. data/vendor/depot_tools/lockfile.py +116 -0
  129. data/vendor/depot_tools/luci-auth +1 -1
  130. data/vendor/depot_tools/lucicfg +1 -1
  131. data/vendor/depot_tools/mac_toolchain +1 -1
  132. data/vendor/depot_tools/man/html/depot_tools.html +1 -1
  133. data/vendor/depot_tools/man/html/depot_tools_tutorial.html +31 -25
  134. data/vendor/depot_tools/man/html/git-cl.html +1 -1
  135. data/vendor/depot_tools/man/html/git-drover.html +18 -18
  136. data/vendor/depot_tools/man/html/git-footers.html +1 -1
  137. data/vendor/depot_tools/man/html/git-freeze.html +3 -3
  138. data/vendor/depot_tools/man/html/git-hyper-blame.html +1 -1
  139. data/vendor/depot_tools/man/html/git-map-branches.html +2 -2
  140. data/vendor/depot_tools/man/html/git-map.html +1 -1
  141. data/vendor/depot_tools/man/html/git-mark-merge-base.html +1 -1
  142. data/vendor/depot_tools/man/html/git-nav-downstream.html +3 -3
  143. data/vendor/depot_tools/man/html/git-nav-upstream.html +12 -6
  144. data/vendor/depot_tools/man/html/git-new-branch.html +1 -1
  145. data/vendor/depot_tools/man/html/git-rebase-update.html +20 -1
  146. data/vendor/depot_tools/man/html/git-rename-branch.html +1 -1
  147. data/vendor/depot_tools/man/html/git-reparent-branch.html +1 -1
  148. data/vendor/depot_tools/man/html/git-retry.html +1 -1
  149. data/vendor/depot_tools/man/html/git-squash-branch.html +1 -1
  150. data/vendor/depot_tools/man/html/git-thaw.html +1 -1
  151. data/vendor/depot_tools/man/html/git-upstream-diff.html +10 -6
  152. data/vendor/depot_tools/man/man1/git-cl.1 +4 -4
  153. data/vendor/depot_tools/man/man1/git-drover.1 +21 -21
  154. data/vendor/depot_tools/man/man1/git-footers.1 +4 -4
  155. data/vendor/depot_tools/man/man1/git-freeze.1 +6 -6
  156. data/vendor/depot_tools/man/man1/git-hyper-blame.1 +4 -4
  157. data/vendor/depot_tools/man/man1/git-map-branches.1 +4 -4
  158. data/vendor/depot_tools/man/man1/git-map.1 +4 -4
  159. data/vendor/depot_tools/man/man1/git-mark-merge-base.1 +4 -4
  160. data/vendor/depot_tools/man/man1/git-nav-downstream.1 +6 -6
  161. data/vendor/depot_tools/man/man1/git-nav-upstream.1 +15 -9
  162. data/vendor/depot_tools/man/man1/git-new-branch.1 +3 -3
  163. data/vendor/depot_tools/man/man1/git-rebase-update.1 +14 -4
  164. data/vendor/depot_tools/man/man1/git-rename-branch.1 +4 -4
  165. data/vendor/depot_tools/man/man1/git-reparent-branch.1 +4 -4
  166. data/vendor/depot_tools/man/man1/git-retry.1 +4 -4
  167. data/vendor/depot_tools/man/man1/git-squash-branch.1 +4 -4
  168. data/vendor/depot_tools/man/man1/git-thaw.1 +4 -4
  169. data/vendor/depot_tools/man/man1/git-upstream-diff.1 +7 -13
  170. data/vendor/depot_tools/man/man7/depot_tools.7 +4 -4
  171. data/vendor/depot_tools/man/man7/depot_tools_tutorial.7 +31 -25
  172. data/vendor/depot_tools/man/src/common_demo_functions.sh +2 -2
  173. data/vendor/depot_tools/man/src/depot_tools_tutorial.txt +3 -3
  174. data/vendor/depot_tools/man/src/filter_demo_output.py +3 -1
  175. data/vendor/depot_tools/man/src/git-new-branch.txt +2 -1
  176. data/vendor/depot_tools/man/src/git-rebase-update.txt +8 -1
  177. data/vendor/depot_tools/metrics.README.md +5 -2
  178. data/vendor/depot_tools/metrics.py +4 -4
  179. data/vendor/depot_tools/metrics_utils.py +3 -3
  180. data/vendor/depot_tools/my_activity.py +85 -251
  181. data/vendor/depot_tools/ninja +1 -0
  182. data/vendor/depot_tools/ninja-mac +0 -0
  183. data/vendor/depot_tools/ninjalog_uploader.py +146 -145
  184. data/vendor/depot_tools/ninjalog_uploader_wrapper.py +69 -60
  185. data/vendor/depot_tools/owners.py +57 -21
  186. data/vendor/depot_tools/owners_finder.py +28 -14
  187. data/vendor/depot_tools/post_build_ninja_summary.py +76 -48
  188. data/vendor/depot_tools/presubmit_canned_checks.py +293 -106
  189. data/vendor/depot_tools/presubmit_support.py +527 -333
  190. data/vendor/depot_tools/prpc +1 -1
  191. data/vendor/depot_tools/pylint +2 -12
  192. data/vendor/depot_tools/pylint-1.5 +78 -0
  193. data/vendor/depot_tools/pylint-1.6 +78 -0
  194. data/vendor/depot_tools/pylint-1.7 +78 -0
  195. data/vendor/depot_tools/pylint-1.8 +78 -0
  196. data/vendor/depot_tools/pylint-1.9 +78 -0
  197. data/vendor/depot_tools/{depot-tools-auth.bat → pylint.bat} +2 -2
  198. data/vendor/depot_tools/pylint_main.py +45 -0
  199. data/vendor/depot_tools/pylintrc +14 -1
  200. data/vendor/depot_tools/python-bin/python3 +7 -0
  201. data/vendor/depot_tools/python_runner.sh +13 -8
  202. data/vendor/depot_tools/rdb +12 -0
  203. data/vendor/depot_tools/rdb.bat +7 -0
  204. data/vendor/depot_tools/recipes/OWNERS +0 -1
  205. data/vendor/depot_tools/recipes/README.recipes.md +215 -151
  206. data/vendor/depot_tools/recipes/recipe_modules/OWNERS +1 -1
  207. data/vendor/depot_tools/recipes/recipe_modules/bot_update/__init__.py +17 -17
  208. data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +65 -32
  209. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic.json +12 -4
  210. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_luci.json +11 -3
  211. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_with_branch_heads.json +12 -4
  212. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/clobber.json +22 -8
  213. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/deprecated_got_revision_mapping.json +27 -9
  214. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_rebase_patch_ref.json +22 -8
  215. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_reset.json +22 -8
  216. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/input_commit_with_id_without_repo.json +22 -8
  217. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/multiple_patch_refs.json +22 -8
  218. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_apply_patch_on_gclient.json +27 -9
  219. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_HEAD.json +12 -4
  220. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_a_branch_head.json +10 -4
  221. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_a_specific_commit.json +12 -4
  222. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_master.json +10 -4
  223. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/refs.json +22 -8
  224. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/reset_root_solution_revision.json +22 -8
  225. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/resolve_chromium_fixed_version.json +117 -0
  226. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail.json +16 -10
  227. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch.json +34 -10
  228. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch_download.json +16 -10
  229. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle.json +27 -9
  230. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_branch_heads.json +27 -9
  231. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_feature_branch.json +27 -9
  232. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8_feature_branch.json +27 -9
  233. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_webrtc.json +27 -9
  234. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8.json +27 -9
  235. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8_head_by_default.json +27 -9
  236. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/unrecognized_commit_repo.json +0 -5
  237. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_tags.json +22 -8
  238. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +7 -23
  239. data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/bot_update.py +187 -114
  240. data/vendor/depot_tools/recipes/recipe_modules/bot_update/test_api.py +2 -2
  241. data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/do_not_retry_patch_failures_in_cq.py +42 -0
  242. data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/ensure_checkout.py +1 -0
  243. data/vendor/depot_tools/recipes/recipe_modules/cipd/__init__.py +0 -1
  244. data/vendor/depot_tools/recipes/recipe_modules/cipd/api.py +2 -2
  245. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic.json +0 -1
  246. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic_pkg.json +0 -1
  247. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-failed.json +2 -4
  248. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-many-instances.json +0 -1
  249. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/mac64.json +0 -1
  250. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_file.json +26 -6
  251. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_mode.json +23 -5
  252. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_verfile.json +23 -5
  253. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/win64.json +0 -1
  254. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk arch.json +0 -1
  255. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk bits.json +0 -1
  256. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_32.json +0 -1
  257. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_64.json +0 -1
  258. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_32.json +0 -1
  259. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_64.json +0 -1
  260. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_mips_64.json +0 -1
  261. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/mac_intel_64.json +0 -1
  262. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_32.json +0 -1
  263. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_64.json +0 -1
  264. data/vendor/depot_tools/recipes/recipe_modules/cipd/test_api.py +1 -1
  265. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/api.py +4 -1
  266. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic.json +4 -2
  267. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic_luci.json +3 -1
  268. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/win.json +4 -2
  269. data/vendor/depot_tools/recipes/recipe_modules/gclient/__init__.py +2 -1
  270. data/vendor/depot_tools/recipes/recipe_modules/gclient/api.py +82 -13
  271. data/vendor/depot_tools/recipes/recipe_modules/gclient/config.py +21 -9
  272. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/basic.json +3 -4
  273. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/revision.json +3 -6
  274. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json +3 -4
  275. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.py +7 -7
  276. data/vendor/depot_tools/recipes/recipe_modules/gclient/resources/diff_deps.py +16 -0
  277. data/vendor/depot_tools/recipes/recipe_modules/gclient/test_api.py +4 -0
  278. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/basic.json +55 -0
  279. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/dont have revision yet.json +84 -0
  280. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/no change, exception.json +83 -0
  281. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/windows.json +55 -0
  282. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.py +88 -0
  283. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/patch_project.py +9 -21
  284. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/sync_failure.py +24 -0
  285. data/vendor/depot_tools/recipes/recipe_modules/gerrit/api.py +2 -1
  286. data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.expected/basic.json +7 -12
  287. data/vendor/depot_tools/recipes/recipe_modules/git/__init__.py +0 -2
  288. data/vendor/depot_tools/recipes/recipe_modules/git/api.py +9 -17
  289. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic.json +2 -8
  290. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_branch.json +2 -8
  291. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_file_name.json +2 -8
  292. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_hash.json +2 -8
  293. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_ref.json +2 -8
  294. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_submodule_update_force.json +2 -8
  295. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_tags.json +2 -8
  296. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/can_fail_build.json +3 -13
  297. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cannot_fail_build.json +2 -8
  298. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cat-file_test.json +4 -12
  299. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_delta.json +2 -10
  300. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_failed.json +1 -7
  301. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output.json +1 -7
  302. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output_fails_build.json +0 -8
  303. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/curl_trace_file.json +3 -10
  304. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/git-cache-checkout.json +3 -11
  305. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/platform_win.json +2 -8
  306. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/rebase_failed.json +3 -13
  307. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/remote_not_origin.json +2 -8
  308. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/set_got_revision.json +2 -8
  309. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.py +0 -5
  310. data/vendor/depot_tools/recipes/recipe_modules/git_cl/__init__.py +1 -1
  311. data/vendor/depot_tools/recipes/recipe_modules/git_cl/api.py +7 -13
  312. data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.expected/basic.json +21 -16
  313. data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.py +1 -2
  314. data/vendor/depot_tools/recipes/recipe_modules/gitiles/api.py +1 -1
  315. data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.expected/basic.json +0 -1
  316. data/vendor/depot_tools/recipes/recipe_modules/gitiles/resources/gerrit_client.py +2 -2
  317. data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.expected/basic.json +0 -1
  318. data/vendor/depot_tools/recipes/recipe_modules/gsutil/api.py +23 -8
  319. data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.expected/basic.json +52 -1
  320. data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.py +15 -0
  321. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/__init__.py +1 -0
  322. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/api.py +32 -8
  323. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/ancient_version.json +83 -0
  324. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/automatic_version.json +83 -0
  325. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/explicit_version.json +83 -0
  326. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/linux.json +0 -1
  327. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/mac.json +5 -4
  328. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/win.json +0 -1
  329. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.py +21 -2
  330. data/vendor/depot_tools/recipes/recipe_modules/presubmit/__init__.py +20 -0
  331. data/vendor/depot_tools/recipes/recipe_modules/presubmit/api.py +235 -3
  332. data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.expected/basic.json +13 -5
  333. data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.py +5 -1
  334. data/vendor/depot_tools/recipes/recipe_modules/presubmit/properties.proto +14 -0
  335. data/vendor/depot_tools/recipes/recipe_modules/presubmit/test_api.py +19 -0
  336. data/vendor/depot_tools/recipes/recipe_modules/presubmit/tests/execute.py +247 -0
  337. data/vendor/depot_tools/recipes/recipe_modules/presubmit/tests/prepare.py +49 -0
  338. data/vendor/depot_tools/recipes/recipe_modules/tryserver/api.py +33 -45
  339. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/basic_tags.json +0 -1
  340. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch.json +64 -21
  341. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch_and_target_ref.json +64 -21
  342. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch.json +1 -22
  343. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch_new.json +1 -22
  344. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.py +5 -32
  345. data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_fetch_ref_timeout.py +29 -0
  346. data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_owner.expected/basic.json +5 -0
  347. data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_owner.py +22 -0
  348. data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_target_ref.py +32 -0
  349. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/linux.json +0 -1
  350. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/mac.json +0 -1
  351. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/win.json +2 -1
  352. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.py +1 -6
  353. data/vendor/depot_tools/recipes/recipes.py +49 -28
  354. data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json +11 -6
  355. data/vendor/depot_tools/repo +698 -540
  356. data/vendor/depot_tools/roll-dep +14 -1
  357. data/vendor/depot_tools/roll-dep.bat +10 -1
  358. data/vendor/depot_tools/roll_dep.py +15 -10
  359. data/vendor/depot_tools/scm.py +94 -74
  360. data/vendor/depot_tools/setup_color.py +36 -2
  361. data/vendor/depot_tools/split_cl.py +44 -32
  362. data/vendor/depot_tools/subcommand.py +6 -6
  363. data/vendor/depot_tools/subprocess2.py +38 -322
  364. data/vendor/depot_tools/third_party/colorama/LICENSE.txt +0 -1
  365. data/vendor/depot_tools/third_party/colorama/README.chromium +4 -5
  366. data/vendor/depot_tools/third_party/colorama/README.rst +346 -0
  367. data/vendor/depot_tools/third_party/colorama/__init__.py +3 -4
  368. data/vendor/depot_tools/third_party/colorama/ansi.py +82 -30
  369. data/vendor/depot_tools/third_party/colorama/ansitowin32.py +105 -37
  370. data/vendor/depot_tools/third_party/colorama/initialise.py +39 -15
  371. data/vendor/depot_tools/third_party/colorama/win32.py +46 -28
  372. data/vendor/depot_tools/third_party/colorama/winterm.py +80 -31
  373. data/vendor/depot_tools/update_depot_tools +18 -8
  374. data/vendor/depot_tools/update_depot_tools.bat +19 -15
  375. data/vendor/depot_tools/upload_metrics.py +7 -6
  376. data/vendor/depot_tools/upload_to_google_storage.py +22 -15
  377. data/vendor/depot_tools/vpython +4 -4
  378. data/vendor/depot_tools/vpython.bat +1 -1
  379. data/vendor/depot_tools/vpython3 +55 -0
  380. data/vendor/depot_tools/vpython3.bat +12 -0
  381. data/vendor/depot_tools/watchlists.py +14 -11
  382. data/vendor/depot_tools/weekly +4 -2
  383. data/vendor/depot_tools/win32imports.py +61 -0
  384. data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +49 -41
  385. data/vendor/depot_tools/win_toolchain/package_from_installed.py +142 -149
  386. data/vendor/depot_tools/wtf +5 -3
  387. data/vendor/depot_tools/yapf +5 -1
  388. metadata +66 -345
  389. data/vendor/depot_tools/README.testing +0 -23
  390. data/vendor/depot_tools/annotated_gclient.py +0 -89
  391. data/vendor/depot_tools/appengine_mapper.py +0 -23
  392. data/vendor/depot_tools/bootstrap/win/manifest.txt +0 -20
  393. data/vendor/depot_tools/bootstrap/win/manifest_bleeding_edge.txt +0 -20
  394. data/vendor/depot_tools/bootstrap/win/pylint.new.bat +0 -7
  395. data/vendor/depot_tools/buildbucket.py +0 -186
  396. data/vendor/depot_tools/checkout.py +0 -431
  397. data/vendor/depot_tools/cros +0 -1
  398. data/vendor/depot_tools/dart_format.py +0 -58
  399. data/vendor/depot_tools/depot-tools-auth +0 -8
  400. data/vendor/depot_tools/depot-tools-auth.py +0 -102
  401. data/vendor/depot_tools/my_reviews.py +0 -396
  402. data/vendor/depot_tools/patch.py +0 -548
  403. data/vendor/depot_tools/pylint.py +0 -30
  404. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_manifest_name.json +0 -48
  405. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/buildbot.json +0 -239
  406. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_luci.json +0 -222
  407. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/__init__.py +0 -4
  408. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/api.py +0 -29
  409. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/basic.json +0 -15
  410. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_linux.json +0 -15
  411. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_mac.json +0 -15
  412. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_win.json +0 -15
  413. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_linux.json +0 -15
  414. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_mac.json +0 -15
  415. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_win.json +0 -15
  416. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_linux.json +0 -15
  417. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_mac.json +0 -15
  418. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_win.json +0 -15
  419. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.py +0 -33
  420. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/path_config.py +0 -66
  421. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/set_failure_hash_with_no_steps.json +0 -11
  422. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch.json +0 -45
  423. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch_luci.json +0 -45
  424. data/vendor/depot_tools/rietveld.py +0 -779
  425. data/vendor/depot_tools/roll-dep-svn +0 -8
  426. data/vendor/depot_tools/roll-dep-svn.bat +0 -12
  427. data/vendor/depot_tools/roll_dep_svn.py +0 -430
  428. data/vendor/depot_tools/support/chromite_wrapper +0 -96
  429. data/vendor/depot_tools/third_party/boto/LICENSE +0 -18
  430. data/vendor/depot_tools/third_party/boto/README.chromium +0 -43
  431. data/vendor/depot_tools/third_party/boto/README.rst +0 -163
  432. data/vendor/depot_tools/third_party/boto/__init__.py +0 -793
  433. data/vendor/depot_tools/third_party/boto/auth.py +0 -682
  434. data/vendor/depot_tools/third_party/boto/auth_handler.py +0 -58
  435. data/vendor/depot_tools/third_party/boto/cacerts/__init__.py +0 -22
  436. data/vendor/depot_tools/third_party/boto/cacerts/cacerts.txt +0 -2183
  437. data/vendor/depot_tools/third_party/boto/compat.py +0 -28
  438. data/vendor/depot_tools/third_party/boto/connection.py +0 -1081
  439. data/vendor/depot_tools/third_party/boto/contrib/__init__.py +0 -22
  440. data/vendor/depot_tools/third_party/boto/contrib/ymlmessage.py +0 -52
  441. data/vendor/depot_tools/third_party/boto/core/README +0 -58
  442. data/vendor/depot_tools/third_party/boto/core/__init__.py +0 -23
  443. data/vendor/depot_tools/third_party/boto/core/auth.py +0 -78
  444. data/vendor/depot_tools/third_party/boto/core/credentials.py +0 -154
  445. data/vendor/depot_tools/third_party/boto/core/dictresponse.py +0 -178
  446. data/vendor/depot_tools/third_party/boto/core/service.py +0 -67
  447. data/vendor/depot_tools/third_party/boto/datapipeline/__init__.py +0 -0
  448. data/vendor/depot_tools/third_party/boto/datapipeline/exceptions.py +0 -42
  449. data/vendor/depot_tools/third_party/boto/datapipeline/layer1.py +0 -546
  450. data/vendor/depot_tools/third_party/boto/ecs/__init__.py +0 -90
  451. data/vendor/depot_tools/third_party/boto/ecs/item.py +0 -153
  452. data/vendor/depot_tools/third_party/boto/exception.py +0 -476
  453. data/vendor/depot_tools/third_party/boto/file/README +0 -49
  454. data/vendor/depot_tools/third_party/boto/file/__init__.py +0 -28
  455. data/vendor/depot_tools/third_party/boto/file/bucket.py +0 -112
  456. data/vendor/depot_tools/third_party/boto/file/connection.py +0 -33
  457. data/vendor/depot_tools/third_party/boto/file/key.py +0 -199
  458. data/vendor/depot_tools/third_party/boto/file/simpleresultset.py +0 -30
  459. data/vendor/depot_tools/third_party/boto/fps/__init__.py +0 -21
  460. data/vendor/depot_tools/third_party/boto/fps/connection.py +0 -369
  461. data/vendor/depot_tools/third_party/boto/fps/exception.py +0 -344
  462. data/vendor/depot_tools/third_party/boto/fps/response.py +0 -175
  463. data/vendor/depot_tools/third_party/boto/gs/__init__.py +0 -22
  464. data/vendor/depot_tools/third_party/boto/gs/acl.py +0 -304
  465. data/vendor/depot_tools/third_party/boto/gs/bucket.py +0 -870
  466. data/vendor/depot_tools/third_party/boto/gs/bucketlistresultset.py +0 -64
  467. data/vendor/depot_tools/third_party/boto/gs/connection.py +0 -103
  468. data/vendor/depot_tools/third_party/boto/gs/cors.py +0 -169
  469. data/vendor/depot_tools/third_party/boto/gs/key.py +0 -704
  470. data/vendor/depot_tools/third_party/boto/gs/resumable_upload_handler.py +0 -659
  471. data/vendor/depot_tools/third_party/boto/gs/user.py +0 -54
  472. data/vendor/depot_tools/third_party/boto/handler.py +0 -44
  473. data/vendor/depot_tools/third_party/boto/https_connection.py +0 -124
  474. data/vendor/depot_tools/third_party/boto/jsonresponse.py +0 -163
  475. data/vendor/depot_tools/third_party/boto/manage/__init__.py +0 -23
  476. data/vendor/depot_tools/third_party/boto/manage/cmdshell.py +0 -241
  477. data/vendor/depot_tools/third_party/boto/manage/propget.py +0 -64
  478. data/vendor/depot_tools/third_party/boto/manage/server.py +0 -556
  479. data/vendor/depot_tools/third_party/boto/manage/task.py +0 -175
  480. data/vendor/depot_tools/third_party/boto/manage/test_manage.py +0 -34
  481. data/vendor/depot_tools/third_party/boto/manage/volume.py +0 -420
  482. data/vendor/depot_tools/third_party/boto/mashups/__init__.py +0 -23
  483. data/vendor/depot_tools/third_party/boto/mashups/interactive.py +0 -97
  484. data/vendor/depot_tools/third_party/boto/mashups/iobject.py +0 -115
  485. data/vendor/depot_tools/third_party/boto/mashups/order.py +0 -211
  486. data/vendor/depot_tools/third_party/boto/mashups/server.py +0 -395
  487. data/vendor/depot_tools/third_party/boto/plugin.py +0 -90
  488. data/vendor/depot_tools/third_party/boto/provider.py +0 -337
  489. data/vendor/depot_tools/third_party/boto/pyami/__init__.py +0 -22
  490. data/vendor/depot_tools/third_party/boto/pyami/bootstrap.py +0 -134
  491. data/vendor/depot_tools/third_party/boto/pyami/config.py +0 -229
  492. data/vendor/depot_tools/third_party/boto/pyami/copybot.cfg +0 -60
  493. data/vendor/depot_tools/third_party/boto/pyami/copybot.py +0 -97
  494. data/vendor/depot_tools/third_party/boto/pyami/helloworld.py +0 -28
  495. data/vendor/depot_tools/third_party/boto/pyami/launch_ami.py +0 -178
  496. data/vendor/depot_tools/third_party/boto/pyami/scriptbase.py +0 -44
  497. data/vendor/depot_tools/third_party/boto/pyami/startup.py +0 -60
  498. data/vendor/depot_tools/third_party/boto/regioninfo.py +0 -63
  499. data/vendor/depot_tools/third_party/boto/resultset.py +0 -169
  500. data/vendor/depot_tools/third_party/boto/roboto/__init__.py +0 -1
  501. data/vendor/depot_tools/third_party/boto/roboto/awsqueryrequest.py +0 -504
  502. data/vendor/depot_tools/third_party/boto/roboto/awsqueryservice.py +0 -121
  503. data/vendor/depot_tools/third_party/boto/roboto/param.py +0 -147
  504. data/vendor/depot_tools/third_party/boto/s3/__init__.py +0 -84
  505. data/vendor/depot_tools/third_party/boto/s3/acl.py +0 -164
  506. data/vendor/depot_tools/third_party/boto/s3/bucket.py +0 -1634
  507. data/vendor/depot_tools/third_party/boto/s3/bucketlistresultset.py +0 -139
  508. data/vendor/depot_tools/third_party/boto/s3/bucketlogging.py +0 -83
  509. data/vendor/depot_tools/third_party/boto/s3/connection.py +0 -540
  510. data/vendor/depot_tools/third_party/boto/s3/cors.py +0 -210
  511. data/vendor/depot_tools/third_party/boto/s3/deletemarker.py +0 -55
  512. data/vendor/depot_tools/third_party/boto/s3/key.py +0 -1712
  513. data/vendor/depot_tools/third_party/boto/s3/keyfile.py +0 -134
  514. data/vendor/depot_tools/third_party/boto/s3/lifecycle.py +0 -231
  515. data/vendor/depot_tools/third_party/boto/s3/multidelete.py +0 -138
  516. data/vendor/depot_tools/third_party/boto/s3/multipart.py +0 -315
  517. data/vendor/depot_tools/third_party/boto/s3/prefix.py +0 -42
  518. data/vendor/depot_tools/third_party/boto/s3/resumable_download_handler.py +0 -339
  519. data/vendor/depot_tools/third_party/boto/s3/tagging.py +0 -71
  520. data/vendor/depot_tools/third_party/boto/s3/user.py +0 -49
  521. data/vendor/depot_tools/third_party/boto/s3/website.py +0 -237
  522. data/vendor/depot_tools/third_party/boto/services/__init__.py +0 -23
  523. data/vendor/depot_tools/third_party/boto/services/bs.py +0 -179
  524. data/vendor/depot_tools/third_party/boto/services/message.py +0 -58
  525. data/vendor/depot_tools/third_party/boto/services/result.py +0 -136
  526. data/vendor/depot_tools/third_party/boto/services/service.py +0 -161
  527. data/vendor/depot_tools/third_party/boto/services/servicedef.py +0 -91
  528. data/vendor/depot_tools/third_party/boto/services/sonofmmm.cfg +0 -43
  529. data/vendor/depot_tools/third_party/boto/services/sonofmmm.py +0 -81
  530. data/vendor/depot_tools/third_party/boto/services/submit.py +0 -88
  531. data/vendor/depot_tools/third_party/boto/ses/__init__.py +0 -54
  532. data/vendor/depot_tools/third_party/boto/ses/connection.py +0 -521
  533. data/vendor/depot_tools/third_party/boto/ses/exceptions.py +0 -77
  534. data/vendor/depot_tools/third_party/boto/storage_uri.py +0 -835
  535. data/vendor/depot_tools/third_party/boto/sts/__init__.py +0 -55
  536. data/vendor/depot_tools/third_party/boto/sts/connection.py +0 -207
  537. data/vendor/depot_tools/third_party/boto/sts/credentials.py +0 -215
  538. data/vendor/depot_tools/third_party/boto/utils.py +0 -927
  539. data/vendor/depot_tools/third_party/colorama/README.txt +0 -304
  540. data/vendor/depot_tools/third_party/fancy_urllib/README +0 -22
  541. data/vendor/depot_tools/third_party/fancy_urllib/__init__.py +0 -460
  542. data/vendor/depot_tools/third_party/logilab/README.chromium +0 -6
  543. data/vendor/depot_tools/third_party/logilab/__init__.py +0 -0
  544. data/vendor/depot_tools/third_party/logilab/astroid/LICENSE.txt +0 -340
  545. data/vendor/depot_tools/third_party/logilab/astroid/README.chromium +0 -11
  546. data/vendor/depot_tools/third_party/logilab/astroid/__init__.py +0 -136
  547. data/vendor/depot_tools/third_party/logilab/astroid/__pkginfo__.py +0 -42
  548. data/vendor/depot_tools/third_party/logilab/astroid/arguments.py +0 -233
  549. data/vendor/depot_tools/third_party/logilab/astroid/as_string.py +0 -548
  550. data/vendor/depot_tools/third_party/logilab/astroid/astpeephole.py +0 -86
  551. data/vendor/depot_tools/third_party/logilab/astroid/bases.py +0 -636
  552. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_builtin_inference.py +0 -336
  553. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_dateutil.py +0 -15
  554. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_gi.py +0 -195
  555. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_mechanize.py +0 -18
  556. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_nose.py +0 -82
  557. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_numpy.py +0 -62
  558. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_pytest.py +0 -76
  559. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_qt.py +0 -44
  560. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_six.py +0 -288
  561. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_ssl.py +0 -65
  562. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_stdlib.py +0 -473
  563. data/vendor/depot_tools/third_party/logilab/astroid/builder.py +0 -263
  564. data/vendor/depot_tools/third_party/logilab/astroid/context.py +0 -81
  565. data/vendor/depot_tools/third_party/logilab/astroid/decorators.py +0 -75
  566. data/vendor/depot_tools/third_party/logilab/astroid/exceptions.py +0 -71
  567. data/vendor/depot_tools/third_party/logilab/astroid/inference.py +0 -359
  568. data/vendor/depot_tools/third_party/logilab/astroid/manager.py +0 -267
  569. data/vendor/depot_tools/third_party/logilab/astroid/mixins.py +0 -147
  570. data/vendor/depot_tools/third_party/logilab/astroid/modutils.py +0 -741
  571. data/vendor/depot_tools/third_party/logilab/astroid/node_classes.py +0 -1053
  572. data/vendor/depot_tools/third_party/logilab/astroid/nodes.py +0 -87
  573. data/vendor/depot_tools/third_party/logilab/astroid/objects.py +0 -186
  574. data/vendor/depot_tools/third_party/logilab/astroid/protocols.py +0 -470
  575. data/vendor/depot_tools/third_party/logilab/astroid/raw_building.py +0 -390
  576. data/vendor/depot_tools/third_party/logilab/astroid/rebuilder.py +0 -989
  577. data/vendor/depot_tools/third_party/logilab/astroid/scoped_nodes.py +0 -1716
  578. data/vendor/depot_tools/third_party/logilab/astroid/test_utils.py +0 -201
  579. data/vendor/depot_tools/third_party/logilab/astroid/transforms.py +0 -96
  580. data/vendor/depot_tools/third_party/logilab/astroid/util.py +0 -89
  581. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/LICENSE +0 -19
  582. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/README.chromium +0 -11
  583. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/__init__.py +0 -20
  584. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/cext.c +0 -1421
  585. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/compat.py +0 -9
  586. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/simple.py +0 -246
  587. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/slots.py +0 -414
  588. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/utils.py +0 -13
  589. data/vendor/depot_tools/third_party/logilab/wrapt/LICENSE +0 -24
  590. data/vendor/depot_tools/third_party/logilab/wrapt/README.chromium +0 -11
  591. data/vendor/depot_tools/third_party/logilab/wrapt/__init__.py +0 -19
  592. data/vendor/depot_tools/third_party/logilab/wrapt/_wrappers.c +0 -2729
  593. data/vendor/depot_tools/third_party/logilab/wrapt/arguments.py +0 -96
  594. data/vendor/depot_tools/third_party/logilab/wrapt/decorators.py +0 -512
  595. data/vendor/depot_tools/third_party/logilab/wrapt/importer.py +0 -228
  596. data/vendor/depot_tools/third_party/logilab/wrapt/wrappers.py +0 -901
  597. data/vendor/depot_tools/third_party/mock/LICENSE.txt +0 -26
  598. data/vendor/depot_tools/third_party/mock/README.chromium +0 -24
  599. data/vendor/depot_tools/third_party/mock/__init__.py +0 -2366
  600. data/vendor/depot_tools/third_party/oauth2client/LICENSE +0 -202
  601. data/vendor/depot_tools/third_party/oauth2client/MODIFICATIONS.diff +0 -66
  602. data/vendor/depot_tools/third_party/oauth2client/README.chromium +0 -15
  603. data/vendor/depot_tools/third_party/oauth2client/__init__.py +0 -5
  604. data/vendor/depot_tools/third_party/oauth2client/anyjson.py +0 -32
  605. data/vendor/depot_tools/third_party/oauth2client/appengine.py +0 -963
  606. data/vendor/depot_tools/third_party/oauth2client/client.py +0 -1363
  607. data/vendor/depot_tools/third_party/oauth2client/clientsecrets.py +0 -153
  608. data/vendor/depot_tools/third_party/oauth2client/crypt.py +0 -377
  609. data/vendor/depot_tools/third_party/oauth2client/django_orm.py +0 -134
  610. data/vendor/depot_tools/third_party/oauth2client/file.py +0 -124
  611. data/vendor/depot_tools/third_party/oauth2client/gce.py +0 -90
  612. data/vendor/depot_tools/third_party/oauth2client/keyring_storage.py +0 -109
  613. data/vendor/depot_tools/third_party/oauth2client/locked_file.py +0 -373
  614. data/vendor/depot_tools/third_party/oauth2client/multistore_file.py +0 -465
  615. data/vendor/depot_tools/third_party/oauth2client/old_run.py +0 -160
  616. data/vendor/depot_tools/third_party/oauth2client/tools.py +0 -243
  617. data/vendor/depot_tools/third_party/oauth2client/util.py +0 -196
  618. data/vendor/depot_tools/third_party/oauth2client/xsrfutil.py +0 -113
  619. data/vendor/depot_tools/third_party/protobuf26/README.chromium +0 -23
  620. data/vendor/depot_tools/third_party/protobuf26/__init__.py +0 -0
  621. data/vendor/depot_tools/third_party/protobuf26/compiler/__init__.py +0 -0
  622. data/vendor/depot_tools/third_party/protobuf26/compiler/plugin_pb2.py +0 -184
  623. data/vendor/depot_tools/third_party/protobuf26/descriptor.py +0 -849
  624. data/vendor/depot_tools/third_party/protobuf26/descriptor_database.py +0 -137
  625. data/vendor/depot_tools/third_party/protobuf26/descriptor_pb2.py +0 -1522
  626. data/vendor/depot_tools/third_party/protobuf26/descriptor_pool.py +0 -643
  627. data/vendor/depot_tools/third_party/protobuf26/internal/__init__.py +0 -0
  628. data/vendor/depot_tools/third_party/protobuf26/internal/api_implementation.py +0 -89
  629. data/vendor/depot_tools/third_party/protobuf26/internal/containers.py +0 -269
  630. data/vendor/depot_tools/third_party/protobuf26/internal/cpp_message.py +0 -663
  631. data/vendor/depot_tools/third_party/protobuf26/internal/decoder.py +0 -831
  632. data/vendor/depot_tools/third_party/protobuf26/internal/encoder.py +0 -788
  633. data/vendor/depot_tools/third_party/protobuf26/internal/enum_type_wrapper.py +0 -89
  634. data/vendor/depot_tools/third_party/protobuf26/internal/message_listener.py +0 -78
  635. data/vendor/depot_tools/third_party/protobuf26/internal/python_message.py +0 -1247
  636. data/vendor/depot_tools/third_party/protobuf26/internal/type_checkers.py +0 -328
  637. data/vendor/depot_tools/third_party/protobuf26/internal/wire_format.py +0 -268
  638. data/vendor/depot_tools/third_party/protobuf26/message.py +0 -284
  639. data/vendor/depot_tools/third_party/protobuf26/message_factory.py +0 -155
  640. data/vendor/depot_tools/third_party/protobuf26/reflection.py +0 -205
  641. data/vendor/depot_tools/third_party/protobuf26/service.py +0 -226
  642. data/vendor/depot_tools/third_party/protobuf26/service_reflection.py +0 -284
  643. data/vendor/depot_tools/third_party/protobuf26/symbol_database.py +0 -185
  644. data/vendor/depot_tools/third_party/protobuf26/text_encoding.py +0 -110
  645. data/vendor/depot_tools/third_party/protobuf26/text_format.py +0 -873
  646. data/vendor/depot_tools/third_party/pylint.py +0 -37
  647. data/vendor/depot_tools/third_party/pylint/LICENSE.txt +0 -340
  648. data/vendor/depot_tools/third_party/pylint/README.chromium +0 -30
  649. data/vendor/depot_tools/third_party/pylint/__init__.py +0 -46
  650. data/vendor/depot_tools/third_party/pylint/__main__.py +0 -3
  651. data/vendor/depot_tools/third_party/pylint/__pkginfo__.py +0 -80
  652. data/vendor/depot_tools/third_party/pylint/checkers/__init__.py +0 -123
  653. data/vendor/depot_tools/third_party/pylint/checkers/async.py +0 -82
  654. data/vendor/depot_tools/third_party/pylint/checkers/base.py +0 -2010
  655. data/vendor/depot_tools/third_party/pylint/checkers/classes.py +0 -1120
  656. data/vendor/depot_tools/third_party/pylint/checkers/design_analysis.py +0 -348
  657. data/vendor/depot_tools/third_party/pylint/checkers/exceptions.py +0 -369
  658. data/vendor/depot_tools/third_party/pylint/checkers/format.py +0 -993
  659. data/vendor/depot_tools/third_party/pylint/checkers/imports.py +0 -654
  660. data/vendor/depot_tools/third_party/pylint/checkers/logging.py +0 -258
  661. data/vendor/depot_tools/third_party/pylint/checkers/misc.py +0 -105
  662. data/vendor/depot_tools/third_party/pylint/checkers/newstyle.py +0 -169
  663. data/vendor/depot_tools/third_party/pylint/checkers/python3.py +0 -591
  664. data/vendor/depot_tools/third_party/pylint/checkers/raw_metrics.py +0 -129
  665. data/vendor/depot_tools/third_party/pylint/checkers/similar.py +0 -371
  666. data/vendor/depot_tools/third_party/pylint/checkers/spelling.py +0 -264
  667. data/vendor/depot_tools/third_party/pylint/checkers/stdlib.py +0 -280
  668. data/vendor/depot_tools/third_party/pylint/checkers/strings.py +0 -618
  669. data/vendor/depot_tools/third_party/pylint/checkers/typecheck.py +0 -974
  670. data/vendor/depot_tools/third_party/pylint/checkers/utils.py +0 -741
  671. data/vendor/depot_tools/third_party/pylint/checkers/variables.py +0 -1191
  672. data/vendor/depot_tools/third_party/pylint/config.py +0 -820
  673. data/vendor/depot_tools/third_party/pylint/epylint.py +0 -181
  674. data/vendor/depot_tools/third_party/pylint/extensions/__init__.py +0 -0
  675. data/vendor/depot_tools/third_party/pylint/extensions/check_docs.py +0 -311
  676. data/vendor/depot_tools/third_party/pylint/extensions/check_elif.py +0 -62
  677. data/vendor/depot_tools/third_party/pylint/graph.py +0 -179
  678. data/vendor/depot_tools/third_party/pylint/gui.py +0 -531
  679. data/vendor/depot_tools/third_party/pylint/interfaces.py +0 -102
  680. data/vendor/depot_tools/third_party/pylint/lint.py +0 -1381
  681. data/vendor/depot_tools/third_party/pylint/pyreverse/__init__.py +0 -5
  682. data/vendor/depot_tools/third_party/pylint/pyreverse/diadefslib.py +0 -230
  683. data/vendor/depot_tools/third_party/pylint/pyreverse/diagrams.py +0 -258
  684. data/vendor/depot_tools/third_party/pylint/pyreverse/inspector.py +0 -372
  685. data/vendor/depot_tools/third_party/pylint/pyreverse/main.py +0 -147
  686. data/vendor/depot_tools/third_party/pylint/pyreverse/utils.py +0 -210
  687. data/vendor/depot_tools/third_party/pylint/pyreverse/vcgutils.py +0 -198
  688. data/vendor/depot_tools/third_party/pylint/pyreverse/writer.py +0 -198
  689. data/vendor/depot_tools/third_party/pylint/reporters/__init__.py +0 -149
  690. data/vendor/depot_tools/third_party/pylint/reporters/guireporter.py +0 -27
  691. data/vendor/depot_tools/third_party/pylint/reporters/html.py +0 -108
  692. data/vendor/depot_tools/third_party/pylint/reporters/json.py +0 -64
  693. data/vendor/depot_tools/third_party/pylint/reporters/text.py +0 -237
  694. data/vendor/depot_tools/third_party/pylint/reporters/ureports/__init__.py +0 -106
  695. data/vendor/depot_tools/third_party/pylint/reporters/ureports/html_writer.py +0 -93
  696. data/vendor/depot_tools/third_party/pylint/reporters/ureports/nodes.py +0 -181
  697. data/vendor/depot_tools/third_party/pylint/reporters/ureports/text_writer.py +0 -99
  698. data/vendor/depot_tools/third_party/pylint/testutils.py +0 -414
  699. data/vendor/depot_tools/third_party/pylint/utils.py +0 -1148
  700. data/vendor/depot_tools/third_party/pymox/COPYING +0 -202
  701. data/vendor/depot_tools/third_party/pymox/MANIFEST.in +0 -5
  702. data/vendor/depot_tools/third_party/pymox/README +0 -56
  703. data/vendor/depot_tools/third_party/pymox/__init__.py +0 -0
  704. data/vendor/depot_tools/third_party/pymox/mox.py +0 -1643
  705. data/vendor/depot_tools/third_party/pymox/mox_test.py +0 -1708
  706. data/vendor/depot_tools/third_party/pymox/mox_test_helper.py +0 -76
  707. data/vendor/depot_tools/third_party/pymox/setup.py +0 -14
  708. data/vendor/depot_tools/third_party/pymox/stubout.py +0 -142
  709. data/vendor/depot_tools/third_party/pymox/stubout_test.py +0 -47
  710. data/vendor/depot_tools/third_party/pymox/stubout_testee.py +0 -2
  711. data/vendor/depot_tools/third_party/simplejson/LICENSE.txt +0 -19
  712. data/vendor/depot_tools/third_party/simplejson/PKG-INFO +0 -29
  713. data/vendor/depot_tools/third_party/simplejson/__init__.py +0 -437
  714. data/vendor/depot_tools/third_party/simplejson/decoder.py +0 -421
  715. data/vendor/depot_tools/third_party/simplejson/encoder.py +0 -501
  716. data/vendor/depot_tools/third_party/simplejson/ordered_dict.py +0 -119
  717. data/vendor/depot_tools/third_party/simplejson/scanner.py +0 -77
  718. data/vendor/depot_tools/third_party/simplejson/tool.py +0 -39
  719. data/vendor/depot_tools/third_party/upload.py +0 -2565
@@ -0,0 +1,12 @@
1
+ @echo off
2
+ :: Copyright 2019 The Chromium Authors. All rights reserved.
3
+ :: Use of this source code is governed by a BSD-style license that can be
4
+ :: found in the LICENSE file.
5
+
6
+ :: TODO(crbug.com/1003139): Remove.
7
+ :: Add Python 3 to PATH to work around crbug.com/1003139.
8
+ for /f %%i in (%~dp0python3_bin_reldir.txt) do set PYTHON3_BIN_RELDIR=%%i
9
+ set PATH=%~dp0%PYTHON3_BIN_RELDIR%;%~dp0%PYTHON3_BIN_RELDIR%\Scripts;%~dp0%PYTHON3_BIN_RELDIR%\DLLs;%PATH%
10
+
11
+ call "%~dp0\cipd_bin_setup.bat" > nul 2>&1
12
+ "%~dp0\.cipd_bin\vpython3.exe" -vpython-interpreter "%~dp0\%PYTHON3_BIN_RELDIR%\python3.exe" %*
@@ -6,8 +6,8 @@
6
6
  """Watchlists
7
7
 
8
8
  Watchlists is a mechanism that allow a developer (a "watcher") to watch over
9
- portions of code that he is interested in. A "watcher" will be cc-ed to
10
- changes that modify that portion of code, thereby giving him an opportunity
9
+ portions of code that they are interested in. A "watcher" will be cc-ed to
10
+ changes that modify that portion of code, thereby giving them an opportunity
11
11
  to make comments on codereview.chromium.org even before the change is
12
12
  committed.
13
13
  Refer: http://dev.chromium.org/developers/contributing-code/watchlists
@@ -17,6 +17,8 @@ the watchers for files given on the command line. This is useful to verify
17
17
  changes to WATCHLISTS files.
18
18
  """
19
19
 
20
+ from __future__ import print_function
21
+
20
22
  import logging
21
23
  import os
22
24
  import re
@@ -60,7 +62,7 @@ class Watchlists(object):
60
62
  contents = watchlists_file.read()
61
63
  watchlists_file.close()
62
64
  return contents
63
- except IOError, e:
65
+ except IOError as e:
64
66
  logging.error("Cannot read %s: %s" % (self._GetRulesFilePath(), e))
65
67
  return ''
66
68
 
@@ -73,7 +75,7 @@ class Watchlists(object):
73
75
  watchlists_data = None
74
76
  try:
75
77
  watchlists_data = eval(contents, {'__builtins__': None}, None)
76
- except SyntaxError, e:
78
+ except SyntaxError as e:
77
79
  logging.error("Cannot parse %s. %s" % (self._GetRulesFilePath(), e))
78
80
  return
79
81
 
@@ -92,7 +94,7 @@ class Watchlists(object):
92
94
  # Compile the regular expressions ahead of time to avoid creating them
93
95
  # on-the-fly multiple times per file.
94
96
  self._path_regexps = {}
95
- for name, rule in defns.iteritems():
97
+ for name, rule in defns.items():
96
98
  filepath = rule.get('filepath')
97
99
  if not filepath:
98
100
  continue
@@ -115,23 +117,24 @@ class Watchlists(object):
115
117
  watchers = set() # A set, to avoid duplicates
116
118
  for path in paths:
117
119
  path = path.replace(os.sep, '/')
118
- for name, rule in self._path_regexps.iteritems():
120
+ for name, rule in self._path_regexps.items():
119
121
  if name not in self._watchlists:
120
122
  continue
121
123
  if rule.search(path):
122
- map(watchers.add, self._watchlists[name])
123
- return list(watchers)
124
+ for watchlist in self._watchlists[name]:
125
+ watchers.add(watchlist)
126
+ return sorted(watchers)
124
127
 
125
128
 
126
129
  def main(argv):
127
130
  # Confirm that watchlists can be parsed and spew out the watchers
128
131
  if len(argv) < 2:
129
- print "Usage (from the base of repo):"
130
- print " %s [file-1] [file-2] ...." % argv[0]
132
+ print("Usage (from the base of repo):")
133
+ print(" %s [file-1] [file-2] ...." % argv[0])
131
134
  return 1
132
135
  wl = Watchlists(os.getcwd())
133
136
  watchers = wl.GetWatchersForPaths(argv[1:])
134
- print watchers
137
+ print(watchers)
135
138
 
136
139
 
137
140
  if __name__ == '__main__':
@@ -6,6 +6,8 @@
6
6
  """Display log of checkins of one particular developer since a particular
7
7
  date. Only works on git dependencies at the moment."""
8
8
 
9
+ from __future__ import print_function
10
+
9
11
  import gclient_utils
10
12
  import optparse
11
13
  import os
@@ -25,8 +27,8 @@ def show_log(path, authors, since='1 week ago'):
25
27
  stdout=subprocess.PIPE).communicate()[0].rstrip()
26
28
 
27
29
  if len(status.splitlines()) > 0:
28
- print '---------- %s ----------' % path
29
- print status
30
+ print('---------- %s ----------' % path)
31
+ print(status)
30
32
 
31
33
 
32
34
  def main():
@@ -0,0 +1,61 @@
1
+ # Copyright 2020 The Chromium Authors. All rights reserved.
2
+ # Use of this source code is governed by a BSD-style license that can be
3
+ # found in the LICENSE file.
4
+ """Win32 functions and constants."""
5
+
6
+ import ctypes
7
+ import ctypes.wintypes
8
+
9
+ GENERIC_WRITE = 0x40000000
10
+ CREATE_ALWAYS = 0x00000002
11
+ FILE_ATTRIBUTE_NORMAL = 0x00000080
12
+ LOCKFILE_EXCLUSIVE_LOCK = 0x00000002
13
+ LOCKFILE_FAIL_IMMEDIATELY = 0x00000001
14
+
15
+
16
+ class Overlapped(ctypes.Structure):
17
+ """Overlapped is required and used in LockFileEx and UnlockFileEx."""
18
+ _fields_ = [('Internal', ctypes.wintypes.LPVOID),
19
+ ('InternalHigh', ctypes.wintypes.LPVOID),
20
+ ('Offset', ctypes.wintypes.DWORD),
21
+ ('OffsetHigh', ctypes.wintypes.DWORD),
22
+ ('Pointer', ctypes.wintypes.LPVOID),
23
+ ('hEvent', ctypes.wintypes.HANDLE)]
24
+
25
+
26
+ # https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilew
27
+ CreateFileW = ctypes.windll.kernel32.CreateFileW
28
+ CreateFileW.argtypes = [
29
+ ctypes.wintypes.LPCWSTR, # lpFileName
30
+ ctypes.wintypes.DWORD, # dwDesiredAccess
31
+ ctypes.wintypes.DWORD, # dwShareMode
32
+ ctypes.wintypes.LPVOID, # lpSecurityAttributes
33
+ ctypes.wintypes.DWORD, # dwCreationDisposition
34
+ ctypes.wintypes.DWORD, # dwFlagsAndAttributes
35
+ ctypes.wintypes.LPVOID, # hTemplateFile
36
+ ]
37
+ CreateFileW.restype = ctypes.wintypes.HANDLE
38
+
39
+ # https://docs.microsoft.com/en-us/windows/win32/api/handleapi/nf-handleapi-closehandle
40
+ CloseHandle = ctypes.windll.kernel32.CloseHandle
41
+ CloseHandle.argtypes = [
42
+ ctypes.wintypes.HANDLE, # hFile
43
+ ]
44
+ CloseHandle.restype = ctypes.wintypes.BOOL
45
+
46
+ # https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-lockfileex
47
+ LockFileEx = ctypes.windll.kernel32.LockFileEx
48
+ LockFileEx.argtypes = [
49
+ ctypes.wintypes.HANDLE, # hFile
50
+ ctypes.wintypes.DWORD, # dwFlags
51
+ ctypes.wintypes.DWORD, # dwReserved
52
+ ctypes.wintypes.DWORD, # nNumberOfBytesToLockLow
53
+ ctypes.wintypes.DWORD, # nNumberOfBytesToLockHigh
54
+ ctypes.POINTER(Overlapped), # lpOverlapped
55
+ ]
56
+ LockFileEx.restype = ctypes.wintypes.BOOL
57
+
58
+ # Commonly used functions are listed here so callers don't need to import
59
+ # ctypes.
60
+ GetLastError = ctypes.GetLastError
61
+ Handle = ctypes.wintypes.HANDLE
@@ -26,6 +26,8 @@ future when a hypothetical VS2015 is released, the 2013 script will be
26
26
  maintained, and a new 2015 script would be added.
27
27
  """
28
28
 
29
+ from __future__ import print_function
30
+
29
31
  import hashlib
30
32
  import json
31
33
  import optparse
@@ -52,12 +54,12 @@ elif sys.platform == "cygwin":
52
54
  try:
53
55
  import cygwinreg as winreg
54
56
  except ImportError:
55
- print ''
56
- print 'CygWin does not natively support winreg but a replacement exists.'
57
- print 'https://pypi.python.org/pypi/cygwinreg/'
58
- print ''
59
- print 'Try: easy_install cygwinreg'
60
- print ''
57
+ print('')
58
+ print('CygWin does not natively support winreg but a replacement exists.')
59
+ print('https://pypi.python.org/pypi/cygwinreg/')
60
+ print('')
61
+ print('Try: easy_install cygwinreg')
62
+ print('')
61
63
  raise
62
64
 
63
65
  BASEDIR = os.path.dirname(os.path.abspath(__file__))
@@ -77,16 +79,19 @@ def GetFileList(root):
77
79
  assert os.path.normpath(root) == root
78
80
  file_list = []
79
81
  # Ignore WER ReportQueue entries that vctip/cl leave in the bin dir if/when
80
- # they crash. Also ignores the content of the win_sdk/debuggers/x(86|64)/sym/
81
- # directories as this is just the temporarily location that Windbg might use
82
- # to store the symbol files.
82
+ # they crash. Also ignores the content of the
83
+ # win_sdk/debuggers/x(86|64)/(sym|src)/ directories as this is just the
84
+ # temporarily location that Windbg might use to store the symbol files and
85
+ # downloaded sources.
83
86
  #
84
87
  # Note: These files are only created on a Windows host, so the
85
88
  # ignored_directories list isn't relevant on non-Windows hosts.
86
89
 
87
90
  ignored_directories = ['wer\\reportqueue',
88
91
  'win_sdk\\debuggers\\x86\\sym\\',
89
- 'win_sdk\\debuggers\\x64\\sym\\']
92
+ 'win_sdk\\debuggers\\x64\\sym\\',
93
+ 'win_sdk\\debuggers\\x86\\src\\',
94
+ 'win_sdk\\debuggers\\x64\\src\\']
90
95
  for base, _, files in os.walk(root):
91
96
  paths = [os.path.join(base, f) for f in files]
92
97
  for p in paths:
@@ -144,25 +149,25 @@ def CalculateHash(root, expected_hash):
144
149
  timestamps_data_files.append(f[0])
145
150
  missing_files = [f for f in timestamps_data_files if f not in file_list]
146
151
  if len(missing_files):
147
- print ('%d files missing from the %s version of the toolchain:' %
152
+ print('%d files missing from the %s version of the toolchain:' %
148
153
  (len(missing_files), expected_hash))
149
154
  for f in missing_files[:10]:
150
- print '\t%s' % f
155
+ print('\t%s' % f)
151
156
  if len(missing_files) > 10:
152
- print '\t...'
157
+ print('\t...')
153
158
  extra_files = [f for f in file_list if f not in timestamps_data_files]
154
159
  if len(extra_files):
155
- print ('%d extra files in the %s version of the toolchain:' %
160
+ print('%d extra files in the %s version of the toolchain:' %
156
161
  (len(extra_files), expected_hash))
157
162
  for f in extra_files[:10]:
158
- print '\t%s' % f
163
+ print('\t%s' % f)
159
164
  if len(extra_files) > 10:
160
- print '\t...'
165
+ print('\t...')
161
166
  if matches:
162
167
  return timestamps_data['sha1']
163
168
 
164
169
  # Make long hangs when updating the toolchain less mysterious.
165
- print 'Calculating hash of toolchain in %s. Please wait...' % full_root_path
170
+ print('Calculating hash of toolchain in %s. Please wait...' % full_root_path)
166
171
  sys.stdout.flush()
167
172
  digest = hashlib.sha1()
168
173
  for path in file_list:
@@ -170,7 +175,10 @@ def CalculateHash(root, expected_hash):
170
175
  if expected_hash:
171
176
  path_without_hash = path_without_hash.replace(
172
177
  os.path.join(root, expected_hash).replace('/', '\\'), root)
173
- digest.update(path_without_hash.lower())
178
+ if sys.version_info[0] < 3:
179
+ digest.update(path_without_hash.lower())
180
+ else:
181
+ digest.update(bytes(path_without_hash.lower(), 'utf-8'))
174
182
  with open(path, 'rb') as f:
175
183
  digest.update(f.read())
176
184
 
@@ -189,7 +197,7 @@ def CalculateToolchainHashes(root, remove_corrupt_toolchains):
189
197
  for d in dir_list:
190
198
  toolchain_hash = CalculateHash(root, d)
191
199
  if toolchain_hash != d:
192
- print ('The hash of a version of the toolchain has an unexpected value ('
200
+ print('The hash of a version of the toolchain has an unexpected value ('
193
201
  '%s instead of %s)%s.' % (toolchain_hash, d,
194
202
  ', removing it' if remove_corrupt_toolchains else ''))
195
203
  if remove_corrupt_toolchains:
@@ -259,23 +267,23 @@ def RequestGsAuthentication():
259
267
  Googler. This allows much faster downloads, and pulling (old) toolchains
260
268
  that match src/ revisions.
261
269
  """
262
- print 'Access to gs://chrome-wintoolchain/ not configured.'
263
- print '-----------------------------------------------------------------'
264
- print
265
- print 'You appear to be a Googler.'
266
- print
267
- print 'I\'m sorry for the hassle, but you need to do a one-time manual'
268
- print 'authentication. Please run:'
269
- print
270
- print ' download_from_google_storage --config'
271
- print
272
- print 'and follow the instructions.'
273
- print
274
- print 'NOTE 1: Use your google.com credentials, not chromium.org.'
275
- print 'NOTE 2: Enter 0 when asked for a "project-id".'
276
- print
277
- print '-----------------------------------------------------------------'
278
- print
270
+ print('Access to gs://chrome-wintoolchain/ not configured.')
271
+ print('-----------------------------------------------------------------')
272
+ print()
273
+ print('You appear to be a Googler.')
274
+ print()
275
+ print('I\'m sorry for the hassle, but you need to do a one-time manual')
276
+ print('authentication. Please run:')
277
+ print()
278
+ print(' download_from_google_storage --config')
279
+ print()
280
+ print('and follow the instructions.')
281
+ print()
282
+ print('NOTE 1: Use your google.com credentials, not chromium.org.')
283
+ print('NOTE 2: Enter 0 when asked for a "project-id".')
284
+ print()
285
+ print('-----------------------------------------------------------------')
286
+ print()
279
287
  sys.stdout.flush()
280
288
  sys.exit(1)
281
289
 
@@ -289,7 +297,7 @@ def DelayBeforeRemoving(target_dir):
289
297
  '\rRemoving old toolchain in %ds... (Ctrl-C to cancel)' % i)
290
298
  sys.stdout.flush()
291
299
  time.sleep(1)
292
- print
300
+ print()
293
301
 
294
302
 
295
303
  def DownloadUsingHttp(filename):
@@ -396,7 +404,7 @@ def RemoveUnusedToolchains(root):
396
404
  os.remove(full_path)
397
405
 
398
406
  for d in dirs_to_remove:
399
- print ('Removing %s as it doesn\'t correspond to any known toolchain.' %
407
+ print('Removing %s as it doesn\'t correspond to any known toolchain.' %
400
408
  os.path.join(root, d))
401
409
  # Use the RemoveToolchain function to remove these directories as they might
402
410
  # contain an older version of the toolchain.
@@ -408,7 +416,7 @@ def RemoveUnusedToolchains(root):
408
416
  for toolchain in valid_toolchains:
409
417
  toolchain_age_in_sec = time.time() - toolchain[0]
410
418
  if toolchain_age_in_sec > toolchain_expiration_time:
411
- print ('Removing version %s of the Win toolchain as it hasn\'t been used'
419
+ print('Removing version %s of the Win toolchain as it hasn\'t been used'
412
420
  ' in the past %d days.' % (toolchain[1],
413
421
  toolchain_age_in_sec / 60 / 60 / 24))
414
422
  RemoveToolchain(root, toolchain[1], True)
@@ -569,10 +577,10 @@ def main():
569
577
  if got_new_toolchain:
570
578
  current_hashes = CalculateToolchainHashes(target_dir, False)
571
579
  if desired_hash not in current_hashes:
572
- print >> sys.stderr, (
580
+ print(
573
581
  'Got wrong hash after pulling a new toolchain. '
574
582
  'Wanted \'%s\', got one of \'%s\'.' % (
575
- desired_hash, ', '.join(current_hashes)))
583
+ desired_hash, ', '.join(current_hashes)), file=sys.stderr)
576
584
  return 1
577
585
  SaveTimestampsAndHash(target_dir, desired_hash)
578
586
 
@@ -9,7 +9,7 @@ into a .zip file.
9
9
  It assumes default install locations for tools, on the C: drive.
10
10
 
11
11
  1. Start from a fresh Windows VM image.
12
- 2. Download the VS 2017 installer. Run the installer with these parameters:
12
+ 2. Download the VS installer. Run the installer with these parameters:
13
13
  --add Microsoft.VisualStudio.Workload.NativeDesktop
14
14
  --add Microsoft.VisualStudio.Component.VC.ATLMFC
15
15
  --add Microsoft.VisualStudio.Component.VC.Tools.ARM64
@@ -23,13 +23,15 @@ frameworks-> Visual C++ MFC for ARM64 (which also brings in ATL for ARM64).
23
23
  3. Use Add or Remove Programs to find the Windows SDK installed with VS
24
24
  and modify it to include the debuggers.
25
25
  4. Run this script, which will build a <sha1>.zip, something like this:
26
- python package_from_installed.py 2017 -w 10.0.17763.0
26
+ python package_from_installed.py 2017|2019 -w 10.0.17763.0|<SDK version>
27
27
 
28
28
  Express is not yet supported by this script, but patches welcome (it's not too
29
29
  useful as the resulting zip can't be redistributed, and most will presumably
30
30
  have a Pro license anyway).
31
31
  """
32
32
 
33
+ from __future__ import print_function
34
+
33
35
  import collections
34
36
  import glob
35
37
  import json
@@ -48,24 +50,21 @@ import get_toolchain_if_necessary
48
50
  VS_VERSION = None
49
51
  WIN_VERSION = None
50
52
  VC_TOOLS = None
53
+ SUPPORTED_VS_VERSIONS = ['2017', '2019']
51
54
 
52
55
 
53
56
  def GetVSPath():
54
- if VS_VERSION == '2015':
55
- return r'C:\Program Files (x86)\Microsoft Visual Studio 14.0'
56
- elif VS_VERSION == '2017':
57
- # Use vswhere to find the VS 2017 installation. This will find prerelease
58
- # versions because -prerelease is specified. This assumes that only one
59
- # version is installed.
60
- command = (r'C:\Program Files (x86)\Microsoft Visual Studio\Installer'
61
- r'\vswhere.exe -prerelease')
62
- marker = 'installationPath: '
63
- for line in subprocess.check_output(command).splitlines():
64
- if line.startswith(marker):
65
- return line[len(marker):]
66
- raise Exception('VS 2017 path not found in vswhere output')
67
- else:
68
- raise ValueError(VS_VERSION)
57
+ # Use vswhere to find the VS installation. This will find prerelease
58
+ # versions because -prerelease is specified. This assumes that only one
59
+ # version is installed.
60
+ command = (r'C:\Program Files (x86)\Microsoft Visual Studio\Installer'
61
+ r'\vswhere.exe -prerelease')
62
+ marker = 'installationPath: '
63
+ output = subprocess.check_output(command, universal_newlines=True)
64
+ for line in output.splitlines():
65
+ if line.startswith(marker):
66
+ return line[len(marker):]
67
+ raise Exception('VS %s path not found in vswhere output' % (VS_VERSION))
69
68
 
70
69
 
71
70
  def ExpandWildcards(root, sub_dir):
@@ -81,6 +80,12 @@ def BuildRepackageFileList(src_dir):
81
80
  # Strip off a trailing slash if present
82
81
  if src_dir.endswith('\\'):
83
82
  src_dir = src_dir[:-1]
83
+
84
+ # Ensure .\win_sdk\Debuggers exists and fail to repackage if it doesn't.
85
+ debuggers_path = os.path.join(src_dir, 'win_sdk', 'Debuggers')
86
+ if not os.path.exists(debuggers_path):
87
+ raise Exception('Repacking failed. Missing %s.' % (debuggers_path))
88
+
84
89
  result = []
85
90
  for root, _, files in os.walk(src_dir):
86
91
  for f in files:
@@ -90,7 +95,7 @@ def BuildRepackageFileList(src_dir):
90
95
  return result
91
96
 
92
97
 
93
- def BuildFileList(override_dir):
98
+ def BuildFileList(override_dir, include_arm):
94
99
  result = []
95
100
 
96
101
  # Subset of VS corresponding roughly to VC.
@@ -117,39 +122,27 @@ def BuildFileList(override_dir):
117
122
  VC_TOOLS + '/lib',
118
123
  ]
119
124
 
120
- if VS_VERSION == '2015':
121
- paths += [
122
- ('VC/redist/x86/Microsoft.VC140.CRT', 'sys32'),
123
- ('VC/redist/x86/Microsoft.VC140.CRT', 'win_sdk/bin/x86'),
124
- ('VC/redist/x86/Microsoft.VC140.MFC', 'sys32'),
125
- ('VC/redist/debug_nonredist/x86/Microsoft.VC140.DebugCRT', 'sys32'),
126
- ('VC/redist/debug_nonredist/x86/Microsoft.VC140.DebugMFC', 'sys32'),
127
- ('VC/redist/x64/Microsoft.VC140.CRT', 'sys64'),
128
- ('VC/redist/x64/Microsoft.VC140.CRT', 'VC/bin/amd64_x86'),
129
- ('VC/redist/x64/Microsoft.VC140.CRT', 'VC/bin/amd64'),
130
- ('VC/redist/x64/Microsoft.VC140.CRT', 'win_sdk/bin/x64'),
131
- ('VC/redist/x64/Microsoft.VC140.MFC', 'sys64'),
132
- ('VC/redist/debug_nonredist/x64/Microsoft.VC140.DebugCRT', 'sys64'),
133
- ('VC/redist/debug_nonredist/x64/Microsoft.VC140.DebugMFC', 'sys64'),
134
- ]
135
- elif VS_VERSION == '2017':
125
+ paths += [
126
+ ('VC/redist/MSVC/14.*.*/x86/Microsoft.VC*.CRT', 'sys32'),
127
+ ('VC/redist/MSVC/14.*.*/x86/Microsoft.VC*.CRT', 'win_sdk/bin/x86'),
128
+ ('VC/redist/MSVC/14.*.*/debug_nonredist/x86/Microsoft.VC*.DebugCRT',
129
+ 'sys32'),
130
+ ('VC/redist/MSVC/14.*.*/x64/Microsoft.VC*.CRT', 'sys64'),
131
+ ('VC/redist/MSVC/14.*.*/x64/Microsoft.VC*.CRT', 'VC/bin/amd64_x86'),
132
+ ('VC/redist/MSVC/14.*.*/x64/Microsoft.VC*.CRT', 'VC/bin/amd64'),
133
+ ('VC/redist/MSVC/14.*.*/x64/Microsoft.VC*.CRT', 'win_sdk/bin/x64'),
134
+ ('VC/redist/MSVC/14.*.*/debug_nonredist/x64/Microsoft.VC*.DebugCRT',
135
+ 'sys64'),
136
+ ]
137
+ if include_arm:
136
138
  paths += [
137
- ('VC/redist/MSVC/14.*.*/x86/Microsoft.VC*.CRT', 'sys32'),
138
- ('VC/redist/MSVC/14.*.*/x86/Microsoft.VC*.CRT', 'win_sdk/bin/x86'),
139
- ('VC/redist/MSVC/14.*.*/debug_nonredist/x86/Microsoft.VC*.DebugCRT', 'sys32'),
140
- ('VC/redist/MSVC/14.*.*/x64/Microsoft.VC*.CRT', 'sys64'),
141
- ('VC/redist/MSVC/14.*.*/x64/Microsoft.VC*.CRT', 'VC/bin/amd64_x86'),
142
- ('VC/redist/MSVC/14.*.*/x64/Microsoft.VC*.CRT', 'VC/bin/amd64'),
143
- ('VC/redist/MSVC/14.*.*/x64/Microsoft.VC*.CRT', 'win_sdk/bin/x64'),
144
- ('VC/redist/MSVC/14.*.*/debug_nonredist/x64/Microsoft.VC*.DebugCRT', 'sys64'),
145
139
  ('VC/redist/MSVC/14.*.*/arm64/Microsoft.VC*.CRT', 'sysarm64'),
146
140
  ('VC/redist/MSVC/14.*.*/arm64/Microsoft.VC*.CRT', 'VC/bin/amd64_arm64'),
147
141
  ('VC/redist/MSVC/14.*.*/arm64/Microsoft.VC*.CRT', 'VC/bin/arm64'),
148
142
  ('VC/redist/MSVC/14.*.*/arm64/Microsoft.VC*.CRT', 'win_sdk/bin/arm64'),
149
- ('VC/redist/MSVC/14.*.*/debug_nonredist/arm64/Microsoft.VC*.DebugCRT', 'sysarm64'),
143
+ ('VC/redist/MSVC/14.*.*/debug_nonredist/arm64/Microsoft.VC*.DebugCRT',
144
+ 'sysarm64'),
150
145
  ]
151
- else:
152
- raise ValueError('VS_VERSION %s' % VS_VERSION)
153
146
 
154
147
  vs_path = GetVSPath()
155
148
 
@@ -180,6 +173,10 @@ def BuildFileList(override_dir):
180
173
  result.append((final_from, dest))
181
174
 
182
175
  sdk_path = r'C:\Program Files (x86)\Windows Kits\10'
176
+ debuggers_path = os.path.join(sdk_path, 'Debuggers')
177
+ if not os.path.exists(debuggers_path):
178
+ raise Exception('Packaging failed. Missing %s.' % (debuggers_path))
179
+
183
180
  for root, _, files in os.walk(sdk_path):
184
181
  for f in files:
185
182
  combined = os.path.normpath(os.path.join(root, f))
@@ -236,21 +233,31 @@ def BuildFileList(override_dir):
236
233
  # Needed to let debug binaries run.
237
234
  'ucrtbased.dll',
238
235
  ]
236
+ cpu_pairs = [
237
+ ('x86', 'sys32'),
238
+ ('x64', 'sys64'),
239
+ ]
240
+ if include_arm:
241
+ cpu_pairs += [
242
+ ('arm64', 'sysarm64'),
243
+ ]
239
244
  for system_crt_file in system_crt_files:
240
- for cpu_pair in [('x86', 'sys32'), ('x64', 'sys64'), ('arm64', 'sysarm64')]:
245
+ for cpu_pair in cpu_pairs:
241
246
  target_cpu, dest_dir = cpu_pair
242
247
  src_path = os.path.join(sdk_path, 'bin', WIN_VERSION, target_cpu, 'ucrt')
243
248
  result.append((os.path.join(src_path, system_crt_file),
244
249
  os.path.join(dest_dir, system_crt_file)))
245
250
 
246
251
  # Generically drop all arm stuff that we don't need, and
247
- # drop .msi files because we don't need installers, and drop windows.winmd
248
- # because it is unneeded and is different on every machine.
249
- return [(f, t) for f, t in result if 'arm\\' not in f.lower() and
250
- not f.lower().endswith('.msi') and
251
- not f.lower().endswith('.msm') and
252
- not f.lower().endswith('windows.winmd')]
253
-
252
+ # drop .msi files because we don't need installers and drop
253
+ # samples since those are not used by any tools.
254
+ def is_skippable(f):
255
+ return ('arm\\' in f.lower() or
256
+ (not include_arm and 'arm64\\' in f.lower()) or
257
+ 'samples\\' in f.lower() or
258
+ f.lower().endswith(('.msi',
259
+ '.msm')))
260
+ return [(f, t) for f, t in result if not is_skippable(f)]
254
261
 
255
262
  def GenerateSetEnvCmd(target_dir):
256
263
  """Generate a batch file that gyp expects to exist to set up the compiler
@@ -271,6 +278,10 @@ def GenerateSetEnvCmd(target_dir):
271
278
  ['..', '..'] + vc_tools_parts + ['include'],
272
279
  ['..', '..'] + vc_tools_parts + ['atlmfc', 'include'],
273
280
  ])
281
+ libpath_dirs = [
282
+ ['..', '..'] + vc_tools_parts + ['lib', 'x86', 'store', 'references'],
283
+ ['..', '..', 'win_sdk', 'UnionMetadata', WIN_VERSION],
284
+ ]
274
285
  # Common to x86, x64, and arm64
275
286
  env = collections.OrderedDict([
276
287
  # Yuck: These have a trailing \ character. No good way to represent this in
@@ -278,122 +289,100 @@ def GenerateSetEnvCmd(target_dir):
278
289
  ('VSINSTALLDIR', [['..', '..\\']]),
279
290
  ('VCINSTALLDIR', [['..', '..', 'VC\\']]),
280
291
  ('INCLUDE', include_dirs),
292
+ ('LIBPATH', libpath_dirs),
281
293
  ])
282
294
  # x86. Always use amd64_x86 cross, not x86 on x86.
283
- if VS_VERSION == '2017':
284
- env['VCToolsInstallDir'] = [['..', '..'] + vc_tools_parts[:]]
285
- # Yuck: This one ends in a slash as well.
286
- env['VCToolsInstallDir'][0][-1] += '\\'
287
- env_x86 = collections.OrderedDict([
288
- ('PATH', [
289
- ['..', '..', 'win_sdk', 'bin', WIN_VERSION, 'x64'],
290
- ['..', '..'] + vc_tools_parts + ['bin', 'HostX64', 'x86'],
291
- ['..', '..'] + vc_tools_parts + ['bin', 'HostX64', 'x64'], # Needed for mspdb1x0.dll.
292
- ]),
295
+ env['VCToolsInstallDir'] = [['..', '..'] + vc_tools_parts[:]]
296
+ # Yuck: This one ends in a slash as well.
297
+ env['VCToolsInstallDir'][0][-1] += '\\'
298
+ env_x86 = collections.OrderedDict([
299
+ (
300
+ 'PATH',
301
+ [
302
+ ['..', '..', 'win_sdk', 'bin', WIN_VERSION, 'x64'],
303
+ ['..', '..'] + vc_tools_parts + ['bin', 'HostX64', 'x86'],
304
+ ['..', '..'] + vc_tools_parts + ['bin', 'HostX64', 'x64'
305
+ ], # Needed for mspdb1x0.dll.
306
+ ]),
293
307
  ('LIB', [
294
- ['..', '..'] + vc_tools_parts + ['lib', 'x86'],
295
- ['..', '..', 'win_sdk', 'Lib', WIN_VERSION, 'um', 'x86'],
296
- ['..', '..', 'win_sdk', 'Lib', WIN_VERSION, 'ucrt', 'x86'],
297
- ['..', '..'] + vc_tools_parts + ['atlmfc', 'lib', 'x86'],
308
+ ['..', '..'] + vc_tools_parts + ['lib', 'x86'],
309
+ ['..', '..', 'win_sdk', 'Lib', WIN_VERSION, 'um', 'x86'],
310
+ ['..', '..', 'win_sdk', 'Lib', WIN_VERSION, 'ucrt', 'x86'],
311
+ ['..', '..'] + vc_tools_parts + ['atlmfc', 'lib', 'x86'],
298
312
  ]),
299
- ])
300
- else:
301
- env_x86 = collections.OrderedDict([
302
- ('PATH', [
303
- ['..', '..', 'win_sdk', 'bin', WIN_VERSION, 'x86'],
304
- ['..', '..', 'VC', 'bin', 'amd64_x86'],
305
- ['..', '..', 'VC', 'bin', 'amd64'], # Needed for mspdb1x0.dll.
306
- ]),
307
- ('LIB', [
308
- ['..', '..', 'VC', 'lib'],
309
- ['..', '..', 'win_sdk', 'Lib', WIN_VERSION, 'um', 'x86'],
310
- ['..', '..', 'win_sdk', 'Lib', WIN_VERSION, 'ucrt', 'x86'],
311
- ['..', '..', 'VC', 'atlmfc', 'lib'],
312
- ]),
313
- ])
313
+ ])
314
+
314
315
  # x64.
315
- if VS_VERSION == '2017':
316
- env_x64 = collections.OrderedDict([
316
+ env_x64 = collections.OrderedDict([
317
317
  ('PATH', [
318
- ['..', '..', 'win_sdk', 'bin', WIN_VERSION, 'x64'],
319
- ['..', '..'] + vc_tools_parts + ['bin', 'HostX64', 'x64'],
318
+ ['..', '..', 'win_sdk', 'bin', WIN_VERSION, 'x64'],
319
+ ['..', '..'] + vc_tools_parts + ['bin', 'HostX64', 'x64'],
320
320
  ]),
321
321
  ('LIB', [
322
- ['..', '..'] + vc_tools_parts + ['lib', 'x64'],
323
- ['..', '..', 'win_sdk', 'Lib', WIN_VERSION, 'um', 'x64'],
324
- ['..', '..', 'win_sdk', 'Lib', WIN_VERSION, 'ucrt', 'x64'],
325
- ['..', '..'] + vc_tools_parts + ['atlmfc', 'lib', 'x64'],
322
+ ['..', '..'] + vc_tools_parts + ['lib', 'x64'],
323
+ ['..', '..', 'win_sdk', 'Lib', WIN_VERSION, 'um', 'x64'],
324
+ ['..', '..', 'win_sdk', 'Lib', WIN_VERSION, 'ucrt', 'x64'],
325
+ ['..', '..'] + vc_tools_parts + ['atlmfc', 'lib', 'x64'],
326
326
  ]),
327
- ])
328
- else:
329
- env_x64 = collections.OrderedDict([
330
- ('PATH', [
331
- ['..', '..', 'win_sdk', 'bin', WIN_VERSION, 'x64'],
332
- ['..', '..', 'VC', 'bin', 'amd64'],
333
- ]),
334
- ('LIB', [
335
- ['..', '..', 'VC', 'lib', 'amd64'],
336
- ['..', '..', 'win_sdk', 'Lib', WIN_VERSION, 'um', 'x64'],
337
- ['..', '..', 'win_sdk', 'Lib', WIN_VERSION, 'ucrt', 'x64'],
338
- ['..', '..', 'VC', 'atlmfc', 'lib', 'amd64'],
339
- ]),
340
- ])
341
- if VS_VERSION == '2017':
342
- env_arm64 = collections.OrderedDict([
327
+ ])
328
+
329
+ # arm64.
330
+ env_arm64 = collections.OrderedDict([
343
331
  ('PATH', [
344
- ['..', '..', 'win_sdk', 'bin', WIN_VERSION, 'x64'],
345
- ['..', '..'] + vc_tools_parts + ['bin', 'HostX64', 'arm64'],
346
- ['..', '..'] + vc_tools_parts + ['bin', 'HostX64', 'x64'],
332
+ ['..', '..', 'win_sdk', 'bin', WIN_VERSION, 'x64'],
333
+ ['..', '..'] + vc_tools_parts + ['bin', 'HostX64', 'arm64'],
334
+ ['..', '..'] + vc_tools_parts + ['bin', 'HostX64', 'x64'],
347
335
  ]),
348
336
  ('LIB', [
349
- ['..', '..'] + vc_tools_parts + ['lib', 'arm64'],
350
- ['..', '..', 'win_sdk', 'Lib', WIN_VERSION, 'um', 'arm64'],
351
- ['..', '..', 'win_sdk', 'Lib', WIN_VERSION, 'ucrt', 'arm64'],
352
- ['..', '..'] + vc_tools_parts + ['atlmfc', 'lib', 'arm64'],
337
+ ['..', '..'] + vc_tools_parts + ['lib', 'arm64'],
338
+ ['..', '..', 'win_sdk', 'Lib', WIN_VERSION, 'um', 'arm64'],
339
+ ['..', '..', 'win_sdk', 'Lib', WIN_VERSION, 'ucrt', 'arm64'],
340
+ ['..', '..'] + vc_tools_parts + ['atlmfc', 'lib', 'arm64'],
353
341
  ]),
354
- ])
342
+ ])
343
+
355
344
  def BatDirs(dirs):
356
345
  return ';'.join(['%~dp0' + os.path.join(*d) for d in dirs])
357
346
  set_env_prefix = os.path.join(target_dir, r'win_sdk\bin\SetEnv')
358
347
  with open(set_env_prefix + '.cmd', 'w') as f:
359
348
  f.write('@echo off\n'
360
349
  ':: Generated by win_toolchain\\package_from_installed.py.\n')
361
- for var, dirs in env.iteritems():
350
+ for var, dirs in env.items():
362
351
  f.write('set %s=%s\n' % (var, BatDirs(dirs)))
363
352
  f.write('if "%1"=="/x64" goto x64\n')
364
353
  f.write('if "%1"=="/arm64" goto arm64\n')
365
354
 
366
- for var, dirs in env_x86.iteritems():
355
+ for var, dirs in env_x86.items():
367
356
  f.write('set %s=%s%s\n' % (
368
357
  var, BatDirs(dirs), ';%PATH%' if var == 'PATH' else ''))
369
358
  f.write('goto :EOF\n')
370
359
 
371
360
  f.write(':x64\n')
372
- for var, dirs in env_x64.iteritems():
361
+ for var, dirs in env_x64.items():
373
362
  f.write('set %s=%s%s\n' % (
374
363
  var, BatDirs(dirs), ';%PATH%' if var == 'PATH' else ''))
375
364
  f.write('goto :EOF\n')
376
365
 
377
366
  f.write(':arm64\n')
378
- for var, dirs in env_arm64.iteritems():
367
+ for var, dirs in env_arm64.items():
379
368
  f.write('set %s=%s%s\n' % (
380
369
  var, BatDirs(dirs), ';%PATH%' if var == 'PATH' else ''))
381
370
  f.write('goto :EOF\n')
382
- with open(set_env_prefix + '.x86.json', 'wb') as f:
371
+ with open(set_env_prefix + '.x86.json', 'wt', newline='') as f:
383
372
  assert not set(env.keys()) & set(env_x86.keys()), 'dupe keys'
384
- json.dump({'env': collections.OrderedDict(env.items() + env_x86.items())},
373
+ json.dump({'env': collections.OrderedDict(list(env.items()) + list(env_x86.items()))},
385
374
  f)
386
- with open(set_env_prefix + '.x64.json', 'wb') as f:
375
+ with open(set_env_prefix + '.x64.json', 'wt', newline='') as f:
387
376
  assert not set(env.keys()) & set(env_x64.keys()), 'dupe keys'
388
- json.dump({'env': collections.OrderedDict(env.items() + env_x64.items())},
377
+ json.dump({'env': collections.OrderedDict(list(env.items()) + list(env_x64.items()))},
389
378
  f)
390
- with open(set_env_prefix + '.arm64.json', 'wb') as f:
379
+ with open(set_env_prefix + '.arm64.json', 'wt', newline='') as f:
391
380
  assert not set(env.keys()) & set(env_arm64.keys()), 'dupe keys'
392
- json.dump({'env': collections.OrderedDict(env.items() + env_arm64.items())},
381
+ json.dump({'env': collections.OrderedDict(list(env.items()) + list(env_arm64.items()))},
393
382
  f)
394
383
 
395
384
 
396
- def AddEnvSetup(files):
385
+ def AddEnvSetup(files, include_arm):
397
386
  """We need to generate this file in the same way that the "from pieces"
398
387
  script does, so pull that in here."""
399
388
  tempdir = tempfile.mkdtemp()
@@ -405,18 +394,19 @@ def AddEnvSetup(files):
405
394
  'win_sdk\\bin\\SetEnv.x86.json'))
406
395
  files.append((os.path.join(tempdir, 'win_sdk', 'bin', 'SetEnv.x64.json'),
407
396
  'win_sdk\\bin\\SetEnv.x64.json'))
408
- files.append((os.path.join(tempdir, 'win_sdk', 'bin', 'SetEnv.arm64.json'),
409
- 'win_sdk\\bin\\SetEnv.arm64.json'))
397
+ if include_arm:
398
+ files.append((os.path.join(tempdir, 'win_sdk', 'bin', 'SetEnv.arm64.json'),
399
+ 'win_sdk\\bin\\SetEnv.arm64.json'))
410
400
  vs_version_file = os.path.join(tempdir, 'VS_VERSION')
411
- with open(vs_version_file, 'wb') as version:
412
- print >>version, VS_VERSION
401
+ with open(vs_version_file, 'wt', newline='') as version:
402
+ print(VS_VERSION, file=version)
413
403
  files.append((vs_version_file, 'VS_VERSION'))
414
404
 
415
405
 
416
406
  def RenameToSha1(output):
417
407
  """Determine the hash in the same way that the unzipper does to rename the
418
408
  # .zip file."""
419
- print 'Extracting to determine hash...'
409
+ print('Extracting to determine hash...')
420
410
  tempdir = tempfile.mkdtemp()
421
411
  old_dir = os.getcwd()
422
412
  os.chdir(tempdir)
@@ -424,24 +414,30 @@ def RenameToSha1(output):
424
414
  with zipfile.ZipFile(
425
415
  os.path.join(old_dir, output), 'r', zipfile.ZIP_DEFLATED, True) as zf:
426
416
  zf.extractall(rel_dir)
427
- print 'Hashing...'
417
+ print('Hashing...')
428
418
  sha1 = get_toolchain_if_necessary.CalculateHash(rel_dir, None)
429
419
  os.chdir(old_dir)
430
420
  shutil.rmtree(tempdir)
431
421
  final_name = sha1 + '.zip'
432
422
  os.rename(output, final_name)
433
- print 'Renamed %s to %s.' % (output, final_name)
423
+ print('Renamed %s to %s.' % (output, final_name))
434
424
 
435
425
 
436
426
  def main():
437
- usage = 'usage: %prog [options] 2015|2017'
427
+ if sys.version_info[0] < 3:
428
+ print('This script requires Python 3')
429
+ sys.exit(10)
430
+ usage = 'usage: %prog [options] 2017|2019'
438
431
  parser = optparse.OptionParser(usage)
439
432
  parser.add_option('-w', '--winver', action='store', type='string',
440
- dest='winver', default='10.0.14393.0',
441
- help='Windows SDK version, such as 10.0.14393.0')
433
+ dest='winver', default='10.0.18362.0',
434
+ help='Windows SDK version, such as 10.0.18362.0')
442
435
  parser.add_option('-d', '--dryrun', action='store_true', dest='dryrun',
443
436
  default=False,
444
437
  help='scan for file existence and prints statistics')
438
+ parser.add_option('--noarm', action='store_false', dest='arm',
439
+ default=True,
440
+ help='Avoids arm parts of the SDK')
445
441
  parser.add_option('--override', action='store', type='string',
446
442
  dest='override_dir', default=None,
447
443
  help='Specify alternate bin/include/lib directory')
@@ -453,8 +449,8 @@ def main():
453
449
  if options.repackage_dir:
454
450
  files = BuildRepackageFileList(options.repackage_dir)
455
451
  else:
456
- if len(args) != 1 or args[0] not in ('2015', '2017'):
457
- print 'Must specify 2015 or 2017'
452
+ if len(args) != 1 or args[0] not in SUPPORTED_VS_VERSIONS:
453
+ print('Must specify 2017 or 2019')
458
454
  parser.print_help();
459
455
  return 1
460
456
 
@@ -462,7 +458,7 @@ def main():
462
458
  if (not os.path.exists(os.path.join(options.override_dir, 'bin')) or
463
459
  not os.path.exists(os.path.join(options.override_dir, 'include')) or
464
460
  not os.path.exists(os.path.join(options.override_dir, 'lib'))):
465
- print 'Invalid override directory - must contain bin/include/lib dirs'
461
+ print('Invalid override directory - must contain bin/include/lib dirs')
466
462
  return 1
467
463
 
468
464
  global VS_VERSION
@@ -470,22 +466,19 @@ def main():
470
466
  global WIN_VERSION
471
467
  WIN_VERSION = options.winver
472
468
  global VC_TOOLS
473
- if VS_VERSION == '2017':
474
- vs_path = GetVSPath()
475
- temp_tools_path = ExpandWildcards(vs_path, 'VC/Tools/MSVC/14.*.*')
476
- # Strip off the leading vs_path characters and switch back to / separators.
477
- VC_TOOLS = temp_tools_path[len(vs_path) + 1:].replace('\\', '/')
478
- else:
479
- VC_TOOLS = 'VC'
469
+ vs_path = GetVSPath()
470
+ temp_tools_path = ExpandWildcards(vs_path, 'VC/Tools/MSVC/14.*.*')
471
+ # Strip off the leading vs_path characters and switch back to / separators.
472
+ VC_TOOLS = temp_tools_path[len(vs_path) + 1:].replace('\\', '/')
480
473
 
481
- print 'Building file list for VS %s Windows %s...' % (VS_VERSION, WIN_VERSION)
482
- files = BuildFileList(options.override_dir)
474
+ print('Building file list for VS %s Windows %s...' % (VS_VERSION, WIN_VERSION))
475
+ files = BuildFileList(options.override_dir, options.arm)
483
476
 
484
- AddEnvSetup(files)
477
+ AddEnvSetup(files, options.arm)
485
478
 
486
479
  if False:
487
480
  for f in files:
488
- print f[0], '->', f[1]
481
+ print(f[0], '->', f[1])
489
482
  return 0
490
483
 
491
484
  output = 'out.zip'