libv8 7.3.492.27.1 → 8.4.255.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (718) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +11 -14
  4. data/CHANGELOG.md +10 -0
  5. data/README.md +10 -11
  6. data/Rakefile +30 -36
  7. data/ext/libv8/builder.rb +1 -1
  8. data/lib/libv8/version.rb +1 -1
  9. data/libv8.gemspec +1 -3
  10. data/vendor/depot_tools/{cipd.ps1 → .cipd_impl.ps1} +0 -0
  11. data/vendor/depot_tools/.gitattributes +1 -1
  12. data/vendor/depot_tools/.gitignore +7 -2
  13. data/vendor/depot_tools/.style.yapf +3 -1
  14. data/vendor/depot_tools/.vpython +55 -0
  15. data/vendor/depot_tools/.vpython3 +23 -0
  16. data/vendor/depot_tools/CROS_OWNERS +3 -1
  17. data/vendor/depot_tools/GOMA_OWNERS +9 -0
  18. data/vendor/depot_tools/LUCI_OWNERS +5 -0
  19. data/vendor/depot_tools/OWNERS +21 -6
  20. data/vendor/depot_tools/PRESUBMIT.py +35 -18
  21. data/vendor/depot_tools/README.git-cl.md +0 -14
  22. data/vendor/depot_tools/README.md +1 -1
  23. data/vendor/depot_tools/WATCHLISTS +2 -2
  24. data/vendor/depot_tools/auth.py +60 -772
  25. data/vendor/depot_tools/autoninja +12 -6
  26. data/vendor/depot_tools/autoninja.bat +14 -6
  27. data/vendor/depot_tools/autoninja.py +64 -27
  28. data/vendor/depot_tools/bb +1 -1
  29. data/vendor/depot_tools/bootstrap/{win/README.md → README.md} +28 -14
  30. data/vendor/depot_tools/bootstrap/{win/win_tools.py → bootstrap.py} +60 -43
  31. data/vendor/depot_tools/bootstrap/{win/git-bash.template.sh → git-bash.template.sh} +1 -1
  32. data/vendor/depot_tools/bootstrap/{win/git.template.bat → git.template.bat} +0 -0
  33. data/vendor/depot_tools/bootstrap/manifest.txt +27 -0
  34. data/vendor/depot_tools/bootstrap/manifest_bleeding_edge.txt +27 -0
  35. data/vendor/depot_tools/bootstrap/{win/profile.d.python.sh → profile.d.python.sh} +0 -0
  36. data/vendor/depot_tools/bootstrap/{win/python27.bleeding_edge.bat → python27.bat} +0 -0
  37. data/vendor/depot_tools/bootstrap/{win/python27.new.bat → python3.bat} +3 -3
  38. data/vendor/depot_tools/bootstrap/{win/win_tools.bat → win_tools.bat} +21 -16
  39. data/vendor/depot_tools/bootstrap_python3 +35 -0
  40. data/vendor/depot_tools/cbuildbot +1 -1
  41. data/vendor/depot_tools/chrome_set_ver +1 -1
  42. data/vendor/depot_tools/cipd +43 -39
  43. data/vendor/depot_tools/cipd.bat +2 -2
  44. data/vendor/depot_tools/cipd_client_version +1 -1
  45. data/vendor/depot_tools/cipd_client_version.digests +15 -14
  46. data/vendor/depot_tools/cipd_manifest.txt +31 -8
  47. data/vendor/depot_tools/cipd_manifest.versions +278 -158
  48. data/vendor/depot_tools/cit.py +9 -7
  49. data/vendor/depot_tools/clang_format.py +4 -1
  50. data/vendor/depot_tools/clang_format_merge_driver.py +10 -8
  51. data/vendor/depot_tools/compile_single_file.py +7 -2
  52. data/vendor/depot_tools/cpplint.py +51 -45
  53. data/vendor/depot_tools/cros +87 -0
  54. data/vendor/depot_tools/cros_sdk +1 -1
  55. data/vendor/depot_tools/crosjobs +13 -0
  56. data/vendor/depot_tools/detect_host_arch.py +0 -1
  57. data/vendor/depot_tools/dirmd +12 -0
  58. data/vendor/depot_tools/dirmd.bat +7 -0
  59. data/vendor/depot_tools/download_from_google_storage.py +47 -27
  60. data/vendor/depot_tools/ensure_bootstrap +14 -0
  61. data/vendor/depot_tools/fetch +14 -1
  62. data/vendor/depot_tools/fetch.bat +14 -1
  63. data/vendor/depot_tools/fetch.py +5 -7
  64. data/vendor/depot_tools/fetch_configs/chromium.py +6 -4
  65. data/vendor/depot_tools/fetch_configs/devtools-frontend.py +44 -0
  66. data/vendor/depot_tools/fetch_configs/ios_internal.py +10 -19
  67. data/vendor/depot_tools/fix_encoding.py +19 -5
  68. data/vendor/depot_tools/gclient +28 -12
  69. data/vendor/depot_tools/gclient-new-workdir.py +2 -0
  70. data/vendor/depot_tools/gclient.bat +18 -1
  71. data/vendor/depot_tools/gclient.py +160 -119
  72. data/vendor/depot_tools/gclient_eval.py +119 -107
  73. data/vendor/depot_tools/gclient_paths.py +67 -57
  74. data/vendor/depot_tools/gclient_scm.py +181 -159
  75. data/vendor/depot_tools/gclient_utils.py +177 -124
  76. data/vendor/depot_tools/gerrit_client.py +21 -13
  77. data/vendor/depot_tools/gerrit_util.py +188 -228
  78. data/vendor/depot_tools/git-cache +1 -1
  79. data/vendor/depot_tools/git-cl +1 -1
  80. data/vendor/depot_tools/git-drover +1 -1
  81. data/vendor/depot_tools/git-find-releases +1 -1
  82. data/vendor/depot_tools/git-footers +1 -1
  83. data/vendor/depot_tools/git-freeze +1 -1
  84. data/vendor/depot_tools/git-hyper-blame +1 -1
  85. data/vendor/depot_tools/git-map +1 -1
  86. data/vendor/depot_tools/git-map-branches +1 -1
  87. data/vendor/depot_tools/git-mark-merge-base +1 -1
  88. data/vendor/depot_tools/git-nav-downstream +1 -1
  89. data/vendor/depot_tools/git-new-branch +1 -1
  90. data/vendor/depot_tools/git-number +1 -1
  91. data/vendor/depot_tools/git-rebase-update +1 -1
  92. data/vendor/depot_tools/git-rename-branch +1 -1
  93. data/vendor/depot_tools/git-reparent-branch +1 -1
  94. data/vendor/depot_tools/git-retry +1 -1
  95. data/vendor/depot_tools/git-squash-branch +1 -1
  96. data/vendor/depot_tools/git-thaw +1 -1
  97. data/vendor/depot_tools/git-upstream-diff +1 -1
  98. data/vendor/depot_tools/git_cache.py +255 -360
  99. data/vendor/depot_tools/git_cl.py +1562 -2059
  100. data/vendor/depot_tools/git_cl_completion.sh +16 -2
  101. data/vendor/depot_tools/git_common.py +77 -32
  102. data/vendor/depot_tools/git_drover.py +17 -8
  103. data/vendor/depot_tools/git_find_releases.py +11 -9
  104. data/vendor/depot_tools/git_footers.py +13 -9
  105. data/vendor/depot_tools/git_freezer.py +3 -1
  106. data/vendor/depot_tools/git_hyper_blame.py +25 -32
  107. data/vendor/depot_tools/git_map.py +115 -93
  108. data/vendor/depot_tools/git_map_branches.py +11 -10
  109. data/vendor/depot_tools/git_mark_merge_base.py +8 -6
  110. data/vendor/depot_tools/git_nav_downstream.py +9 -6
  111. data/vendor/depot_tools/git_new_branch.py +39 -33
  112. data/vendor/depot_tools/git_number.py +28 -17
  113. data/vendor/depot_tools/git_rebase_update.py +50 -49
  114. data/vendor/depot_tools/git_rename_branch.py +2 -2
  115. data/vendor/depot_tools/git_reparent_branch.py +8 -6
  116. data/vendor/depot_tools/git_upstream_diff.py +4 -2
  117. data/vendor/depot_tools/gn.py +6 -4
  118. data/vendor/depot_tools/goma_auth +12 -0
  119. data/vendor/depot_tools/goma_auth.bat +8 -0
  120. data/vendor/depot_tools/goma_ctl +12 -0
  121. data/vendor/depot_tools/goma_ctl.bat +8 -0
  122. data/vendor/depot_tools/gsutil.py +5 -2
  123. data/vendor/depot_tools/gsutil.py.bat +8 -0
  124. data/vendor/depot_tools/gsutil.vpython +3 -1
  125. data/vendor/depot_tools/infra/config/OWNERS +2 -2
  126. data/vendor/depot_tools/infra/config/recipes.cfg +3 -2
  127. data/vendor/depot_tools/led +1 -1
  128. data/vendor/depot_tools/lockfile.py +116 -0
  129. data/vendor/depot_tools/luci-auth +1 -1
  130. data/vendor/depot_tools/lucicfg +1 -1
  131. data/vendor/depot_tools/mac_toolchain +1 -1
  132. data/vendor/depot_tools/man/html/depot_tools.html +1 -1
  133. data/vendor/depot_tools/man/html/depot_tools_tutorial.html +31 -25
  134. data/vendor/depot_tools/man/html/git-cl.html +1 -1
  135. data/vendor/depot_tools/man/html/git-drover.html +18 -18
  136. data/vendor/depot_tools/man/html/git-footers.html +1 -1
  137. data/vendor/depot_tools/man/html/git-freeze.html +3 -3
  138. data/vendor/depot_tools/man/html/git-hyper-blame.html +1 -1
  139. data/vendor/depot_tools/man/html/git-map-branches.html +2 -2
  140. data/vendor/depot_tools/man/html/git-map.html +1 -1
  141. data/vendor/depot_tools/man/html/git-mark-merge-base.html +1 -1
  142. data/vendor/depot_tools/man/html/git-nav-downstream.html +3 -3
  143. data/vendor/depot_tools/man/html/git-nav-upstream.html +12 -6
  144. data/vendor/depot_tools/man/html/git-new-branch.html +1 -1
  145. data/vendor/depot_tools/man/html/git-rebase-update.html +20 -1
  146. data/vendor/depot_tools/man/html/git-rename-branch.html +1 -1
  147. data/vendor/depot_tools/man/html/git-reparent-branch.html +1 -1
  148. data/vendor/depot_tools/man/html/git-retry.html +1 -1
  149. data/vendor/depot_tools/man/html/git-squash-branch.html +1 -1
  150. data/vendor/depot_tools/man/html/git-thaw.html +1 -1
  151. data/vendor/depot_tools/man/html/git-upstream-diff.html +10 -6
  152. data/vendor/depot_tools/man/man1/git-cl.1 +4 -4
  153. data/vendor/depot_tools/man/man1/git-drover.1 +21 -21
  154. data/vendor/depot_tools/man/man1/git-footers.1 +4 -4
  155. data/vendor/depot_tools/man/man1/git-freeze.1 +6 -6
  156. data/vendor/depot_tools/man/man1/git-hyper-blame.1 +4 -4
  157. data/vendor/depot_tools/man/man1/git-map-branches.1 +4 -4
  158. data/vendor/depot_tools/man/man1/git-map.1 +4 -4
  159. data/vendor/depot_tools/man/man1/git-mark-merge-base.1 +4 -4
  160. data/vendor/depot_tools/man/man1/git-nav-downstream.1 +6 -6
  161. data/vendor/depot_tools/man/man1/git-nav-upstream.1 +15 -9
  162. data/vendor/depot_tools/man/man1/git-new-branch.1 +3 -3
  163. data/vendor/depot_tools/man/man1/git-rebase-update.1 +14 -4
  164. data/vendor/depot_tools/man/man1/git-rename-branch.1 +4 -4
  165. data/vendor/depot_tools/man/man1/git-reparent-branch.1 +4 -4
  166. data/vendor/depot_tools/man/man1/git-retry.1 +4 -4
  167. data/vendor/depot_tools/man/man1/git-squash-branch.1 +4 -4
  168. data/vendor/depot_tools/man/man1/git-thaw.1 +4 -4
  169. data/vendor/depot_tools/man/man1/git-upstream-diff.1 +7 -13
  170. data/vendor/depot_tools/man/man7/depot_tools.7 +4 -4
  171. data/vendor/depot_tools/man/man7/depot_tools_tutorial.7 +31 -25
  172. data/vendor/depot_tools/man/src/common_demo_functions.sh +2 -2
  173. data/vendor/depot_tools/man/src/depot_tools_tutorial.txt +3 -3
  174. data/vendor/depot_tools/man/src/filter_demo_output.py +4 -2
  175. data/vendor/depot_tools/man/src/git-new-branch.txt +2 -1
  176. data/vendor/depot_tools/man/src/git-rebase-update.txt +8 -1
  177. data/vendor/depot_tools/metrics.README.md +8 -5
  178. data/vendor/depot_tools/metrics.py +7 -6
  179. data/vendor/depot_tools/metrics_utils.py +4 -14
  180. data/vendor/depot_tools/my_activity.py +85 -251
  181. data/vendor/depot_tools/ninja +1 -0
  182. data/vendor/depot_tools/ninja-mac +0 -0
  183. data/vendor/depot_tools/ninjalog_uploader.py +146 -145
  184. data/vendor/depot_tools/ninjalog_uploader_wrapper.py +69 -60
  185. data/vendor/depot_tools/owners.py +156 -43
  186. data/vendor/depot_tools/owners_finder.py +28 -14
  187. data/vendor/depot_tools/post_build_ninja_summary.py +76 -48
  188. data/vendor/depot_tools/presubmit_canned_checks.py +293 -106
  189. data/vendor/depot_tools/presubmit_support.py +527 -333
  190. data/vendor/depot_tools/prpc +1 -1
  191. data/vendor/depot_tools/pylint +2 -12
  192. data/vendor/depot_tools/pylint-1.5 +78 -0
  193. data/vendor/depot_tools/pylint-1.6 +78 -0
  194. data/vendor/depot_tools/pylint-1.7 +78 -0
  195. data/vendor/depot_tools/pylint-1.8 +78 -0
  196. data/vendor/depot_tools/pylint-1.9 +78 -0
  197. data/vendor/depot_tools/{depot-tools-auth.bat → pylint.bat} +2 -2
  198. data/vendor/depot_tools/pylint_main.py +45 -0
  199. data/vendor/depot_tools/pylintrc +14 -1
  200. data/vendor/depot_tools/python-bin/python3 +7 -0
  201. data/vendor/depot_tools/python_runner.sh +13 -8
  202. data/vendor/depot_tools/rdb +12 -0
  203. data/vendor/depot_tools/rdb.bat +7 -0
  204. data/vendor/depot_tools/recipes/OWNERS +0 -1
  205. data/vendor/depot_tools/recipes/README.recipes.md +218 -151
  206. data/vendor/depot_tools/recipes/recipe_modules/OWNERS +1 -1
  207. data/vendor/depot_tools/recipes/recipe_modules/bot_update/__init__.py +17 -16
  208. data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +127 -78
  209. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic.json +19 -4
  210. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_luci.json +18 -3
  211. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_with_branch_heads.json +19 -4
  212. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/clobber.json +29 -8
  213. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/deprecated_got_revision_mapping.json +28 -10
  214. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_rebase_patch_ref.json +29 -8
  215. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_reset.json +29 -8
  216. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/input_commit_with_id_without_repo.json +29 -8
  217. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/multiple_patch_refs.json +29 -8
  218. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_apply_patch_on_gclient.json +35 -10
  219. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{with_manifest_name.json → no_cp_checkout_HEAD.json} +25 -15
  220. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_a_branch_head.json +65 -0
  221. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_a_specific_commit.json +65 -0
  222. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_master.json +65 -0
  223. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/refs.json +29 -8
  224. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/reset_root_solution_revision.json +29 -8
  225. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/resolve_chromium_fixed_version.json +117 -0
  226. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail.json +17 -11
  227. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch.json +41 -10
  228. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch_download.json +24 -11
  229. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle.json +35 -10
  230. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_branch_heads.json +35 -10
  231. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_feature_branch.json +38 -11
  232. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8_feature_branch.json +36 -11
  233. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_webrtc.json +35 -10
  234. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8.json +35 -10
  235. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8_head_by_default.json +35 -10
  236. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/unrecognized_commit_repo.json +0 -5
  237. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_tags.json +29 -8
  238. data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +95 -22
  239. data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/bot_update.py +187 -114
  240. data/vendor/depot_tools/recipes/recipe_modules/bot_update/test_api.py +2 -2
  241. data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/do_not_retry_patch_failures_in_cq.py +42 -0
  242. data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/ensure_checkout.py +1 -0
  243. data/vendor/depot_tools/recipes/recipe_modules/cipd/__init__.py +0 -1
  244. data/vendor/depot_tools/recipes/recipe_modules/cipd/api.py +2 -2
  245. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic.json +0 -1
  246. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic_pkg.json +0 -1
  247. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-failed.json +2 -4
  248. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-many-instances.json +0 -1
  249. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/mac64.json +0 -1
  250. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_file.json +26 -6
  251. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_mode.json +23 -5
  252. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_verfile.json +23 -5
  253. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/win64.json +0 -1
  254. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk arch.json +0 -1
  255. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk bits.json +0 -1
  256. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_32.json +0 -1
  257. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_64.json +0 -1
  258. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_32.json +0 -1
  259. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_64.json +0 -1
  260. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_mips_64.json +0 -1
  261. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/mac_intel_64.json +0 -1
  262. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_32.json +0 -1
  263. data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_64.json +0 -1
  264. data/vendor/depot_tools/recipes/recipe_modules/cipd/test_api.py +1 -1
  265. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/api.py +4 -1
  266. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic.json +4 -2
  267. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic_luci.json +3 -1
  268. data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/win.json +4 -2
  269. data/vendor/depot_tools/recipes/recipe_modules/gclient/__init__.py +2 -1
  270. data/vendor/depot_tools/recipes/recipe_modules/gclient/api.py +82 -13
  271. data/vendor/depot_tools/recipes/recipe_modules/gclient/config.py +23 -11
  272. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/basic.json +3 -4
  273. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/revision.json +3 -6
  274. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json +3 -4
  275. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.py +7 -7
  276. data/vendor/depot_tools/recipes/recipe_modules/gclient/resources/diff_deps.py +16 -0
  277. data/vendor/depot_tools/recipes/recipe_modules/gclient/test_api.py +4 -0
  278. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/basic.json +55 -0
  279. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/dont have revision yet.json +84 -0
  280. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/no change, exception.json +83 -0
  281. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/windows.json +55 -0
  282. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.py +88 -0
  283. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/patch_project.py +9 -21
  284. data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/sync_failure.py +24 -0
  285. data/vendor/depot_tools/recipes/recipe_modules/gerrit/api.py +2 -1
  286. data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.expected/basic.json +7 -12
  287. data/vendor/depot_tools/recipes/recipe_modules/git/__init__.py +0 -2
  288. data/vendor/depot_tools/recipes/recipe_modules/git/api.py +9 -17
  289. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic.json +2 -8
  290. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_branch.json +2 -8
  291. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_file_name.json +2 -8
  292. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_hash.json +2 -8
  293. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_ref.json +2 -8
  294. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_submodule_update_force.json +2 -8
  295. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_tags.json +2 -8
  296. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/can_fail_build.json +3 -13
  297. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cannot_fail_build.json +2 -8
  298. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cat-file_test.json +4 -12
  299. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_delta.json +2 -10
  300. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_failed.json +1 -7
  301. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output.json +1 -7
  302. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output_fails_build.json +0 -8
  303. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/curl_trace_file.json +3 -10
  304. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/git-cache-checkout.json +3 -11
  305. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/platform_win.json +2 -8
  306. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/rebase_failed.json +3 -13
  307. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/remote_not_origin.json +2 -8
  308. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/set_got_revision.json +2 -8
  309. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.py +0 -5
  310. data/vendor/depot_tools/recipes/recipe_modules/git_cl/__init__.py +1 -1
  311. data/vendor/depot_tools/recipes/recipe_modules/git_cl/api.py +7 -13
  312. data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.expected/basic.json +21 -16
  313. data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.py +1 -2
  314. data/vendor/depot_tools/recipes/recipe_modules/gitiles/api.py +1 -1
  315. data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.expected/basic.json +0 -1
  316. data/vendor/depot_tools/recipes/recipe_modules/gitiles/resources/gerrit_client.py +2 -2
  317. data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.expected/basic.json +0 -1
  318. data/vendor/depot_tools/recipes/recipe_modules/gsutil/api.py +23 -8
  319. data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.expected/basic.json +52 -1
  320. data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.py +15 -0
  321. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/__init__.py +1 -0
  322. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/api.py +32 -8
  323. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/ancient_version.json +83 -0
  324. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/automatic_version.json +83 -0
  325. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/explicit_version.json +83 -0
  326. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/linux.json +0 -1
  327. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/mac.json +5 -4
  328. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/win.json +0 -1
  329. data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.py +21 -2
  330. data/vendor/depot_tools/recipes/recipe_modules/presubmit/__init__.py +20 -0
  331. data/vendor/depot_tools/recipes/recipe_modules/presubmit/api.py +235 -3
  332. data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.expected/basic.json +13 -5
  333. data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.py +5 -1
  334. data/vendor/depot_tools/recipes/recipe_modules/presubmit/properties.proto +14 -0
  335. data/vendor/depot_tools/recipes/recipe_modules/presubmit/test_api.py +19 -0
  336. data/vendor/depot_tools/recipes/recipe_modules/presubmit/tests/execute.py +247 -0
  337. data/vendor/depot_tools/recipes/recipe_modules/presubmit/tests/prepare.py +49 -0
  338. data/vendor/depot_tools/recipes/recipe_modules/tryserver/api.py +33 -45
  339. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/basic_tags.json +0 -1
  340. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch.json +64 -21
  341. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch_and_target_ref.json +64 -21
  342. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch.json +1 -22
  343. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch_new.json +1 -22
  344. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.py +5 -32
  345. data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_fetch_ref_timeout.py +29 -0
  346. data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_owner.expected/basic.json +5 -0
  347. data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_owner.py +22 -0
  348. data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_target_ref.py +32 -0
  349. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/linux.json +0 -1
  350. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/mac.json +0 -1
  351. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/win.json +2 -1
  352. data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.py +1 -6
  353. data/vendor/depot_tools/recipes/recipes.py +49 -28
  354. data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json +11 -6
  355. data/vendor/depot_tools/repo +698 -540
  356. data/vendor/depot_tools/roll-dep +14 -1
  357. data/vendor/depot_tools/roll-dep.bat +10 -1
  358. data/vendor/depot_tools/roll_dep.py +15 -10
  359. data/vendor/depot_tools/scm.py +95 -75
  360. data/vendor/depot_tools/setup_color.py +36 -2
  361. data/vendor/depot_tools/split_cl.py +44 -32
  362. data/vendor/depot_tools/subcommand.py +6 -6
  363. data/vendor/depot_tools/subprocess2.py +38 -322
  364. data/vendor/depot_tools/third_party/colorama/LICENSE.txt +0 -1
  365. data/vendor/depot_tools/third_party/colorama/README.chromium +4 -5
  366. data/vendor/depot_tools/third_party/colorama/README.rst +346 -0
  367. data/vendor/depot_tools/third_party/colorama/__init__.py +3 -4
  368. data/vendor/depot_tools/third_party/colorama/ansi.py +82 -30
  369. data/vendor/depot_tools/third_party/colorama/ansitowin32.py +105 -37
  370. data/vendor/depot_tools/third_party/colorama/initialise.py +39 -15
  371. data/vendor/depot_tools/third_party/colorama/win32.py +46 -28
  372. data/vendor/depot_tools/third_party/colorama/winterm.py +80 -31
  373. data/vendor/depot_tools/update_depot_tools +18 -8
  374. data/vendor/depot_tools/update_depot_tools.bat +19 -15
  375. data/vendor/depot_tools/upload_metrics.py +7 -6
  376. data/vendor/depot_tools/upload_to_google_storage.py +23 -16
  377. data/vendor/depot_tools/vpython +4 -4
  378. data/vendor/depot_tools/vpython.bat +1 -1
  379. data/vendor/depot_tools/vpython3 +55 -0
  380. data/vendor/depot_tools/vpython3.bat +12 -0
  381. data/vendor/depot_tools/watchlists.py +14 -11
  382. data/vendor/depot_tools/weekly +4 -2
  383. data/vendor/depot_tools/win32imports.py +61 -0
  384. data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +49 -41
  385. data/vendor/depot_tools/win_toolchain/package_from_installed.py +142 -149
  386. data/vendor/depot_tools/wtf +5 -3
  387. data/vendor/depot_tools/yapf +5 -1
  388. metadata +68 -343
  389. data/vendor/depot_tools/README.testing +0 -23
  390. data/vendor/depot_tools/annotated_gclient.py +0 -89
  391. data/vendor/depot_tools/appengine_mapper.py +0 -23
  392. data/vendor/depot_tools/bootstrap/win/manifest.txt +0 -20
  393. data/vendor/depot_tools/bootstrap/win/manifest_bleeding_edge.txt +0 -20
  394. data/vendor/depot_tools/bootstrap/win/pylint.new.bat +0 -7
  395. data/vendor/depot_tools/buildbucket.py +0 -186
  396. data/vendor/depot_tools/checkout.py +0 -431
  397. data/vendor/depot_tools/cros +0 -1
  398. data/vendor/depot_tools/dart_format.py +0 -58
  399. data/vendor/depot_tools/depot-tools-auth +0 -8
  400. data/vendor/depot_tools/depot-tools-auth.py +0 -102
  401. data/vendor/depot_tools/my_reviews.py +0 -396
  402. data/vendor/depot_tools/patch.py +0 -548
  403. data/vendor/depot_tools/pylint.py +0 -30
  404. data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/buildbot.json +0 -239
  405. data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_luci.json +0 -222
  406. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/__init__.py +0 -4
  407. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/api.py +0 -29
  408. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/basic.json +0 -15
  409. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_linux.json +0 -15
  410. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_mac.json +0 -15
  411. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_win.json +0 -15
  412. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_linux.json +0 -15
  413. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_mac.json +0 -15
  414. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_win.json +0 -15
  415. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_linux.json +0 -15
  416. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_mac.json +0 -15
  417. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_win.json +0 -15
  418. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.py +0 -33
  419. data/vendor/depot_tools/recipes/recipe_modules/infra_paths/path_config.py +0 -66
  420. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/set_failure_hash_with_no_steps.json +0 -11
  421. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch.json +0 -45
  422. data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch_luci.json +0 -45
  423. data/vendor/depot_tools/rietveld.py +0 -779
  424. data/vendor/depot_tools/roll-dep-svn +0 -8
  425. data/vendor/depot_tools/roll-dep-svn.bat +0 -12
  426. data/vendor/depot_tools/roll_dep_svn.py +0 -430
  427. data/vendor/depot_tools/support/chromite_wrapper +0 -96
  428. data/vendor/depot_tools/third_party/boto/LICENSE +0 -18
  429. data/vendor/depot_tools/third_party/boto/README.chromium +0 -43
  430. data/vendor/depot_tools/third_party/boto/README.rst +0 -163
  431. data/vendor/depot_tools/third_party/boto/__init__.py +0 -793
  432. data/vendor/depot_tools/third_party/boto/auth.py +0 -682
  433. data/vendor/depot_tools/third_party/boto/auth_handler.py +0 -58
  434. data/vendor/depot_tools/third_party/boto/cacerts/__init__.py +0 -22
  435. data/vendor/depot_tools/third_party/boto/cacerts/cacerts.txt +0 -2183
  436. data/vendor/depot_tools/third_party/boto/compat.py +0 -28
  437. data/vendor/depot_tools/third_party/boto/connection.py +0 -1081
  438. data/vendor/depot_tools/third_party/boto/contrib/__init__.py +0 -22
  439. data/vendor/depot_tools/third_party/boto/contrib/ymlmessage.py +0 -52
  440. data/vendor/depot_tools/third_party/boto/core/README +0 -58
  441. data/vendor/depot_tools/third_party/boto/core/__init__.py +0 -23
  442. data/vendor/depot_tools/third_party/boto/core/auth.py +0 -78
  443. data/vendor/depot_tools/third_party/boto/core/credentials.py +0 -154
  444. data/vendor/depot_tools/third_party/boto/core/dictresponse.py +0 -178
  445. data/vendor/depot_tools/third_party/boto/core/service.py +0 -67
  446. data/vendor/depot_tools/third_party/boto/datapipeline/__init__.py +0 -0
  447. data/vendor/depot_tools/third_party/boto/datapipeline/exceptions.py +0 -42
  448. data/vendor/depot_tools/third_party/boto/datapipeline/layer1.py +0 -546
  449. data/vendor/depot_tools/third_party/boto/ecs/__init__.py +0 -90
  450. data/vendor/depot_tools/third_party/boto/ecs/item.py +0 -153
  451. data/vendor/depot_tools/third_party/boto/exception.py +0 -476
  452. data/vendor/depot_tools/third_party/boto/file/README +0 -49
  453. data/vendor/depot_tools/third_party/boto/file/__init__.py +0 -28
  454. data/vendor/depot_tools/third_party/boto/file/bucket.py +0 -112
  455. data/vendor/depot_tools/third_party/boto/file/connection.py +0 -33
  456. data/vendor/depot_tools/third_party/boto/file/key.py +0 -199
  457. data/vendor/depot_tools/third_party/boto/file/simpleresultset.py +0 -30
  458. data/vendor/depot_tools/third_party/boto/fps/__init__.py +0 -21
  459. data/vendor/depot_tools/third_party/boto/fps/connection.py +0 -369
  460. data/vendor/depot_tools/third_party/boto/fps/exception.py +0 -344
  461. data/vendor/depot_tools/third_party/boto/fps/response.py +0 -175
  462. data/vendor/depot_tools/third_party/boto/gs/__init__.py +0 -22
  463. data/vendor/depot_tools/third_party/boto/gs/acl.py +0 -304
  464. data/vendor/depot_tools/third_party/boto/gs/bucket.py +0 -870
  465. data/vendor/depot_tools/third_party/boto/gs/bucketlistresultset.py +0 -64
  466. data/vendor/depot_tools/third_party/boto/gs/connection.py +0 -103
  467. data/vendor/depot_tools/third_party/boto/gs/cors.py +0 -169
  468. data/vendor/depot_tools/third_party/boto/gs/key.py +0 -704
  469. data/vendor/depot_tools/third_party/boto/gs/resumable_upload_handler.py +0 -659
  470. data/vendor/depot_tools/third_party/boto/gs/user.py +0 -54
  471. data/vendor/depot_tools/third_party/boto/handler.py +0 -44
  472. data/vendor/depot_tools/third_party/boto/https_connection.py +0 -124
  473. data/vendor/depot_tools/third_party/boto/jsonresponse.py +0 -163
  474. data/vendor/depot_tools/third_party/boto/manage/__init__.py +0 -23
  475. data/vendor/depot_tools/third_party/boto/manage/cmdshell.py +0 -241
  476. data/vendor/depot_tools/third_party/boto/manage/propget.py +0 -64
  477. data/vendor/depot_tools/third_party/boto/manage/server.py +0 -556
  478. data/vendor/depot_tools/third_party/boto/manage/task.py +0 -175
  479. data/vendor/depot_tools/third_party/boto/manage/test_manage.py +0 -34
  480. data/vendor/depot_tools/third_party/boto/manage/volume.py +0 -420
  481. data/vendor/depot_tools/third_party/boto/mashups/__init__.py +0 -23
  482. data/vendor/depot_tools/third_party/boto/mashups/interactive.py +0 -97
  483. data/vendor/depot_tools/third_party/boto/mashups/iobject.py +0 -115
  484. data/vendor/depot_tools/third_party/boto/mashups/order.py +0 -211
  485. data/vendor/depot_tools/third_party/boto/mashups/server.py +0 -395
  486. data/vendor/depot_tools/third_party/boto/plugin.py +0 -90
  487. data/vendor/depot_tools/third_party/boto/provider.py +0 -337
  488. data/vendor/depot_tools/third_party/boto/pyami/__init__.py +0 -22
  489. data/vendor/depot_tools/third_party/boto/pyami/bootstrap.py +0 -134
  490. data/vendor/depot_tools/third_party/boto/pyami/config.py +0 -229
  491. data/vendor/depot_tools/third_party/boto/pyami/copybot.cfg +0 -60
  492. data/vendor/depot_tools/third_party/boto/pyami/copybot.py +0 -97
  493. data/vendor/depot_tools/third_party/boto/pyami/helloworld.py +0 -28
  494. data/vendor/depot_tools/third_party/boto/pyami/launch_ami.py +0 -178
  495. data/vendor/depot_tools/third_party/boto/pyami/scriptbase.py +0 -44
  496. data/vendor/depot_tools/third_party/boto/pyami/startup.py +0 -60
  497. data/vendor/depot_tools/third_party/boto/regioninfo.py +0 -63
  498. data/vendor/depot_tools/third_party/boto/resultset.py +0 -169
  499. data/vendor/depot_tools/third_party/boto/roboto/__init__.py +0 -1
  500. data/vendor/depot_tools/third_party/boto/roboto/awsqueryrequest.py +0 -504
  501. data/vendor/depot_tools/third_party/boto/roboto/awsqueryservice.py +0 -121
  502. data/vendor/depot_tools/third_party/boto/roboto/param.py +0 -147
  503. data/vendor/depot_tools/third_party/boto/s3/__init__.py +0 -84
  504. data/vendor/depot_tools/third_party/boto/s3/acl.py +0 -164
  505. data/vendor/depot_tools/third_party/boto/s3/bucket.py +0 -1634
  506. data/vendor/depot_tools/third_party/boto/s3/bucketlistresultset.py +0 -139
  507. data/vendor/depot_tools/third_party/boto/s3/bucketlogging.py +0 -83
  508. data/vendor/depot_tools/third_party/boto/s3/connection.py +0 -540
  509. data/vendor/depot_tools/third_party/boto/s3/cors.py +0 -210
  510. data/vendor/depot_tools/third_party/boto/s3/deletemarker.py +0 -55
  511. data/vendor/depot_tools/third_party/boto/s3/key.py +0 -1712
  512. data/vendor/depot_tools/third_party/boto/s3/keyfile.py +0 -134
  513. data/vendor/depot_tools/third_party/boto/s3/lifecycle.py +0 -231
  514. data/vendor/depot_tools/third_party/boto/s3/multidelete.py +0 -138
  515. data/vendor/depot_tools/third_party/boto/s3/multipart.py +0 -315
  516. data/vendor/depot_tools/third_party/boto/s3/prefix.py +0 -42
  517. data/vendor/depot_tools/third_party/boto/s3/resumable_download_handler.py +0 -339
  518. data/vendor/depot_tools/third_party/boto/s3/tagging.py +0 -71
  519. data/vendor/depot_tools/third_party/boto/s3/user.py +0 -49
  520. data/vendor/depot_tools/third_party/boto/s3/website.py +0 -237
  521. data/vendor/depot_tools/third_party/boto/services/__init__.py +0 -23
  522. data/vendor/depot_tools/third_party/boto/services/bs.py +0 -179
  523. data/vendor/depot_tools/third_party/boto/services/message.py +0 -58
  524. data/vendor/depot_tools/third_party/boto/services/result.py +0 -136
  525. data/vendor/depot_tools/third_party/boto/services/service.py +0 -161
  526. data/vendor/depot_tools/third_party/boto/services/servicedef.py +0 -91
  527. data/vendor/depot_tools/third_party/boto/services/sonofmmm.cfg +0 -43
  528. data/vendor/depot_tools/third_party/boto/services/sonofmmm.py +0 -81
  529. data/vendor/depot_tools/third_party/boto/services/submit.py +0 -88
  530. data/vendor/depot_tools/third_party/boto/ses/__init__.py +0 -54
  531. data/vendor/depot_tools/third_party/boto/ses/connection.py +0 -521
  532. data/vendor/depot_tools/third_party/boto/ses/exceptions.py +0 -77
  533. data/vendor/depot_tools/third_party/boto/storage_uri.py +0 -835
  534. data/vendor/depot_tools/third_party/boto/sts/__init__.py +0 -55
  535. data/vendor/depot_tools/third_party/boto/sts/connection.py +0 -207
  536. data/vendor/depot_tools/third_party/boto/sts/credentials.py +0 -215
  537. data/vendor/depot_tools/third_party/boto/utils.py +0 -927
  538. data/vendor/depot_tools/third_party/colorama/README.txt +0 -304
  539. data/vendor/depot_tools/third_party/fancy_urllib/README +0 -22
  540. data/vendor/depot_tools/third_party/fancy_urllib/__init__.py +0 -460
  541. data/vendor/depot_tools/third_party/logilab/README.chromium +0 -6
  542. data/vendor/depot_tools/third_party/logilab/__init__.py +0 -0
  543. data/vendor/depot_tools/third_party/logilab/astroid/LICENSE.txt +0 -340
  544. data/vendor/depot_tools/third_party/logilab/astroid/README.chromium +0 -11
  545. data/vendor/depot_tools/third_party/logilab/astroid/__init__.py +0 -136
  546. data/vendor/depot_tools/third_party/logilab/astroid/__pkginfo__.py +0 -42
  547. data/vendor/depot_tools/third_party/logilab/astroid/arguments.py +0 -233
  548. data/vendor/depot_tools/third_party/logilab/astroid/as_string.py +0 -548
  549. data/vendor/depot_tools/third_party/logilab/astroid/astpeephole.py +0 -86
  550. data/vendor/depot_tools/third_party/logilab/astroid/bases.py +0 -636
  551. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_builtin_inference.py +0 -336
  552. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_dateutil.py +0 -15
  553. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_gi.py +0 -195
  554. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_mechanize.py +0 -18
  555. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_nose.py +0 -82
  556. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_numpy.py +0 -62
  557. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_pytest.py +0 -76
  558. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_qt.py +0 -44
  559. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_six.py +0 -288
  560. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_ssl.py +0 -65
  561. data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_stdlib.py +0 -473
  562. data/vendor/depot_tools/third_party/logilab/astroid/builder.py +0 -263
  563. data/vendor/depot_tools/third_party/logilab/astroid/context.py +0 -81
  564. data/vendor/depot_tools/third_party/logilab/astroid/decorators.py +0 -75
  565. data/vendor/depot_tools/third_party/logilab/astroid/exceptions.py +0 -71
  566. data/vendor/depot_tools/third_party/logilab/astroid/inference.py +0 -359
  567. data/vendor/depot_tools/third_party/logilab/astroid/manager.py +0 -267
  568. data/vendor/depot_tools/third_party/logilab/astroid/mixins.py +0 -147
  569. data/vendor/depot_tools/third_party/logilab/astroid/modutils.py +0 -741
  570. data/vendor/depot_tools/third_party/logilab/astroid/node_classes.py +0 -1053
  571. data/vendor/depot_tools/third_party/logilab/astroid/nodes.py +0 -87
  572. data/vendor/depot_tools/third_party/logilab/astroid/objects.py +0 -186
  573. data/vendor/depot_tools/third_party/logilab/astroid/protocols.py +0 -470
  574. data/vendor/depot_tools/third_party/logilab/astroid/raw_building.py +0 -390
  575. data/vendor/depot_tools/third_party/logilab/astroid/rebuilder.py +0 -989
  576. data/vendor/depot_tools/third_party/logilab/astroid/scoped_nodes.py +0 -1716
  577. data/vendor/depot_tools/third_party/logilab/astroid/test_utils.py +0 -201
  578. data/vendor/depot_tools/third_party/logilab/astroid/transforms.py +0 -96
  579. data/vendor/depot_tools/third_party/logilab/astroid/util.py +0 -89
  580. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/LICENSE +0 -19
  581. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/README.chromium +0 -11
  582. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/__init__.py +0 -20
  583. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/cext.c +0 -1421
  584. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/compat.py +0 -9
  585. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/simple.py +0 -246
  586. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/slots.py +0 -414
  587. data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/utils.py +0 -13
  588. data/vendor/depot_tools/third_party/logilab/wrapt/LICENSE +0 -24
  589. data/vendor/depot_tools/third_party/logilab/wrapt/README.chromium +0 -11
  590. data/vendor/depot_tools/third_party/logilab/wrapt/__init__.py +0 -19
  591. data/vendor/depot_tools/third_party/logilab/wrapt/_wrappers.c +0 -2729
  592. data/vendor/depot_tools/third_party/logilab/wrapt/arguments.py +0 -96
  593. data/vendor/depot_tools/third_party/logilab/wrapt/decorators.py +0 -512
  594. data/vendor/depot_tools/third_party/logilab/wrapt/importer.py +0 -228
  595. data/vendor/depot_tools/third_party/logilab/wrapt/wrappers.py +0 -901
  596. data/vendor/depot_tools/third_party/mock/LICENSE.txt +0 -26
  597. data/vendor/depot_tools/third_party/mock/README.chromium +0 -24
  598. data/vendor/depot_tools/third_party/mock/__init__.py +0 -2366
  599. data/vendor/depot_tools/third_party/oauth2client/LICENSE +0 -202
  600. data/vendor/depot_tools/third_party/oauth2client/MODIFICATIONS.diff +0 -66
  601. data/vendor/depot_tools/third_party/oauth2client/README.chromium +0 -15
  602. data/vendor/depot_tools/third_party/oauth2client/__init__.py +0 -5
  603. data/vendor/depot_tools/third_party/oauth2client/anyjson.py +0 -32
  604. data/vendor/depot_tools/third_party/oauth2client/appengine.py +0 -963
  605. data/vendor/depot_tools/third_party/oauth2client/client.py +0 -1363
  606. data/vendor/depot_tools/third_party/oauth2client/clientsecrets.py +0 -153
  607. data/vendor/depot_tools/third_party/oauth2client/crypt.py +0 -377
  608. data/vendor/depot_tools/third_party/oauth2client/django_orm.py +0 -134
  609. data/vendor/depot_tools/third_party/oauth2client/file.py +0 -124
  610. data/vendor/depot_tools/third_party/oauth2client/gce.py +0 -90
  611. data/vendor/depot_tools/third_party/oauth2client/keyring_storage.py +0 -109
  612. data/vendor/depot_tools/third_party/oauth2client/locked_file.py +0 -373
  613. data/vendor/depot_tools/third_party/oauth2client/multistore_file.py +0 -465
  614. data/vendor/depot_tools/third_party/oauth2client/old_run.py +0 -160
  615. data/vendor/depot_tools/third_party/oauth2client/tools.py +0 -243
  616. data/vendor/depot_tools/third_party/oauth2client/util.py +0 -196
  617. data/vendor/depot_tools/third_party/oauth2client/xsrfutil.py +0 -113
  618. data/vendor/depot_tools/third_party/protobuf26/README.chromium +0 -23
  619. data/vendor/depot_tools/third_party/protobuf26/__init__.py +0 -0
  620. data/vendor/depot_tools/third_party/protobuf26/compiler/__init__.py +0 -0
  621. data/vendor/depot_tools/third_party/protobuf26/compiler/plugin_pb2.py +0 -184
  622. data/vendor/depot_tools/third_party/protobuf26/descriptor.py +0 -849
  623. data/vendor/depot_tools/third_party/protobuf26/descriptor_database.py +0 -137
  624. data/vendor/depot_tools/third_party/protobuf26/descriptor_pb2.py +0 -1522
  625. data/vendor/depot_tools/third_party/protobuf26/descriptor_pool.py +0 -643
  626. data/vendor/depot_tools/third_party/protobuf26/internal/__init__.py +0 -0
  627. data/vendor/depot_tools/third_party/protobuf26/internal/api_implementation.py +0 -89
  628. data/vendor/depot_tools/third_party/protobuf26/internal/containers.py +0 -269
  629. data/vendor/depot_tools/third_party/protobuf26/internal/cpp_message.py +0 -663
  630. data/vendor/depot_tools/third_party/protobuf26/internal/decoder.py +0 -831
  631. data/vendor/depot_tools/third_party/protobuf26/internal/encoder.py +0 -788
  632. data/vendor/depot_tools/third_party/protobuf26/internal/enum_type_wrapper.py +0 -89
  633. data/vendor/depot_tools/third_party/protobuf26/internal/message_listener.py +0 -78
  634. data/vendor/depot_tools/third_party/protobuf26/internal/python_message.py +0 -1247
  635. data/vendor/depot_tools/third_party/protobuf26/internal/type_checkers.py +0 -328
  636. data/vendor/depot_tools/third_party/protobuf26/internal/wire_format.py +0 -268
  637. data/vendor/depot_tools/third_party/protobuf26/message.py +0 -284
  638. data/vendor/depot_tools/third_party/protobuf26/message_factory.py +0 -155
  639. data/vendor/depot_tools/third_party/protobuf26/reflection.py +0 -205
  640. data/vendor/depot_tools/third_party/protobuf26/service.py +0 -226
  641. data/vendor/depot_tools/third_party/protobuf26/service_reflection.py +0 -284
  642. data/vendor/depot_tools/third_party/protobuf26/symbol_database.py +0 -185
  643. data/vendor/depot_tools/third_party/protobuf26/text_encoding.py +0 -110
  644. data/vendor/depot_tools/third_party/protobuf26/text_format.py +0 -873
  645. data/vendor/depot_tools/third_party/pylint.py +0 -37
  646. data/vendor/depot_tools/third_party/pylint/LICENSE.txt +0 -340
  647. data/vendor/depot_tools/third_party/pylint/README.chromium +0 -30
  648. data/vendor/depot_tools/third_party/pylint/__init__.py +0 -46
  649. data/vendor/depot_tools/third_party/pylint/__main__.py +0 -3
  650. data/vendor/depot_tools/third_party/pylint/__pkginfo__.py +0 -80
  651. data/vendor/depot_tools/third_party/pylint/checkers/__init__.py +0 -123
  652. data/vendor/depot_tools/third_party/pylint/checkers/async.py +0 -82
  653. data/vendor/depot_tools/third_party/pylint/checkers/base.py +0 -2010
  654. data/vendor/depot_tools/third_party/pylint/checkers/classes.py +0 -1120
  655. data/vendor/depot_tools/third_party/pylint/checkers/design_analysis.py +0 -348
  656. data/vendor/depot_tools/third_party/pylint/checkers/exceptions.py +0 -369
  657. data/vendor/depot_tools/third_party/pylint/checkers/format.py +0 -993
  658. data/vendor/depot_tools/third_party/pylint/checkers/imports.py +0 -654
  659. data/vendor/depot_tools/third_party/pylint/checkers/logging.py +0 -258
  660. data/vendor/depot_tools/third_party/pylint/checkers/misc.py +0 -105
  661. data/vendor/depot_tools/third_party/pylint/checkers/newstyle.py +0 -169
  662. data/vendor/depot_tools/third_party/pylint/checkers/python3.py +0 -591
  663. data/vendor/depot_tools/third_party/pylint/checkers/raw_metrics.py +0 -129
  664. data/vendor/depot_tools/third_party/pylint/checkers/similar.py +0 -371
  665. data/vendor/depot_tools/third_party/pylint/checkers/spelling.py +0 -264
  666. data/vendor/depot_tools/third_party/pylint/checkers/stdlib.py +0 -280
  667. data/vendor/depot_tools/third_party/pylint/checkers/strings.py +0 -618
  668. data/vendor/depot_tools/third_party/pylint/checkers/typecheck.py +0 -974
  669. data/vendor/depot_tools/third_party/pylint/checkers/utils.py +0 -741
  670. data/vendor/depot_tools/third_party/pylint/checkers/variables.py +0 -1191
  671. data/vendor/depot_tools/third_party/pylint/config.py +0 -820
  672. data/vendor/depot_tools/third_party/pylint/epylint.py +0 -181
  673. data/vendor/depot_tools/third_party/pylint/extensions/__init__.py +0 -0
  674. data/vendor/depot_tools/third_party/pylint/extensions/check_docs.py +0 -311
  675. data/vendor/depot_tools/third_party/pylint/extensions/check_elif.py +0 -62
  676. data/vendor/depot_tools/third_party/pylint/graph.py +0 -179
  677. data/vendor/depot_tools/third_party/pylint/gui.py +0 -531
  678. data/vendor/depot_tools/third_party/pylint/interfaces.py +0 -102
  679. data/vendor/depot_tools/third_party/pylint/lint.py +0 -1381
  680. data/vendor/depot_tools/third_party/pylint/pyreverse/__init__.py +0 -5
  681. data/vendor/depot_tools/third_party/pylint/pyreverse/diadefslib.py +0 -230
  682. data/vendor/depot_tools/third_party/pylint/pyreverse/diagrams.py +0 -258
  683. data/vendor/depot_tools/third_party/pylint/pyreverse/inspector.py +0 -372
  684. data/vendor/depot_tools/third_party/pylint/pyreverse/main.py +0 -147
  685. data/vendor/depot_tools/third_party/pylint/pyreverse/utils.py +0 -210
  686. data/vendor/depot_tools/third_party/pylint/pyreverse/vcgutils.py +0 -198
  687. data/vendor/depot_tools/third_party/pylint/pyreverse/writer.py +0 -198
  688. data/vendor/depot_tools/third_party/pylint/reporters/__init__.py +0 -149
  689. data/vendor/depot_tools/third_party/pylint/reporters/guireporter.py +0 -27
  690. data/vendor/depot_tools/third_party/pylint/reporters/html.py +0 -108
  691. data/vendor/depot_tools/third_party/pylint/reporters/json.py +0 -64
  692. data/vendor/depot_tools/third_party/pylint/reporters/text.py +0 -237
  693. data/vendor/depot_tools/third_party/pylint/reporters/ureports/__init__.py +0 -106
  694. data/vendor/depot_tools/third_party/pylint/reporters/ureports/html_writer.py +0 -93
  695. data/vendor/depot_tools/third_party/pylint/reporters/ureports/nodes.py +0 -181
  696. data/vendor/depot_tools/third_party/pylint/reporters/ureports/text_writer.py +0 -99
  697. data/vendor/depot_tools/third_party/pylint/testutils.py +0 -414
  698. data/vendor/depot_tools/third_party/pylint/utils.py +0 -1148
  699. data/vendor/depot_tools/third_party/pymox/COPYING +0 -202
  700. data/vendor/depot_tools/third_party/pymox/MANIFEST.in +0 -5
  701. data/vendor/depot_tools/third_party/pymox/README +0 -56
  702. data/vendor/depot_tools/third_party/pymox/__init__.py +0 -0
  703. data/vendor/depot_tools/third_party/pymox/mox.py +0 -1643
  704. data/vendor/depot_tools/third_party/pymox/mox_test.py +0 -1708
  705. data/vendor/depot_tools/third_party/pymox/mox_test_helper.py +0 -76
  706. data/vendor/depot_tools/third_party/pymox/setup.py +0 -14
  707. data/vendor/depot_tools/third_party/pymox/stubout.py +0 -142
  708. data/vendor/depot_tools/third_party/pymox/stubout_test.py +0 -47
  709. data/vendor/depot_tools/third_party/pymox/stubout_testee.py +0 -2
  710. data/vendor/depot_tools/third_party/simplejson/LICENSE.txt +0 -19
  711. data/vendor/depot_tools/third_party/simplejson/PKG-INFO +0 -29
  712. data/vendor/depot_tools/third_party/simplejson/__init__.py +0 -437
  713. data/vendor/depot_tools/third_party/simplejson/decoder.py +0 -421
  714. data/vendor/depot_tools/third_party/simplejson/encoder.py +0 -501
  715. data/vendor/depot_tools/third_party/simplejson/ordered_dict.py +0 -119
  716. data/vendor/depot_tools/third_party/simplejson/scanner.py +0 -77
  717. data/vendor/depot_tools/third_party/simplejson/tool.py +0 -39
  718. data/vendor/depot_tools/third_party/upload.py +0 -2565
@@ -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'