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
|
@@ -24,7 +24,6 @@ try:
|
|
|
24
24
|
except ImportError: # For Py3 compatibility
|
|
25
25
|
import urllib.parse as urlparse
|
|
26
26
|
|
|
27
|
-
import download_from_google_storage
|
|
28
27
|
import gclient_utils
|
|
29
28
|
import git_cache
|
|
30
29
|
import scm
|
|
@@ -230,18 +229,7 @@ class GitWrapper(SCMWrapper):
|
|
|
230
229
|
if self.out_cb:
|
|
231
230
|
filter_kwargs['predicate'] = self.out_cb
|
|
232
231
|
self.filter = gclient_utils.GitFilter(**filter_kwargs)
|
|
233
|
-
|
|
234
|
-
@staticmethod
|
|
235
|
-
def BinaryExists():
|
|
236
|
-
"""Returns true if the command exists."""
|
|
237
|
-
try:
|
|
238
|
-
# We assume git is newer than 1.7. See: crbug.com/114483
|
|
239
|
-
result, version = scm.GIT.AssertVersion('1.7')
|
|
240
|
-
if not result:
|
|
241
|
-
raise gclient_utils.Error('Git version is older than 1.7: %s' % version)
|
|
242
|
-
return result
|
|
243
|
-
except OSError:
|
|
244
|
-
return False
|
|
232
|
+
self._running_under_rosetta = None
|
|
245
233
|
|
|
246
234
|
def GetCheckoutRoot(self):
|
|
247
235
|
return scm.GIT.GetCheckoutRoot(self.checkout_path)
|
|
@@ -256,9 +244,10 @@ class GitWrapper(SCMWrapper):
|
|
|
256
244
|
def _GetDiffFilenames(self, base):
|
|
257
245
|
"""Returns the names of files modified since base."""
|
|
258
246
|
return self._Capture(
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
247
|
+
# Filter to remove base if it is None.
|
|
248
|
+
list(filter(bool, ['-c', 'core.quotePath=false', 'diff', '--name-only',
|
|
249
|
+
base])
|
|
250
|
+
)).split()
|
|
262
251
|
|
|
263
252
|
def diff(self, options, _args, _file_list):
|
|
264
253
|
_, revision = gclient_utils.SplitUrlRevision(self.url)
|
|
@@ -317,7 +306,7 @@ class GitWrapper(SCMWrapper):
|
|
|
317
306
|
files = self._Capture(
|
|
318
307
|
['-c', 'core.quotePath=false', 'ls-files']).splitlines()
|
|
319
308
|
file_list.extend(
|
|
320
|
-
[os.path.join(self.checkout_path, f
|
|
309
|
+
[os.path.join(self.checkout_path, f) for f in files])
|
|
321
310
|
|
|
322
311
|
def _DisableHooks(self):
|
|
323
312
|
hook_dir = os.path.join(self.checkout_path, '.git', 'hooks')
|
|
@@ -350,63 +339,38 @@ class GitWrapper(SCMWrapper):
|
|
|
350
339
|
self.Print('FAILED to break lock: %s: %s' % (to_break, ex))
|
|
351
340
|
raise
|
|
352
341
|
|
|
353
|
-
|
|
354
|
-
# branch.
|
|
355
|
-
def _GetTargetBranchForCommit(self, commit):
|
|
356
|
-
"""Get the remote branch a commit is part of."""
|
|
357
|
-
_WELL_KNOWN_BRANCHES = [
|
|
358
|
-
'refs/remotes/origin/master',
|
|
359
|
-
'refs/remotes/origin/infra/config',
|
|
360
|
-
'refs/remotes/origin/lkgr',
|
|
361
|
-
]
|
|
362
|
-
for branch in _WELL_KNOWN_BRANCHES:
|
|
363
|
-
if scm.GIT.IsAncestor(self.checkout_path, commit, branch):
|
|
364
|
-
return branch
|
|
365
|
-
remote_refs = self._Capture(
|
|
366
|
-
['for-each-ref', 'refs/remotes/%s' % self.remote,
|
|
367
|
-
'--format=%(refname)']).splitlines()
|
|
368
|
-
for ref in sorted(remote_refs, reverse=True):
|
|
369
|
-
if scm.GIT.IsAncestor(self.checkout_path, commit, ref):
|
|
370
|
-
return ref
|
|
371
|
-
self.Print('Failed to find a remote ref that contains %s. '
|
|
372
|
-
'Candidate refs were %s.' % (commit, remote_refs))
|
|
373
|
-
# Fallback to the commit we got.
|
|
374
|
-
# This means that apply_path_ref will try to find the merge-base between the
|
|
375
|
-
# patch and the commit (which is most likely the commit) and cherry-pick
|
|
376
|
-
# everything in between.
|
|
377
|
-
return commit
|
|
378
|
-
|
|
379
|
-
def apply_patch_ref(self, patch_repo, patch_ref, target_branch, options,
|
|
342
|
+
def apply_patch_ref(self, patch_repo, patch_rev, target_rev, options,
|
|
380
343
|
file_list):
|
|
381
344
|
"""Apply a patch on top of the revision we're synced at.
|
|
382
345
|
|
|
383
|
-
The patch ref is given by |patch_repo|@|
|
|
384
|
-
is |
|
|
385
|
-
|
|
386
|
-
it to find a merge base between |patch_rev| and |base_rev|, so we can find
|
|
387
|
-
what commits constitute the patch:
|
|
346
|
+
The patch ref is given by |patch_repo|@|patch_rev|.
|
|
347
|
+
|target_rev| is usually the branch that the |patch_rev| was uploaded against
|
|
348
|
+
(e.g. 'refs/heads/master'), but this is not required.
|
|
388
349
|
|
|
389
|
-
|
|
350
|
+
We cherry-pick all commits reachable from |patch_rev| on top of the curret
|
|
351
|
+
HEAD, excluding those reachable from |target_rev|
|
|
352
|
+
(i.e. git cherry-pick target_rev..patch_rev).
|
|
390
353
|
|
|
391
|
-
|
|
392
|
-
\
|
|
393
|
-
-> [possibly not yet landed dependent CLs] -> patch_rev
|
|
354
|
+
Graphically, it looks like this:
|
|
394
355
|
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
356
|
+
... -> o -> [possibly already landed commits] -> target_rev
|
|
357
|
+
\
|
|
358
|
+
-> [possibly not yet landed dependent CLs] -> patch_rev
|
|
398
359
|
|
|
399
|
-
|
|
360
|
+
The final checkout state is then:
|
|
400
361
|
|
|
401
|
-
... ->
|
|
362
|
+
... -> HEAD -> [possibly not yet landed dependent CLs] -> patch_rev
|
|
402
363
|
|
|
403
364
|
After application, if |options.reset_patch_ref| is specified, we soft reset
|
|
404
|
-
the
|
|
365
|
+
the cherry-picked changes, keeping them in git index only.
|
|
405
366
|
|
|
406
367
|
Args:
|
|
407
|
-
patch_repo: The patch origin.
|
|
408
|
-
|
|
409
|
-
|
|
368
|
+
patch_repo: The patch origin.
|
|
369
|
+
e.g. 'https://foo.googlesource.com/bar'
|
|
370
|
+
patch_rev: The revision to patch.
|
|
371
|
+
e.g. 'refs/changes/1234/34/1'.
|
|
372
|
+
target_rev: The revision to use when finding the merge base.
|
|
373
|
+
Typically, the branch that the patch was uploaded against.
|
|
410
374
|
e.g. 'refs/heads/master' or 'refs/heads/infra/config'.
|
|
411
375
|
options: The options passed to gclient.
|
|
412
376
|
file_list: A list where modified files will be appended.
|
|
@@ -419,28 +383,48 @@ class GitWrapper(SCMWrapper):
|
|
|
419
383
|
pass
|
|
420
384
|
|
|
421
385
|
base_rev = self._Capture(['rev-parse', 'HEAD'])
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
386
|
+
|
|
387
|
+
if not target_rev:
|
|
388
|
+
raise gclient_utils.Error('A target revision for the patch must be given')
|
|
389
|
+
elif target_rev.startswith('refs/heads/'):
|
|
390
|
+
# If |target_rev| is in refs/heads/**, try first to find the corresponding
|
|
391
|
+
# remote ref for it, since |target_rev| might point to a local ref which
|
|
392
|
+
# is not up to date with the corresponding remote ref.
|
|
393
|
+
remote_ref = ''.join(scm.GIT.RefToRemoteRef(target_rev, self.remote))
|
|
394
|
+
self.Print('Trying the corresponding remote ref for %r: %r\n' % (
|
|
395
|
+
target_rev, remote_ref))
|
|
396
|
+
if scm.GIT.IsValidRevision(self.checkout_path, remote_ref):
|
|
397
|
+
target_rev = remote_ref
|
|
398
|
+
elif not scm.GIT.IsValidRevision(self.checkout_path, target_rev):
|
|
399
|
+
# Fetch |target_rev| if it's not already available.
|
|
400
|
+
url, _ = gclient_utils.SplitUrlRevision(self.url)
|
|
401
|
+
mirror = self._GetMirror(url, options, target_rev)
|
|
402
|
+
if mirror:
|
|
403
|
+
rev_type = 'branch' if target_rev.startswith('refs/') else 'hash'
|
|
404
|
+
self._UpdateMirrorIfNotContains(mirror, options, rev_type, target_rev)
|
|
405
|
+
self._Fetch(options, refspec=target_rev)
|
|
406
|
+
|
|
407
|
+
self.Print('===Applying patch===')
|
|
408
|
+
self.Print('Revision to patch is %r @ %r.' % (patch_repo, patch_rev))
|
|
409
|
+
self.Print('Current dir is %r' % self.checkout_path)
|
|
428
410
|
self._Capture(['reset', '--hard'])
|
|
429
|
-
self._Capture(['fetch', patch_repo,
|
|
411
|
+
self._Capture(['fetch', '--no-tags', patch_repo, patch_rev])
|
|
430
412
|
patch_rev = self._Capture(['rev-parse', 'FETCH_HEAD'])
|
|
431
413
|
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
414
|
+
if not options.rebase_patch_ref:
|
|
415
|
+
self._Capture(['checkout', patch_rev])
|
|
416
|
+
# Adjust base_rev to be the first parent of our checked out patch ref;
|
|
417
|
+
# This will allow us to correctly extend `file_list`, and will show the
|
|
418
|
+
# correct file-list to programs which do `git diff --cached` expecting to
|
|
419
|
+
# see the patch diff.
|
|
420
|
+
base_rev = self._Capture(['rev-parse', patch_rev+'~'])
|
|
421
|
+
|
|
422
|
+
else:
|
|
423
|
+
self.Print('Will cherrypick %r .. %r on top of %r.' % (
|
|
424
|
+
target_rev, patch_rev, base_rev))
|
|
425
|
+
try:
|
|
426
|
+
if scm.GIT.IsAncestor(self.checkout_path, patch_rev, target_rev):
|
|
427
|
+
# If |patch_rev| is an ancestor of |target_rev|, check it out.
|
|
444
428
|
self._Capture(['checkout', patch_rev])
|
|
445
429
|
else:
|
|
446
430
|
# If a change was uploaded on top of another change, which has already
|
|
@@ -448,28 +432,29 @@ class GitWrapper(SCMWrapper):
|
|
|
448
432
|
# redundant, since it has already landed and its changes incorporated
|
|
449
433
|
# in the tree.
|
|
450
434
|
# We pass '--keep-redundant-commits' to ignore those changes.
|
|
451
|
-
self._Capture(['cherry-pick',
|
|
435
|
+
self._Capture(['cherry-pick', target_rev + '..' + patch_rev,
|
|
452
436
|
'--keep-redundant-commits'])
|
|
453
437
|
|
|
454
|
-
|
|
455
|
-
|
|
438
|
+
except subprocess2.CalledProcessError as e:
|
|
439
|
+
self.Print('Failed to apply patch.')
|
|
440
|
+
self.Print('Revision to patch was %r @ %r.' % (patch_repo, patch_rev))
|
|
441
|
+
self.Print('Tried to cherrypick %r .. %r on top of %r.' % (
|
|
442
|
+
target_rev, patch_rev, base_rev))
|
|
443
|
+
self.Print('Current dir is %r' % self.checkout_path)
|
|
444
|
+
self.Print('git returned non-zero exit status %s:\n%s' % (
|
|
445
|
+
e.returncode, e.stderr.decode('utf-8')))
|
|
446
|
+
# Print the current status so that developers know what changes caused
|
|
447
|
+
# the patch failure, since git cherry-pick doesn't show that
|
|
448
|
+
# information.
|
|
449
|
+
self.Print(self._Capture(['status']))
|
|
450
|
+
try:
|
|
451
|
+
self._Capture(['cherry-pick', '--abort'])
|
|
452
|
+
except subprocess2.CalledProcessError:
|
|
453
|
+
pass
|
|
454
|
+
raise
|
|
456
455
|
|
|
457
|
-
|
|
458
|
-
self.
|
|
459
|
-
self.Print('Patch ref is %r @ %r. Target branch for patch is %r. '
|
|
460
|
-
'Current HEAD is %r. Current dir is %r' % (
|
|
461
|
-
patch_repo, patch_ref, target_branch, base_rev,
|
|
462
|
-
self.checkout_path))
|
|
463
|
-
self.Print('git returned non-zero exit status %s:\n%s' % (
|
|
464
|
-
e.returncode, e.stderr))
|
|
465
|
-
# Print the current status so that developers know what changes caused the
|
|
466
|
-
# patch failure, since git cherry-pick doesn't show that information.
|
|
467
|
-
self.Print(self._Capture(['status']))
|
|
468
|
-
try:
|
|
469
|
-
self._Capture(['cherry-pick', '--abort'])
|
|
470
|
-
except subprocess2.CalledProcessError:
|
|
471
|
-
pass
|
|
472
|
-
raise
|
|
456
|
+
if file_list is not None:
|
|
457
|
+
file_list.extend(self._GetDiffFilenames(base_rev))
|
|
473
458
|
|
|
474
459
|
if options.reset_patch_ref:
|
|
475
460
|
self._Capture(['reset', '--soft', base_rev])
|
|
@@ -517,6 +502,9 @@ class GitWrapper(SCMWrapper):
|
|
|
517
502
|
if ':' in revision:
|
|
518
503
|
revision_ref, _, revision = revision.partition(':')
|
|
519
504
|
|
|
505
|
+
if revision_ref.startswith('refs/branch-heads'):
|
|
506
|
+
options.with_branch_heads = True
|
|
507
|
+
|
|
520
508
|
mirror = self._GetMirror(url, options, revision_ref)
|
|
521
509
|
if mirror:
|
|
522
510
|
url = mirror.mirror_path
|
|
@@ -562,7 +550,7 @@ class GitWrapper(SCMWrapper):
|
|
|
562
550
|
files = self._Capture(
|
|
563
551
|
['-c', 'core.quotePath=false', 'ls-files']).splitlines()
|
|
564
552
|
file_list.extend(
|
|
565
|
-
[os.path.join(self.checkout_path, f
|
|
553
|
+
[os.path.join(self.checkout_path, f) for f in files])
|
|
566
554
|
if mirror:
|
|
567
555
|
self._Capture(
|
|
568
556
|
['remote', 'set-url', '--push', 'origin', mirror.url])
|
|
@@ -595,7 +583,7 @@ class GitWrapper(SCMWrapper):
|
|
|
595
583
|
# Skip url auto-correction if remote.origin.gclient-auto-fix-url is set.
|
|
596
584
|
# This allows devs to use experimental repos which have a different url
|
|
597
585
|
# but whose branch(s) are the same as official repos.
|
|
598
|
-
if (current_url.rstrip(
|
|
586
|
+
if (current_url.rstrip('/') != url.rstrip('/') and url != 'git://foo' and
|
|
599
587
|
subprocess2.capture(
|
|
600
588
|
['git', 'config', 'remote.%s.gclient-auto-fix-url' % self.remote],
|
|
601
589
|
cwd=self.checkout_path).strip() != 'False'):
|
|
@@ -770,7 +758,8 @@ class GitWrapper(SCMWrapper):
|
|
|
770
758
|
merge_output = self._Capture(merge_args)
|
|
771
759
|
except subprocess2.CalledProcessError as e:
|
|
772
760
|
rebase_files = []
|
|
773
|
-
if re.match('fatal: Not possible to fast-forward, aborting.',
|
|
761
|
+
if re.match(b'fatal: Not possible to fast-forward, aborting.',
|
|
762
|
+
e.stderr):
|
|
774
763
|
if not printed_path:
|
|
775
764
|
self.Print('_____ %s at %s' % (self.relpath, revision),
|
|
776
765
|
timestamp=False)
|
|
@@ -800,19 +789,19 @@ class GitWrapper(SCMWrapper):
|
|
|
800
789
|
return
|
|
801
790
|
else:
|
|
802
791
|
self.Print('Input not recognized')
|
|
803
|
-
elif re.match("error: Your local changes to '.*' would be "
|
|
804
|
-
"overwritten by merge. Aborting.\nPlease, commit your "
|
|
805
|
-
"changes or stash them before you can merge.\n",
|
|
792
|
+
elif re.match(b"error: Your local changes to '.*' would be "
|
|
793
|
+
b"overwritten by merge. Aborting.\nPlease, commit your "
|
|
794
|
+
b"changes or stash them before you can merge.\n",
|
|
806
795
|
e.stderr):
|
|
807
796
|
if not printed_path:
|
|
808
797
|
self.Print('_____ %s at %s' % (self.relpath, revision),
|
|
809
798
|
timestamp=False)
|
|
810
799
|
printed_path = True
|
|
811
|
-
raise gclient_utils.Error(e.stderr)
|
|
800
|
+
raise gclient_utils.Error(e.stderr.decode('utf-8'))
|
|
812
801
|
else:
|
|
813
802
|
# Some other problem happened with the merge
|
|
814
803
|
logging.error("Error during fast-forward merge in %s!" % self.relpath)
|
|
815
|
-
self.Print(e.stderr)
|
|
804
|
+
self.Print(e.stderr.decode('utf-8'))
|
|
816
805
|
raise
|
|
817
806
|
else:
|
|
818
807
|
# Fast-forward merge was successful
|
|
@@ -869,7 +858,7 @@ class GitWrapper(SCMWrapper):
|
|
|
869
858
|
if not os.path.isdir(self.checkout_path):
|
|
870
859
|
# revert won't work if the directory doesn't exist. It needs to
|
|
871
860
|
# checkout instead.
|
|
872
|
-
self.Print('_____ %s is missing,
|
|
861
|
+
self.Print('_____ %s is missing, syncing instead' % self.relpath)
|
|
873
862
|
# Don't reuse the args.
|
|
874
863
|
return self.update(options, [], file_list)
|
|
875
864
|
|
|
@@ -888,8 +877,8 @@ class GitWrapper(SCMWrapper):
|
|
|
888
877
|
except NoUsableRevError as e:
|
|
889
878
|
# If the DEPS entry's url and hash changed, try to update the origin.
|
|
890
879
|
# See also http://crbug.com/520067.
|
|
891
|
-
logging.
|
|
892
|
-
|
|
880
|
+
logging.warning(
|
|
881
|
+
"Couldn't find usable revision, will retrying to update instead: %s",
|
|
893
882
|
e.message)
|
|
894
883
|
return self.update(options, [], file_list)
|
|
895
884
|
|
|
@@ -915,13 +904,14 @@ class GitWrapper(SCMWrapper):
|
|
|
915
904
|
self.Print('________ couldn\'t run status in %s:\n'
|
|
916
905
|
'The directory does not exist.' % self.checkout_path)
|
|
917
906
|
else:
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
907
|
+
merge_base = []
|
|
908
|
+
if self.url:
|
|
909
|
+
_, base_rev = gclient_utils.SplitUrlRevision(self.url)
|
|
910
|
+
if base_rev:
|
|
911
|
+
merge_base = [base_rev]
|
|
922
912
|
self._Run(
|
|
923
913
|
['-c', 'core.quotePath=false', 'diff', '--name-status'] + merge_base,
|
|
924
|
-
options,
|
|
914
|
+
options, always_show_header=options.verbose)
|
|
925
915
|
if file_list is not None:
|
|
926
916
|
files = self._GetDiffFilenames(merge_base[0] if merge_base else None)
|
|
927
917
|
file_list.extend([os.path.join(self.checkout_path, f) for f in files])
|
|
@@ -993,9 +983,7 @@ class GitWrapper(SCMWrapper):
|
|
|
993
983
|
mirror.populate(verbose=options.verbose,
|
|
994
984
|
bootstrap=not getattr(options, 'no_bootstrap', False),
|
|
995
985
|
depth=depth,
|
|
996
|
-
ignore_lock=getattr(options, 'ignore_locks', False),
|
|
997
986
|
lock_timeout=getattr(options, 'lock_timeout', 0))
|
|
998
|
-
mirror.unlock()
|
|
999
987
|
|
|
1000
988
|
def _Clone(self, revision, url, options):
|
|
1001
989
|
"""Clone a git repository from the given URL.
|
|
@@ -1046,12 +1034,12 @@ class GitWrapper(SCMWrapper):
|
|
|
1046
1034
|
clone_cmd.append(tmp_dir)
|
|
1047
1035
|
if self.print_outbuf:
|
|
1048
1036
|
print_stdout = True
|
|
1049
|
-
|
|
1037
|
+
filter_fn = None
|
|
1050
1038
|
else:
|
|
1051
1039
|
print_stdout = False
|
|
1052
|
-
|
|
1040
|
+
filter_fn = self.filter
|
|
1053
1041
|
self._Run(clone_cmd, options, cwd=self._root_dir, retry=True,
|
|
1054
|
-
print_stdout=print_stdout,
|
|
1042
|
+
print_stdout=print_stdout, filter_fn=filter_fn)
|
|
1055
1043
|
gclient_utils.safe_makedirs(self.checkout_path)
|
|
1056
1044
|
gclient_utils.safe_rename(os.path.join(tmp_dir, '.git'),
|
|
1057
1045
|
os.path.join(self.checkout_path, '.git'))
|
|
@@ -1083,11 +1071,7 @@ class GitWrapper(SCMWrapper):
|
|
|
1083
1071
|
raise gclient_utils.Error("Background task requires input. Rerun "
|
|
1084
1072
|
"gclient with --jobs=1 so that\n"
|
|
1085
1073
|
"interaction is possible.")
|
|
1086
|
-
|
|
1087
|
-
return raw_input(prompt)
|
|
1088
|
-
except KeyboardInterrupt:
|
|
1089
|
-
# Hide the exception.
|
|
1090
|
-
sys.exit(1)
|
|
1074
|
+
return gclient_utils.AskForData(prompt)
|
|
1091
1075
|
|
|
1092
1076
|
|
|
1093
1077
|
def _AttemptRebase(self, upstream, files, options, newbase=None,
|
|
@@ -1126,8 +1110,8 @@ class GitWrapper(SCMWrapper):
|
|
|
1126
1110
|
try:
|
|
1127
1111
|
rebase_output = scm.GIT.Capture(rebase_cmd, cwd=self.checkout_path)
|
|
1128
1112
|
except subprocess2.CalledProcessError as e:
|
|
1129
|
-
if (re.match(
|
|
1130
|
-
re.match(
|
|
1113
|
+
if (re.match(br'cannot rebase: you have unstaged changes', e.stderr) or
|
|
1114
|
+
re.match(br'cannot rebase: your index contains uncommitted changes',
|
|
1131
1115
|
e.stderr)):
|
|
1132
1116
|
while True:
|
|
1133
1117
|
rebase_action = self._AskForData(
|
|
@@ -1145,18 +1129,19 @@ class GitWrapper(SCMWrapper):
|
|
|
1145
1129
|
"cd %s && git " % self.checkout_path
|
|
1146
1130
|
+ "%s" % ' '.join(rebase_cmd))
|
|
1147
1131
|
elif re.match(r'show|s', rebase_action, re.I):
|
|
1148
|
-
self.Print('%s' % e.stderr.strip())
|
|
1132
|
+
self.Print('%s' % e.stderr.decode('utf-8').strip())
|
|
1149
1133
|
continue
|
|
1150
1134
|
else:
|
|
1151
1135
|
gclient_utils.Error("Input not recognized")
|
|
1152
1136
|
continue
|
|
1153
|
-
elif re.search(
|
|
1137
|
+
elif re.search(br'^CONFLICT', e.stdout, re.M):
|
|
1154
1138
|
raise gclient_utils.Error("Conflict while rebasing this branch.\n"
|
|
1155
1139
|
"Fix the conflict and run gclient again.\n"
|
|
1156
1140
|
"See 'man git-rebase' for details.\n")
|
|
1157
1141
|
else:
|
|
1158
|
-
self.Print(e.stdout.strip())
|
|
1159
|
-
self.Print('Rebase produced error output:\n%s' %
|
|
1142
|
+
self.Print(e.stdout.decode('utf-8').strip())
|
|
1143
|
+
self.Print('Rebase produced error output:\n%s' %
|
|
1144
|
+
e.stderr.decode('utf-8').strip())
|
|
1160
1145
|
raise gclient_utils.Error("Unrecognized error, please merge or rebase "
|
|
1161
1146
|
"manually.\ncd %s && git " %
|
|
1162
1147
|
self.checkout_path
|
|
@@ -1186,7 +1171,7 @@ class GitWrapper(SCMWrapper):
|
|
|
1186
1171
|
try:
|
|
1187
1172
|
self._Capture(['rev-list', '-n', '1', 'HEAD'])
|
|
1188
1173
|
except subprocess2.CalledProcessError as e:
|
|
1189
|
-
if ('fatal: bad object HEAD' in e.stderr
|
|
1174
|
+
if (b'fatal: bad object HEAD' in e.stderr
|
|
1190
1175
|
and self.cache_dir and self.cache_dir in url):
|
|
1191
1176
|
self.Print((
|
|
1192
1177
|
'Likely due to DEPS change with git cache_dir, '
|
|
@@ -1267,13 +1252,27 @@ class GitWrapper(SCMWrapper):
|
|
|
1267
1252
|
return branch
|
|
1268
1253
|
|
|
1269
1254
|
def _Capture(self, args, **kwargs):
|
|
1255
|
+
set_git_dir = 'cwd' not in kwargs
|
|
1270
1256
|
kwargs.setdefault('cwd', self.checkout_path)
|
|
1271
1257
|
kwargs.setdefault('stderr', subprocess2.PIPE)
|
|
1272
1258
|
strip = kwargs.pop('strip', True)
|
|
1273
1259
|
env = scm.GIT.ApplyEnvVars(kwargs)
|
|
1274
|
-
|
|
1260
|
+
# If an explicit cwd isn't set, then default to the .git/ subdir so we get
|
|
1261
|
+
# stricter behavior. This can be useful in cases of slight corruption --
|
|
1262
|
+
# we don't accidentally go corrupting parent git checks too. See
|
|
1263
|
+
# https://crbug.com/1000825 for an example.
|
|
1264
|
+
if set_git_dir:
|
|
1265
|
+
git_dir = os.path.abspath(os.path.join(self.checkout_path, '.git'))
|
|
1266
|
+
# Depending on how the .gclient file was defined, self.checkout_path
|
|
1267
|
+
# might be set to a unicode string, not a regular string; on Windows
|
|
1268
|
+
# Python2, we can't set env vars to be unicode strings, so we
|
|
1269
|
+
# forcibly cast the value to a string before setting it.
|
|
1270
|
+
env.setdefault('GIT_DIR', str(git_dir))
|
|
1271
|
+
ret = subprocess2.check_output(
|
|
1272
|
+
['git'] + args, env=env, **kwargs).decode('utf-8')
|
|
1275
1273
|
if strip:
|
|
1276
1274
|
ret = ret.strip()
|
|
1275
|
+
self.Print('Finished running: %s %s' % ('git', ' '.join(args)))
|
|
1277
1276
|
return ret
|
|
1278
1277
|
|
|
1279
1278
|
def _Checkout(self, options, ref, force=False, quiet=None):
|
|
@@ -1282,7 +1281,7 @@ class GitWrapper(SCMWrapper):
|
|
|
1282
1281
|
Args:
|
|
1283
1282
|
options: The configured option set
|
|
1284
1283
|
ref: (str) The branch/commit to checkout
|
|
1285
|
-
quiet: (bool/None) Whether or not the checkout
|
|
1284
|
+
quiet: (bool/None) Whether or not the checkout should pass '--quiet'; if
|
|
1286
1285
|
'None', the behavior is inferred from 'options.verbose'.
|
|
1287
1286
|
Returns: (str) The output of the checkout operation
|
|
1288
1287
|
"""
|
|
@@ -1323,13 +1322,12 @@ class GitWrapper(SCMWrapper):
|
|
|
1323
1322
|
fetch_cmd.append('--prune')
|
|
1324
1323
|
if options.verbose:
|
|
1325
1324
|
fetch_cmd.append('--verbose')
|
|
1325
|
+
if not hasattr(options, 'with_tags') or not options.with_tags:
|
|
1326
|
+
fetch_cmd.append('--no-tags')
|
|
1326
1327
|
elif quiet:
|
|
1327
1328
|
fetch_cmd.append('--quiet')
|
|
1328
1329
|
self._Run(fetch_cmd, options, show_header=options.verbose, retry=True)
|
|
1329
1330
|
|
|
1330
|
-
# Return the revision that was fetched; this will be stored in 'FETCH_HEAD'
|
|
1331
|
-
return self._Capture(['rev-parse', '--verify', 'FETCH_HEAD'])
|
|
1332
|
-
|
|
1333
1331
|
def _SetFetchConfig(self, options):
|
|
1334
1332
|
"""Adds, and optionally fetches, "branch-heads" and "tags" refspecs
|
|
1335
1333
|
if requested."""
|
|
@@ -1359,25 +1357,48 @@ class GitWrapper(SCMWrapper):
|
|
|
1359
1357
|
"""Attempts to fetch |revision| if not available in local repo.
|
|
1360
1358
|
|
|
1361
1359
|
Returns possibly updated revision."""
|
|
1362
|
-
|
|
1363
|
-
self._Capture(['rev-parse', revision])
|
|
1364
|
-
except subprocess2.CalledProcessError:
|
|
1360
|
+
if not scm.GIT.IsValidRevision(self.checkout_path, revision):
|
|
1365
1361
|
self._Fetch(options, refspec=revision)
|
|
1366
1362
|
revision = self._Capture(['rev-parse', 'FETCH_HEAD'])
|
|
1367
1363
|
return revision
|
|
1368
1364
|
|
|
1369
|
-
def
|
|
1365
|
+
def _IsRunningUnderRosetta(self):
|
|
1366
|
+
if sys.platform != 'darwin':
|
|
1367
|
+
return False
|
|
1368
|
+
if self._running_under_rosetta is None:
|
|
1369
|
+
# If we are running under Rosetta, platform.machine() is
|
|
1370
|
+
# 'x86_64'; we need to use a sysctl to see if we're being
|
|
1371
|
+
# translated.
|
|
1372
|
+
import ctypes
|
|
1373
|
+
libSystem = ctypes.CDLL("libSystem.dylib")
|
|
1374
|
+
ret = ctypes.c_int(0)
|
|
1375
|
+
size = ctypes.c_size_t(4)
|
|
1376
|
+
e = libSystem.sysctlbyname(ctypes.c_char_p(b'sysctl.proc_translated'),
|
|
1377
|
+
ctypes.byref(ret), ctypes.byref(size), None, 0)
|
|
1378
|
+
self._running_under_rosetta = e == 0 and ret.value == 1
|
|
1379
|
+
return self._running_under_rosetta
|
|
1380
|
+
|
|
1381
|
+
def _Run(self, args, options, **kwargs):
|
|
1370
1382
|
# Disable 'unused options' warning | pylint: disable=unused-argument
|
|
1371
1383
|
kwargs.setdefault('cwd', self.checkout_path)
|
|
1372
|
-
kwargs.setdefault('
|
|
1373
|
-
kwargs
|
|
1374
|
-
kwargs.setdefault('print_stdout', False)
|
|
1384
|
+
kwargs.setdefault('filter_fn', self.filter)
|
|
1385
|
+
kwargs.setdefault('show_header', True)
|
|
1375
1386
|
env = scm.GIT.ApplyEnvVars(kwargs)
|
|
1387
|
+
|
|
1376
1388
|
cmd = ['git'] + args
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1389
|
+
|
|
1390
|
+
if self._IsRunningUnderRosetta():
|
|
1391
|
+
# We currently only ship an Intel Python binary in depot_tools.
|
|
1392
|
+
# Intel binaries run under Rosetta on ARM Macs, and by default
|
|
1393
|
+
# prefer to run their subprocesses as Intel under Rosetta too.
|
|
1394
|
+
# Intel git running under Rosetta has a bug where it fails to
|
|
1395
|
+
# clone src.git (rdar://7868319), so until we ship a native
|
|
1396
|
+
# ARM python3 binary, explicitly use `arch` to let git run
|
|
1397
|
+
# the native ARM slice instead of the Intel slice.
|
|
1398
|
+
# TODO(thakis): Remove this again once we ship an arm64 python3
|
|
1399
|
+
# binary.
|
|
1400
|
+
cmd = ['arch', '-arch', 'arm64'] + cmd
|
|
1401
|
+
gclient_utils.CheckCallAndFilter(cmd, env=env, **kwargs)
|
|
1381
1402
|
|
|
1382
1403
|
|
|
1383
1404
|
class CipdPackage(object):
|
|
@@ -1464,15 +1485,16 @@ class CipdRoot(object):
|
|
|
1464
1485
|
@contextlib.contextmanager
|
|
1465
1486
|
def _create_ensure_file(self):
|
|
1466
1487
|
try:
|
|
1488
|
+
contents = '$ParanoidMode CheckPresence\n\n'
|
|
1489
|
+
for subdir, packages in sorted(self._packages_by_subdir.items()):
|
|
1490
|
+
contents += '@Subdir %s\n' % subdir
|
|
1491
|
+
for package in sorted(packages, key=lambda p: p.name):
|
|
1492
|
+
contents += '%s %s\n' % (package.name, package.version)
|
|
1493
|
+
contents += '\n'
|
|
1467
1494
|
ensure_file = None
|
|
1468
1495
|
with tempfile.NamedTemporaryFile(
|
|
1469
|
-
suffix='.ensure', delete=False, mode='
|
|
1470
|
-
ensure_file.write('
|
|
1471
|
-
for subdir, packages in sorted(self._packages_by_subdir.items()):
|
|
1472
|
-
ensure_file.write('@Subdir %s\n' % subdir)
|
|
1473
|
-
for package in sorted(packages, key=lambda p: p.name):
|
|
1474
|
-
ensure_file.write('%s %s\n' % (package.name, package.version))
|
|
1475
|
-
ensure_file.write('\n')
|
|
1496
|
+
suffix='.ensure', delete=False, mode='wb') as ensure_file:
|
|
1497
|
+
ensure_file.write(contents.encode('utf-8', 'replace'))
|
|
1476
1498
|
yield ensure_file.name
|
|
1477
1499
|
finally:
|
|
1478
1500
|
if ensure_file is not None and os.path.exists(ensure_file.name):
|
|
@@ -1488,7 +1510,8 @@ class CipdRoot(object):
|
|
|
1488
1510
|
'-root', self.root_dir,
|
|
1489
1511
|
'-ensure-file', ensure_file,
|
|
1490
1512
|
]
|
|
1491
|
-
gclient_utils.
|
|
1513
|
+
gclient_utils.CheckCallAndFilter(
|
|
1514
|
+
cmd, print_stdout=True, show_header=True)
|
|
1492
1515
|
|
|
1493
1516
|
def run(self, command):
|
|
1494
1517
|
if command == 'update':
|
|
@@ -1573,8 +1596,7 @@ class CipdWrapper(SCMWrapper):
|
|
|
1573
1596
|
'-version', self._package.version,
|
|
1574
1597
|
'-json-output', describe_json_path
|
|
1575
1598
|
]
|
|
1576
|
-
gclient_utils.CheckCallAndFilter(
|
|
1577
|
-
cmd, filter_fn=lambda _line: None, print_stdout=False)
|
|
1599
|
+
gclient_utils.CheckCallAndFilter(cmd)
|
|
1578
1600
|
with open(describe_json_path) as f:
|
|
1579
1601
|
describe_json = json.load(f)
|
|
1580
1602
|
return describe_json.get('result', {}).get('pin', {}).get('instance_id')
|