libv8 7.3.492.27.1 → 8.4.255.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +11 -14
- data/CHANGELOG.md +10 -0
- data/README.md +10 -11
- data/Rakefile +30 -36
- data/ext/libv8/builder.rb +1 -1
- data/lib/libv8/version.rb +1 -1
- data/libv8.gemspec +1 -3
- data/vendor/depot_tools/{cipd.ps1 → .cipd_impl.ps1} +0 -0
- data/vendor/depot_tools/.gitattributes +1 -1
- data/vendor/depot_tools/.gitignore +7 -2
- data/vendor/depot_tools/.style.yapf +3 -1
- data/vendor/depot_tools/.vpython +55 -0
- data/vendor/depot_tools/.vpython3 +23 -0
- data/vendor/depot_tools/CROS_OWNERS +3 -1
- data/vendor/depot_tools/GOMA_OWNERS +9 -0
- data/vendor/depot_tools/LUCI_OWNERS +5 -0
- data/vendor/depot_tools/OWNERS +21 -6
- data/vendor/depot_tools/PRESUBMIT.py +35 -18
- data/vendor/depot_tools/README.git-cl.md +0 -14
- data/vendor/depot_tools/README.md +1 -1
- data/vendor/depot_tools/WATCHLISTS +2 -2
- data/vendor/depot_tools/auth.py +60 -772
- data/vendor/depot_tools/autoninja +12 -6
- data/vendor/depot_tools/autoninja.bat +14 -6
- data/vendor/depot_tools/autoninja.py +64 -27
- data/vendor/depot_tools/bb +1 -1
- data/vendor/depot_tools/bootstrap/{win/README.md → README.md} +28 -14
- data/vendor/depot_tools/bootstrap/{win/win_tools.py → bootstrap.py} +60 -43
- data/vendor/depot_tools/bootstrap/{win/git-bash.template.sh → git-bash.template.sh} +1 -1
- data/vendor/depot_tools/bootstrap/{win/git.template.bat → git.template.bat} +0 -0
- data/vendor/depot_tools/bootstrap/manifest.txt +27 -0
- data/vendor/depot_tools/bootstrap/manifest_bleeding_edge.txt +27 -0
- data/vendor/depot_tools/bootstrap/{win/profile.d.python.sh → profile.d.python.sh} +0 -0
- data/vendor/depot_tools/bootstrap/{win/python27.bleeding_edge.bat → python27.bat} +0 -0
- data/vendor/depot_tools/bootstrap/{win/python27.new.bat → python3.bat} +3 -3
- data/vendor/depot_tools/bootstrap/{win/win_tools.bat → win_tools.bat} +21 -16
- data/vendor/depot_tools/bootstrap_python3 +35 -0
- data/vendor/depot_tools/cbuildbot +1 -1
- data/vendor/depot_tools/chrome_set_ver +1 -1
- data/vendor/depot_tools/cipd +43 -39
- data/vendor/depot_tools/cipd.bat +2 -2
- data/vendor/depot_tools/cipd_client_version +1 -1
- data/vendor/depot_tools/cipd_client_version.digests +15 -14
- data/vendor/depot_tools/cipd_manifest.txt +31 -8
- data/vendor/depot_tools/cipd_manifest.versions +278 -158
- data/vendor/depot_tools/cit.py +9 -7
- data/vendor/depot_tools/clang_format.py +4 -1
- data/vendor/depot_tools/clang_format_merge_driver.py +10 -8
- data/vendor/depot_tools/compile_single_file.py +7 -2
- data/vendor/depot_tools/cpplint.py +51 -45
- data/vendor/depot_tools/cros +87 -0
- data/vendor/depot_tools/cros_sdk +1 -1
- data/vendor/depot_tools/crosjobs +13 -0
- data/vendor/depot_tools/detect_host_arch.py +0 -1
- data/vendor/depot_tools/dirmd +12 -0
- data/vendor/depot_tools/dirmd.bat +7 -0
- data/vendor/depot_tools/download_from_google_storage.py +47 -27
- data/vendor/depot_tools/ensure_bootstrap +14 -0
- data/vendor/depot_tools/fetch +14 -1
- data/vendor/depot_tools/fetch.bat +14 -1
- data/vendor/depot_tools/fetch.py +5 -7
- data/vendor/depot_tools/fetch_configs/chromium.py +6 -4
- data/vendor/depot_tools/fetch_configs/devtools-frontend.py +44 -0
- data/vendor/depot_tools/fetch_configs/ios_internal.py +10 -19
- data/vendor/depot_tools/fix_encoding.py +19 -5
- data/vendor/depot_tools/gclient +28 -12
- data/vendor/depot_tools/gclient-new-workdir.py +2 -0
- data/vendor/depot_tools/gclient.bat +18 -1
- data/vendor/depot_tools/gclient.py +160 -119
- data/vendor/depot_tools/gclient_eval.py +119 -107
- data/vendor/depot_tools/gclient_paths.py +67 -57
- data/vendor/depot_tools/gclient_scm.py +181 -159
- data/vendor/depot_tools/gclient_utils.py +177 -124
- data/vendor/depot_tools/gerrit_client.py +21 -13
- data/vendor/depot_tools/gerrit_util.py +188 -228
- data/vendor/depot_tools/git-cache +1 -1
- data/vendor/depot_tools/git-cl +1 -1
- data/vendor/depot_tools/git-drover +1 -1
- data/vendor/depot_tools/git-find-releases +1 -1
- data/vendor/depot_tools/git-footers +1 -1
- data/vendor/depot_tools/git-freeze +1 -1
- data/vendor/depot_tools/git-hyper-blame +1 -1
- data/vendor/depot_tools/git-map +1 -1
- data/vendor/depot_tools/git-map-branches +1 -1
- data/vendor/depot_tools/git-mark-merge-base +1 -1
- data/vendor/depot_tools/git-nav-downstream +1 -1
- data/vendor/depot_tools/git-new-branch +1 -1
- data/vendor/depot_tools/git-number +1 -1
- data/vendor/depot_tools/git-rebase-update +1 -1
- data/vendor/depot_tools/git-rename-branch +1 -1
- data/vendor/depot_tools/git-reparent-branch +1 -1
- data/vendor/depot_tools/git-retry +1 -1
- data/vendor/depot_tools/git-squash-branch +1 -1
- data/vendor/depot_tools/git-thaw +1 -1
- data/vendor/depot_tools/git-upstream-diff +1 -1
- data/vendor/depot_tools/git_cache.py +255 -360
- data/vendor/depot_tools/git_cl.py +1562 -2059
- data/vendor/depot_tools/git_cl_completion.sh +16 -2
- data/vendor/depot_tools/git_common.py +77 -32
- data/vendor/depot_tools/git_drover.py +17 -8
- data/vendor/depot_tools/git_find_releases.py +11 -9
- data/vendor/depot_tools/git_footers.py +13 -9
- data/vendor/depot_tools/git_freezer.py +3 -1
- data/vendor/depot_tools/git_hyper_blame.py +25 -32
- data/vendor/depot_tools/git_map.py +115 -93
- data/vendor/depot_tools/git_map_branches.py +11 -10
- data/vendor/depot_tools/git_mark_merge_base.py +8 -6
- data/vendor/depot_tools/git_nav_downstream.py +9 -6
- data/vendor/depot_tools/git_new_branch.py +39 -33
- data/vendor/depot_tools/git_number.py +28 -17
- data/vendor/depot_tools/git_rebase_update.py +50 -49
- data/vendor/depot_tools/git_rename_branch.py +2 -2
- data/vendor/depot_tools/git_reparent_branch.py +8 -6
- data/vendor/depot_tools/git_upstream_diff.py +4 -2
- data/vendor/depot_tools/gn.py +6 -4
- data/vendor/depot_tools/goma_auth +12 -0
- data/vendor/depot_tools/goma_auth.bat +8 -0
- data/vendor/depot_tools/goma_ctl +12 -0
- data/vendor/depot_tools/goma_ctl.bat +8 -0
- data/vendor/depot_tools/gsutil.py +5 -2
- data/vendor/depot_tools/gsutil.py.bat +8 -0
- data/vendor/depot_tools/gsutil.vpython +3 -1
- data/vendor/depot_tools/infra/config/OWNERS +2 -2
- data/vendor/depot_tools/infra/config/recipes.cfg +3 -2
- data/vendor/depot_tools/led +1 -1
- data/vendor/depot_tools/lockfile.py +116 -0
- data/vendor/depot_tools/luci-auth +1 -1
- data/vendor/depot_tools/lucicfg +1 -1
- data/vendor/depot_tools/mac_toolchain +1 -1
- data/vendor/depot_tools/man/html/depot_tools.html +1 -1
- data/vendor/depot_tools/man/html/depot_tools_tutorial.html +31 -25
- data/vendor/depot_tools/man/html/git-cl.html +1 -1
- data/vendor/depot_tools/man/html/git-drover.html +18 -18
- data/vendor/depot_tools/man/html/git-footers.html +1 -1
- data/vendor/depot_tools/man/html/git-freeze.html +3 -3
- data/vendor/depot_tools/man/html/git-hyper-blame.html +1 -1
- data/vendor/depot_tools/man/html/git-map-branches.html +2 -2
- data/vendor/depot_tools/man/html/git-map.html +1 -1
- data/vendor/depot_tools/man/html/git-mark-merge-base.html +1 -1
- data/vendor/depot_tools/man/html/git-nav-downstream.html +3 -3
- data/vendor/depot_tools/man/html/git-nav-upstream.html +12 -6
- data/vendor/depot_tools/man/html/git-new-branch.html +1 -1
- data/vendor/depot_tools/man/html/git-rebase-update.html +20 -1
- data/vendor/depot_tools/man/html/git-rename-branch.html +1 -1
- data/vendor/depot_tools/man/html/git-reparent-branch.html +1 -1
- data/vendor/depot_tools/man/html/git-retry.html +1 -1
- data/vendor/depot_tools/man/html/git-squash-branch.html +1 -1
- data/vendor/depot_tools/man/html/git-thaw.html +1 -1
- data/vendor/depot_tools/man/html/git-upstream-diff.html +10 -6
- data/vendor/depot_tools/man/man1/git-cl.1 +4 -4
- data/vendor/depot_tools/man/man1/git-drover.1 +21 -21
- data/vendor/depot_tools/man/man1/git-footers.1 +4 -4
- data/vendor/depot_tools/man/man1/git-freeze.1 +6 -6
- data/vendor/depot_tools/man/man1/git-hyper-blame.1 +4 -4
- data/vendor/depot_tools/man/man1/git-map-branches.1 +4 -4
- data/vendor/depot_tools/man/man1/git-map.1 +4 -4
- data/vendor/depot_tools/man/man1/git-mark-merge-base.1 +4 -4
- data/vendor/depot_tools/man/man1/git-nav-downstream.1 +6 -6
- data/vendor/depot_tools/man/man1/git-nav-upstream.1 +15 -9
- data/vendor/depot_tools/man/man1/git-new-branch.1 +3 -3
- data/vendor/depot_tools/man/man1/git-rebase-update.1 +14 -4
- data/vendor/depot_tools/man/man1/git-rename-branch.1 +4 -4
- data/vendor/depot_tools/man/man1/git-reparent-branch.1 +4 -4
- data/vendor/depot_tools/man/man1/git-retry.1 +4 -4
- data/vendor/depot_tools/man/man1/git-squash-branch.1 +4 -4
- data/vendor/depot_tools/man/man1/git-thaw.1 +4 -4
- data/vendor/depot_tools/man/man1/git-upstream-diff.1 +7 -13
- data/vendor/depot_tools/man/man7/depot_tools.7 +4 -4
- data/vendor/depot_tools/man/man7/depot_tools_tutorial.7 +31 -25
- data/vendor/depot_tools/man/src/common_demo_functions.sh +2 -2
- data/vendor/depot_tools/man/src/depot_tools_tutorial.txt +3 -3
- data/vendor/depot_tools/man/src/filter_demo_output.py +4 -2
- data/vendor/depot_tools/man/src/git-new-branch.txt +2 -1
- data/vendor/depot_tools/man/src/git-rebase-update.txt +8 -1
- data/vendor/depot_tools/metrics.README.md +8 -5
- data/vendor/depot_tools/metrics.py +7 -6
- data/vendor/depot_tools/metrics_utils.py +4 -14
- data/vendor/depot_tools/my_activity.py +85 -251
- data/vendor/depot_tools/ninja +1 -0
- data/vendor/depot_tools/ninja-mac +0 -0
- data/vendor/depot_tools/ninjalog_uploader.py +146 -145
- data/vendor/depot_tools/ninjalog_uploader_wrapper.py +69 -60
- data/vendor/depot_tools/owners.py +156 -43
- data/vendor/depot_tools/owners_finder.py +28 -14
- data/vendor/depot_tools/post_build_ninja_summary.py +76 -48
- data/vendor/depot_tools/presubmit_canned_checks.py +293 -106
- data/vendor/depot_tools/presubmit_support.py +527 -333
- data/vendor/depot_tools/prpc +1 -1
- data/vendor/depot_tools/pylint +2 -12
- data/vendor/depot_tools/pylint-1.5 +78 -0
- data/vendor/depot_tools/pylint-1.6 +78 -0
- data/vendor/depot_tools/pylint-1.7 +78 -0
- data/vendor/depot_tools/pylint-1.8 +78 -0
- data/vendor/depot_tools/pylint-1.9 +78 -0
- data/vendor/depot_tools/{depot-tools-auth.bat → pylint.bat} +2 -2
- data/vendor/depot_tools/pylint_main.py +45 -0
- data/vendor/depot_tools/pylintrc +14 -1
- data/vendor/depot_tools/python-bin/python3 +7 -0
- data/vendor/depot_tools/python_runner.sh +13 -8
- data/vendor/depot_tools/rdb +12 -0
- data/vendor/depot_tools/rdb.bat +7 -0
- data/vendor/depot_tools/recipes/OWNERS +0 -1
- data/vendor/depot_tools/recipes/README.recipes.md +218 -151
- data/vendor/depot_tools/recipes/recipe_modules/OWNERS +1 -1
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/__init__.py +17 -16
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +127 -78
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic.json +19 -4
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_luci.json +18 -3
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_with_branch_heads.json +19 -4
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/clobber.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/deprecated_got_revision_mapping.json +28 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_rebase_patch_ref.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_reset.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/input_commit_with_id_without_repo.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/multiple_patch_refs.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_apply_patch_on_gclient.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{with_manifest_name.json → no_cp_checkout_HEAD.json} +25 -15
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_a_branch_head.json +65 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_a_specific_commit.json +65 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_master.json +65 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/refs.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/reset_root_solution_revision.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/resolve_chromium_fixed_version.json +117 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail.json +17 -11
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch.json +41 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch_download.json +24 -11
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_branch_heads.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_feature_branch.json +38 -11
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8_feature_branch.json +36 -11
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_webrtc.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8_head_by_default.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/unrecognized_commit_repo.json +0 -5
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_tags.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +95 -22
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/bot_update.py +187 -114
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/test_api.py +2 -2
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/do_not_retry_patch_failures_in_cq.py +42 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/ensure_checkout.py +1 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/__init__.py +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/api.py +2 -2
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic_pkg.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-failed.json +2 -4
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-many-instances.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/mac64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_file.json +26 -6
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_mode.json +23 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_verfile.json +23 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/win64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk arch.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk bits.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_32.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_32.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_mips_64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/mac_intel_64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_32.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/test_api.py +1 -1
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/api.py +4 -1
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic.json +4 -2
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic_luci.json +3 -1
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/win.json +4 -2
- data/vendor/depot_tools/recipes/recipe_modules/gclient/__init__.py +2 -1
- data/vendor/depot_tools/recipes/recipe_modules/gclient/api.py +82 -13
- data/vendor/depot_tools/recipes/recipe_modules/gclient/config.py +23 -11
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/basic.json +3 -4
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/revision.json +3 -6
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json +3 -4
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.py +7 -7
- data/vendor/depot_tools/recipes/recipe_modules/gclient/resources/diff_deps.py +16 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/test_api.py +4 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/basic.json +55 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/dont have revision yet.json +84 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/no change, exception.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/windows.json +55 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.py +88 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/patch_project.py +9 -21
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/sync_failure.py +24 -0
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/api.py +2 -1
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.expected/basic.json +7 -12
- data/vendor/depot_tools/recipes/recipe_modules/git/__init__.py +0 -2
- data/vendor/depot_tools/recipes/recipe_modules/git/api.py +9 -17
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_branch.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_file_name.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_hash.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_ref.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_submodule_update_force.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_tags.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/can_fail_build.json +3 -13
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cannot_fail_build.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cat-file_test.json +4 -12
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_delta.json +2 -10
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_failed.json +1 -7
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output.json +1 -7
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output_fails_build.json +0 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/curl_trace_file.json +3 -10
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/git-cache-checkout.json +3 -11
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/platform_win.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/rebase_failed.json +3 -13
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/remote_not_origin.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/set_got_revision.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.py +0 -5
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/__init__.py +1 -1
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/api.py +7 -13
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.expected/basic.json +21 -16
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.py +1 -2
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/api.py +1 -1
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.expected/basic.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/resources/gerrit_client.py +2 -2
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.expected/basic.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/api.py +23 -8
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.expected/basic.json +52 -1
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.py +15 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/__init__.py +1 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/api.py +32 -8
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/ancient_version.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/automatic_version.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/explicit_version.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/linux.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/mac.json +5 -4
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/win.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.py +21 -2
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/__init__.py +20 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/api.py +235 -3
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.expected/basic.json +13 -5
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.py +5 -1
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/properties.proto +14 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/test_api.py +19 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/tests/execute.py +247 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/tests/prepare.py +49 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/api.py +33 -45
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/basic_tags.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch.json +64 -21
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch_and_target_ref.json +64 -21
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch.json +1 -22
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch_new.json +1 -22
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.py +5 -32
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_fetch_ref_timeout.py +29 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_owner.expected/basic.json +5 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_owner.py +22 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_target_ref.py +32 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/linux.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/mac.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/win.json +2 -1
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.py +1 -6
- data/vendor/depot_tools/recipes/recipes.py +49 -28
- data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json +11 -6
- data/vendor/depot_tools/repo +698 -540
- data/vendor/depot_tools/roll-dep +14 -1
- data/vendor/depot_tools/roll-dep.bat +10 -1
- data/vendor/depot_tools/roll_dep.py +15 -10
- data/vendor/depot_tools/scm.py +95 -75
- data/vendor/depot_tools/setup_color.py +36 -2
- data/vendor/depot_tools/split_cl.py +44 -32
- data/vendor/depot_tools/subcommand.py +6 -6
- data/vendor/depot_tools/subprocess2.py +38 -322
- data/vendor/depot_tools/third_party/colorama/LICENSE.txt +0 -1
- data/vendor/depot_tools/third_party/colorama/README.chromium +4 -5
- data/vendor/depot_tools/third_party/colorama/README.rst +346 -0
- data/vendor/depot_tools/third_party/colorama/__init__.py +3 -4
- data/vendor/depot_tools/third_party/colorama/ansi.py +82 -30
- data/vendor/depot_tools/third_party/colorama/ansitowin32.py +105 -37
- data/vendor/depot_tools/third_party/colorama/initialise.py +39 -15
- data/vendor/depot_tools/third_party/colorama/win32.py +46 -28
- data/vendor/depot_tools/third_party/colorama/winterm.py +80 -31
- data/vendor/depot_tools/update_depot_tools +18 -8
- data/vendor/depot_tools/update_depot_tools.bat +19 -15
- data/vendor/depot_tools/upload_metrics.py +7 -6
- data/vendor/depot_tools/upload_to_google_storage.py +23 -16
- data/vendor/depot_tools/vpython +4 -4
- data/vendor/depot_tools/vpython.bat +1 -1
- data/vendor/depot_tools/vpython3 +55 -0
- data/vendor/depot_tools/vpython3.bat +12 -0
- data/vendor/depot_tools/watchlists.py +14 -11
- data/vendor/depot_tools/weekly +4 -2
- data/vendor/depot_tools/win32imports.py +61 -0
- data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +49 -41
- data/vendor/depot_tools/win_toolchain/package_from_installed.py +142 -149
- data/vendor/depot_tools/wtf +5 -3
- data/vendor/depot_tools/yapf +5 -1
- metadata +68 -343
- data/vendor/depot_tools/README.testing +0 -23
- data/vendor/depot_tools/annotated_gclient.py +0 -89
- data/vendor/depot_tools/appengine_mapper.py +0 -23
- data/vendor/depot_tools/bootstrap/win/manifest.txt +0 -20
- data/vendor/depot_tools/bootstrap/win/manifest_bleeding_edge.txt +0 -20
- data/vendor/depot_tools/bootstrap/win/pylint.new.bat +0 -7
- data/vendor/depot_tools/buildbucket.py +0 -186
- data/vendor/depot_tools/checkout.py +0 -431
- data/vendor/depot_tools/cros +0 -1
- data/vendor/depot_tools/dart_format.py +0 -58
- data/vendor/depot_tools/depot-tools-auth +0 -8
- data/vendor/depot_tools/depot-tools-auth.py +0 -102
- data/vendor/depot_tools/my_reviews.py +0 -396
- data/vendor/depot_tools/patch.py +0 -548
- data/vendor/depot_tools/pylint.py +0 -30
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/buildbot.json +0 -239
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_luci.json +0 -222
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/__init__.py +0 -4
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/api.py +0 -29
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/basic.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_linux.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_mac.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_win.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_linux.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_mac.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_win.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_linux.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_mac.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_win.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.py +0 -33
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/path_config.py +0 -66
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/set_failure_hash_with_no_steps.json +0 -11
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch.json +0 -45
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch_luci.json +0 -45
- data/vendor/depot_tools/rietveld.py +0 -779
- data/vendor/depot_tools/roll-dep-svn +0 -8
- data/vendor/depot_tools/roll-dep-svn.bat +0 -12
- data/vendor/depot_tools/roll_dep_svn.py +0 -430
- data/vendor/depot_tools/support/chromite_wrapper +0 -96
- data/vendor/depot_tools/third_party/boto/LICENSE +0 -18
- data/vendor/depot_tools/third_party/boto/README.chromium +0 -43
- data/vendor/depot_tools/third_party/boto/README.rst +0 -163
- data/vendor/depot_tools/third_party/boto/__init__.py +0 -793
- data/vendor/depot_tools/third_party/boto/auth.py +0 -682
- data/vendor/depot_tools/third_party/boto/auth_handler.py +0 -58
- data/vendor/depot_tools/third_party/boto/cacerts/__init__.py +0 -22
- data/vendor/depot_tools/third_party/boto/cacerts/cacerts.txt +0 -2183
- data/vendor/depot_tools/third_party/boto/compat.py +0 -28
- data/vendor/depot_tools/third_party/boto/connection.py +0 -1081
- data/vendor/depot_tools/third_party/boto/contrib/__init__.py +0 -22
- data/vendor/depot_tools/third_party/boto/contrib/ymlmessage.py +0 -52
- data/vendor/depot_tools/third_party/boto/core/README +0 -58
- data/vendor/depot_tools/third_party/boto/core/__init__.py +0 -23
- data/vendor/depot_tools/third_party/boto/core/auth.py +0 -78
- data/vendor/depot_tools/third_party/boto/core/credentials.py +0 -154
- data/vendor/depot_tools/third_party/boto/core/dictresponse.py +0 -178
- data/vendor/depot_tools/third_party/boto/core/service.py +0 -67
- data/vendor/depot_tools/third_party/boto/datapipeline/__init__.py +0 -0
- data/vendor/depot_tools/third_party/boto/datapipeline/exceptions.py +0 -42
- data/vendor/depot_tools/third_party/boto/datapipeline/layer1.py +0 -546
- data/vendor/depot_tools/third_party/boto/ecs/__init__.py +0 -90
- data/vendor/depot_tools/third_party/boto/ecs/item.py +0 -153
- data/vendor/depot_tools/third_party/boto/exception.py +0 -476
- data/vendor/depot_tools/third_party/boto/file/README +0 -49
- data/vendor/depot_tools/third_party/boto/file/__init__.py +0 -28
- data/vendor/depot_tools/third_party/boto/file/bucket.py +0 -112
- data/vendor/depot_tools/third_party/boto/file/connection.py +0 -33
- data/vendor/depot_tools/third_party/boto/file/key.py +0 -199
- data/vendor/depot_tools/third_party/boto/file/simpleresultset.py +0 -30
- data/vendor/depot_tools/third_party/boto/fps/__init__.py +0 -21
- data/vendor/depot_tools/third_party/boto/fps/connection.py +0 -369
- data/vendor/depot_tools/third_party/boto/fps/exception.py +0 -344
- data/vendor/depot_tools/third_party/boto/fps/response.py +0 -175
- data/vendor/depot_tools/third_party/boto/gs/__init__.py +0 -22
- data/vendor/depot_tools/third_party/boto/gs/acl.py +0 -304
- data/vendor/depot_tools/third_party/boto/gs/bucket.py +0 -870
- data/vendor/depot_tools/third_party/boto/gs/bucketlistresultset.py +0 -64
- data/vendor/depot_tools/third_party/boto/gs/connection.py +0 -103
- data/vendor/depot_tools/third_party/boto/gs/cors.py +0 -169
- data/vendor/depot_tools/third_party/boto/gs/key.py +0 -704
- data/vendor/depot_tools/third_party/boto/gs/resumable_upload_handler.py +0 -659
- data/vendor/depot_tools/third_party/boto/gs/user.py +0 -54
- data/vendor/depot_tools/third_party/boto/handler.py +0 -44
- data/vendor/depot_tools/third_party/boto/https_connection.py +0 -124
- data/vendor/depot_tools/third_party/boto/jsonresponse.py +0 -163
- data/vendor/depot_tools/third_party/boto/manage/__init__.py +0 -23
- data/vendor/depot_tools/third_party/boto/manage/cmdshell.py +0 -241
- data/vendor/depot_tools/third_party/boto/manage/propget.py +0 -64
- data/vendor/depot_tools/third_party/boto/manage/server.py +0 -556
- data/vendor/depot_tools/third_party/boto/manage/task.py +0 -175
- data/vendor/depot_tools/third_party/boto/manage/test_manage.py +0 -34
- data/vendor/depot_tools/third_party/boto/manage/volume.py +0 -420
- data/vendor/depot_tools/third_party/boto/mashups/__init__.py +0 -23
- data/vendor/depot_tools/third_party/boto/mashups/interactive.py +0 -97
- data/vendor/depot_tools/third_party/boto/mashups/iobject.py +0 -115
- data/vendor/depot_tools/third_party/boto/mashups/order.py +0 -211
- data/vendor/depot_tools/third_party/boto/mashups/server.py +0 -395
- data/vendor/depot_tools/third_party/boto/plugin.py +0 -90
- data/vendor/depot_tools/third_party/boto/provider.py +0 -337
- data/vendor/depot_tools/third_party/boto/pyami/__init__.py +0 -22
- data/vendor/depot_tools/third_party/boto/pyami/bootstrap.py +0 -134
- data/vendor/depot_tools/third_party/boto/pyami/config.py +0 -229
- data/vendor/depot_tools/third_party/boto/pyami/copybot.cfg +0 -60
- data/vendor/depot_tools/third_party/boto/pyami/copybot.py +0 -97
- data/vendor/depot_tools/third_party/boto/pyami/helloworld.py +0 -28
- data/vendor/depot_tools/third_party/boto/pyami/launch_ami.py +0 -178
- data/vendor/depot_tools/third_party/boto/pyami/scriptbase.py +0 -44
- data/vendor/depot_tools/third_party/boto/pyami/startup.py +0 -60
- data/vendor/depot_tools/third_party/boto/regioninfo.py +0 -63
- data/vendor/depot_tools/third_party/boto/resultset.py +0 -169
- data/vendor/depot_tools/third_party/boto/roboto/__init__.py +0 -1
- data/vendor/depot_tools/third_party/boto/roboto/awsqueryrequest.py +0 -504
- data/vendor/depot_tools/third_party/boto/roboto/awsqueryservice.py +0 -121
- data/vendor/depot_tools/third_party/boto/roboto/param.py +0 -147
- data/vendor/depot_tools/third_party/boto/s3/__init__.py +0 -84
- data/vendor/depot_tools/third_party/boto/s3/acl.py +0 -164
- data/vendor/depot_tools/third_party/boto/s3/bucket.py +0 -1634
- data/vendor/depot_tools/third_party/boto/s3/bucketlistresultset.py +0 -139
- data/vendor/depot_tools/third_party/boto/s3/bucketlogging.py +0 -83
- data/vendor/depot_tools/third_party/boto/s3/connection.py +0 -540
- data/vendor/depot_tools/third_party/boto/s3/cors.py +0 -210
- data/vendor/depot_tools/third_party/boto/s3/deletemarker.py +0 -55
- data/vendor/depot_tools/third_party/boto/s3/key.py +0 -1712
- data/vendor/depot_tools/third_party/boto/s3/keyfile.py +0 -134
- data/vendor/depot_tools/third_party/boto/s3/lifecycle.py +0 -231
- data/vendor/depot_tools/third_party/boto/s3/multidelete.py +0 -138
- data/vendor/depot_tools/third_party/boto/s3/multipart.py +0 -315
- data/vendor/depot_tools/third_party/boto/s3/prefix.py +0 -42
- data/vendor/depot_tools/third_party/boto/s3/resumable_download_handler.py +0 -339
- data/vendor/depot_tools/third_party/boto/s3/tagging.py +0 -71
- data/vendor/depot_tools/third_party/boto/s3/user.py +0 -49
- data/vendor/depot_tools/third_party/boto/s3/website.py +0 -237
- data/vendor/depot_tools/third_party/boto/services/__init__.py +0 -23
- data/vendor/depot_tools/third_party/boto/services/bs.py +0 -179
- data/vendor/depot_tools/third_party/boto/services/message.py +0 -58
- data/vendor/depot_tools/third_party/boto/services/result.py +0 -136
- data/vendor/depot_tools/third_party/boto/services/service.py +0 -161
- data/vendor/depot_tools/third_party/boto/services/servicedef.py +0 -91
- data/vendor/depot_tools/third_party/boto/services/sonofmmm.cfg +0 -43
- data/vendor/depot_tools/third_party/boto/services/sonofmmm.py +0 -81
- data/vendor/depot_tools/third_party/boto/services/submit.py +0 -88
- data/vendor/depot_tools/third_party/boto/ses/__init__.py +0 -54
- data/vendor/depot_tools/third_party/boto/ses/connection.py +0 -521
- data/vendor/depot_tools/third_party/boto/ses/exceptions.py +0 -77
- data/vendor/depot_tools/third_party/boto/storage_uri.py +0 -835
- data/vendor/depot_tools/third_party/boto/sts/__init__.py +0 -55
- data/vendor/depot_tools/third_party/boto/sts/connection.py +0 -207
- data/vendor/depot_tools/third_party/boto/sts/credentials.py +0 -215
- data/vendor/depot_tools/third_party/boto/utils.py +0 -927
- data/vendor/depot_tools/third_party/colorama/README.txt +0 -304
- data/vendor/depot_tools/third_party/fancy_urllib/README +0 -22
- data/vendor/depot_tools/third_party/fancy_urllib/__init__.py +0 -460
- data/vendor/depot_tools/third_party/logilab/README.chromium +0 -6
- data/vendor/depot_tools/third_party/logilab/__init__.py +0 -0
- data/vendor/depot_tools/third_party/logilab/astroid/LICENSE.txt +0 -340
- data/vendor/depot_tools/third_party/logilab/astroid/README.chromium +0 -11
- data/vendor/depot_tools/third_party/logilab/astroid/__init__.py +0 -136
- data/vendor/depot_tools/third_party/logilab/astroid/__pkginfo__.py +0 -42
- data/vendor/depot_tools/third_party/logilab/astroid/arguments.py +0 -233
- data/vendor/depot_tools/third_party/logilab/astroid/as_string.py +0 -548
- data/vendor/depot_tools/third_party/logilab/astroid/astpeephole.py +0 -86
- data/vendor/depot_tools/third_party/logilab/astroid/bases.py +0 -636
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_builtin_inference.py +0 -336
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_dateutil.py +0 -15
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_gi.py +0 -195
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_mechanize.py +0 -18
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_nose.py +0 -82
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_numpy.py +0 -62
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_pytest.py +0 -76
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_qt.py +0 -44
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_six.py +0 -288
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_ssl.py +0 -65
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_stdlib.py +0 -473
- data/vendor/depot_tools/third_party/logilab/astroid/builder.py +0 -263
- data/vendor/depot_tools/third_party/logilab/astroid/context.py +0 -81
- data/vendor/depot_tools/third_party/logilab/astroid/decorators.py +0 -75
- data/vendor/depot_tools/third_party/logilab/astroid/exceptions.py +0 -71
- data/vendor/depot_tools/third_party/logilab/astroid/inference.py +0 -359
- data/vendor/depot_tools/third_party/logilab/astroid/manager.py +0 -267
- data/vendor/depot_tools/third_party/logilab/astroid/mixins.py +0 -147
- data/vendor/depot_tools/third_party/logilab/astroid/modutils.py +0 -741
- data/vendor/depot_tools/third_party/logilab/astroid/node_classes.py +0 -1053
- data/vendor/depot_tools/third_party/logilab/astroid/nodes.py +0 -87
- data/vendor/depot_tools/third_party/logilab/astroid/objects.py +0 -186
- data/vendor/depot_tools/third_party/logilab/astroid/protocols.py +0 -470
- data/vendor/depot_tools/third_party/logilab/astroid/raw_building.py +0 -390
- data/vendor/depot_tools/third_party/logilab/astroid/rebuilder.py +0 -989
- data/vendor/depot_tools/third_party/logilab/astroid/scoped_nodes.py +0 -1716
- data/vendor/depot_tools/third_party/logilab/astroid/test_utils.py +0 -201
- data/vendor/depot_tools/third_party/logilab/astroid/transforms.py +0 -96
- data/vendor/depot_tools/third_party/logilab/astroid/util.py +0 -89
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/LICENSE +0 -19
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/README.chromium +0 -11
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/__init__.py +0 -20
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/cext.c +0 -1421
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/compat.py +0 -9
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/simple.py +0 -246
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/slots.py +0 -414
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/utils.py +0 -13
- data/vendor/depot_tools/third_party/logilab/wrapt/LICENSE +0 -24
- data/vendor/depot_tools/third_party/logilab/wrapt/README.chromium +0 -11
- data/vendor/depot_tools/third_party/logilab/wrapt/__init__.py +0 -19
- data/vendor/depot_tools/third_party/logilab/wrapt/_wrappers.c +0 -2729
- data/vendor/depot_tools/third_party/logilab/wrapt/arguments.py +0 -96
- data/vendor/depot_tools/third_party/logilab/wrapt/decorators.py +0 -512
- data/vendor/depot_tools/third_party/logilab/wrapt/importer.py +0 -228
- data/vendor/depot_tools/third_party/logilab/wrapt/wrappers.py +0 -901
- data/vendor/depot_tools/third_party/mock/LICENSE.txt +0 -26
- data/vendor/depot_tools/third_party/mock/README.chromium +0 -24
- data/vendor/depot_tools/third_party/mock/__init__.py +0 -2366
- data/vendor/depot_tools/third_party/oauth2client/LICENSE +0 -202
- data/vendor/depot_tools/third_party/oauth2client/MODIFICATIONS.diff +0 -66
- data/vendor/depot_tools/third_party/oauth2client/README.chromium +0 -15
- data/vendor/depot_tools/third_party/oauth2client/__init__.py +0 -5
- data/vendor/depot_tools/third_party/oauth2client/anyjson.py +0 -32
- data/vendor/depot_tools/third_party/oauth2client/appengine.py +0 -963
- data/vendor/depot_tools/third_party/oauth2client/client.py +0 -1363
- data/vendor/depot_tools/third_party/oauth2client/clientsecrets.py +0 -153
- data/vendor/depot_tools/third_party/oauth2client/crypt.py +0 -377
- data/vendor/depot_tools/third_party/oauth2client/django_orm.py +0 -134
- data/vendor/depot_tools/third_party/oauth2client/file.py +0 -124
- data/vendor/depot_tools/third_party/oauth2client/gce.py +0 -90
- data/vendor/depot_tools/third_party/oauth2client/keyring_storage.py +0 -109
- data/vendor/depot_tools/third_party/oauth2client/locked_file.py +0 -373
- data/vendor/depot_tools/third_party/oauth2client/multistore_file.py +0 -465
- data/vendor/depot_tools/third_party/oauth2client/old_run.py +0 -160
- data/vendor/depot_tools/third_party/oauth2client/tools.py +0 -243
- data/vendor/depot_tools/third_party/oauth2client/util.py +0 -196
- data/vendor/depot_tools/third_party/oauth2client/xsrfutil.py +0 -113
- data/vendor/depot_tools/third_party/protobuf26/README.chromium +0 -23
- data/vendor/depot_tools/third_party/protobuf26/__init__.py +0 -0
- data/vendor/depot_tools/third_party/protobuf26/compiler/__init__.py +0 -0
- data/vendor/depot_tools/third_party/protobuf26/compiler/plugin_pb2.py +0 -184
- data/vendor/depot_tools/third_party/protobuf26/descriptor.py +0 -849
- data/vendor/depot_tools/third_party/protobuf26/descriptor_database.py +0 -137
- data/vendor/depot_tools/third_party/protobuf26/descriptor_pb2.py +0 -1522
- data/vendor/depot_tools/third_party/protobuf26/descriptor_pool.py +0 -643
- data/vendor/depot_tools/third_party/protobuf26/internal/__init__.py +0 -0
- data/vendor/depot_tools/third_party/protobuf26/internal/api_implementation.py +0 -89
- data/vendor/depot_tools/third_party/protobuf26/internal/containers.py +0 -269
- data/vendor/depot_tools/third_party/protobuf26/internal/cpp_message.py +0 -663
- data/vendor/depot_tools/third_party/protobuf26/internal/decoder.py +0 -831
- data/vendor/depot_tools/third_party/protobuf26/internal/encoder.py +0 -788
- data/vendor/depot_tools/third_party/protobuf26/internal/enum_type_wrapper.py +0 -89
- data/vendor/depot_tools/third_party/protobuf26/internal/message_listener.py +0 -78
- data/vendor/depot_tools/third_party/protobuf26/internal/python_message.py +0 -1247
- data/vendor/depot_tools/third_party/protobuf26/internal/type_checkers.py +0 -328
- data/vendor/depot_tools/third_party/protobuf26/internal/wire_format.py +0 -268
- data/vendor/depot_tools/third_party/protobuf26/message.py +0 -284
- data/vendor/depot_tools/third_party/protobuf26/message_factory.py +0 -155
- data/vendor/depot_tools/third_party/protobuf26/reflection.py +0 -205
- data/vendor/depot_tools/third_party/protobuf26/service.py +0 -226
- data/vendor/depot_tools/third_party/protobuf26/service_reflection.py +0 -284
- data/vendor/depot_tools/third_party/protobuf26/symbol_database.py +0 -185
- data/vendor/depot_tools/third_party/protobuf26/text_encoding.py +0 -110
- data/vendor/depot_tools/third_party/protobuf26/text_format.py +0 -873
- data/vendor/depot_tools/third_party/pylint.py +0 -37
- data/vendor/depot_tools/third_party/pylint/LICENSE.txt +0 -340
- data/vendor/depot_tools/third_party/pylint/README.chromium +0 -30
- data/vendor/depot_tools/third_party/pylint/__init__.py +0 -46
- data/vendor/depot_tools/third_party/pylint/__main__.py +0 -3
- data/vendor/depot_tools/third_party/pylint/__pkginfo__.py +0 -80
- data/vendor/depot_tools/third_party/pylint/checkers/__init__.py +0 -123
- data/vendor/depot_tools/third_party/pylint/checkers/async.py +0 -82
- data/vendor/depot_tools/third_party/pylint/checkers/base.py +0 -2010
- data/vendor/depot_tools/third_party/pylint/checkers/classes.py +0 -1120
- data/vendor/depot_tools/third_party/pylint/checkers/design_analysis.py +0 -348
- data/vendor/depot_tools/third_party/pylint/checkers/exceptions.py +0 -369
- data/vendor/depot_tools/third_party/pylint/checkers/format.py +0 -993
- data/vendor/depot_tools/third_party/pylint/checkers/imports.py +0 -654
- data/vendor/depot_tools/third_party/pylint/checkers/logging.py +0 -258
- data/vendor/depot_tools/third_party/pylint/checkers/misc.py +0 -105
- data/vendor/depot_tools/third_party/pylint/checkers/newstyle.py +0 -169
- data/vendor/depot_tools/third_party/pylint/checkers/python3.py +0 -591
- data/vendor/depot_tools/third_party/pylint/checkers/raw_metrics.py +0 -129
- data/vendor/depot_tools/third_party/pylint/checkers/similar.py +0 -371
- data/vendor/depot_tools/third_party/pylint/checkers/spelling.py +0 -264
- data/vendor/depot_tools/third_party/pylint/checkers/stdlib.py +0 -280
- data/vendor/depot_tools/third_party/pylint/checkers/strings.py +0 -618
- data/vendor/depot_tools/third_party/pylint/checkers/typecheck.py +0 -974
- data/vendor/depot_tools/third_party/pylint/checkers/utils.py +0 -741
- data/vendor/depot_tools/third_party/pylint/checkers/variables.py +0 -1191
- data/vendor/depot_tools/third_party/pylint/config.py +0 -820
- data/vendor/depot_tools/third_party/pylint/epylint.py +0 -181
- data/vendor/depot_tools/third_party/pylint/extensions/__init__.py +0 -0
- data/vendor/depot_tools/third_party/pylint/extensions/check_docs.py +0 -311
- data/vendor/depot_tools/third_party/pylint/extensions/check_elif.py +0 -62
- data/vendor/depot_tools/third_party/pylint/graph.py +0 -179
- data/vendor/depot_tools/third_party/pylint/gui.py +0 -531
- data/vendor/depot_tools/third_party/pylint/interfaces.py +0 -102
- data/vendor/depot_tools/third_party/pylint/lint.py +0 -1381
- data/vendor/depot_tools/third_party/pylint/pyreverse/__init__.py +0 -5
- data/vendor/depot_tools/third_party/pylint/pyreverse/diadefslib.py +0 -230
- data/vendor/depot_tools/third_party/pylint/pyreverse/diagrams.py +0 -258
- data/vendor/depot_tools/third_party/pylint/pyreverse/inspector.py +0 -372
- data/vendor/depot_tools/third_party/pylint/pyreverse/main.py +0 -147
- data/vendor/depot_tools/third_party/pylint/pyreverse/utils.py +0 -210
- data/vendor/depot_tools/third_party/pylint/pyreverse/vcgutils.py +0 -198
- data/vendor/depot_tools/third_party/pylint/pyreverse/writer.py +0 -198
- data/vendor/depot_tools/third_party/pylint/reporters/__init__.py +0 -149
- data/vendor/depot_tools/third_party/pylint/reporters/guireporter.py +0 -27
- data/vendor/depot_tools/third_party/pylint/reporters/html.py +0 -108
- data/vendor/depot_tools/third_party/pylint/reporters/json.py +0 -64
- data/vendor/depot_tools/third_party/pylint/reporters/text.py +0 -237
- data/vendor/depot_tools/third_party/pylint/reporters/ureports/__init__.py +0 -106
- data/vendor/depot_tools/third_party/pylint/reporters/ureports/html_writer.py +0 -93
- data/vendor/depot_tools/third_party/pylint/reporters/ureports/nodes.py +0 -181
- data/vendor/depot_tools/third_party/pylint/reporters/ureports/text_writer.py +0 -99
- data/vendor/depot_tools/third_party/pylint/testutils.py +0 -414
- data/vendor/depot_tools/third_party/pylint/utils.py +0 -1148
- data/vendor/depot_tools/third_party/pymox/COPYING +0 -202
- data/vendor/depot_tools/third_party/pymox/MANIFEST.in +0 -5
- data/vendor/depot_tools/third_party/pymox/README +0 -56
- data/vendor/depot_tools/third_party/pymox/__init__.py +0 -0
- data/vendor/depot_tools/third_party/pymox/mox.py +0 -1643
- data/vendor/depot_tools/third_party/pymox/mox_test.py +0 -1708
- data/vendor/depot_tools/third_party/pymox/mox_test_helper.py +0 -76
- data/vendor/depot_tools/third_party/pymox/setup.py +0 -14
- data/vendor/depot_tools/third_party/pymox/stubout.py +0 -142
- data/vendor/depot_tools/third_party/pymox/stubout_test.py +0 -47
- data/vendor/depot_tools/third_party/pymox/stubout_testee.py +0 -2
- data/vendor/depot_tools/third_party/simplejson/LICENSE.txt +0 -19
- data/vendor/depot_tools/third_party/simplejson/PKG-INFO +0 -29
- data/vendor/depot_tools/third_party/simplejson/__init__.py +0 -437
- data/vendor/depot_tools/third_party/simplejson/decoder.py +0 -421
- data/vendor/depot_tools/third_party/simplejson/encoder.py +0 -501
- data/vendor/depot_tools/third_party/simplejson/ordered_dict.py +0 -119
- data/vendor/depot_tools/third_party/simplejson/scanner.py +0 -77
- data/vendor/depot_tools/third_party/simplejson/tool.py +0 -39
- data/vendor/depot_tools/third_party/upload.py +0 -2565
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
"""Splits a branch into smaller branches and uploads CLs."""
|
|
7
7
|
|
|
8
|
+
from __future__ import print_function
|
|
9
|
+
|
|
8
10
|
import collections
|
|
9
11
|
import os
|
|
10
12
|
import re
|
|
@@ -12,9 +14,11 @@ import subprocess2
|
|
|
12
14
|
import sys
|
|
13
15
|
import tempfile
|
|
14
16
|
|
|
17
|
+
import gclient_utils
|
|
15
18
|
import git_footers
|
|
16
19
|
import owners
|
|
17
20
|
import owners_finder
|
|
21
|
+
import scm
|
|
18
22
|
|
|
19
23
|
import git_common as git
|
|
20
24
|
|
|
@@ -75,7 +79,7 @@ def AddUploadedByGitClSplitToDescription(description):
|
|
|
75
79
|
|
|
76
80
|
def UploadCl(refactor_branch, refactor_branch_upstream, directory, files,
|
|
77
81
|
description, comment, reviewers, changelist, cmd_upload,
|
|
78
|
-
cq_dry_run, enable_auto_submit):
|
|
82
|
+
cq_dry_run, enable_auto_submit, repository_root):
|
|
79
83
|
"""Uploads a CL with all changes to |files| in |refactor_branch|.
|
|
80
84
|
|
|
81
85
|
Args:
|
|
@@ -95,26 +99,31 @@ def UploadCl(refactor_branch, refactor_branch_upstream, directory, files,
|
|
|
95
99
|
# Create a branch.
|
|
96
100
|
if not CreateBranchForDirectory(
|
|
97
101
|
refactor_branch, directory, refactor_branch_upstream):
|
|
98
|
-
print
|
|
102
|
+
print('Skipping ' + directory + ' for which a branch already exists.')
|
|
99
103
|
return
|
|
100
104
|
|
|
101
105
|
# Checkout all changes to files in |files|.
|
|
102
|
-
deleted_files = [
|
|
106
|
+
deleted_files = []
|
|
107
|
+
modified_files = []
|
|
108
|
+
for action, f in files:
|
|
109
|
+
abspath = os.path.abspath(os.path.join(repository_root, f))
|
|
110
|
+
if action == 'D':
|
|
111
|
+
deleted_files.append(abspath)
|
|
112
|
+
else:
|
|
113
|
+
modified_files.append(abspath)
|
|
114
|
+
|
|
103
115
|
if deleted_files:
|
|
104
116
|
git.run(*['rm'] + deleted_files)
|
|
105
|
-
modified_files = [f.AbsoluteLocalPath() for f in files if f.Action() != 'D']
|
|
106
117
|
if modified_files:
|
|
107
118
|
git.run(*['checkout', refactor_branch, '--'] + modified_files)
|
|
108
119
|
|
|
109
120
|
# Commit changes. The temporary file is created with delete=False so that it
|
|
110
121
|
# can be deleted manually after git has read it rather than automatically
|
|
111
122
|
# when it is closed.
|
|
112
|
-
with
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
git.run('commit', '-F', tmp_file.name)
|
|
117
|
-
os.remove(tmp_file.name)
|
|
123
|
+
with gclient_utils.temporary_file() as tmp_file:
|
|
124
|
+
gclient_utils.FileWrite(
|
|
125
|
+
tmp_file, FormatDescriptionOrComment(description, directory))
|
|
126
|
+
git.run('commit', '-F', tmp_file)
|
|
118
127
|
|
|
119
128
|
# Upload a CL.
|
|
120
129
|
upload_args = ['-f', '-r', ','.join(reviewers)]
|
|
@@ -124,7 +133,7 @@ def UploadCl(refactor_branch, refactor_branch_upstream, directory, files,
|
|
|
124
133
|
upload_args.append('--send-mail')
|
|
125
134
|
if enable_auto_submit:
|
|
126
135
|
upload_args.append('--enable-auto-submit')
|
|
127
|
-
print
|
|
136
|
+
print('Uploading CL for ' + directory + '.')
|
|
128
137
|
cmd_upload(upload_args)
|
|
129
138
|
if comment:
|
|
130
139
|
changelist().AddComment(FormatDescriptionOrComment(comment, directory),
|
|
@@ -139,9 +148,9 @@ def GetFilesSplitByOwners(owners_database, files):
|
|
|
139
148
|
values are lists of files sharing an OWNERS file.
|
|
140
149
|
"""
|
|
141
150
|
files_split_by_owners = collections.defaultdict(list)
|
|
142
|
-
for
|
|
143
|
-
|
|
144
|
-
|
|
151
|
+
for action, path in files:
|
|
152
|
+
enclosing_dir = owners_database.enclosing_dir_with_owners(path)
|
|
153
|
+
files_split_by_owners[enclosing_dir].append((action, path))
|
|
145
154
|
return files_split_by_owners
|
|
146
155
|
|
|
147
156
|
|
|
@@ -162,16 +171,16 @@ def PrintClInfo(cl_index, num_cls, directory, file_paths, description,
|
|
|
162
171
|
directory).splitlines()
|
|
163
172
|
indented_description = '\n'.join([' ' + l for l in description_lines])
|
|
164
173
|
|
|
165
|
-
print
|
|
166
|
-
print
|
|
167
|
-
print
|
|
168
|
-
print
|
|
169
|
-
print
|
|
170
|
-
print
|
|
174
|
+
print('CL {}/{}'.format(cl_index, num_cls))
|
|
175
|
+
print('Path: {}'.format(directory))
|
|
176
|
+
print('Reviewers: {}'.format(', '.join(reviewers)))
|
|
177
|
+
print('\n' + indented_description + '\n')
|
|
178
|
+
print('\n'.join(file_paths))
|
|
179
|
+
print()
|
|
171
180
|
|
|
172
181
|
|
|
173
182
|
def SplitCl(description_file, comment_file, changelist, cmd_upload, dry_run,
|
|
174
|
-
cq_dry_run, enable_auto_submit):
|
|
183
|
+
cq_dry_run, enable_auto_submit, repository_root):
|
|
175
184
|
""""Splits a branch into smaller branches and uploads CLs.
|
|
176
185
|
|
|
177
186
|
Args:
|
|
@@ -193,11 +202,14 @@ def SplitCl(description_file, comment_file, changelist, cmd_upload, dry_run,
|
|
|
193
202
|
EnsureInGitRepository()
|
|
194
203
|
|
|
195
204
|
cl = changelist()
|
|
196
|
-
|
|
197
|
-
files =
|
|
205
|
+
upstream = cl.GetCommonAncestorWithUpstream()
|
|
206
|
+
files = [
|
|
207
|
+
(action.strip(), f)
|
|
208
|
+
for action, f in scm.GIT.CaptureStatus(repository_root, upstream)
|
|
209
|
+
]
|
|
198
210
|
|
|
199
211
|
if not files:
|
|
200
|
-
print
|
|
212
|
+
print('Cannot split an empty CL.')
|
|
201
213
|
return 1
|
|
202
214
|
|
|
203
215
|
author = git.run('config', 'user.email').strip() or None
|
|
@@ -207,8 +219,8 @@ def SplitCl(description_file, comment_file, changelist, cmd_upload, dry_run,
|
|
|
207
219
|
assert refactor_branch_upstream, \
|
|
208
220
|
"Branch %s must have an upstream." % refactor_branch
|
|
209
221
|
|
|
210
|
-
owners_database = owners.Database(
|
|
211
|
-
owners_database.load_data_needed_for([f
|
|
222
|
+
owners_database = owners.Database(repository_root, open, os.path)
|
|
223
|
+
owners_database.load_data_needed_for([f for _, f in files])
|
|
212
224
|
|
|
213
225
|
files_split_by_owners = GetFilesSplitByOwners(owners_database, files)
|
|
214
226
|
|
|
@@ -216,22 +228,22 @@ def SplitCl(description_file, comment_file, changelist, cmd_upload, dry_run,
|
|
|
216
228
|
print('Will split current branch (' + refactor_branch + ') into ' +
|
|
217
229
|
str(num_cls) + ' CLs.\n')
|
|
218
230
|
if cq_dry_run and num_cls > CL_SPLIT_FORCE_LIMIT:
|
|
219
|
-
print
|
|
231
|
+
print(
|
|
220
232
|
'This will generate "%r" CLs. This many CLs can potentially generate'
|
|
221
233
|
' too much load on the build infrastructure. Please email'
|
|
222
234
|
' infra-dev@chromium.org to ensure that this won\'t break anything.'
|
|
223
235
|
' The infra team reserves the right to cancel your jobs if they are'
|
|
224
|
-
' overloading the CQ.'
|
|
225
|
-
answer =
|
|
236
|
+
' overloading the CQ.' % num_cls)
|
|
237
|
+
answer = gclient_utils.AskForData('Proceed? (y/n):')
|
|
226
238
|
if answer.lower() != 'y':
|
|
227
239
|
return 0
|
|
228
240
|
|
|
229
241
|
for cl_index, (directory, files) in \
|
|
230
|
-
enumerate(files_split_by_owners.
|
|
242
|
+
enumerate(files_split_by_owners.items(), 1):
|
|
231
243
|
# Use '/' as a path separator in the branch name and the CL description
|
|
232
244
|
# and comment.
|
|
233
245
|
directory = directory.replace(os.path.sep, '/')
|
|
234
|
-
file_paths = [f
|
|
246
|
+
file_paths = [f for _, f in files]
|
|
235
247
|
reviewers = owners_database.reviewers_for(file_paths, author)
|
|
236
248
|
|
|
237
249
|
if dry_run:
|
|
@@ -240,7 +252,7 @@ def SplitCl(description_file, comment_file, changelist, cmd_upload, dry_run,
|
|
|
240
252
|
else:
|
|
241
253
|
UploadCl(refactor_branch, refactor_branch_upstream, directory, files,
|
|
242
254
|
description, comment, reviewers, changelist, cmd_upload,
|
|
243
|
-
cq_dry_run, enable_auto_submit)
|
|
255
|
+
cq_dry_run, enable_auto_submit, repository_root)
|
|
244
256
|
|
|
245
257
|
# Go back to the original branch.
|
|
246
258
|
git.run('checkout', refactor_branch)
|
|
@@ -66,11 +66,11 @@ def epilog(text):
|
|
|
66
66
|
|
|
67
67
|
def CMDhelp(parser, args):
|
|
68
68
|
"""Prints list of commands or help for a specific command."""
|
|
69
|
-
# This is the default help implementation. It can be disabled or
|
|
69
|
+
# This is the default help implementation. It can be disabled or overridden if
|
|
70
70
|
# wanted.
|
|
71
71
|
if not any(i in ('-h', '--help') for i in args):
|
|
72
72
|
args = args + ['--help']
|
|
73
|
-
|
|
73
|
+
parser.parse_args(args)
|
|
74
74
|
# Never gets there.
|
|
75
75
|
assert False
|
|
76
76
|
|
|
@@ -160,7 +160,7 @@ class CommandDispatcher(object):
|
|
|
160
160
|
commands = self.enumerate_commands()
|
|
161
161
|
docs = sorted(
|
|
162
162
|
(cmd_name, self._create_command_summary(cmd_name, handler))
|
|
163
|
-
for cmd_name, handler in commands.
|
|
163
|
+
for cmd_name, handler in commands.items())
|
|
164
164
|
# Skip commands without a docstring.
|
|
165
165
|
docs = [i for i in docs if i[1]]
|
|
166
166
|
# Then calculate maximum length for alignment:
|
|
@@ -235,14 +235,14 @@ class CommandDispatcher(object):
|
|
|
235
235
|
|
|
236
236
|
if args:
|
|
237
237
|
if args[0] in ('-h', '--help') and len(args) > 1:
|
|
238
|
-
#
|
|
238
|
+
# Reverse the argument order so 'tool --help cmd' is rewritten to
|
|
239
239
|
# 'tool cmd --help'.
|
|
240
240
|
args = [args[1], args[0]] + args[2:]
|
|
241
241
|
command = self.find_nearest_command(args[0])
|
|
242
242
|
if command:
|
|
243
243
|
if command.__name__ == 'CMDhelp' and len(args) > 1:
|
|
244
|
-
#
|
|
245
|
-
# 'tool cmd --help'. Do it here since we want 'tool
|
|
244
|
+
# Reverse the argument order so 'tool help cmd' is rewritten to
|
|
245
|
+
# 'tool cmd --help'. Do it here since we want 'tool help cmd' to work
|
|
246
246
|
# too.
|
|
247
247
|
args = [args[1], '--help'] + args[2:]
|
|
248
248
|
command = self.find_nearest_command(args[0]) or command
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# coding=
|
|
1
|
+
# coding=utf-8
|
|
2
2
|
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
|
3
3
|
# Use of this source code is governed by a BSD-style license that can be
|
|
4
4
|
# found in the LICENSE file.
|
|
@@ -12,41 +12,27 @@ import errno
|
|
|
12
12
|
import io
|
|
13
13
|
import logging
|
|
14
14
|
import os
|
|
15
|
-
|
|
16
|
-
try:
|
|
17
|
-
import Queue
|
|
18
|
-
except ImportError: # For Py3 compatibility
|
|
19
|
-
import queue as Queue
|
|
20
|
-
|
|
21
15
|
import subprocess
|
|
22
16
|
import sys
|
|
23
|
-
import time
|
|
24
17
|
import threading
|
|
25
18
|
|
|
26
19
|
# Cache the string-escape codec to ensure subprocess can find it later.
|
|
27
20
|
# See crbug.com/912292#c2 for context.
|
|
28
21
|
if sys.version_info.major == 2:
|
|
22
|
+
import Queue
|
|
29
23
|
codecs.lookup('string-escape')
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
try:
|
|
33
|
-
basestring
|
|
34
|
-
except NameError:
|
|
24
|
+
else:
|
|
25
|
+
import queue as Queue
|
|
35
26
|
# pylint: disable=redefined-builtin
|
|
36
|
-
basestring = str
|
|
27
|
+
basestring = (str, bytes)
|
|
37
28
|
|
|
38
29
|
|
|
39
30
|
# Constants forwarded from subprocess.
|
|
40
31
|
PIPE = subprocess.PIPE
|
|
41
32
|
STDOUT = subprocess.STDOUT
|
|
42
33
|
# Sends stdout or stderr to os.devnull.
|
|
43
|
-
VOID =
|
|
44
|
-
|
|
45
|
-
TIMED_OUT = -2001
|
|
46
|
-
|
|
47
|
-
# Globals.
|
|
48
|
-
# Set to True if you somehow need to disable this hack.
|
|
49
|
-
SUBPROCESS_CLEANUP_HACKED = False
|
|
34
|
+
VOID = open(os.devnull, 'w')
|
|
35
|
+
VOID_INPUT = open(os.devnull, 'r')
|
|
50
36
|
|
|
51
37
|
|
|
52
38
|
class CalledProcessError(subprocess.CalledProcessError):
|
|
@@ -62,7 +48,11 @@ class CalledProcessError(subprocess.CalledProcessError):
|
|
|
62
48
|
' '.join(self.cmd), self.returncode)
|
|
63
49
|
if self.cwd:
|
|
64
50
|
out += ' in ' + self.cwd
|
|
65
|
-
|
|
51
|
+
if self.stdout:
|
|
52
|
+
out += '\n' + self.stdout.decode('utf-8', 'ignore')
|
|
53
|
+
if self.stderr:
|
|
54
|
+
out += '\n' + self.stderr.decode('utf-8', 'ignore')
|
|
55
|
+
return out
|
|
66
56
|
|
|
67
57
|
|
|
68
58
|
class CygwinRebaseError(CalledProcessError):
|
|
@@ -78,51 +68,11 @@ def kill_pid(pid):
|
|
|
78
68
|
# Unable to import 'module'
|
|
79
69
|
# pylint: disable=no-member,F0401
|
|
80
70
|
import signal
|
|
81
|
-
return os.kill(pid, signal.
|
|
82
|
-
except ImportError:
|
|
83
|
-
pass
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
def kill_win(process):
|
|
87
|
-
"""Kills a process with its windows handle.
|
|
88
|
-
|
|
89
|
-
Has no effect on other platforms.
|
|
90
|
-
"""
|
|
91
|
-
try:
|
|
92
|
-
# Unable to import 'module'
|
|
93
|
-
# pylint: disable=import-error
|
|
94
|
-
import win32process
|
|
95
|
-
# Access to a protected member _handle of a client class
|
|
96
|
-
# pylint: disable=protected-access
|
|
97
|
-
return win32process.TerminateProcess(process._handle, -1)
|
|
71
|
+
return os.kill(pid, signal.SIGTERM)
|
|
98
72
|
except ImportError:
|
|
99
73
|
pass
|
|
100
74
|
|
|
101
75
|
|
|
102
|
-
def add_kill():
|
|
103
|
-
"""Adds kill() method to subprocess.Popen for python <2.6"""
|
|
104
|
-
if hasattr(subprocess.Popen, 'kill'):
|
|
105
|
-
return
|
|
106
|
-
|
|
107
|
-
if sys.platform == 'win32':
|
|
108
|
-
subprocess.Popen.kill = kill_win
|
|
109
|
-
else:
|
|
110
|
-
subprocess.Popen.kill = lambda process: kill_pid(process.pid)
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
def hack_subprocess():
|
|
114
|
-
"""subprocess functions may throw exceptions when used in multiple threads.
|
|
115
|
-
|
|
116
|
-
See http://bugs.python.org/issue1731717 for more information.
|
|
117
|
-
"""
|
|
118
|
-
global SUBPROCESS_CLEANUP_HACKED
|
|
119
|
-
if not SUBPROCESS_CLEANUP_HACKED and threading.activeCount() != 1:
|
|
120
|
-
# Only hack if there is ever multiple threads.
|
|
121
|
-
# There is no point to leak with only one thread.
|
|
122
|
-
subprocess._cleanup = lambda: None
|
|
123
|
-
SUBPROCESS_CLEANUP_HACKED = True
|
|
124
|
-
|
|
125
|
-
|
|
126
76
|
def get_english_env(env):
|
|
127
77
|
"""Forces LANG and/or LANGUAGE to be English.
|
|
128
78
|
|
|
@@ -150,42 +100,6 @@ def get_english_env(env):
|
|
|
150
100
|
return env
|
|
151
101
|
|
|
152
102
|
|
|
153
|
-
class NagTimer(object):
|
|
154
|
-
"""
|
|
155
|
-
Triggers a callback when a time interval passes without an event being fired.
|
|
156
|
-
|
|
157
|
-
For example, the event could be receiving terminal output from a subprocess;
|
|
158
|
-
and the callback could print a warning to stderr that the subprocess appeared
|
|
159
|
-
to be hung.
|
|
160
|
-
"""
|
|
161
|
-
def __init__(self, interval, cb):
|
|
162
|
-
self.interval = interval
|
|
163
|
-
self.cb = cb
|
|
164
|
-
self.timer = threading.Timer(self.interval, self.fn)
|
|
165
|
-
self.last_output = self.previous_last_output = 0
|
|
166
|
-
|
|
167
|
-
def start(self):
|
|
168
|
-
self.last_output = self.previous_last_output = time.time()
|
|
169
|
-
self.timer.start()
|
|
170
|
-
|
|
171
|
-
def event(self):
|
|
172
|
-
self.last_output = time.time()
|
|
173
|
-
|
|
174
|
-
def fn(self):
|
|
175
|
-
now = time.time()
|
|
176
|
-
if self.last_output == self.previous_last_output:
|
|
177
|
-
self.cb(now - self.previous_last_output)
|
|
178
|
-
# Use 0.1 fudge factor, just in case
|
|
179
|
-
# (self.last_output - now) is very close to zero.
|
|
180
|
-
sleep_time = (self.last_output - now - 0.1) % self.interval
|
|
181
|
-
self.previous_last_output = self.last_output
|
|
182
|
-
self.timer = threading.Timer(sleep_time + 0.1, self.fn)
|
|
183
|
-
self.timer.start()
|
|
184
|
-
|
|
185
|
-
def cancel(self):
|
|
186
|
-
self.timer.cancel()
|
|
187
|
-
|
|
188
|
-
|
|
189
103
|
class Popen(subprocess.Popen):
|
|
190
104
|
"""Wraps subprocess.Popen() with various workarounds.
|
|
191
105
|
|
|
@@ -208,13 +122,20 @@ class Popen(subprocess.Popen):
|
|
|
208
122
|
popen_lock = threading.Lock()
|
|
209
123
|
|
|
210
124
|
def __init__(self, args, **kwargs):
|
|
211
|
-
# Make sure we hack subprocess if necessary.
|
|
212
|
-
hack_subprocess()
|
|
213
|
-
add_kill()
|
|
214
|
-
|
|
215
125
|
env = get_english_env(kwargs.get('env'))
|
|
216
126
|
if env:
|
|
217
127
|
kwargs['env'] = env
|
|
128
|
+
if kwargs.get('env') is not None and sys.version_info.major != 2:
|
|
129
|
+
# Subprocess expects environment variables to be strings in Python 3.
|
|
130
|
+
def ensure_str(value):
|
|
131
|
+
if isinstance(value, bytes):
|
|
132
|
+
return value.decode()
|
|
133
|
+
return value
|
|
134
|
+
|
|
135
|
+
kwargs['env'] = {
|
|
136
|
+
ensure_str(k): ensure_str(v)
|
|
137
|
+
for k, v in kwargs['env'].items()
|
|
138
|
+
}
|
|
218
139
|
if kwargs.get('shell') is None:
|
|
219
140
|
# *Sigh*: Windows needs shell=True, or else it won't search %PATH% for
|
|
220
141
|
# the executable, but shell=True makes subprocess on Linux fail when it's
|
|
@@ -232,33 +153,6 @@ class Popen(subprocess.Popen):
|
|
|
232
153
|
tmp_str += '; cwd=%s' % kwargs['cwd']
|
|
233
154
|
logging.debug(tmp_str)
|
|
234
155
|
|
|
235
|
-
self.stdout_cb = None
|
|
236
|
-
self.stderr_cb = None
|
|
237
|
-
self.stdin_is_void = False
|
|
238
|
-
self.stdout_is_void = False
|
|
239
|
-
self.stderr_is_void = False
|
|
240
|
-
self.cmd_str = tmp_str
|
|
241
|
-
|
|
242
|
-
if kwargs.get('stdin') is VOID:
|
|
243
|
-
kwargs['stdin'] = open(os.devnull, 'r')
|
|
244
|
-
self.stdin_is_void = True
|
|
245
|
-
|
|
246
|
-
for stream in ('stdout', 'stderr'):
|
|
247
|
-
if kwargs.get(stream) in (VOID, os.devnull):
|
|
248
|
-
kwargs[stream] = open(os.devnull, 'w')
|
|
249
|
-
setattr(self, stream + '_is_void', True)
|
|
250
|
-
if callable(kwargs.get(stream)):
|
|
251
|
-
setattr(self, stream + '_cb', kwargs[stream])
|
|
252
|
-
kwargs[stream] = PIPE
|
|
253
|
-
|
|
254
|
-
self.start = time.time()
|
|
255
|
-
self.timeout = None
|
|
256
|
-
self.nag_timer = None
|
|
257
|
-
self.nag_max = None
|
|
258
|
-
self.shell = kwargs.get('shell', None)
|
|
259
|
-
# Silence pylint on MacOSX
|
|
260
|
-
self.returncode = None
|
|
261
|
-
|
|
262
156
|
try:
|
|
263
157
|
with self.popen_lock:
|
|
264
158
|
super(Popen, self).__init__(args, **kwargs)
|
|
@@ -279,205 +173,25 @@ class Popen(subprocess.Popen):
|
|
|
279
173
|
'Check that %s or %s exist and have execution permission.'
|
|
280
174
|
% (str(e), kwargs.get('cwd'), args[0]))
|
|
281
175
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
It's the simplest and slowest implementation. Expect very slow behavior.
|
|
286
|
-
|
|
287
|
-
If there is a callback and it doesn't keep up with the calls, the timeout
|
|
288
|
-
effectiveness will be delayed accordingly.
|
|
289
|
-
"""
|
|
290
|
-
# Queue of either of <threadname> when done or (<threadname>, data). In
|
|
291
|
-
# theory we would like to limit to ~64kb items to not cause large memory
|
|
292
|
-
# usage when the callback blocks. It is not done because it slows down
|
|
293
|
-
# processing on OSX10.6 by a factor of 2x, making it even slower than
|
|
294
|
-
# Windows! Revisit this decision if it becomes a problem, e.g. crash
|
|
295
|
-
# because of memory exhaustion.
|
|
296
|
-
queue = Queue.Queue()
|
|
297
|
-
done = threading.Event()
|
|
298
|
-
nag = None
|
|
299
|
-
|
|
300
|
-
def write_stdin():
|
|
301
|
-
try:
|
|
302
|
-
stdin_io = io.BytesIO(input)
|
|
303
|
-
while True:
|
|
304
|
-
data = stdin_io.read(1024)
|
|
305
|
-
if data:
|
|
306
|
-
self.stdin.write(data)
|
|
307
|
-
else:
|
|
308
|
-
self.stdin.close()
|
|
309
|
-
break
|
|
310
|
-
finally:
|
|
311
|
-
queue.put('stdin')
|
|
312
|
-
|
|
313
|
-
def _queue_pipe_read(pipe, name):
|
|
314
|
-
"""Queues characters read from a pipe into a queue."""
|
|
315
|
-
try:
|
|
316
|
-
while True:
|
|
317
|
-
data = pipe.read(1)
|
|
318
|
-
if not data:
|
|
319
|
-
break
|
|
320
|
-
if nag:
|
|
321
|
-
nag.event()
|
|
322
|
-
queue.put((name, data))
|
|
323
|
-
finally:
|
|
324
|
-
queue.put(name)
|
|
325
|
-
|
|
326
|
-
def timeout_fn():
|
|
327
|
-
try:
|
|
328
|
-
done.wait(self.timeout)
|
|
329
|
-
finally:
|
|
330
|
-
queue.put('timeout')
|
|
331
|
-
|
|
332
|
-
def wait_fn():
|
|
333
|
-
try:
|
|
334
|
-
self.wait()
|
|
335
|
-
finally:
|
|
336
|
-
queue.put('wait')
|
|
337
|
-
|
|
338
|
-
# Starts up to 5 threads:
|
|
339
|
-
# Wait for the process to quit
|
|
340
|
-
# Read stdout
|
|
341
|
-
# Read stderr
|
|
342
|
-
# Write stdin
|
|
343
|
-
# Timeout
|
|
344
|
-
threads = {
|
|
345
|
-
'wait': threading.Thread(target=wait_fn),
|
|
346
|
-
}
|
|
347
|
-
if self.timeout is not None:
|
|
348
|
-
threads['timeout'] = threading.Thread(target=timeout_fn)
|
|
349
|
-
if self.stdout_cb:
|
|
350
|
-
threads['stdout'] = threading.Thread(
|
|
351
|
-
target=_queue_pipe_read, args=(self.stdout, 'stdout'))
|
|
352
|
-
if self.stderr_cb:
|
|
353
|
-
threads['stderr'] = threading.Thread(
|
|
354
|
-
target=_queue_pipe_read, args=(self.stderr, 'stderr'))
|
|
355
|
-
if input:
|
|
356
|
-
threads['stdin'] = threading.Thread(target=write_stdin)
|
|
357
|
-
elif self.stdin:
|
|
358
|
-
# Pipe but no input, make sure it's closed.
|
|
359
|
-
self.stdin.close()
|
|
360
|
-
for t in threads.itervalues():
|
|
361
|
-
t.start()
|
|
362
|
-
|
|
363
|
-
if self.nag_timer:
|
|
364
|
-
def _nag_cb(elapsed):
|
|
365
|
-
logging.warn(' No output for %.0f seconds from command:' % elapsed)
|
|
366
|
-
logging.warn(' %s' % self.cmd_str)
|
|
367
|
-
if (self.nag_max and
|
|
368
|
-
int('%.0f' % (elapsed / self.nag_timer)) >= self.nag_max):
|
|
369
|
-
queue.put('timeout')
|
|
370
|
-
done.set() # Must do this so that timeout thread stops waiting.
|
|
371
|
-
nag = NagTimer(self.nag_timer, _nag_cb)
|
|
372
|
-
nag.start()
|
|
373
|
-
|
|
374
|
-
timed_out = False
|
|
375
|
-
try:
|
|
376
|
-
# This thread needs to be optimized for speed.
|
|
377
|
-
while threads:
|
|
378
|
-
item = queue.get()
|
|
379
|
-
if item[0] == 'stdout':
|
|
380
|
-
self.stdout_cb(item[1])
|
|
381
|
-
elif item[0] == 'stderr':
|
|
382
|
-
self.stderr_cb(item[1])
|
|
383
|
-
else:
|
|
384
|
-
# A thread terminated.
|
|
385
|
-
if item in threads:
|
|
386
|
-
threads[item].join()
|
|
387
|
-
del threads[item]
|
|
388
|
-
if item == 'wait':
|
|
389
|
-
# Terminate the timeout thread if necessary.
|
|
390
|
-
done.set()
|
|
391
|
-
elif item == 'timeout' and not timed_out and self.poll() is None:
|
|
392
|
-
logging.debug('Timed out after %.0fs: killing' % (
|
|
393
|
-
time.time() - self.start))
|
|
394
|
-
self.kill()
|
|
395
|
-
timed_out = True
|
|
396
|
-
finally:
|
|
397
|
-
# Stop the threads.
|
|
398
|
-
done.set()
|
|
399
|
-
if nag:
|
|
400
|
-
nag.cancel()
|
|
401
|
-
if 'wait' in threads:
|
|
402
|
-
# Accelerate things, otherwise it would hang until the child process is
|
|
403
|
-
# done.
|
|
404
|
-
logging.debug('Killing child because of an exception')
|
|
405
|
-
self.kill()
|
|
406
|
-
# Join threads.
|
|
407
|
-
for thread in threads.itervalues():
|
|
408
|
-
thread.join()
|
|
409
|
-
if timed_out:
|
|
410
|
-
self.returncode = TIMED_OUT
|
|
411
|
-
|
|
412
|
-
# pylint: disable=arguments-differ,W0622
|
|
413
|
-
def communicate(self, input=None, timeout=None, nag_timer=None,
|
|
414
|
-
nag_max=None):
|
|
415
|
-
"""Adds timeout and callbacks support.
|
|
416
|
-
|
|
417
|
-
Returns (stdout, stderr) like subprocess.Popen().communicate().
|
|
418
|
-
|
|
419
|
-
- The process will be killed after |timeout| seconds and returncode set to
|
|
420
|
-
TIMED_OUT.
|
|
421
|
-
- If the subprocess runs for |nag_timer| seconds without producing terminal
|
|
422
|
-
output, print a warning to stderr.
|
|
423
|
-
"""
|
|
424
|
-
self.timeout = timeout
|
|
425
|
-
self.nag_timer = nag_timer
|
|
426
|
-
self.nag_max = nag_max
|
|
427
|
-
if (not self.timeout and not self.nag_timer and
|
|
428
|
-
not self.stdout_cb and not self.stderr_cb):
|
|
429
|
-
return super(Popen, self).communicate(input)
|
|
430
|
-
|
|
431
|
-
if self.timeout and self.shell:
|
|
432
|
-
raise TypeError(
|
|
433
|
-
'Using timeout and shell simultaneously will cause a process leak '
|
|
434
|
-
'since the shell will be killed instead of the child process.')
|
|
435
|
-
|
|
436
|
-
stdout = None
|
|
437
|
-
stderr = None
|
|
438
|
-
# Convert to a lambda to workaround python's deadlock.
|
|
439
|
-
# http://docs.python.org/library/subprocess.html#subprocess.Popen.wait
|
|
440
|
-
# When the pipe fills up, it would deadlock this process.
|
|
441
|
-
if self.stdout and not self.stdout_cb and not self.stdout_is_void:
|
|
442
|
-
stdout = []
|
|
443
|
-
self.stdout_cb = stdout.append
|
|
444
|
-
if self.stderr and not self.stderr_cb and not self.stderr_is_void:
|
|
445
|
-
stderr = []
|
|
446
|
-
self.stderr_cb = stderr.append
|
|
447
|
-
self._tee_threads(input)
|
|
448
|
-
if stdout is not None:
|
|
449
|
-
stdout = ''.join(stdout)
|
|
450
|
-
if stderr is not None:
|
|
451
|
-
stderr = ''.join(stderr)
|
|
452
|
-
return (stdout, stderr)
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
def communicate(args, timeout=None, nag_timer=None, nag_max=None, **kwargs):
|
|
456
|
-
"""Wraps subprocess.Popen().communicate() and add timeout support.
|
|
176
|
+
|
|
177
|
+
def communicate(args, **kwargs):
|
|
178
|
+
"""Wraps subprocess.Popen().communicate().
|
|
457
179
|
|
|
458
180
|
Returns ((stdout, stderr), returncode).
|
|
459
181
|
|
|
460
|
-
- The process will be killed after |timeout| seconds and returncode set to
|
|
461
|
-
TIMED_OUT.
|
|
462
182
|
- If the subprocess runs for |nag_timer| seconds without producing terminal
|
|
463
183
|
output, print a warning to stderr.
|
|
464
184
|
- Automatically passes stdin content as input so do not specify stdin=PIPE.
|
|
465
185
|
"""
|
|
466
|
-
stdin =
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
else:
|
|
473
|
-
kwargs['stdin'] = stdin
|
|
474
|
-
stdin = None
|
|
186
|
+
stdin = None
|
|
187
|
+
# When stdin is passed as an argument, use it as the actual input data and
|
|
188
|
+
# set the Popen() parameter accordingly.
|
|
189
|
+
if 'stdin' in kwargs and isinstance(kwargs['stdin'], basestring):
|
|
190
|
+
stdin = kwargs['stdin']
|
|
191
|
+
kwargs['stdin'] = PIPE
|
|
475
192
|
|
|
476
193
|
proc = Popen(args, **kwargs)
|
|
477
|
-
|
|
478
|
-
return proc.communicate(stdin, timeout, nag_timer), proc.returncode
|
|
479
|
-
else:
|
|
480
|
-
return proc.communicate(None, timeout, nag_timer), proc.returncode
|
|
194
|
+
return proc.communicate(stdin), proc.returncode
|
|
481
195
|
|
|
482
196
|
|
|
483
197
|
def call(args, **kwargs):
|
|
@@ -486,6 +200,8 @@ def call(args, **kwargs):
|
|
|
486
200
|
Automatically convert stdout=PIPE or stderr=PIPE to VOID.
|
|
487
201
|
In no case they can be returned since no code path raises
|
|
488
202
|
subprocess2.CalledProcessError.
|
|
203
|
+
|
|
204
|
+
Returns exit code.
|
|
489
205
|
"""
|
|
490
206
|
if kwargs.get('stdout') == PIPE:
|
|
491
207
|
kwargs['stdout'] = VOID
|
|
@@ -520,7 +236,7 @@ def capture(args, **kwargs):
|
|
|
520
236
|
- Discards returncode.
|
|
521
237
|
- Blocks stdin by default if not specified since no output will be visible.
|
|
522
238
|
"""
|
|
523
|
-
kwargs.setdefault('stdin',
|
|
239
|
+
kwargs.setdefault('stdin', VOID_INPUT)
|
|
524
240
|
|
|
525
241
|
# Like check_output, deny the caller from using stdout arg.
|
|
526
242
|
return communicate(args, stdout=PIPE, **kwargs)[0][0]
|
|
@@ -536,7 +252,7 @@ def check_output(args, **kwargs):
|
|
|
536
252
|
- Blocks stdin by default if not specified since no output will be visible.
|
|
537
253
|
- As per doc, "The stdout argument is not allowed as it is used internally."
|
|
538
254
|
"""
|
|
539
|
-
kwargs.setdefault('stdin',
|
|
255
|
+
kwargs.setdefault('stdin', VOID_INPUT)
|
|
540
256
|
if 'stdout' in kwargs:
|
|
541
257
|
raise ValueError('stdout argument not allowed, it would be overridden.')
|
|
542
258
|
return check_call_out(args, stdout=PIPE, **kwargs)[0]
|